ソースを参照

1.28代码提交

“lqy 1 週間 前
コミット
79022c4b85

+ 5 - 5
mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdOutboundController.java

@@ -28,9 +28,9 @@ public class KdYdOutboundController {
     private YDClient ydClient;
     @Autowired
     private IKdYdOutboundService kdYdOutboundService;
-//    @PostMapping("/kdYdOutbound")
-//    Map<String, Object> insertkdYdOutbound(@RequestBody Map map) {
-//        Map<String, Object> stringObjectMap = kdYdOutboundService.insertkdYdOutbound(map);
-//        return stringObjectMap;
-//    }
+    @PostMapping("/kdYdOutbound")
+    Map<String, Object> insertkdYdOutbound(@RequestBody Map map) {
+        Map<String, Object> stringObjectMap = kdYdOutboundService.insertkdYdOutbound(map);
+        return stringObjectMap;
+    }
 }

+ 13 - 2
mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdReceivableController.java

@@ -28,9 +28,20 @@ public class KdYdReceivableController {
     private YDClient ydClient;
     @Autowired
     private IKdYdReceivableService kdYdReceivableService;
-    @PostMapping("/kdYdReceivable")
-    McR insertkdYdReceivable(@RequestBody Map map) {
+    @PostMapping("/kdYdReceivable1")
+    McR insertkdYdReceivable1(@RequestBody Map map) {
         kdYdReceivableService.insertkdYdReceivable(map);
         return McR.success();
     }
+    @PostMapping("/kdYdReceivable")
+    Map<String, Object> insertkdYdReceivable(@RequestBody Map map) {
+        Map<String, Object> stringObjectMap =kdYdReceivableService.insertkdYdReceivable1(map);
+        return stringObjectMap;
+    }
+
+    @PostMapping("/kdYdpayment")
+    Map<String, Object> insertkdYdpayment(@RequestBody Map map) {
+        Map<String, Object> stringObjectMap =kdYdReceivableService.insertkdYdpayment(map);
+        return stringObjectMap;
+    }
 }

+ 8 - 2
mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdTransferController.java

@@ -28,9 +28,15 @@ public class KdYdTransferController {
     private YDClient ydClient;
     @Autowired
     private IKdYdTransferService kdYdTransferService;
-    @PostMapping("/kdYdTransfer")
-    McR insertTransfer(@RequestBody Map map) {
+    @PostMapping("/kdYdTransfer1")
+    McR insertTransfer1(@RequestBody Map map) {
         kdYdTransferService.insertTransfer(map);
         return McR.success();
     }
+
+    @PostMapping("/kdYdTransfer")
+    Map<String, Object> insertTransfer(@RequestBody Map map) {
+        Map<String, Object> stringObjectMap = kdYdTransferService.insertTransfer1(map);
+        return stringObjectMap;
+    }
 }

+ 1 - 1
mjava-huagao/src/main/java/com/malk/huagao/service/IKdYdOutboundService.java

@@ -15,5 +15,5 @@ import java.util.Map;
  */
 public interface IKdYdOutboundService extends IService<KdYdOutbound> {
 
-//    Map<String, Object> insertkdYdOutbound(Map map);
+    Map<String, Object> insertkdYdOutbound(Map map);
 }

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/IKdYdReceivableService.java

@@ -16,4 +16,8 @@ import java.util.Map;
 public interface IKdYdReceivableService extends IService<KdYdReceivable> {
 
     void insertkdYdReceivable(Map map);
+
+    Map<String, Object> insertkdYdReceivable1(Map map);
+
+    Map<String, Object> insertkdYdpayment(Map map);
 }

+ 1 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/IKdYdTransferService.java

@@ -17,4 +17,5 @@ public interface IKdYdTransferService extends IService<KdYdTransfer> {
 
     void insertTransfer(Map map);
 
+    Map<String, Object> insertTransfer1(Map map);
 }

+ 104 - 26
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOrderServiceImpl.java

@@ -1,6 +1,9 @@
 package com.malk.huagao.service.impl;
 
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -17,6 +20,7 @@ import com.malk.server.aliwork.YDSearch;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.MDC;
@@ -59,13 +63,29 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
         try {
             MDC.put("MDC_KEY_PID", "1003");
             String formInstId = UtilMap.getString(map, "formInstId");
-            String type = UtilMap.getString(map, "action");
+            String type = UtilMap.getString(map, "type");
 
             // 处理特殊操作类型
             if ("del".equals(type)) {
                 String bm = UtilMap.getString(map, "bm");
-                //todo 删除逻辑
-
+                Map<String, String> headers = new HashMap<>();
+                headers.put("Content-Type", "application/x-www-form-urlencoded");
+                Map<String, Object> formParams = new HashMap<>();
+                Map<String, Object> djbh = new HashMap<>();
+                djbh.put("djbh", bm);
+                result.put("data", djbh);
+                String jsonStr = JSON.toJSONString(result);
+
+                formParams.put("jsons", jsonStr);
+
+                System.out.println("====" + formParams);
+                HttpResponse response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbdeletexsdd")
+                        .headerMap(headers, true)
+                        .form(formParams)
+                        .timeout(30000)  // 30秒超时
+                        .execute();
+
+                String responseBody = response.body();
                 // 返回删除操作的格式
                 result.put("table", "KD_YD_ORDER");
                 result.put("action", "del");
@@ -78,11 +98,34 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
 
             if ("cancel".equals(type)) {
                 String bm = UtilMap.getString(map, "bm");
-                //todo 作废逻辑
-
+                Map<String, String> headers = new HashMap<>();
+                headers.put("Content-Type", "application/x-www-form-urlencoded");
+                Map<String, Object> formParams = new HashMap<>();
+                Map<String, Object> djbh = new HashMap<>();
+                djbh.put("djbh", bm);
+                result.put("data", djbh);
+                String jsonStr = JSON.toJSONString(result);
+                System.out.println("==" + jsonStr);
+                formParams.put("jsons", jsonStr);
+                HttpResponse response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbExcuteOperationxsdd")
+                        .headerMap(headers, true)
+                        .form(formParams)
+                        .timeout(30000)  // 30秒超时
+                        .execute();
+
+                String responseBody = response.body();
+                String msg = JSON.parseArray(responseBody)
+                        .getJSONObject(0)
+                        .getString("msg");
+                ydClient.operateData(
+                        YDParam.builder()
+                                .formInstanceId(formInstId)
+                                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textareaField_mkxqgrvq", msg)))
+                                .useLatestVersion(true).build(),
+                        YDConf.FORM_OPERATION.update);
                 // 返回作废操作的格式
                 result.put("table", "KD_YD_ORDER");
-                result.put("action", "edit"); // 作废通常是修改状态
+                result.put("action", "cancel"); // 作废通常是修改状态
                 result.put("data", new HashMap<String, Object>() {{
                     put("bm", bm); // 作废状态
                     put("msg", "作废成功");
@@ -100,15 +143,18 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             // 提取主表字段
             String djlx = UtilMap.getString(formData, "selectField_mejowmna");
             String khmc = UtilMap.getString(formData, "textField_mejnamf2");
-            String djbh = UtilMap.getString(formData, "textField_mjs6fuwo");
+//            String khmc = "五岳";
+//            String djbh = UtilMap.getString(formData, "textField_mjs6fuwo");
 
             // 判断操作类型对应的action
             String actionType;
+            String djbh = null;
             if ("edit".equals(type)) {
                 djbh = UtilMap.getString(formData, "textField_mjs6fuwo");
                 actionType = "edit";
             } else {
                 actionType = "add";
+                djbh = "";
             }
 
             // 提取其他字段...
@@ -137,13 +183,14 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
 
             // 处理订单明细
             List<Map<String, Object>> orderList = new ArrayList<>();
-            if (tableField != null ) {
+            if (tableField != null) {
                 for (int i = 0; i < tableField.size(); i++) {
                     Map item = tableField.get(i);
                     Map<String, Object> table1Map = new HashMap<>();
 
                     int detailId = parseInt(safeGetString(item, "numberField_mjzfodew"), 0);
                     String wlbm = safeGetString(item, "textField_mfbx1pqt");
+//                    String wlbm = "010101010003";
                     String wlmc = safeGetString(item, "textField_mfbx1pqs");
                     String ggxh = safeGetString(item, "textField_mfbx1pqr");
                     String xsdw = safeGetString(item, "textField_mfbx1pqq");
@@ -179,9 +226,9 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
                     table1Map.put("sfzp", sfzp);
                     table1Map.put("bz", bz1);
                     table1Map.put("sl", sl);
-                    table1Map.put("se", zse);
-                    table1Map.put("je", zje);
-                    table1Map.put("jshj", zjshj);
+                    table1Map.put("se1", zse);
+                    table1Map.put("je1", zje);
+                    table1Map.put("jshj1", zjshj);
                     table1Map.put("jj", jj);
                     table1Map.put("zkl", zkl);
                     table1Map.put("zke", zke);
@@ -250,21 +297,51 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             orderData.put("OrderDetailList", orderList);         // 订单明细列表
             orderData.put("PaymentDetailList", OrderPayList);    // 付款明细列表
 
-            // 设置返回结果
-            result.put("table", "KD_YD_ORDER");
-            result.put("action", actionType);
-            result.put("data", orderData);
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Content-Type", "application/x-www-form-urlencoded");
 
-            // 如果需要回写到表单,可以在这里操作
-        /*
-        ydClient.operateData(
-            YDParam.builder()
-                .formInstanceId(formInstId)
-                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrmn66f", "需要回写的值")))
-                .useLatestVersion(true).build(),
-            YDConf.FORM_OPERATION.update);
-        */
+            result.put("data", orderData);
+// 将result转换为JSON字符串
+            String jsonStr = JSON.toJSONString(result);
+// 构建form参数
+            Map<String, Object> formParams = new HashMap<>();
+            formParams.put("jsons", jsonStr);
+// 发送请求
+            HttpResponse response = null;
+            if (actionType == "add") {
+                response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbxsdd")
+                        .headerMap(headers, true)
+                        .form(formParams)
+                        .timeout(30000)  // 30秒超时
+                        .execute();
+            } else {
+                response = HttpRequest.post("http://113.45.187.194:70/xk/dyzn/WsBasedyzn.asmx/hgdjydtbupdatexsdd")
+                        .headerMap(headers, true)
+                        .form(formParams)
+                        .timeout(30000)  // 30秒超时
+                        .execute();
+            }
 
+            String responseBody = response.body();
+            try {
+                // 一行代码提取
+                String jdbh = JSON.parseArray(responseBody)
+                        .getJSONObject(0)
+                        .getJSONObject("data")
+                        .getString("djbh");
+                String msg = JSON.parseArray(responseBody)
+                        .getJSONObject(0)
+                        .getString("msg");
+                ydClient.operateData(
+                        YDParam.builder()
+                                .formInstanceId(formInstId)
+                                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textareaField_mkxqgrvq, textField_mjs6fuwo", msg, jdbh)))
+                                .useLatestVersion(true).build(),
+                        YDConf.FORM_OPERATION.update);
+
+            } catch (Exception e) {
+                System.out.println("解析JSON失败: " + e.getMessage());
+            }
         } catch (Exception e) {
             // 异常处理
             result.put("table", "KD_YD_SALE_ORDER");
@@ -375,7 +452,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             String khsx = "";
 
 // 1. 设置客户属性(单独判断)
-            if(totalAmount >= 75000 && sfToDdDays <= 180){
+            if (totalAmount >= 75000 && sfToDdDays <= 180) {
                 khsx = "自行开发";
             }
 
@@ -470,8 +547,9 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
 
     /**
      * 计算时间戳:在基础时间戳上添加天数
+     *
      * @param baseTimestamp 基础时间戳(毫秒)
-     * @param days 要添加的天数
+     * @param days          要添加的天数
      * @return 计算后的时间戳(毫秒)
      */
     private long calculateTimestamp(long baseTimestamp, int days) {

+ 331 - 227
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOutboundServiceImpl.java

@@ -48,233 +48,337 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
     private KdYdOutboundMapper kdYdOutboundMapper;
     @Autowired
     private KdYdOutboundDetailMapper kdYdOutboundDetailMapper;
-//    @Override
-//    public Map<String, Object> insertkdYdOutbound(Map json) {
-//        HashMap<String, Object> result = new HashMap<>();
-//      try {
-//          MDC.put("MDC_KEY_PID", "1003");
-//          List<Map<String , Object>> kdYdOutbounddels = UtilMap.getList(json, "data");
-//          String action = UtilMap.getString(json, "action");
-//          String table = UtilMap.getString(json, "table");
-//
-//
-//        // 批量删除处理
-//        if (!kdYdOutbounddels.isEmpty() && action.equals("del") && table.equals("KD_YD_OUTBOUND")) {
-//            log.info("开始处理出库单删除操作,共{}条数据", kdYdOutbounddels.size());
-//            ArrayList<String> deleteList = new ArrayList<>();
-//            int deleteSuccessCount = 0;
-//
-//            for (Map item : kdYdOutbounddels) {
-//                try {
-//                    String djbh = String.valueOf(item.get("djbh"));
-//
-//                    List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
-//                            .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
-//                            .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", djbh)))
-//                            .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
-//
-//                    if (list1 != null && !list1.isEmpty()) {
-//                        for (Map map : list1) {
-//                            String formInstanceId = UtilMap.getString(map, "formInstanceId");
-//                            if (formInstanceId != null) {
-//                                deleteList.add(formInstanceId);
-//                            }
-//                        }
-//                        deleteSuccessCount++;
-//
-//                        // 同时删除对应的子表数据
-//
-//                    } else {
-//                        log.warn("未找到对应的出库单数据: djbh={}", djbh);
-//                    }
-//
-//
-//
-//                } catch (Exception e) {
-//                    log.error("删除出库单数据查询异常: djbh={}", item.get("djbh"), e);
-//                }
-//            }
-//
-//            // 执行批量删除
-//            if (!deleteList.isEmpty()) {
-//                try {
-//                    ydClient.operateData(YDParam.builder()
-//                            .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
-//                            .formInstanceIdList(deleteList)
-//                            .build(), YDConf.FORM_OPERATION.delete_batch);
-//                    log.info("出库单批量删除完成,共删除{}条数据", deleteList.size());
-//                } catch (Exception e) {
-//                    log.error("出库单批量删除操作异常", e);
-//                }
-//            }
-//
-//            return;
-//        } else {
-//            log.info("【出库单删除任务】无需要删除的数据");
-//        }
-//
-//          List<Map<String, Object>> kdYdOutbounds = UtilMap.getList(json ,"data");
-//          // 同步新增/更新数据
-//          if (kdYdOutbounds.isEmpty()) {
-//              log.info("【物料单同步任务】无需要同步的数据,结束");
-//              result.put("code", "200");
-//              result.put("msg", "无需要同步的数据");
-//              result.put("data", new HashMap<>());
-//              return result;
-//          }
-//        log.info("【出库单同步任务】开始同步,共{}条数据", kdYdOutbounds.size());
-//
-//        int successCount = 0;
-//        int failCount = 0;
-//
-//        for (Map kdYdOutbound : kdYdOutbounds) {
-//                ArrayList<Object> tableList = new ArrayList<>();
-//                List<Map<String, Object>> tableListxlh = new ArrayList<>(); // 在循环外初始化
-//                for (KdYdOutboundDetail kdYdOutboundDetail : kdYdOutboundDetails) {
-//                    HashMap<String, String> tablemap = new HashMap<>();
-//                    HashMap<String, String> tablemapxlh = new HashMap<>();
-//                    tablemap.put("textField_mejnamff", kdYdOutboundDetail.getWlbm());
-//                    tablemap.put("textField_mejnamfg", kdYdOutboundDetail.getWlmc());
-//                    tablemap.put("textField_mg34txh1", kdYdOutboundDetail.getTpsb());
-//                    tablemap.put("textField_mejnamfh", kdYdOutboundDetail.getGgxh());
-//                    tablemap.put("textField_mejnamfk", kdYdOutboundDetail.getKcdw());
-//                    tablemap.put("numberField_mejnamfl", String.valueOf(kdYdOutboundDetail.getYfsl() != null ? kdYdOutboundDetail.getYfsl().setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP)));
-//                    tablemap.put("numberField_mg34txh2", kdYdOutboundDetail.getSfsl() != null ? kdYdOutboundDetail.getSfsl().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("numberField_mg34txh3", kdYdOutboundDetail.getDj() != null ? kdYdOutboundDetail.getDj().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("numberField_mg34txh4", kdYdOutboundDetail.getHsdj() != null ? kdYdOutboundDetail.getHsdj().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("textField_mg34txh5", kdYdOutboundDetail.getPh());
-//                    tablemap.put("numberField_mg34txh6", kdYdOutboundDetail.getSl() != null ? kdYdOutboundDetail.getSl().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("numberField_mg34txh7", kdYdOutboundDetail.getSe() != null ? kdYdOutboundDetail.getSe().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("numberField_mg34txh8", kdYdOutboundDetail.getJe() != null ? kdYdOutboundDetail.getJe().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("numberField_mg34txh9", kdYdOutboundDetail.getJshj() != null ? kdYdOutboundDetail.getJshj().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("textField_mf6a0h6l", kdYdOutboundDetail.getCk());
-//                    tablemap.put("textField_mf6a0h6k", kdYdOutboundDetail.getCw());
-//                    tablemap.put("textField_mf6a0h6p", kdYdOutboundDetail.getKczt());
-//                    tablemap.put("numberField_mg34txha", kdYdOutboundDetail.getJtc() != null ? kdYdOutboundDetail.getJtc().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
-//                    tablemap.put("textField_mejnamf6", kdYdOutboundDetail.getSjr());
-//                    tablemap.put("textField_mejnamf7", kdYdOutboundDetail.getSjdh());
-//                    tablemap.put("textareaField_mf6a0h5e", kdYdOutboundDetail.getSjdz());
-//                    tablemap.put("textField_mejnamfx", kdYdOutboundDetail.getSsxl());
-//                    tablemap.put("textField_mf6a0h6u", kdYdOutboundDetail.getGg());
-//                    tablemap.put("textField_mhlqeoas", kdYdOutboundDetail.getZbq());
-//                    tablemap.put("dateField_mg34txhb", kdYdOutboundDetail.getFwdqr() != null ? String.valueOf(kdYdOutboundDetail.getFwdqr().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
-//                    tablemap.put("textField_mf6a0h6w", kdYdOutboundDetail.getXlh());
-//                    tablemap.put("textField_mhlqeoat", kdYdOutboundDetail.getZbqsf());
-//                    tablemap.put("textField_mf6a0h6x", kdYdOutboundDetail.getKddh());
-//                    tablemap.put("textField_mf6a0h6y", kdYdOutboundDetail.getJx());
-//                    String xlhjh = kdYdOutboundDetail.getXlh();
-//                    if (xlhjh != null && !xlhjh.trim().isEmpty()) {
-//                        List<Map<String, Object>> currentXlhList = Arrays.stream(xlhjh.split(","))
-//                                .map(String::trim)
-//                                .filter(item -> !item.isEmpty())
-//                                .map(item -> {
-//                                    Map<String, Object> map = new HashMap<>();
-//                                    map.put("textField_mf6a0h6w", item); // 序列号
-//                                    map.put("textField_mjqst61l", kdYdOutboundDetail.getWlbm()); // 对应的物料编码
-//                                    map.put("textField_mjqst61m", kdYdOutboundDetail.getGgxh());
-//                                    return map;
-//                                })
-//                                .collect(Collectors.toList());
-//
-//                        tableListxlh.addAll(currentXlhList); // 追加到总列表
-//                    }
-//
-//                    // 主表仍保留原始 xlh(可选)
-//                    tablemap.put("textField_mf6a0h6w", kdYdOutboundDetail.getXlh());
-//                    tablemap.put("radioField_mf6a0h6h", kdYdOutboundDetail.getSfzp());
-//
-//                    tableList.add(tablemap);
-//
-//                    // 更新同步状态
-//                    kdYdOutboundDetail.setSyncStatus("1");
-//                    kdYdOutboundDetailMapper.updateById(kdYdOutboundDetail);
-//                }
-//
-//                String fhdformInstanceId = null;
-//                String fhdbh = null;
-//                try {
-//                    log.debug("开始查询出库数据: deliveryId={}", deliveryId);
-//
-//                    List<Map> ddlist = (List<Map>) ydClient.queryData(
-//                            YDParam.builder()
-//                                    .formUuid("FORM-FAE2575E112644ED914CAB4FEC9309F32AVR")
-//                                    .appType("APP_VQDMMWS6OR1VHL8VMFD3")
-//                                    .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
-//                                    .searchCondition(JSON.toJSONString(UtilMap.map("serialNumberField_mheazm7w", deliveryId)))
-//                                    .build(),
-//                            YDConf.FORM_QUERY.retrieve_list_all
-//                    ).getData();
-//
-//                    if (ddlist != null && !ddlist.isEmpty()) {
-//
-//                        for (Map<String, Object> khitem : ddlist) {
-//                            Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
-//
-//                            if (khformData != null && deliveryId.equals(khformData.get("serialNumberField_mheazm7w"))) {
-//                                fhdformInstanceId = (String) khitem.get("formInstanceId");
-//                                fhdbh = (String) khformData.get("serialNumberField_mheazm7w");
-//                                break;
-//                            }
-//                        }
-//
-//                        if (fhdformInstanceId == null) {
-//                            log.warn("未找到与fhdbh={}完全匹配的订单数据", fhdbh);
-//                        }
-//                    } else {
-//                        log.warn("未查询到订单数据: fhdbh={}", fhdbh);
-//                    }
-//
-//                } catch (Exception e) {
-//                    log.error("查询订单数据异常: fhdbh={}, 错误信息={}", fhdbh, e.getMessage(), e);
-//                }
-//                HashMap<Object, Object> updateMap = new HashMap<>();
-//                updateMap.put("tableField_mejnamfd", tableList);
-//                updateMap.put("tableField_mips137b", tableListxlh);
-//                if (fhdbh != null && fhdformInstanceId != null) {
-//                    updateMap.put("associationFormField_mejmml36",
-//                            Arrays.asList(getfhdAss(fhdformInstanceId,fhdbh)));
-//                }
-//                updateMap.put("dateField_krbgloam", kdYdOutbound.getDateTime() != null ? String.valueOf(kdYdOutbound.getDateTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
-//                updateMap.put("textField_krnn5bmr", kdYdOutbound.getXsDept());
-//                updateMap.put("textField_mhjxw689", kdYdOutbound.getFhDept());
-//                updateMap.put("textField_mhjxw686", kdYdOutbound.getCgy());
-//                updateMap.put("selectField_mejowmna", kdYdOutbound.getDjlx());
-//                updateMap.put("textField_mg34txgm", kdYdOutbound.getDjbh());
-//                updateMap.put("textField_mhlqeoar", kdYdOutbound.getJsbb());
-//                updateMap.put("textField_mejnamf2", kdYdOutbound.getKh());
-//                updateMap.put("selectField_mejowmnc", kdYdOutbound.getXslx());
-//                updateMap.put("textField_mhjxw688", kdYdOutbound.getXsy());
-//                updateMap.put("selectField_mg34txgt", kdYdOutbound.getXssx());
-//                updateMap.put("selectField_megi74y8", kdYdOutbound.getKhsx());
-//                updateMap.put("textField_mg34txgy", kdYdOutbound.getKhtjr());
-//                updateMap.put("textField_mg34txgz", kdYdOutbound.getYsdh());
-//                updateMap.put("textField_migw33w6", deliveryId);
-//
-//                // 添加同步操作(根据您的实际需求添加)
-//                ydClient.operateData(YDParam.builder()
-//                        .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
-//                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", kdYdOutbound.getDjbh())))
-//                        .formDataJson(JSONObject.toJSONString(updateMap))
-//                        .build(), YDConf.FORM_OPERATION.upsert
-//                );
-//                // 更新同步状态
-//                kdYdOutbound.setSyncStatus("1");
-//                kdYdOutboundMapper.updateById(kdYdOutbound);
-//                successCount++;
-//
-//                log.info("出库单同步成功: 单据编号={}", djbh);
-//
-//            } catch (Exception e) {
-//                failCount++;
-//                log.error("同步单条出库单数据异常: 单据编号={}, 错误信息={}",
-//                        kdYdOutbound.getDjbh(), e.getMessage(), e);
-//            }
-//        }
-//
-//        log.info("【出库单同步任务】完成: 成功={}, 失败={}, 总计={}",
-//                successCount, failCount, kdYdOutbounds.size());
-//
-//    }
+    @Override
+    public Map<String, Object> insertkdYdOutbound(Map json) {
+        HashMap<String, Object> result = new HashMap<>();
+
+        try {
+            MDC.put("MDC_KEY_PID", "1003");
+            List<Map<String, Object>> kdYdOutbounddels = UtilMap.getList(json, "data");
+            String action = UtilMap.getString(json, "action");
+            String table = UtilMap.getString(json, "table");
+
+            // 批量删除处理
+            if (!kdYdOutbounddels.isEmpty() && action.equals("del") && table.equals("KD_YD_OUTBOUND")) {
+                log.info("开始处理出库单删除操作,共{}条数据", kdYdOutbounddels.size());
+                ArrayList<String> deleteList = new ArrayList<>();
+                int deleteSuccessCount = 0;
+
+                for (Map item : kdYdOutbounddels) {
+                    try {
+                        String djbh = String.valueOf(item.get("djbh"));
+
+                        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
+                                .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", djbh)))
+                                .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
+
+                        if (list1 != null && !list1.isEmpty()) {
+                            for (Map map : list1) {
+                                String formInstanceId = UtilMap.getString(map, "formInstanceId");
+                                if (formInstanceId != null) {
+                                    deleteList.add(formInstanceId);
+                                }
+                            }
+                            deleteSuccessCount++;
+                        } else {
+                            log.warn("未找到对应的出库单数据: djbh={}", djbh);
+                        }
+
+                    } catch (Exception e) {
+                        log.error("删除出库单数据查询异常: djbh={}", item.get("djbh"), e);
+                    }
+                }
+
+                // 执行批量删除
+                if (!deleteList.isEmpty()) {
+                    try {
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
+                                .formInstanceIdList(deleteList)
+                                .build(), YDConf.FORM_OPERATION.delete_batch);
+                        log.info("出库单批量删除完成,共删除{}条数据", deleteList.size());
+                    } catch (Exception e) {
+                        log.error("出库单批量删除操作异常", e);
+                    }
+                }
+
+                // 返回删除结果
+                result.put("code", "200");
+                result.put("msg", "删除成功,共删除" + deleteList.size() + "条数据");
+                result.put("data", new HashMap<String, Object>() {{
+                    put("deletedCount", deleteList.size());
+                    put("deletedIds", deleteList);
+                }});
+                return result;
+            } else if (action.equals("del")) {
+                log.info("【出库单删除任务】无需要删除的数据");
+                result.put("code", "200");
+                result.put("msg", "无需要删除的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            List<Map<String, Object>> kdYdOutbounds = UtilMap.getList(json, "data");
+            // 同步新增/更新数据
+            if (kdYdOutbounds.isEmpty()) {
+                log.info("【出库单同步任务】无需要同步的数据,结束");
+                result.put("code", "200");
+                result.put("msg", "无需要同步的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            log.info("【出库单同步任务】开始同步,共{}条数据", kdYdOutbounds.size());
+
+            List<Map<String, Object>> operationResults = new ArrayList<>();
+            int successCount = 0;
+            int failCount = 0;
+
+            for (Map tableItem : kdYdOutbounds) {
+                Map<String, Object> singleResult = new HashMap<>();
+
+                try {
+                    String djbh = String.valueOf(tableItem.get("djbh"));
+                    List<Map<String, Object>> tableList1 = UtilMap.getList(tableItem, "tableList");
+                    Integer deliveryId = UtilMap.getInt(tableItem, "deliveryId");
+
+                    // 检查明细数据是否存在
+                    if (tableList1 == null || tableList1.isEmpty()) {
+                        log.warn("出库单明细数据为空: djbh={}", djbh);
+                        singleResult.put("djbh", djbh);
+                        singleResult.put("errorMsg", "明细数据为空");
+                        singleResult.put("status", "fail");
+                        failCount++;
+                        operationResults.add(singleResult);
+                        continue;
+                    }
+
+                    ArrayList<Object> tableList = new ArrayList<>();
+                    List<Map<String, Object>> tableListxlh = new ArrayList<>();
+
+                    // 处理明细数据
+                    for (Map item1 : tableList1) {
+                        HashMap<String, String> tablemap = new HashMap<>();
+                        tablemap.put("textField_mg34txgm", String.valueOf(tableItem.get("djbh")));
+                        tablemap.put("textField_mejnamff", String.valueOf(item1.get("wlbm")));
+                        tablemap.put("textField_mejnamfg", String.valueOf(item1.get("wlmc")));
+                        tablemap.put("textField_mg34txh1", String.valueOf(item1.get("tpsb")));
+                        tablemap.put("textField_mejnamfh", String.valueOf(item1.get("ggxh")));
+                        tablemap.put("textField_mejnamfk", String.valueOf(item1.get("kcdw")));
+
+                        // 处理数值字段
+                        tablemap.put("numberField_mejnamfl", safeConvertBigDecimalToString(item1.get("yfsl")));
+                        tablemap.put("numberField_mg34txh2", safeConvertBigDecimalToString(item1.get("sfsl")));
+                        tablemap.put("numberField_mg34txh3", safeConvertBigDecimalToString(item1.get("dj")));
+                        tablemap.put("numberField_mg34txh4", safeConvertBigDecimalToString(item1.get("hsdj")));
+
+                        tablemap.put("textField_mg34txh5", String.valueOf(item1.get("ph")));
+                        tablemap.put("numberField_mg34txh6", safeConvertBigDecimalToString(item1.get("sl")));
+                        tablemap.put("numberField_mg34txh7", safeConvertBigDecimalToString(item1.get("se")));
+                        tablemap.put("numberField_mg34txh8", safeConvertBigDecimalToString(item1.get("je")));
+                        tablemap.put("numberField_mg34txh9", safeConvertBigDecimalToString(item1.get("jshj")));
+
+                        tablemap.put("textField_mf6a0h6l", String.valueOf(item1.get("ck")));
+                        tablemap.put("textField_mf6a0h6k", String.valueOf(item1.get("cw")));
+                        tablemap.put("textField_mf6a0h6p", String.valueOf(item1.get("kczt")));
+                        tablemap.put("numberField_mg34txha", safeConvertBigDecimalToString(item1.get("jtc")));
+
+                        tablemap.put("textField_mejnamf6", String.valueOf(item1.get("sjr")));
+                        tablemap.put("textField_mejnamf7", String.valueOf(item1.get("sjdh")));
+                        tablemap.put("textareaField_mf6a0h5e", String.valueOf(item1.get("sjdz")));
+                        tablemap.put("textField_mejnamfx", String.valueOf(item1.get("sxl")));
+                        tablemap.put("textField_mf6a0h6u", String.valueOf(item1.get("gg")));
+                        tablemap.put("textField_mhlqeoas", String.valueOf(item1.get("zbq")));
+
+                        // 处理日期字段
+                        tablemap.put("dateField_mg34txhb", safeConvertDateTimeToString(item1.get("fwdqr")));
+                        tablemap.put("textField_mf6a0h6w", String.valueOf(item1.get("xlh")));
+                        tablemap.put("textField_mhlqeoat", String.valueOf(item1.get("zbqsf")));
+                        tablemap.put("textField_mf6a0h6x", String.valueOf(item1.get("kddh")));
+                        tablemap.put("textField_mf6a0h6y", String.valueOf(item1.get("jx")));
+                        tablemap.put("radioField_mf6a0h6h", String.valueOf(item1.get("sfzp")));
+
+                        tableList.add(tablemap);
+
+                        // 处理序列号明细
+                        String xlhjh = String.valueOf(item1.get("xlhjh"));
+                        if (xlhjh != null && !xlhjh.trim().isEmpty() && !"null".equals(xlhjh)) {
+                            List<Map<String, Object>> currentXlhList = Arrays.stream(xlhjh.split(","))
+                                    .map(String::trim)
+                                    .filter(item -> !item.isEmpty())
+                                    .map(item -> {
+                                        Map<String, Object> xlhMap = new HashMap<>();
+                                        xlhMap.put("textField_mf6a0h6w", item);
+                                        xlhMap.put("textField_mjqst61l", String.valueOf(item1.get("wlbm")));
+                                        xlhMap.put("textField_mjqst61m", String.valueOf(item1.get("ggxh")));
+                                        return xlhMap;
+                                    })
+                                    .collect(Collectors.toList());
+
+                            tableListxlh.addAll(currentXlhList);
+                        }
+                    }
+
+                    // 查询发货单数据
+                    String fhdformInstanceId = null;
+                    String fhdbh = String.valueOf(tableItem.get("fhdbh"));
+                    if (deliveryId != null) {
+                        try {
+                            log.debug("开始查询发货单数据: deliveryId={}", deliveryId);
+
+                            List<Map> ddlist = (List<Map>) ydClient.queryData(
+                                    YDParam.builder()
+                                            .formUuid("FORM-FAE2575E112644ED914CAB4FEC9309F32AVR")
+                                                   .searchCondition(JSON.toJSONString(UtilMap.map("serialNumberField_mheazm7w", deliveryId)))
+                                            .build(),
+                                    YDConf.FORM_QUERY.retrieve_list_all
+                            ).getData();
+
+                            if (ddlist != null && !ddlist.isEmpty()) {
+                                for (Map<String, Object> khitem : ddlist) {
+                                    Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
+
+                                    if (khformData != null && deliveryId.equals(khformData.get("serialNumberField_mheazm7w"))) {
+                                        fhdformInstanceId = (String) khitem.get("formInstanceId");
+                                        fhdbh = (String) khformData.get("serialNumberField_mheazm7w");
+                                        break;
+                                    }
+                                }
+                            } else {
+                                log.warn("未查询到发货单数据: deliveryId={}", deliveryId);
+                            }
+
+                        } catch (Exception e) {
+                            log.error("查询发货单数据异常: deliveryId={}", deliveryId, e);
+                        }
+                    }
+
+                    // 构建更新数据
+                    HashMap<Object, Object> updateMap = new HashMap<>();
+                    updateMap.put("tableField_mejnamfd", tableList);
+                    updateMap.put("tableField_mips137b", tableListxlh);
+
+                    // 添加关联表单数据
+                    if (fhdbh != null && !"null".equals(fhdbh) && fhdformInstanceId != null) {
+                        updateMap.put("associationFormField_mejmml36",
+                                Arrays.asList(getfhdAss(fhdbh,fhdformInstanceId)));
+                    }
+
+                    // 添加主表字段
+                    updateMap.put("dateField_krbgloam", safeConvertDateTimeToString(tableItem.get("dateTime")));
+                    updateMap.put("textField_krnn5bmr", String.valueOf(tableItem.get("xsDept")));
+                    updateMap.put("textField_mhjxw689", String.valueOf(tableItem.get("fhDept")));
+                    updateMap.put("textField_mhjxw686", String.valueOf(tableItem.get("cgy")));
+                    updateMap.put("selectField_mejowmna", String.valueOf(tableItem.get("djlx")));
+                    updateMap.put("textField_mg34txgm", String.valueOf(tableItem.get("djbh")));
+                    updateMap.put("textField_mhlqeoar", String.valueOf(tableItem.get("jsbb")));
+                    updateMap.put("textField_mejnamf2", String.valueOf(tableItem.get("kh")));
+                    updateMap.put("selectField_mejowmnc", String.valueOf(tableItem.get("xslx")));
+                    updateMap.put("textField_mhjxw688", String.valueOf(tableItem.get("xsy")));
+                    updateMap.put("selectField_mg34txgt", String.valueOf(tableItem.get("xssx")));
+                    updateMap.put("selectField_megi74y8", String.valueOf(tableItem.get("khsx")));
+                    updateMap.put("textField_mg34txgy", String.valueOf(tableItem.get("khtjr")));
+                    updateMap.put("textField_mg34txgz", String.valueOf(tableItem.get("ysdh")));
+                    updateMap.put("textField_migw33w6", String.valueOf(deliveryId));
+
+                    // 执行同步操作
+                    Object operationResult = ydClient.operateData(YDParam.builder()
+                            .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
+                            .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", String.valueOf(tableItem.get("djbh")))))
+                            .formDataJson(JSONObject.toJSONString(updateMap))
+                            .build(), YDConf.FORM_OPERATION.upsert);
+
+                    // 记录成功结果
+                    singleResult.put("djbh", djbh);
+                    singleResult.put("deliveryId", deliveryId);
+                    singleResult.put("operationResult", operationResult);
+                    singleResult.put("status", "success");
+                    successCount++;
+
+                    log.info("出库单同步成功: djbh={}, deliveryId={}", djbh, deliveryId);
+
+                } catch (Exception e) {
+                    String djbh = String.valueOf(tableItem.get("djbh"));
+                    log.error("同步出库单数据异常: djbh={}", djbh, e);
+
+                    singleResult.put("djbh", djbh);
+                    singleResult.put("errorMsg", e.getMessage());
+                    singleResult.put("status", "fail");
+                    failCount++;
+                }
+
+                operationResults.add(singleResult);
+            }
+
+            // 构建返回结果
+            Map<String, Object> data = new HashMap<>();
+            data.put("operationResults", operationResults);
+            data.put("totalCount", kdYdOutbounds.size());
+            data.put("successCount", successCount);
+            data.put("failCount", failCount);
+
+            result.put("code", failCount == 0 ? "200" : "300");
+            result.put("msg", "操作完成,成功" + successCount + "条,失败" + failCount + "条");
+            result.put("data", data);
+
+            log.info("【出库单同步任务】完成,共处理{}条数据,成功{}条,失败{}条",
+                    kdYdOutbounds.size(), successCount, failCount);
+
+        } catch (Exception e) {
+            log.error("出库单同步任务执行异常", e);
+            result.put("code", "500");
+            result.put("msg", "系统异常:" + e.getMessage());
+            result.put("data", new HashMap<>());
+        }
+
+        return result;
+    }
+
+    // 辅助方法:安全转换BigDecimal为字符串(保留2位小数)
+    private String safeConvertBigDecimalToString(Object value) {
+        try {
+            if (value == null) {
+                return java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString();
+            }
+
+            if (value instanceof BigDecimal) {
+                return ((BigDecimal) value).setScale(2, java.math.RoundingMode.HALF_UP).toString();
+            } else if (value instanceof Number) {
+                return new BigDecimal(value.toString()).setScale(2, java.math.RoundingMode.HALF_UP).toString();
+            } else if (value instanceof String) {
+                return new BigDecimal((String) value).setScale(2, java.math.RoundingMode.HALF_UP).toString();
+            }
+
+            return java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString();
+        } catch (Exception e) {
+            log.warn("转换BigDecimal异常: value={}", value);
+            return java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString();
+        }
+    }
+
+    // 辅助方法:安全转换日期时间为字符串
+    private String safeConvertDateTimeToString(Object dateTime) {
+        try {
+            if (dateTime == null) {
+                return "";
+            }
+
+            if (dateTime instanceof java.time.LocalDateTime) {
+                java.time.LocalDateTime dt = (java.time.LocalDateTime) dateTime;
+                return String.valueOf(dt.atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli());
+            }
+
+            return String.valueOf(dateTime);
+        } catch (Exception e) {
+            log.warn("转换日期时间异常: dateTime={}", dateTime);
+            return "";
+        }
+    }
+
+    private Object getfhdAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-A7F03ACEE01D4F609550C86BF7FE87D35M6I", "receipt", id, title, "");
+    }
     private static LocalDateTime parseTimestamp(String timestampStr) {
         if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
         try {

+ 632 - 2
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdReceivableServiceImpl.java

@@ -1,5 +1,6 @@
 package com.malk.huagao.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.huagao.entity.KdYdOutbound;
 import com.malk.huagao.entity.KdYdOutboundDetail;
@@ -16,6 +17,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -25,8 +27,8 @@ import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.List;
-import java.util.Map;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 
 /**
  * <p>
@@ -37,6 +39,7 @@ import java.util.Map;
  * @since 2025-10-16
  */
 @Service
+@Slf4j
 public class KdYdReceivableServiceImpl extends ServiceImpl<KdYdReceivableMapper, KdYdReceivable> implements IKdYdReceivableService {
     @Autowired
     private YDClient ydClient;
@@ -145,6 +148,633 @@ public class KdYdReceivableServiceImpl extends ServiceImpl<KdYdReceivableMapper,
                         .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
     }
 
+
+    @Override
+    public Map<String, Object> insertkdYdReceivable1(Map json) {
+        HashMap<String, Object> result = new HashMap<>();
+
+        try {
+            MDC.put("MDC_KEY_PID", "1003");
+            List<Map<String, Object>> kdYdReceivableDels = UtilMap.getList(json, "data");
+            String action = UtilMap.getString(json, "action");
+            String table = UtilMap.getString(json, "table");
+
+            // 批量删除处理
+            if (!kdYdReceivableDels.isEmpty() && "del".equals(action) && "KD_YD_RECEIVABLE".equals(table)) {
+                log.info("开始处理应收单删除操作,共{}条数据", kdYdReceivableDels.size());
+                ArrayList<String> deleteList = new ArrayList<>();
+                int deleteSuccessCount = 0;
+
+                for (Map<String, Object> item : kdYdReceivableDels) {
+                    try {
+                        String djbh = String.valueOf(item.get("djbh"));
+
+                        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
+                                .formUuid("FORM-4E1CE4550339494A9BE5498FB119FF2E9ERU")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg3a0tgs", djbh)))
+                                .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
+
+                        if (list1 != null && !list1.isEmpty()) {
+                            for (Map map : list1) {
+                                String formInstanceId = UtilMap.getString(map, "formInstanceId");
+                                if (formInstanceId != null) {
+                                    deleteList.add(formInstanceId);
+                                }
+                            }
+                            deleteSuccessCount++;
+                        } else {
+                            log.warn("未找到对应的应收单数据: djbh={}", djbh);
+                        }
+
+                    } catch (Exception e) {
+                        log.error("删除应收单数据查询异常: djbh={}", item.get("djbh"), e);
+                    }
+                }
+
+                // 执行批量删除
+                if (!deleteList.isEmpty()) {
+                    try {
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-4E1CE4550339494A9BE5498FB119FF2E9ERU")
+                                .formInstanceIdList(deleteList)
+                                .build(), YDConf.FORM_OPERATION.delete_batch);
+                        log.info("应收单批量删除完成,共删除{}条数据", deleteList.size());
+                    } catch (Exception e) {
+                        log.error("应收单批量删除操作异常", e);
+                    }
+                }
+
+                // 返回删除结果
+                result.put("code", "200");
+                result.put("msg", "删除成功,共删除" + deleteList.size() + "条数据");
+                result.put("data", new HashMap<String, Object>() {{
+                    put("deletedCount", deleteList.size());
+                    put("deletedIds", deleteList);
+                }});
+                return result;
+            } else if ("del".equals(action)) {
+                log.info("【应收单删除任务】无需要删除的数据");
+                result.put("code", "200");
+                result.put("msg", "无需要删除的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            // 同步新增/更新数据
+            List<Map<String, Object>> kdYdReceivables = UtilMap.getList(json, "data");
+            if (kdYdReceivables.isEmpty()) {
+                log.info("【应收单同步任务】无需要同步的数据,结束");
+                result.put("code", "200");
+                result.put("msg", "无需要同步的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            log.info("【应收单同步任务】开始同步,共{}条数据", kdYdReceivables.size());
+
+            List<Map<String, Object>> operationResults = new ArrayList<>();
+            int successCount = 0;
+            int failCount = 0;
+
+            for (Map<String, Object> receivableItem : kdYdReceivables) {
+                Map<String, Object> singleResult = new HashMap<>();
+
+                try {
+                    String djbh = String.valueOf(receivableItem.get("djbh"));
+                    List<Map<String, Object>> tableListData = UtilMap.getList(receivableItem, "tableList");
+                    List<Map<String, Object>> paymentListData = UtilMap.getList(receivableItem, "paymentList");
+                    Long receivableId = UtilMap.getLong(receivableItem, "receivableId");
+
+                    // 检查应收单明细数据是否存在
+                    if (tableListData == null || tableListData.isEmpty()) {
+                        log.warn("应收单明细数据为空: djbh={}", djbh);
+                        singleResult.put("errorMsg", "明细数据为空");
+                        singleResult.put("status", "fail");
+                        failCount++;
+                        operationResults.add(singleResult);
+                        continue;
+                    }
+
+                    // 处理应收单明细
+                    int count = 1;
+                    ArrayList<Object> tableList = new ArrayList<>();
+                    for (Map<String, Object> detailItem : tableListData) {
+                        HashMap<Object, Object> tablemap = new HashMap<>();
+
+                        // 使用辅助方法安全获取和格式化数据
+                        tablemap.put("textField_mgt4w4ip", count);
+                        tablemap.put("textField_mf6el3zy", String.valueOf(detailItem.get("wlbm")));
+                        tablemap.put("textField_mf6el3zz", String.valueOf(detailItem.get("wlmc")));
+                        tablemap.put("textField_mejmtic5", String.valueOf(detailItem.get("ggxh")));
+                        tablemap.put("textField_mf6el400", String.valueOf(detailItem.get("jjdw")));
+                        tablemap.put("textField_mhllijwo", String.valueOf(detailItem.get("ssxl")));
+                        tablemap.put("numberField_mf6el402", safeFormatBigDecimal(detailItem.get("dj")));
+                        tablemap.put("numberField_mejmticb", safeFormatBigDecimal(detailItem.get("hsdj")));
+                        tablemap.put("numberField_mf6el403", safeFormatBigDecimal(detailItem.get("sl")));
+                        tablemap.put("numberField_mejmtic7", safeFormatBigDecimal(detailItem.get("jshj")));
+                        tablemap.put("textField_mf6el409", String.valueOf(detailItem.get("kcdw")));
+                        tablemap.put("textField_mf6el408", String.valueOf(detailItem.get("ph")));
+                        tablemap.put("numberField_mf6el406", safeFormatBigDecimal(detailItem.get("se")));
+                        tablemap.put("numberField_mejmtic6", safeFormatBigDecimal(detailItem.get("jjsl")));
+                        tablemap.put("numberField_mf6el404", safeFormatBigDecimal(detailItem.get("zkl")));
+                        tablemap.put("numberField_mejmticc", safeFormatBigDecimal(detailItem.get("bhsje")));
+                        tablemap.put("numberField_mf6el407", safeFormatBigDecimal(detailItem.get("jjjbsl")));
+                        tablemap.put("numberField_mf6el40a", safeFormatBigDecimal(detailItem.get("kcsl")));
+                        tablemap.put("radioField_mejnamfn", String.valueOf(detailItem.get("sfzp")));
+                        tablemap.put("numberField_mf6el40c", safeFormatBigDecimal(detailItem.get("tc")));
+                        tablemap.put("textField_mf6el40d", String.valueOf(detailItem.get("jx")));
+                        tablemap.put("textField_mf6el40b", String.valueOf(detailItem.get("gg")));
+                        tablemap.put("numberField_mf6el405", safeFormatBigDecimal(detailItem.get("zke")));
+
+                        count++;
+                        tableList.add(tablemap);
+                    }
+
+                    // 处理收款计划
+                    ArrayList<Object> tableListPay = new ArrayList<>();
+                    if (paymentListData != null && !paymentListData.isEmpty()) {
+                        for (Map<String, Object> paymentItem : paymentListData) {
+                            HashMap<Object, Object> tablemap1 = new HashMap<>();
+
+                            // 处理日期字段
+                            Object endTimeObj = paymentItem.get("endTime");
+                            if (endTimeObj instanceof LocalDateTime) {
+                                long timestamp = ((LocalDateTime) endTimeObj).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+                                tablemap1.put("dateField_mhiui6v9", timestamp);
+                            } else if (endTimeObj instanceof String) {
+                                // 尝试解析字符串日期
+                                try {
+                                    LocalDateTime dateTime = LocalDateTime.parse((String) endTimeObj,
+                                            DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+                                    long timestamp = dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+                                    tablemap1.put("dateField_mhiui6v9", timestamp);
+                                } catch (Exception e) {
+                                    log.warn("无法解析日期字符串: {}", endTimeObj);
+                                }
+                            }
+
+                            tablemap1.put("textField_mhiui6va", String.valueOf(paymentItem.get("xsddh")));
+                            tablemap1.put("numberField_mhiui6v8", safeFormatBigDecimal(paymentItem.get("ysje")));
+                            tablemap1.put("numberField_mhiui6v6", safeFormatBigDecimal(paymentItem.get("ysbl")));
+                            tablemap1.put("numberField_mhiui6vb", safeFormatBigDecimal(paymentItem.get("ysjebwb")));
+                            tablemap1.put("numberField_mhjy9hzj", safeFormatBigDecimal(paymentItem.get("stkdglje")));
+                            tableListPay.add(tablemap1);
+                        }
+                    }
+
+                    // 查询关联的出库单数据
+                    String ckddjbh = String.valueOf(receivableItem.get("ckddjbh"));
+                    String ckdformInstanceId = null;
+                    String ckdbh = null;
+
+                    if (ckddjbh != null && !"null".equals(ckddjbh) && !ckddjbh.trim().isEmpty()) {
+                        try {
+                            List<Map> ddlist = (List<Map>) ydClient.queryData(
+                                    YDParam.builder()
+                                            .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
+                                            .searchCondition(JSON.toJSONString(UtilMap.map("textField_mg34txgm", ckddjbh)))
+                                            .build(),
+                                    YDConf.FORM_QUERY.retrieve_list_all
+                            ).getData();
+
+                            if (ddlist != null && !ddlist.isEmpty()) {
+                                for (Map<String, Object> khitem : ddlist) {
+                                    Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
+                                    if (khformData != null) {
+                                        Object ckddjbhObj = khformData.get("textField_mg34txgm");
+                                        String ckddjbhStr = ckddjbhObj != null ? ckddjbhObj.toString() : null;
+
+                                        if (ckddjbh.equals(ckddjbhStr)) {
+                                            ckdformInstanceId = (String) khitem.get("formInstanceId");
+                                            ckdbh = ckddjbhStr;
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                        } catch (Exception e) {
+                            log.error("查询出库单数据异常: ckddjbh={}", ckddjbh, e);
+                        }
+                    }
+
+                    // 构建主表数据
+                    HashMap<Object, Object> updateData = new HashMap<>();
+                    updateData.put("tableField_mf6el3zx", tableList);
+
+                    // 添加关联表单数据
+                    if (ckdbh != null && ckdformInstanceId != null) {
+                        updateData.put("associationFormField_mejmtick",
+                                Arrays.asList(getysdAss(ckdbh, ckdformInstanceId)));
+                    }
+
+                    updateData.put("tableField_mhiui6v5", tableListPay);
+                    updateData.put("textField_mg3a0tgs", djbh);
+                    updateData.put("textField_mj15q3dk", ckddjbh);
+                    updateData.put("selectField_mg3a0th4", String.valueOf(receivableItem.get("djlx")));
+                    updateData.put("selectField_mev13l3r", String.valueOf(receivableItem.get("sktj")));
+
+                    // 处理主表日期字段
+                    Object endTimeObj = receivableItem.get("endTime");
+                    if (endTimeObj instanceof LocalDateTime) {
+                        updateData.put("dateField_mejmtic3",
+                                ((LocalDateTime) endTimeObj).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+                    }
+
+                    Object businessTimeObj = receivableItem.get("businessTime");
+                    if (businessTimeObj instanceof LocalDateTime) {
+                        updateData.put("dateField_mejmtic2",
+                                ((LocalDateTime) businessTimeObj).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+                    }
+
+                    updateData.put("numberField_mejmtic8", safeFormatBigDecimal(receivableItem.get("jshj")));
+                    updateData.put("textField_mejmml3k", String.valueOf(receivableItem.get("kh")));
+                    updateData.put("textField_mhjy9hzh", String.valueOf(receivableItem.get("xsy")));
+                    updateData.put("selectField_mejowmnc", String.valueOf(receivableItem.get("xslx")));
+                    updateData.put("selectField_megi74y8", String.valueOf(receivableItem.get("khsx")));
+                    updateData.put("textField_krnn5bmr", String.valueOf(receivableItem.get("xsbm")));
+                    updateData.put("textField_mhjy9hzi", String.valueOf(receivableItem.get("lzlx")));
+                    updateData.put("textareaField_mg3a0tgx", String.valueOf(receivableItem.get("bz")));
+                    updateData.put("selectField_mg3fuqvn", String.valueOf(receivableItem.get("bb")));
+
+                    // 执行同步操作
+                    Object operationResult = ydClient.operateData(YDParam.builder()
+                            .formUuid("FORM-4E1CE4550339494A9BE5498FB119FF2E9ERU")
+                            .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg3a0tgs", djbh)))
+                            .formDataJson(JSONObject.toJSONString(updateData))
+                            .build(), YDConf.FORM_OPERATION.upsert
+                    );
+
+                    // 记录成功结果
+                    singleResult.put("operationResult", operationResult);
+                    singleResult.put("status", "success");
+                    singleResult.put("ckdformInstanceId", ckdformInstanceId);
+                    singleResult.put("tableCount", tableList.size());
+                    singleResult.put("paymentCount", tableListPay.size());
+                    successCount++;
+
+                    log.info("应收单同步成功: djbh={}, receivableId={}", djbh, receivableId);
+
+                } catch (Exception e) {
+                    String djbh = String.valueOf(receivableItem.get("djbh"));
+                    log.error("同步应收单数据异常: djbh={}", djbh, e);
+
+                    singleResult.put("djbh", djbh);
+                    singleResult.put("errorMsg", e.getMessage());
+                    singleResult.put("status", "fail");
+                    failCount++;
+                }
+
+                operationResults.add(singleResult);
+            }
+
+            // 构建返回结果
+            Map<String, Object> data = new HashMap<>();
+            data.put("operationResults", operationResults);
+            data.put("totalCount", kdYdReceivables.size());
+            data.put("successCount", successCount);
+            data.put("failCount", failCount);
+
+            result.put("code", failCount == 0 ? "200" : "300");
+            result.put("msg", "操作完成,成功" + successCount + "条,失败" + failCount + "条");
+            result.put("data", data);
+
+            log.info("【应收单同步任务】完成,共处理{}条数据,成功{}条,失败{}条",
+                    kdYdReceivables.size(), successCount, failCount);
+
+        } catch (Exception e) {
+            log.error("应收单同步任务执行异常", e);
+            result.put("code", "500");
+            result.put("msg", "系统异常:" + e.getMessage());
+            result.put("data", new HashMap<>());
+        } finally {
+            MDC.remove("MDC_KEY_PID");
+        }
+
+        return result;
+    }
+
+    @Override
+    public Map<String, Object> insertkdYdpayment(Map json) {
+
+        HashMap<String, Object> result = new HashMap<>();
+
+        try {
+            MDC.put("MDC_KEY_PID", "1006");
+            List<Map<String, Object>> kdYdPaymentReceiptDels = UtilMap.getList(json, "data");
+            String action = UtilMap.getString(json, "action");
+            String table = UtilMap.getString(json, "table");
+
+            // 批量删除处理
+            if (!kdYdPaymentReceiptDels.isEmpty() && "del".equals(action) && "KD_YD_PAYMENT_RECEIPT".equals(table)) {
+                log.info("开始处理收款单删除操作,共{}条数据", kdYdPaymentReceiptDels.size());
+                ArrayList<String> deleteList = new ArrayList<>();
+                int deleteSuccessCount = 0;
+
+                for (Map<String, Object> item : kdYdPaymentReceiptDels) {
+                    try {
+                        String djbh = String.valueOf(item.get("djbh"));
+
+                        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
+                                .formUuid("FORM-0569C06E47074C2981ADEEAFCE083EDAK5AM")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mh9woamt", djbh)))
+                                .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
+
+                        if (list1 != null && !list1.isEmpty()) {
+                            for (Map map : list1) {
+                                String formInstanceId = UtilMap.getString(map, "formInstanceId");
+                                if (formInstanceId != null) {
+                                    deleteList.add(formInstanceId);
+                                }
+                            }
+                            deleteSuccessCount++;
+                        } else {
+                            log.warn("未找到对应的收款单数据: djbh={}", djbh);
+                        }
+
+                    } catch (Exception e) {
+                        log.error("删除收款单数据查询异常: djbh={}", item.get("djbh"), e);
+                    }
+                }
+
+                // 执行批量删除
+                if (!deleteList.isEmpty()) {
+                    try {
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-0569C06E47074C2981ADEEAFCE083EDAK5AM")
+                                .formInstanceIdList(deleteList)
+                                .build(), YDConf.FORM_OPERATION.delete_batch);
+                        log.info("收款单批量删除完成,共删除{}条数据", deleteList.size());
+                    } catch (Exception e) {
+                        log.error("收款单批量删除操作异常", e);
+                    }
+                }
+
+                // 返回删除结果
+                result.put("code", "200");
+                result.put("msg", "删除成功,共删除" + deleteList.size() + "条数据");
+                result.put("data", new HashMap<String, Object>() {{
+                    put("deletedCount", deleteList.size());
+                    put("deletedIds", deleteList);
+                }});
+                return result;
+            } else if ("del".equals(action)) {
+                log.info("【收款单删除任务】无需要删除的数据");
+                result.put("code", "200");
+                result.put("msg", "无需要删除的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            // 同步新增/更新数据
+            List<Map<String, Object>> kdYdPaymentReceipts = UtilMap.getList(json, "data");
+            if (kdYdPaymentReceipts.isEmpty()) {
+                log.info("【收款单同步任务】无需要同步的数据,结束");
+                result.put("code", "200");
+                result.put("msg", "无需要同步的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            log.info("【收款单同步任务】开始同步,共{}条数据", kdYdPaymentReceipts.size());
+
+            List<Map<String, Object>> operationResults = new ArrayList<>();
+            int successCount = 0;
+            int failCount = 0;
+
+            for (Map<String, Object> paymentItem : kdYdPaymentReceipts) {
+                Map<String, Object> singleResult = new HashMap<>();
+
+                try {
+                    String djbh = String.valueOf(paymentItem.get("djbh"));
+                    List<Map<String, Object>> tableListData = UtilMap.getList(paymentItem, "tableList");
+                    Long paymentReceiptId = UtilMap.getLong(paymentItem, "paymentReceiptId");
+
+                    // 检查明细数据是否存在
+                    if (tableListData == null || tableListData.isEmpty()) {
+                        log.warn("收款单明细数据为空: djbh={}", djbh);
+                        singleResult.put("errorMsg", "明细数据为空");
+                        singleResult.put("status", "fail");
+                        failCount++;
+                        operationResults.add(singleResult);
+                        continue;
+                    }
+
+                    // 处理收款单明细
+                    ArrayList<Object> tableList = new ArrayList<>();
+                    for (Map<String, Object> detailItem : tableListData) {
+                        HashMap<String, String> tablemap = new HashMap<>();
+                        tablemap.put("textField_mh9woanr", String.valueOf(detailItem.get("jsfs")));
+                        tablemap.put("textField_mh9woans", String.valueOf(detailItem.get("skyt")));
+                        tablemap.put("textField_mh9woant", String.valueOf(detailItem.get("ysxmlx")));
+                        tablemap.put("textField_mh9woanu", String.valueOf(detailItem.get("ysxsdd")));
+                        tablemap.put("numberField_mh9woanv", safeFormatBigDecimalToString(detailItem.get("ysje")));
+                        tablemap.put("numberField_mh9woanw", safeFormatBigDecimalToString(detailItem.get("sxf")));
+                        tablemap.put("textField_mhmr1ecr", String.valueOf(detailItem.get("cdk")));
+                        tablemap.put("textField_mh9woany", String.valueOf(detailItem.get("wfyhzh")));
+                        tablemap.put("textField_mh9woao2", String.valueOf(detailItem.get("xsddh")));
+                        tablemap.put("textField_mh9woao1", String.valueOf(detailItem.get("fyxm")));
+                        tablemap.put("numberField_mh9woanz", safeFormatBigDecimalToString(detailItem.get("ssje")));
+                        tablemap.put("numberField_mh9woao0", safeFormatBigDecimalToString(detailItem.get("zhje")));
+                        tableList.add(tablemap);
+                    }
+
+                    // 查询关联的订单数据
+                    String xsddbh = String.valueOf(paymentItem.get("xsddbh"));
+                    String ddformInstanceId = null;
+                    String ddbh = null;
+
+                    if (xsddbh != null && !"null".equals(xsddbh) && !xsddbh.trim().isEmpty()) {
+                        try {
+                            log.debug("开始查询订单数据: xsddbh={}", xsddbh);
+
+                            List<Map> ddlist = (List<Map>) ydClient.queryData(
+                                    YDParam.builder()
+                                            .formUuid("FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C")
+                                            .searchCondition(JSON.toJSONString(UtilMap.map("textField_mjs6fuwo", xsddbh)))
+                                            .build(),
+                                    YDConf.FORM_QUERY.retrieve_list_all
+                            ).getData();
+
+                            if (ddlist != null && !ddlist.isEmpty()) {
+                                for (Map<String, Object> khitem : ddlist) {
+                                    Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
+                                    if (khformData != null) {
+                                        Object xsddbhObj = khformData.get("textField_mjs6fuwo");
+                                        String xsddbhStr = xsddbhObj != null ? xsddbhObj.toString() : null;
+
+                                        if (xsddbh.equals(xsddbhStr)) {
+                                            ddformInstanceId = (String) khitem.get("formInstanceId");
+                                            ddbh = xsddbhStr;
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                        } catch (Exception e) {
+                            log.error("查询订单数据异常: xsddbh={}", xsddbh, e);
+                        }
+                    }
+
+                    // 构建更新数据
+                    HashMap<Object, Object> updateMap = new HashMap<>();
+                    updateMap.put("tableField_mh9woanl", tableList);
+
+                    // 添加关联表单数据
+                    if (ddbh != null && ddformInstanceId != null) {
+                        updateMap.put("associationFormField_mh9woamy",
+                                Arrays.asList(getddAss(ddbh, ddformInstanceId)));
+                    }
+
+                    // 添加主表字段
+                    updateMap.put("textField_mh9woanm", String.valueOf(paymentItem.get("djlx")));
+                    updateMap.put("textField_mh9woann", String.valueOf(paymentItem.get("fkdwlx")));
+                    updateMap.put("textField_mh9woamt", djbh);
+                    updateMap.put("textField_mh9woamz", String.valueOf(paymentItem.get("skgld")));
+                    updateMap.put("textField_mh9woano", String.valueOf(paymentItem.get("bb")));
+
+                    // 处理日期字段
+                    Object ywrqObj = paymentItem.get("ywrq");
+                    if (ywrqObj != null) {
+                        if (ywrqObj instanceof LocalDateTime) {
+                            long timestamp = ((LocalDateTime) ywrqObj).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+                            updateMap.put("dateField_mh9woan5", timestamp);
+                        } else if (ywrqObj instanceof String) {
+                            // 尝试解析字符串日期
+                            try {
+                                LocalDateTime dateTime = LocalDateTime.parse((String) ywrqObj,
+                                        DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+                                long timestamp = dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+                                updateMap.put("dateField_mh9woan5", timestamp);
+                            } catch (Exception e) {
+                                log.warn("无法解析日期字符串: {}", ywrqObj);
+                            }
+                        }
+                    }
+
+                    updateMap.put("textField_mh9woanp", String.valueOf(paymentItem.get("wldwlx")));
+                    updateMap.put("textField_mh9woanq", String.valueOf(paymentItem.get("wldw")));
+                    updateMap.put("numberField_mh9woanc", safeFormatBigDecimalToString(paymentItem.get("ysje")));
+                    updateMap.put("numberField_mh9woand", safeFormatBigDecimalToString(paymentItem.get("ssje")));
+                    updateMap.put("textField_mhjxv2tf", String.valueOf(paymentItem.get("xsy")));
+                    updateMap.put("textField_mhjxv2tg", String.valueOf(paymentItem.get("xsbm")));
+                    updateMap.put("textareaField_mh9woank", String.valueOf(paymentItem.get("bz")));
+
+                    // 执行同步操作
+                    Object operationResult = ydClient.operateData(YDParam.builder()
+                            .formUuid("FORM-0569C06E47074C2981ADEEAFCE083EDAK5AM")
+                            .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                            .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                            .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mh9woamt", djbh)))
+                            .formDataJson(JSONObject.toJSONString(updateMap))
+                            .build(), YDConf.FORM_OPERATION.upsert);
+
+                    // 记录成功结果
+                    singleResult.put("operationResult", operationResult);
+                    singleResult.put("status", "success");
+                    singleResult.put("ddformInstanceId", ddformInstanceId);
+                    singleResult.put("paymentReceiptId", paymentReceiptId);
+                    successCount++;
+
+                    log.info("收款单同步成功: djbh={}, paymentReceiptId={}", djbh, paymentReceiptId);
+
+                } catch (Exception e) {
+                    String djbh = String.valueOf(paymentItem.get("djbh"));
+                    log.error("同步收款单数据异常: djbh={}", djbh, e);
+
+                    singleResult.put("djbh", djbh);
+                    singleResult.put("errorMsg", e.getMessage());
+                    singleResult.put("status", "fail");
+                    failCount++;
+                }
+
+                operationResults.add(singleResult);
+            }
+
+            // 构建返回结果
+            Map<String, Object> data = new HashMap<>();
+            data.put("operationResults", operationResults);
+            data.put("totalCount", kdYdPaymentReceipts.size());
+            data.put("successCount", successCount);
+            data.put("failCount", failCount);
+
+            result.put("code", failCount == 0 ? "200" : "300");
+            result.put("msg", "操作完成,成功" + successCount + "条,失败" + failCount + "条");
+            result.put("data", data);
+
+            log.info("【收款单同步任务】完成,共处理{}条数据,成功{}条,失败{}条",
+                    kdYdPaymentReceipts.size(), successCount, failCount);
+
+        } catch (Exception e) {
+            log.error("收款单同步任务执行异常", e);
+            result.put("code", "500");
+            result.put("msg", "系统异常:" + e.getMessage());
+            result.put("data", new HashMap<>());
+        } finally {
+            MDC.remove("MDC_KEY_PID");
+        }
+
+        return result;
+    }
+
+    // 辅助方法 - 安全格式化 BigDecimal 为字符串(保留2位小数)
+    private String safeFormatBigDecimalToString(Object value) {
+        if (value == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString();
+        }
+        try {
+            if (value instanceof BigDecimal) {
+                return ((BigDecimal) value).setScale(2, RoundingMode.HALF_UP).toString();
+            } else if (value instanceof Number) {
+                return BigDecimal.valueOf(((Number) value).doubleValue())
+                        .setScale(2, RoundingMode.HALF_UP).toString();
+            } else if (value instanceof String) {
+                String strVal = ((String) value).trim();
+                if (strVal.isEmpty() || "null".equalsIgnoreCase(strVal)) {
+                    return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString();
+                }
+                return new BigDecimal(strVal).setScale(2, RoundingMode.HALF_UP).toString();
+            }
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString();
+        } catch (Exception e) {
+            log.warn("格式化BigDecimal数据异常: value={}", value, e);
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString();
+        }
+    }
+
+    // 获取订单关联数据
+    private Object getddAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C", "receipt", id, title, "");
+    }
+
+    // 辅助方法 - 安全格式化 BigDecimal 数据(保留2位小数)
+    private BigDecimal safeFormatBigDecimal(Object value) {
+        if (value == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        try {
+            if (value instanceof BigDecimal) {
+                return ((BigDecimal) value).setScale(2, RoundingMode.HALF_UP);
+            } else if (value instanceof Number) {
+                return BigDecimal.valueOf(((Number) value).doubleValue()).setScale(2, RoundingMode.HALF_UP);
+            } else if (value instanceof String) {
+                String strVal = ((String) value).trim();
+                if (strVal.isEmpty() || "null".equalsIgnoreCase(strVal)) {
+                    return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+                }
+                return new BigDecimal(strVal).setScale(2, RoundingMode.HALF_UP);
+            }
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        } catch (Exception e) {
+            log.warn("格式化BigDecimal数据异常: value={}", value, e);
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+    }
+
+    // 获取应收单关联数据
+    private Object getysdAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-AADBCDA8126F41A0ADDEE3353828583192M8", "receipt", id, title, "");
+    }
+
     private static LocalDateTime parseTimestamp(String timestampStr) {
         if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
         try {

+ 383 - 3
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdTransferServiceImpl.java

@@ -1,5 +1,7 @@
 package com.malk.huagao.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.malk.huagao.entity.KdYdDelivery;
 import com.malk.huagao.entity.KdYdDeliveryDetail;
@@ -13,6 +15,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,8 +25,9 @@ import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.List;
-import java.util.Map;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -34,6 +38,7 @@ import java.util.Map;
  * @since 2025-11-12
  */
 @Service
+@Slf4j
 public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdYdTransfer> implements IKdYdTransferService {
     @Autowired
     private YDClient ydClient;
@@ -161,6 +166,376 @@ public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdY
 //                        .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
     }
 
+    @Override
+    public Map<String, Object> insertTransfer1(Map json) {
+        HashMap<String, Object> result = new HashMap<>();
+
+        try {
+            MDC.put("MDC_KEY_PID", "1003"); // 设置不同的 PID 以便区分日志
+            List<Map<String, Object>> kdYdTransferDels = UtilMap.getList(json, "data");
+            String action = UtilMap.getString(json, "action");
+            String table = UtilMap.getString(json, "table");
+
+            // 批量删除处理
+            if (!kdYdTransferDels.isEmpty() && "del".equals(action) && "KD_YD_TRANSFER".equals(table)) {
+                log.info("开始处理调拨单删除操作,共{}条数据", kdYdTransferDels.size());
+                ArrayList<String> deleteList = new ArrayList<>();
+                int deleteSuccessCount = 0;
+
+                for (Map<String, Object> item : kdYdTransferDels) {
+                    try {
+                        String djbh = String.valueOf(item.get("djbh"));
+
+                        List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
+                                .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                                .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", djbh)))
+                                .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
+
+                        if (list1 != null && !list1.isEmpty()) {
+                            for (Map map : list1) {
+                                String formInstanceId = UtilMap.getString(map, "formInstanceId");
+                                if (formInstanceId != null) {
+                                    deleteList.add(formInstanceId);
+                                }
+                            }
+                            deleteSuccessCount++;
+                        } else {
+                            log.warn("未找到对应的调拨单数据: djbh={}", djbh);
+                        }
+
+                    } catch (Exception e) {
+                        log.error("删除调拨单数据查询异常: djbh={}", item.get("djbh"), e);
+                    }
+                }
+
+                // 执行批量删除
+                if (!deleteList.isEmpty()) {
+                    try {
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                                .formInstanceIdList(deleteList)
+                                .build(), YDConf.FORM_OPERATION.delete_batch);
+                        log.info("调拨单批量删除完成,共删除{}条数据", deleteList.size());
+                    } catch (Exception e) {
+                        log.error("调拨单批量删除操作异常", e);
+                    }
+                }
+
+                // 返回删除结果
+                result.put("code", "200");
+                result.put("msg", "删除成功,共删除" + deleteList.size() + "条数据");
+                result.put("data", new HashMap<String, Object>() {{
+                    put("deletedCount", deleteList.size());
+                    put("deletedIds", deleteList);
+                }});
+                return result;
+            } else if ("del".equals(action)) {
+                log.info("【调拨单删除任务】无需要删除的数据");
+                result.put("code", "200");
+                result.put("msg", "无需要删除的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            // 同步新增/更新数据
+            List<Map<String, Object>> kdYdTransfers = UtilMap.getList(json, "data");
+            if (kdYdTransfers.isEmpty()) {
+                log.info("【调拨单同步任务】无需要同步的数据,结束");
+                result.put("code", "200");
+                result.put("msg", "无需要同步的数据");
+                result.put("data", new HashMap<>());
+                return result;
+            }
+
+            log.info("【调拨单同步任务】开始同步,共{}条数据", kdYdTransfers.size());
+
+            List<Map<String, Object>> operationResults = new ArrayList<>();
+            int successCount = 0;
+            int failCount = 0;
+
+            for (Map<String, Object> transferItem : kdYdTransfers) {
+                Map<String, Object> singleResult = new HashMap<>();
+
+                try {
+                    String djbh = String.valueOf(transferItem.get("djbh"));
+                    List<Map<String, Object>> tableListData = UtilMap.getList(transferItem, "tableList");
+                    Long transferId = UtilMap.getLong(transferItem, "transferId");
+
+//                    singleResult.put("djbh", djbh);
+//                    singleResult.put("transferId", transferId);
+
+                    // 检查明细数据是否存在
+                    if (tableListData == null || tableListData.isEmpty()) {
+                        log.warn("调拨单明细数据为空: djbh={}", djbh);
+                        singleResult.put("errorMsg", "明细数据为空");
+                        singleResult.put("status", "fail");
+                        failCount++;
+                        operationResults.add(singleResult);
+                        continue;
+                    }
+
+                    ArrayList<Object> tableList = new ArrayList<>();
+                    List<Map<String, Object>> tableListxlh = new ArrayList<>();
+
+                    // 处理明细数据
+                    for (Map<String, Object> detailItem : tableListData) {
+                        HashMap<String, String> tablemap = new HashMap<>();
+                        tablemap.put("textField_mhubzsav", String.valueOf(detailItem.get("wlbm")));
+                        tablemap.put("textField_mhubzsaw", String.valueOf(detailItem.get("wlmc")));
+                        tablemap.put("textField_mhubzsax", String.valueOf(detailItem.get("ggxh")));
+                        tablemap.put("textField_mhubzsay", String.valueOf(detailItem.get("dw")));
+                        tablemap.put("textareaField_mjshnw4c", String.valueOf(detailItem.get("kddh")));
+                        tablemap.put("numberField_mhubzsaz", safeConvertBigDecimalToString(detailItem.get("dbsl")));
+                        tablemap.put("textField_mhubzsb0", String.valueOf(detailItem.get("ph")));
+                        tablemap.put("textField_mhubzsb1", String.valueOf(detailItem.get("dcck")));
+                        tablemap.put("textField_mhubzsb5", String.valueOf(detailItem.get("dcckzt")));
+                        tablemap.put("textField_mhubzsb2", String.valueOf(detailItem.get("dccw")));
+                        tablemap.put("textField_mhubzsb3", String.valueOf(detailItem.get("drck")));
+                        tablemap.put("textField_mhubzsb6", String.valueOf(detailItem.get("drckzt")));
+                        tablemap.put("textField_mhubzsb4", String.valueOf(detailItem.get("drcw")));
+
+                        // 处理序列号明细
+                        String xlhjh = String.valueOf(detailItem.get("xlh"));
+                        if (xlhjh != null && !xlhjh.trim().isEmpty() && !"null".equals(xlhjh)) {
+                            List<Map<String, Object>> currentXlhList = Arrays.stream(xlhjh.split(","))
+                                    .map(String::trim)
+                                    .filter(item -> !item.isEmpty())
+                                    .map(item -> {
+                                        Map<String, Object> xlhMap = new HashMap<>();
+                                        xlhMap.put("textField_mf6a0h6w", item);
+                                        xlhMap.put("textField_mjqst61l", String.valueOf(detailItem.get("wlbm")));
+                                        xlhMap.put("textField_mjqst61m", String.valueOf(detailItem.get("ggxh")));
+                                        return xlhMap;
+                                    })
+                                    .collect(Collectors.toList());
+
+                            tableListxlh.addAll(currentXlhList);
+                        }
+                    }
+
+                    // 查询关联表单数据
+                    String xsddbh = String.valueOf(transferItem.get("ddbh"));
+                    String fhtzdbh = String.valueOf(transferItem.get("fhtzdbh"));
+                    String ddformInstanceId = null;
+                    String fhdformInstanceId = null;
+                    String ddbh = null;
+                    String fhdbh = null;
+                    String jydate = null;
+                    String ghrq = null;
+                    String jyyy = null;
+                    String jtyy = null;
+                    String xsy = null;
+                    String khxypj = null;
+                    String fj = null;
+
+                    try {
+                        log.debug("开始查询订单数据: xsddbh={}", xsddbh);
+
+                        // 查询订单数据
+                        if (xsddbh != null && !"null".equals(xsddbh) && !xsddbh.trim().isEmpty()) {
+                            List<Map<String, Object>> ddlist = (List<Map<String, Object>>) ydClient.queryData(
+                                    YDParam.builder()
+                                            .formUuid("FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C")
+                                            .searchCondition(JSON.toJSONString(UtilMap.map("textField_mjs6fuwo", xsddbh)))
+                                            .build(),
+                                    YDConf.FORM_QUERY.retrieve_list_all
+                            ).getData();
+
+                            if (ddlist != null && !ddlist.isEmpty()) {
+                                for (Map<String, Object> khitem : ddlist) {
+                                    Map<String, Object> khformData = (Map<String, Object>) khitem.get("formData");
+                                    if (khformData == null) continue;
+
+                                    Object serialObj = khformData.get("textField_mjs6fuwo");
+                                    String serialStr = serialObj != null ? serialObj.toString() : null;
+
+                                    if (xsddbh.equals(serialStr)) {
+                                        ddformInstanceId = safeToString(khitem.get("formInstanceId"));
+                                        ddbh = serialStr;
+                                        jydate = safeToString(khformData.get("dateField_mdya1lom"));
+                                        ghrq = safeToString(khformData.get("dateField_meqpbxsj"));
+                                        jyyy = safeToString(khformData.get("multiSelectField_meqpbxsc"));
+                                        jtyy = safeToString(khformData.get("textareaField_meqpbxsd"));
+                                        khxypj = safeToString(khformData.get("selectField_mewirdx4"));
+                                        xsy = safeToString(khformData.get("employeeField_mejowmng_id"));
+                                        fj = safeToString(khformData.get("attachmentField_mfoqcctz"));
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+
+                        // 查询发货单数据
+                        if (fhtzdbh != null && !"null".equals(fhtzdbh) && !fhtzdbh.trim().isEmpty()) {
+                            List<Map<String, Object>> fhdlist = (List<Map<String, Object>>) ydClient.queryData(
+                                    YDParam.builder()
+                                            .formUuid("FORM-FAE2575E112644ED914CAB4FEC9309F32AVR")
+                                            .searchCondition(JSON.toJSONString(UtilMap.map("serialNumberField_mheazm7w", fhtzdbh)))
+                                            .build(),
+                                    YDConf.FORM_QUERY.retrieve_list_all
+                            ).getData();
+
+                            if (fhdlist != null && !fhdlist.isEmpty()) {
+                                for (Map<String, Object> fhditem : fhdlist) {
+                                    Map<String, Object> fhdformData = (Map<String, Object>) fhditem.get("formData");
+                                    if (fhdformData == null) continue;
+
+                                    Object serialObj = fhdformData.get("serialNumberField_mheazm7w");
+                                    String serialStr = serialObj != null ? serialObj.toString() : null;
+
+                                    if (fhtzdbh.equals(serialStr)) {
+                                        fhdformInstanceId = safeToString(fhditem.get("formInstanceId"));
+                                        fhdbh = serialStr;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+
+                    } catch (Exception e) {
+                        log.error("查询关联表单数据异常: xsddbh={}, fhtzdbh={}", xsddbh, fhtzdbh, e);
+                    }
+
+                    // 构建更新数据
+                    HashMap<String, Object> updateMap = new HashMap<>();
+                    updateMap.put("tableField_mhubzsau", tableList);
+                    updateMap.put("tableField_mips137b", tableListxlh);
+
+                    // 添加关联表单数据
+                    if (ddbh != null && ddformInstanceId != null) {
+                        updateMap.put("associationFormField_mhubzsaf",
+                                Collections.singletonList(getddAss(ddbh, ddformInstanceId)));
+                    }
+                    if (fhdbh != null && fhdformInstanceId != null) {
+                        updateMap.put("associationFormField_mjzervdt",
+                                Collections.singletonList(getddAss(fhdbh, fhdformInstanceId)));
+                    }
+
+                    // 添加订单相关字段(如果所有字段都存在)
+                    if (jydate != null && ghrq != null && jyyy != null && jtyy != null
+                            && xsy != null && khxypj != null) {
+                        updateMap.put("dateField_mdya1lom", jydate);
+                        updateMap.put("dateField_meqpbxsj", ghrq);
+                        updateMap.put("multiSelectField_meqpbxsc", jyyy);
+                        updateMap.put("textareaField_meqpbxsd", jtyy);
+                        updateMap.put("employeeField_mejowmng", xsy);
+                        updateMap.put("selectField_mewirdx4", khxypj);
+                        updateMap.put("attachmentField_mfoqcctz", fj);
+                    }
+
+                    // 添加主表字段
+                    updateMap.put("textField_mjzervdu", fhtzdbh);
+                    updateMap.put("textField_miquh5zj", ddformInstanceId);
+                    updateMap.put("selectField_mhubzsa5", String.valueOf(transferItem.get("djlx")));
+                    updateMap.put("textField_mhubzsas", String.valueOf(transferItem.get("kh")));
+                    updateMap.put("textField_miptelgh", String.valueOf(transferItem.get("ddbh")));
+                    updateMap.put("textField_miptelgc", djbh);
+                    updateMap.put("textField_miptelgd", String.valueOf(transferItem.get("cgy")));
+                    updateMap.put("selectField_mhubzsa7", String.valueOf(transferItem.get("dchzlx")));
+                    updateMap.put("textField_mhubzsa6", String.valueOf(transferItem.get("ywlx")));
+
+                    // 处理日期字段
+                    Object rq = transferItem.get("rq");
+                    if (rq != null) {
+                        if (rq instanceof LocalDateTime) {
+                            String rqMillis = String.valueOf(((LocalDateTime) rq)
+                                    .atZone(ZoneId.systemDefault())
+                                    .toInstant()
+                                    .toEpochMilli());
+                            updateMap.put("dateField_mhubzsab", rqMillis);
+                        } else if (rq instanceof String) {
+                            updateMap.put("dateField_mhubzsab", rq);
+                        }
+                    }
+
+                    updateMap.put("selectField_mhubzsa9", String.valueOf(transferItem.get("drhzlx")));
+                    updateMap.put("selectField_mhubzsaa", String.valueOf(transferItem.get("dbfx")));
+                    updateMap.put("selectField_mhubzsac", String.valueOf(transferItem.get("dbdlx")));
+                    updateMap.put("textField_miptelge", String.valueOf(transferItem.get("dcbm")));
+                    updateMap.put("textField_miptelgf", String.valueOf(transferItem.get("dchz")));
+                    updateMap.put("textField_miptelgg", String.valueOf(transferItem.get("drbm")));
+                    updateMap.put("selectField_mhubzsah", String.valueOf(transferItem.get("hdfs")));
+                    updateMap.put("selectField_mhubzsai", String.valueOf(transferItem.get("ysfs")));
+                    updateMap.put("selectField_mhubzsar", String.valueOf(transferItem.get("kdgs")));
+                    updateMap.put("selectField_mhubzsag", String.valueOf(transferItem.get("fkfs")));
+
+                    // 执行同步操作
+                    Object operationResult = ydClient.operateData(YDParam.builder()
+                            .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                            .noExecuteExpression(false)
+                            .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", djbh)))
+                            .formDataJson(JSONObject.toJSONString(updateMap))
+                            .build(), YDConf.FORM_OPERATION.upsert);
+
+                    // 记录成功结果
+                    singleResult.put("operationResult", operationResult);
+                    singleResult.put("status", "success");
+                    singleResult.put("ddformInstanceId", ddformInstanceId);
+                    singleResult.put("fhdformInstanceId", fhdformInstanceId);
+                    successCount++;
+
+                    log.info("调拨单同步成功: djbh={}, transferId={}", djbh, transferId);
+
+                } catch (Exception e) {
+                    log.error("同步单条调拨单数据异常: djbh={}", transferItem.get("djbh"), e);
+                    singleResult.put("errorMsg", e.getMessage());
+                    singleResult.put("status", "fail");
+                    failCount++;
+                }
+
+                operationResults.add(singleResult);
+            }
+
+            // 构建返回结果
+            Map<String, Object> data = new HashMap<>();
+            data.put("operationResults", operationResults);
+            data.put("totalCount", kdYdTransfers.size());
+            data.put("successCount", successCount);
+            data.put("failCount", failCount);
+
+            result.put("code", failCount == 0 ? "200" : "300");
+            result.put("msg", "操作完成,成功" + successCount + "条,失败" + failCount + "条");
+            result.put("data", data);
+
+            log.info("【调拨单同步任务】完成,共处理{}条数据,成功{}条,失败{}条",
+                    kdYdTransfers.size(), successCount, failCount);
+
+        } catch (Exception e) {
+            log.error("调拨单同步任务执行异常", e);
+            result.put("code", "500");
+            result.put("msg", "系统异常:" + e.getMessage());
+            result.put("data", new HashMap<>());
+        }
+        return result;
+    }
+
+    // 辅助方法 - 安全转换 BigDecimal 为字符串
+    private String safeConvertBigDecimalToString(Object value) {
+        if (value == null) {
+            return "";
+        }
+        if (value instanceof BigDecimal) {
+            return ((BigDecimal) value).toPlainString();
+        }
+        return String.valueOf(value);
+    }
+
+    // 辅助方法 - 安全转换日期时间为字符串
+    private String safeConvertDateTimeToString(Object value) {
+        if (value == null) {
+            return "";
+        }
+        if (value instanceof LocalDateTime) {
+            return ((LocalDateTime) value).format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
+        }
+        return String.valueOf(value);
+    }
+
+    // 辅助方法 - 安全转换为字符串
+    private String safeToString(Object obj) {
+        return obj != null ? obj.toString() : null;
+    }
+
     private static LocalDateTime parseTimestamp(String timestampStr) {
         if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
         try {
@@ -184,7 +559,12 @@ public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdY
             return defaultValue;
         }
     }
-
+    private Object getddAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C", "receipt", id, title, "");
+    }
+    private Object getfhdAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-A7F03ACEE01D4F609550C86BF7FE87D35M6I", "receipt", id, title, "");
+    }
     private String safeGetString(Map formData, String key) {
         Object val = formData.get(key);
         return val == null ? "" : String.valueOf(val);

+ 26 - 7
mjava-huagao/src/test/java/com/malk/huagao/EqbTest.java

@@ -9,13 +9,32 @@ import java.util.*;
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 
+import com.alibaba.fastjson.JSON;
 import com.malk.huagao.utils.HTTPHelper;
 import org.apache.commons.codec.binary.Base64;
 import com.alibaba.fastjson.JSONObject;
 
 public class EqbTest {
 
+
     public static void main(String[] args) {
+
+
+        String responseBody = "[{\"code\":200,\"msg\":\"销售订单编码:DD202601280002单据同步成功\",\"data\":{\"djbh\":\"DD202601280002\"}}]";
+        System.out.println("响应内容: " + responseBody);
+
+        try {
+            // 一行代码提取
+            String djbh = JSON.parseArray(responseBody)
+                    .getJSONObject(0)
+                    .getJSONObject("data")
+                    .getString("djbh");
+
+            System.out.println("提取的djbh: " + djbh);
+
+        } catch (Exception e) {
+            System.out.println("解析JSON失败: " + e.getMessage());
+        }
         // 应用ID
         /*String appId = "7439093376";
         // 应用密钥(AppSecret)
@@ -24,12 +43,12 @@ public class EqbTest {
         String host = "https://smlopenapi.esign.cn";*/
 
 
-        // 应用ID
-        String appId = "5112033166";
-        // 应用密钥(AppSecret)
-        String appKey = "c0641a1f648a68a7014be5a490f0159a";
-        // e签宝接口调用域名(正式环境)
-        String host = "https://openapi.esign.cn";
+//        // 应用ID
+//        String appId = "5112033166";
+//        // 应用密钥(AppSecret)
+//        String appKey = "c0641a1f648a68a7014be5a490f0159a";
+//        // e签宝接口调用域名(正式环境)
+//        String host = "https://openapi.esign.cn";
 
 
         //步骤1:上传本地文件并转成HTML格式
@@ -50,7 +69,7 @@ public class EqbTest {
         //正式环境模板id 采购订单模板:a0827f8946994ebfbed7f44e6b8a6ed8
 
         //步骤4:制作含动态表格控件的HTML模板 访问【获取制作合同模板页面】接口返回的创建文件模板页面链接(docTemplateCreateUrl参数值),并在页面中拖动【动态表格】控件来制作模板,若链接失效,调用【获取编辑合同模板页面】接口
-        getDocTemplateEditUrl(appId,appKey,host,"8b7fef2257bc4093ada330dbf7c874c5");
+//        getDocTemplateEditUrl(appId,appKey,host,"8b7fef2257bc4093ada330dbf7c874c5");
 
 
         //步骤5:获取 HTML 模板中控件ID和控件Key