|
|
@@ -0,0 +1,207 @@
|
|
|
+package com.malk.huagao.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.malk.huagao.entity.KdYdDelivery;
|
|
|
+import com.malk.huagao.entity.KdYdDeliveryDetail;
|
|
|
+import com.malk.huagao.entity.KdYdTransfer;
|
|
|
+import com.malk.huagao.entity.KdYdTransferDetail;
|
|
|
+import com.malk.huagao.mapper.*;
|
|
|
+import com.malk.huagao.service.IKdYdTransferService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.malk.server.aliwork.YDConf;
|
|
|
+import com.malk.server.aliwork.YDParam;
|
|
|
+import com.malk.server.dingtalk.DDR_New;
|
|
|
+import com.malk.service.aliwork.YDClient;
|
|
|
+import com.malk.utils.UtilMap;
|
|
|
+import org.slf4j.MDC;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author LQY
|
|
|
+ * @since 2025-11-12
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdYdTransfer> implements IKdYdTransferService {
|
|
|
+ @Autowired
|
|
|
+ private YDClient ydClient;
|
|
|
+ @Autowired
|
|
|
+ private KdYdTransferMapper kdYdTransferMapper;
|
|
|
+ @Autowired
|
|
|
+ private KdYdTransferDetailMapper kdYdTransferDetailMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void insertTransfer(Map map) {
|
|
|
+ MDC.put("MDC_KEY_PID", "1003");
|
|
|
+ String formInstId = UtilMap.getString(map, "formInstId");
|
|
|
+ String type = UtilMap.getString(map, "type");
|
|
|
+ DDR_New ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
+ .formInstId(formInstId)
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_id);
|
|
|
+ Map formData = ddrNew.getFormData();
|
|
|
+
|
|
|
+ String djlx = UtilMap.getString(formData, "selectField_mhubzsa5");
|
|
|
+ LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_mhubzsab"));
|
|
|
+ String kh = UtilMap.getString(formData, "textField_mhubzsas");
|
|
|
+ String dchzlx = UtilMap.getString(formData, "selectField_mhubzsa7");
|
|
|
+ String djbh = UtilMap.getString(formData, "serialNumberField_mhubzsa4");
|
|
|
+ String ywlx = UtilMap.getString(formData, "textField_mhubzsa6");
|
|
|
+ String xsy = UtilMap.getString(formData, "employeeField_mhubzsa8").replace("[\"", "").replace("\"]", "").trim();
|
|
|
+ String dcbm = UtilMap.getString(formData, "departmentSelectField_mhubzsae").replace("[\"", "").replace("\"]", "").trim();
|
|
|
+ String drbm = UtilMap.getString(formData, "departmentSelectField_mhubzsad").replace("[\"", "").replace("\"]", "").trim();
|
|
|
+ String drhzlx = UtilMap.getString(formData, "selectField_mhubzsa9");
|
|
|
+ String dbfx = UtilMap.getString(formData, "selectField_mhubzsaa");
|
|
|
+ String dbdlx = UtilMap.getString(formData, "selectField_mhubzsac");
|
|
|
+ String dchz = UtilMap.getString(formData, "textField_mhubzsat");
|
|
|
+ String hdfs = UtilMap.getString(formData, "selectField_mhubzsah");
|
|
|
+ String ysfs = UtilMap.getString(formData, "selectField_mhubzsai");
|
|
|
+ String kdgs = UtilMap.getString(formData, "selectField_mhubzsar");
|
|
|
+ String fkfs = UtilMap.getString(formData, "selectField_mhubzsag");
|
|
|
+
|
|
|
+ List<Map> tableField = (List<Map>) formData.get("tableField_mhubzsau");
|
|
|
+ KdYdTransfer kdYdTransfer = new KdYdTransfer();
|
|
|
+ kdYdTransfer.setDjlx(djlx);
|
|
|
+ kdYdTransfer.setRq(rq);
|
|
|
+ kdYdTransfer.setKh(kh);
|
|
|
+ kdYdTransfer.setDjbh(djbh);
|
|
|
+ kdYdTransfer.setSyncStatus("0");
|
|
|
+ kdYdTransfer.setOperationType("1");
|
|
|
+ kdYdTransfer.setYsfs(ysfs);
|
|
|
+ kdYdTransfer.setHdfs(hdfs);
|
|
|
+ kdYdTransfer.setKdgs(kdgs);
|
|
|
+ kdYdTransfer.setFkfs(fkfs);
|
|
|
+ kdYdTransfer.setDchzlx(dchzlx);
|
|
|
+ kdYdTransfer.setDchz(dchz);
|
|
|
+ kdYdTransfer.setDchzlx(dchzlx);
|
|
|
+ kdYdTransfer.setDbfx(dbfx);
|
|
|
+ kdYdTransfer.setDbdlx(dbdlx);
|
|
|
+ kdYdTransfer.setDcbm(dcbm);
|
|
|
+ kdYdTransfer.setDrbm(drbm);
|
|
|
+ kdYdTransfer.setDrhzlx(drhzlx);
|
|
|
+ kdYdTransfer.setYwlx(ywlx);
|
|
|
+ kdYdTransfer.setCgy(xsy);
|
|
|
+
|
|
|
+ if ("2".equals(type) || "3".equals(type)) {
|
|
|
+ kdYdTransfer.setOperationType(type);
|
|
|
+ kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper<KdYdTransfer>().eq(KdYdTransfer::getDjbh, djbh));
|
|
|
+ } else {
|
|
|
+ kdYdTransferMapper.insert(kdYdTransfer);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long id = kdYdTransfer.getId();
|
|
|
+ int count = 1;
|
|
|
+ for (Map item : tableField) {
|
|
|
+ String wlbm = safeGetString(item, "textField_mhubzsav");
|
|
|
+ String wlmc = safeGetString(item, "textField_mhubzsaw");
|
|
|
+ String ggxh = safeGetString(item, "textField_mhubzsax");
|
|
|
+ String dw = safeGetString(item, "textField_mhubzsay");
|
|
|
+ int dbsl = parseInt(safeGetString(item, "numberField_mhubzsaz"), 0); // 如果为空或格式错误,返回 0
|
|
|
+ String ph = safeGetString(item, "textField_mhubzsb0");
|
|
|
+ String dcck = safeGetString(item, "textField_mhubzsb1");
|
|
|
+ String dcckzt = safeGetString(item, "textField_mhubzsb5");
|
|
|
+ String dccw = safeGetString(item, "textField_mhubzsb2");
|
|
|
+ String drck = safeGetString(item, "textField_mhubzsb3");
|
|
|
+ String drckzt = safeGetString(item, "textField_mhubzsb6");
|
|
|
+ String drcw = safeGetString(item, "textField_mhubzsb4");
|
|
|
+ KdYdTransferDetail kdYdTransferDetail = new KdYdTransferDetail();
|
|
|
+ kdYdTransferDetail.setTransferId(id);
|
|
|
+ kdYdTransferDetail.setWlbm(wlbm);
|
|
|
+ kdYdTransferDetail.setWlmc(wlmc);
|
|
|
+ kdYdTransferDetail.setGgxh(ggxh);
|
|
|
+ kdYdTransferDetail.setDetailId(count);
|
|
|
+ kdYdTransferDetail.setGgxh(ggxh);
|
|
|
+ kdYdTransferDetail.setDw(dw);
|
|
|
+ kdYdTransferDetail.setDbsl(dbsl);
|
|
|
+ kdYdTransferDetail.setPh(ph);
|
|
|
+ kdYdTransferDetail.setDcck(dcck);
|
|
|
+ kdYdTransferDetail.setDcckzt(dcckzt);
|
|
|
+ kdYdTransferDetail.setDccw(dccw);
|
|
|
+ kdYdTransferDetail.setDrck(drck);
|
|
|
+ kdYdTransferDetail.setDrckzt(drckzt);
|
|
|
+ kdYdTransferDetail.setDrcw(drcw);
|
|
|
+ kdYdTransferDetail.setSyncStatus("0");
|
|
|
+ kdYdTransferDetail.setOperationType("1");
|
|
|
+ if ("2".equals(type) || "3".equals(type)) {
|
|
|
+ kdYdTransferDetail.setOperationType(type);
|
|
|
+ kdYdTransferDetailMapper.update(kdYdTransferDetail, new LambdaQueryWrapper<KdYdTransferDetail>()
|
|
|
+ .eq(KdYdTransferDetail::getWlbm, wlbm)
|
|
|
+ .eq(KdYdTransferDetail::getTransferId, id));
|
|
|
+ } else {
|
|
|
+ kdYdTransferDetailMapper.insert(kdYdTransferDetail);
|
|
|
+ }
|
|
|
+
|
|
|
+ count++;
|
|
|
+//save(kdYdDeliveryDetail);
|
|
|
+ }
|
|
|
+// ydClient.operateData(
|
|
|
+// YDParam.builder()
|
|
|
+// .formInstanceId(formInstId)
|
|
|
+// .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrqnxmm", id)))
|
|
|
+// .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static LocalDateTime parseTimestamp(String timestampStr) {
|
|
|
+ if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
|
|
|
+ try {
|
|
|
+ long timestamp = Long.parseLong(timestampStr.trim());
|
|
|
+ return LocalDateTime.ofInstant(
|
|
|
+ Instant.ofEpochMilli(timestamp),
|
|
|
+ ZoneId.systemDefault()
|
|
|
+ );
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static int parseInt(String str, int defaultValue) {
|
|
|
+ if (str == null || str.trim().isEmpty()) {
|
|
|
+ return defaultValue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ return Integer.parseInt(str.trim());
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ return defaultValue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String safeGetString(Map formData, String key) {
|
|
|
+ Object val = formData.get(key);
|
|
|
+ return val == null ? "" : String.valueOf(val);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static BigDecimal toBigDecimal(String str) {
|
|
|
+ if (str == null || str.trim().isEmpty()) {
|
|
|
+ return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ return new BigDecimal(str.trim())
|
|
|
+ .setScale(2, RoundingMode.HALF_UP);
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ // 返回默认值而不是抛出异常,避免程序中断
|
|
|
+ return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重载方法,支持Number类型输入
|
|
|
+ */
|
|
|
+ public static BigDecimal toBigDecimal(Number number) {
|
|
|
+ if (number == null) {
|
|
|
+ return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ return new BigDecimal(number.toString())
|
|
|
+ .setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+}
|