KdYdTransferServiceImpl.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.malk.huagao.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.malk.huagao.entity.KdYdDelivery;
  4. import com.malk.huagao.entity.KdYdDeliveryDetail;
  5. import com.malk.huagao.entity.KdYdTransfer;
  6. import com.malk.huagao.entity.KdYdTransferDetail;
  7. import com.malk.huagao.mapper.*;
  8. import com.malk.huagao.service.IKdYdTransferService;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.malk.server.aliwork.YDConf;
  11. import com.malk.server.aliwork.YDParam;
  12. import com.malk.server.dingtalk.DDR_New;
  13. import com.malk.service.aliwork.YDClient;
  14. import com.malk.utils.UtilMap;
  15. import org.slf4j.MDC;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.math.BigDecimal;
  19. import java.math.RoundingMode;
  20. import java.time.Instant;
  21. import java.time.LocalDateTime;
  22. import java.time.ZoneId;
  23. import java.util.List;
  24. import java.util.Map;
  25. /**
  26. * <p>
  27. * 服务实现类
  28. * </p>
  29. *
  30. * @author LQY
  31. * @since 2025-11-12
  32. */
  33. @Service
  34. public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdYdTransfer> implements IKdYdTransferService {
  35. @Autowired
  36. private YDClient ydClient;
  37. @Autowired
  38. private KdYdTransferMapper kdYdTransferMapper;
  39. @Autowired
  40. private KdYdTransferDetailMapper kdYdTransferDetailMapper;
  41. @Override
  42. public void insertTransfer(Map map) {
  43. MDC.put("MDC_KEY_PID", "1003");
  44. String formInstId = UtilMap.getString(map, "formInstId");
  45. String type = UtilMap.getString(map, "type");
  46. if ("3".equals(type)) {
  47. String bm = UtilMap.getString(map, "bm");
  48. KdYdTransfer kdYdTransfer = new KdYdTransfer();
  49. kdYdTransfer.setOperationType("3");
  50. kdYdTransfer.setSyncStatus("0");
  51. kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper<KdYdTransfer>().eq(KdYdTransfer::getDjbh, bm));
  52. return; // 或者根据你的业务逻辑返回相应的结果
  53. }
  54. DDR_New ddrNew = ydClient.queryData(YDParam.builder()
  55. .formInstId(formInstId)
  56. .build(), YDConf.FORM_QUERY.retrieve_id);
  57. Map formData = ddrNew.getFormData();
  58. String djlx = UtilMap.getString(formData, "selectField_mhubzsa5");
  59. LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_mhubzsab"));
  60. String kh = UtilMap.getString(formData, "textField_mhubzsas");
  61. String dchzlx = UtilMap.getString(formData, "selectField_mhubzsa7");
  62. String djbh = UtilMap.getString(formData, "serialNumberField_mhubzsa4");
  63. String ywlx = UtilMap.getString(formData, "textField_mhubzsa6");
  64. String xsy = UtilMap.getString(formData, "employeeField_mhubzsa8").replace("[\"", "").replace("\"]", "").trim();
  65. String dcbm = UtilMap.getString(formData, "departmentSelectField_mhubzsae").replace("[\"", "").replace("\"]", "").trim();
  66. String drbm = UtilMap.getString(formData, "departmentSelectField_mhubzsad").replace("[\"", "").replace("\"]", "").trim();
  67. String drhzlx = UtilMap.getString(formData, "selectField_mhubzsa9");
  68. String dbfx = UtilMap.getString(formData, "selectField_mhubzsaa");
  69. String dbdlx = UtilMap.getString(formData, "selectField_mhubzsac");
  70. String dchz = UtilMap.getString(formData, "textField_mhubzsat");
  71. String hdfs = UtilMap.getString(formData, "selectField_mhubzsah");
  72. String ysfs = UtilMap.getString(formData, "selectField_mhubzsai");
  73. String kdgs = UtilMap.getString(formData, "selectField_mhubzsar");
  74. String fkfs = UtilMap.getString(formData, "selectField_mhubzsag");
  75. List<Map> tableField = (List<Map>) formData.get("tableField_mhubzsau");
  76. KdYdTransfer kdYdTransfer = new KdYdTransfer();
  77. kdYdTransfer.setDjlx(djlx);
  78. kdYdTransfer.setRq(rq);
  79. kdYdTransfer.setKh(kh);
  80. kdYdTransfer.setDjbh(djbh);
  81. kdYdTransfer.setSyncStatus("0");
  82. kdYdTransfer.setOperationType("1");
  83. kdYdTransfer.setYsfs(ysfs);
  84. kdYdTransfer.setHdfs(hdfs);
  85. kdYdTransfer.setKdgs(kdgs);
  86. kdYdTransfer.setFkfs(fkfs);
  87. kdYdTransfer.setDchzlx(dchzlx);
  88. kdYdTransfer.setDchz(dchz);
  89. kdYdTransfer.setDchzlx(dchzlx);
  90. kdYdTransfer.setDbfx(dbfx);
  91. kdYdTransfer.setDbdlx(dbdlx);
  92. kdYdTransfer.setDcbm(dcbm);
  93. kdYdTransfer.setDrbm(drbm);
  94. kdYdTransfer.setDrhzlx(drhzlx);
  95. kdYdTransfer.setYwlx(ywlx);
  96. kdYdTransfer.setCgy(xsy);
  97. if ("2".equals(type)) {
  98. kdYdTransfer.setOperationType(type);
  99. kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper<KdYdTransfer>().eq(KdYdTransfer::getDjbh, djbh));
  100. } else {
  101. kdYdTransferMapper.insert(kdYdTransfer);
  102. }
  103. Long id = kdYdTransfer.getId();
  104. int count = 1;
  105. for (Map item : tableField) {
  106. String wlbm = safeGetString(item, "textField_mhubzsav");
  107. String wlmc = safeGetString(item, "textField_mhubzsaw");
  108. String ggxh = safeGetString(item, "textField_mhubzsax");
  109. String dw = safeGetString(item, "textField_mhubzsay");
  110. int dbsl = parseInt(safeGetString(item, "numberField_mhubzsaz"), 0); // 如果为空或格式错误,返回 0
  111. String ph = safeGetString(item, "textField_mhubzsb0");
  112. String dcck = safeGetString(item, "textField_mhubzsb1");
  113. String dcckzt = safeGetString(item, "textField_mhubzsb5");
  114. String dccw = safeGetString(item, "textField_mhubzsb2");
  115. String drck = safeGetString(item, "textField_mhubzsb3");
  116. String drckzt = safeGetString(item, "textField_mhubzsb6");
  117. String drcw = safeGetString(item, "textField_mhubzsb4");
  118. KdYdTransferDetail kdYdTransferDetail = new KdYdTransferDetail();
  119. kdYdTransferDetail.setTransferId(id);
  120. kdYdTransferDetail.setWlbm(wlbm);
  121. kdYdTransferDetail.setWlmc(wlmc);
  122. kdYdTransferDetail.setGgxh(ggxh);
  123. kdYdTransferDetail.setDetailId(count);
  124. kdYdTransferDetail.setGgxh(ggxh);
  125. kdYdTransferDetail.setDw(dw);
  126. kdYdTransferDetail.setDbsl(dbsl);
  127. kdYdTransferDetail.setPh(ph);
  128. kdYdTransferDetail.setDcck(dcck);
  129. kdYdTransferDetail.setDcckzt(dcckzt);
  130. kdYdTransferDetail.setDccw(dccw);
  131. kdYdTransferDetail.setDrck(drck);
  132. kdYdTransferDetail.setDrckzt(drckzt);
  133. kdYdTransferDetail.setDrcw(drcw);
  134. kdYdTransferDetail.setSyncStatus("0");
  135. kdYdTransferDetail.setOperationType("1");
  136. if ("2".equals(type) || "3".equals(type)) {
  137. kdYdTransferDetail.setOperationType(type);
  138. kdYdTransferDetailMapper.update(kdYdTransferDetail, new LambdaQueryWrapper<KdYdTransferDetail>()
  139. .eq(KdYdTransferDetail::getWlbm, wlbm)
  140. .eq(KdYdTransferDetail::getTransferId, id));
  141. } else {
  142. kdYdTransferDetailMapper.insert(kdYdTransferDetail);
  143. }
  144. count++;
  145. //save(kdYdDeliveryDetail);
  146. }
  147. // ydClient.operateData(
  148. // YDParam.builder()
  149. // .formInstanceId(formInstId)
  150. // .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrqnxmm", id)))
  151. // .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
  152. }
  153. private static LocalDateTime parseTimestamp(String timestampStr) {
  154. if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
  155. try {
  156. long timestamp = Long.parseLong(timestampStr.trim());
  157. return LocalDateTime.ofInstant(
  158. Instant.ofEpochMilli(timestamp),
  159. ZoneId.systemDefault()
  160. );
  161. } catch (NumberFormatException e) {
  162. return null;
  163. }
  164. }
  165. private static int parseInt(String str, int defaultValue) {
  166. if (str == null || str.trim().isEmpty()) {
  167. return defaultValue;
  168. }
  169. try {
  170. return Integer.parseInt(str.trim());
  171. } catch (NumberFormatException e) {
  172. return defaultValue;
  173. }
  174. }
  175. private String safeGetString(Map formData, String key) {
  176. Object val = formData.get(key);
  177. return val == null ? "" : String.valueOf(val);
  178. }
  179. public static BigDecimal toBigDecimal(String str) {
  180. if (str == null || str.trim().isEmpty()) {
  181. return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
  182. }
  183. try {
  184. return new BigDecimal(str.trim())
  185. .setScale(2, RoundingMode.HALF_UP);
  186. } catch (NumberFormatException e) {
  187. // 返回默认值而不是抛出异常,避免程序中断
  188. return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
  189. }
  190. }
  191. /**
  192. * 重载方法,支持Number类型输入
  193. */
  194. public static BigDecimal toBigDecimal(Number number) {
  195. if (number == null) {
  196. return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
  197. }
  198. return new BigDecimal(number.toString())
  199. .setScale(2, RoundingMode.HALF_UP);
  200. }
  201. }