2 Commits a291c394e1 ... 3909c1babc

Autor SHA1 Nachricht Datum
  “lqy 3909c1babc Merge remote-tracking branch 'origin/master' vor 1 Woche
  “lqy d1672808c6 12.4代码提交 vor 1 Woche

+ 1 - 1
mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdCustomerController.java

@@ -51,7 +51,7 @@ private YDClient ydClient;
 ////                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map(employ,id)))//xz04
 //                .useLatestVersion(true)
 //                .build(), YDConf.FORM_OPERATION.update);
-        ydHuaGaoService.synckdYdMaterial();
+        ydHuaGaoService.synckdYdTRANSFER();
 //        ydHuaGaoService.synckdYdPayment();
 //        ydHuaGaoService.syncKdYdReceivable();
 //        kdYdZpService.insertkdYdZp(data);

+ 2 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdTransfer.java

@@ -67,4 +67,6 @@ public class KdYdTransfer implements Serializable {
     private String kdgs;
 
     private String fkfs;
+
+    private String ddbh;
 }

+ 16 - 0
mjava-huagao/src/main/java/com/malk/huagao/schedule/YdScheduleTask.java

@@ -11,6 +11,7 @@ import com.malk.server.aliwork.YDSearch;
 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.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Configuration;
@@ -128,6 +129,7 @@ private YdHuaGaoService ydHuaGaoService;
     public void synckdYdOutbound() {
         log.info("定时同步-出库单");
         try {
+            MDC.put("MDC_KEY_PID","1003");
             ydHuaGaoService.synckdYdOutbound();
         } catch (Exception e) {
             log.error("【出库单同步任务】执行过程中发生严重错误", e);
@@ -138,6 +140,7 @@ private YdHuaGaoService ydHuaGaoService;
     public void syncKdYdReceivable() {
         log.info("定时同步-应收单");
         try {
+            MDC.put("MDC_KEY_PID","1003");
             ydHuaGaoService.syncKdYdReceivable();
         } catch (Exception e) {
             log.error("【应收单同步任务】执行过程中发生严重错误", e);
@@ -148,6 +151,7 @@ private YdHuaGaoService ydHuaGaoService;
     public void synckdYdMaterial() {
         log.info("定时同步-物料信息");
         try {
+            MDC.put("MDC_KEY_PID","1003");
             ydHuaGaoService.synckdYdMaterial();
         } catch (Exception e) {
             log.error("【物料信息同步任务】执行过程中发生严重错误", e);
@@ -158,9 +162,21 @@ private YdHuaGaoService ydHuaGaoService;
     public void synckdYdPayment() {
         log.info("定时同步-synckdYdPayment");
         try {
+            MDC.put("MDC_KEY_PID","1003");
             ydHuaGaoService.synckdYdPayment();
         } catch (Exception e) {
             log.error("【synckdYdPayment同步任务】执行过程中发生严重错误", e);
         }
     }
+
+    @Scheduled(cron = "0 0/15 * * * ?")
+    public void synckdYdTRANSFER() {
+        log.info("定时同步-synckdYdTRANSFER");
+        try {
+            MDC.put("MDC_KEY_PID","1003");
+            ydHuaGaoService.synckdYdTRANSFER();
+        } catch (Exception e) {
+            log.error("【synckdYdTRANSFER同步任务】执行过程中发生严重错误", e);
+        }
+    }
 }

+ 3 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/YdHuaGaoService.java

@@ -20,4 +20,7 @@ public interface YdHuaGaoService {
     void syncKdYdDeliveryDetail();
 
     void synckdYdPayment();
+
+    void synckdYdTRANSFER();
+
 }

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

@@ -47,6 +47,7 @@ public class KdYdCustomerLiaisonServiceImpl extends ServiceImpl<KdYdCustomerLiai
             String bm = UtilMap.getString(map, "bm");
             KdYdCustomerLiaison kdYdCustomerLiaison = new KdYdCustomerLiaison();
             kdYdCustomerLiaison.setOperationType("3");
+            kdYdCustomerLiaison.setSyncStatus("0");
             kdYdCustomerLiaisonMapper.update(kdYdCustomerLiaison,
                     new LambdaQueryWrapper<KdYdCustomerLiaison>().eq(KdYdCustomerLiaison::getBm, bm));
             return; // 或者根据你的业务逻辑返回相应的结果

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

@@ -41,6 +41,7 @@ private KdYdCustomerReferrerMapper kdYdCustomerReferrerMapper;
             String bm = UtilMap.getString(map, "bm");
             KdYdCustomerReferrer kdYdCustomerReferrer = new KdYdCustomerReferrer();
             kdYdCustomerReferrer.setOperationType("3");
+            kdYdCustomerReferrer.setSyncStatus("0");
             kdYdCustomerReferrerMapper.update(kdYdCustomerReferrer,
                     new LambdaQueryWrapper<KdYdCustomerReferrer>().eq(KdYdCustomerReferrer::getBm, bm));
             return; // 或者根据你的业务逻辑返回相应的结果

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

@@ -43,6 +43,7 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
             String bm = UtilMap.getString(map, "bm");
             KdYdCustomer kdYdCustomer = new KdYdCustomer();
             kdYdCustomer.setOperationType("3");
+            kdYdCustomer.setSyncStatus("0");
             kdYdCustomerMapper.update(kdYdCustomer, new LambdaQueryWrapper<KdYdCustomer>().eq(KdYdCustomer::getKhbm, bm));
             return; // 或者根据你的业务逻辑返回相应的结果
         }

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

@@ -51,6 +51,7 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
         if ("3".equals(type)) {
             String bm = UtilMap.getString(map, "bm");
             KdYdDelivery kdYdDelivery = new KdYdDelivery();
+            kdYdDelivery.setSyncStatus("0");
             kdYdDelivery.setOperationType("3");
             kdYdDeliveryMapper.update(kdYdDelivery, new LambdaQueryWrapper<KdYdDelivery>().eq(KdYdDelivery::getDjbh, bm));
             return; // 或者根据你的业务逻辑返回相应的结果

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

@@ -61,6 +61,7 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             String bm = UtilMap.getString(map, "bm");
             KdYdOrder kdYdOrder = new KdYdOrder();
             kdYdOrder.setOperationType("3");
+            kdYdOrder.setSyncStatus("0");
             kdYdOrderMapper.update(kdYdOrder, new LambdaQueryWrapper<KdYdOrder>().eq(KdYdOrder::getDjbh, bm));
             return; // 或者根据你的业务逻辑返回相应的结果
         }

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

@@ -52,6 +52,7 @@ public class KdYdTransferServiceImpl extends ServiceImpl<KdYdTransferMapper, KdY
             String bm = UtilMap.getString(map, "bm");
             KdYdTransfer kdYdTransfer = new KdYdTransfer();
             kdYdTransfer.setOperationType("3");
+            kdYdTransfer.setSyncStatus("0");
             kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper<KdYdTransfer>().eq(KdYdTransfer::getDjbh, bm));
             return; // 或者根据你的业务逻辑返回相应的结果
         }

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

@@ -53,6 +53,7 @@ public class KdYdZpServiceImpl extends ServiceImpl<KdYdZpMapper, KdYdZp> impleme
             String bm = UtilMap.getString(map, "bm");
             KdYdZp kdYdZp = new KdYdZp();
             kdYdZp.setOperationType("3");
+            kdYdZp.setSyncStatus("0");
             kdYdZpMapper.update(kdYdZp, new LambdaQueryWrapper<KdYdZp>().eq(KdYdZp::getDjbh, bm));
             return; // 或者根据你的业务逻辑返回相应的结果
         }

+ 274 - 4
mjava-huagao/src/main/java/com/malk/huagao/service/impl/YdHuaGaoServiceImpl.java

@@ -15,11 +15,13 @@ import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.checkerframework.checker.units.qual.A;
+import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -58,6 +60,10 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
     @Autowired
     private KdYdMaterialMapper kdYdMaterialMapper;
     @Autowired
+    private KdYdTransferMapper kdYdTransferMapper;
+    @Autowired
+    private KdYdTransferDetailMapper kdYdTransferDetailMapper;
+    @Autowired
     private YDConf ydConf;
     @Autowired
     private DDConf ddConf;
@@ -233,6 +239,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
 
     @Override
     public void synckdYdOutbound() {
+
         log.info("定时同步-出库单");
         // 查询需要删除的数据
         LambdaQueryWrapper<KdYdOutbound> outbounddel = new LambdaQueryWrapper<>();
@@ -367,7 +374,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                     tablemap.put("textField_mf6a0h6y", kdYdOutboundDetail.getJx());
                     String xlhjh = kdYdOutboundDetail.getXlh();
                     if (xlhjh != null && !xlhjh.trim().isEmpty()) {
-                         tableListxlh = Arrays.stream(xlhjh.split(","))
+                        tableListxlh = Arrays.stream(xlhjh.split(","))
                                 .map(String::trim)
                                 .filter(item -> !item.isEmpty())
                                 .map(item -> {
@@ -423,12 +430,12 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                 }
                 HashMap<Object, Object> updateMap = new HashMap<>();
                 updateMap.put("tableField_mejnamfd", tableList);
-                updateMap.put("tableField_migw33w7", tableListxlh);
+                updateMap.put("tableField_mips137b", tableListxlh);
                 if (fhdbh != null && fhdformInstanceId != null) {
                     updateMap.put("associationFormField_mejmml36",
                             Arrays.asList(getfhdAss(fhdbh, fhdformInstanceId)));
                 }
-                 updateMap.put("dateField_krbgloam", kdYdOutbound.getDateTime() != null ? String.valueOf(kdYdOutbound.getDateTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
+                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());
@@ -481,7 +488,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
         // 批量删除处理
         if (!kdYdReceivabledels.isEmpty()) {
             log.info("开始处理应收单删除操作,共{}条数据", kdYdReceivabledels.size());
-            ArrayList<String > deleteList = new ArrayList<>();
+            ArrayList<String> deleteList = new ArrayList<>();
             int deleteSuccessCount = 0;
 
             for (KdYdReceivable kdYdReceivable : kdYdReceivabledels) {
@@ -905,6 +912,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                 String jyzt = kdYdMaterial.getJyzt();
                 String dzl = kdYdMaterial.getDzl();
                 String pzzt = kdYdMaterial.getPzzt();
+                String sdbb = kdYdMaterial.getSpeedname();
                 String wlbt = wlmc + wlbm;
 //                String materialtitle = kdYdMaterial.getMaterialtitle();
                 Map updateFormData = new HashMap();
@@ -921,6 +929,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                 updateFormData.put("textField_mejl9nrp", dzl);
                 updateFormData.put("selectField_mejl9nrq", pzzt);
                 updateFormData.put("textField_mfxbtcdq", mrsl);
+                updateFormData.put("textField_mhabp7y0", sdbb);
                 updateFormData.put("textField_mfxbtcdr", chlb);
                 updateFormData.put("textField_mfxbtce5", xsy);
 
@@ -1284,6 +1293,267 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                 successCount, failCount, kdYdPaymentReceipts.size());
     }
 
+    @Override
+    public void synckdYdTRANSFER() {
+        log.info("定时同步-调拨单");
+        LambdaQueryWrapper<KdYdTransfer> transferdel = new LambdaQueryWrapper<>();
+        transferdel.eq(KdYdTransfer::getOperationType, 3)
+                .eq(KdYdTransfer::getSyncStatus, "0");
+        List<KdYdTransfer> kdYdTRANSFERdels = kdYdTransferMapper.selectList(transferdel);
+
+        // 批量删除处理
+        if (!kdYdTRANSFERdels.isEmpty()) {
+            log.info("开始处理调拨单删除操作,共{}条数据", kdYdTRANSFERdels.size());
+            ArrayList<String> deleteList = new ArrayList<>();
+            int deleteSuccessCount = 0;
+
+            for (KdYdTransfer kdYdTransfer : kdYdTRANSFERdels) {
+                try {
+                    String djbh = kdYdTransfer.getDjbh();
+                    log.debug("查询需要删除的调拨单: djbh={}", djbh);
+
+                    List<Map> list1 = (List<Map>) ydClient.queryData(YDParam.builder()
+                            .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                            .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                            .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                            .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++;
+
+                        // 同时删除对应的子表数据
+                        Long transferId = kdYdTransfer.getId();
+                        LambdaQueryWrapper<KdYdTransferDetail> detailDelqw = new LambdaQueryWrapper<>();
+                        detailDelqw.eq(KdYdTransferDetail::getTransferId, transferId);
+                        List<KdYdTransferDetail> detailDels = kdYdTransferDetailMapper.selectList(detailDelqw);
+
+                        if (!detailDels.isEmpty()) {
+                            for (KdYdTransferDetail detail : detailDels) {
+                                detail.setSyncStatus("1");
+                                kdYdTransferDetailMapper.updateById(detail);
+                            }
+                        }
+                    } else {
+                        log.warn("未找到对应的调拨单数据: djbh={}", djbh);
+                    }
+
+                    // 删除操作完成后更新状态
+                    kdYdTransfer.setSyncStatus("1");
+                    kdYdTransferMapper.updateById(kdYdTransfer);
+
+                } catch (Exception e) {
+                    log.error("删除调拨单数据查询异常: djbh={}", kdYdTransfer.getDjbh(), e);
+                }
+            }
+
+            // 执行批量删除
+            if (!deleteList.isEmpty()) {
+                try {
+                    ydClient.operateData(YDParam.builder()
+                            .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                            .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                            .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                            .formInstanceIdList(deleteList)
+                            .build(), YDConf.FORM_OPERATION.delete_batch);
+                    log.info("调拨单批量删除完成,共删除{}条数据", deleteList.size());
+                } catch (Exception e) {
+                    log.error("调拨单批量删除操作异常", e);
+                }
+            }
+
+            log.info("调拨单删除操作处理完成: 成功查询={}, 待删除={}", deleteSuccessCount, deleteList.size());
+            return;
+        } else {
+            log.info("【调拨单删除任务】无需要删除的数据");
+        }
+        LambdaQueryWrapper<KdYdTransfer> paymentqw = new LambdaQueryWrapper<>();
+        paymentqw.eq(KdYdTransfer::getSyncStatus, "0");
+        List<KdYdTransfer> kdYdTransfers = kdYdTransferMapper.selectList(paymentqw);
+        if (kdYdTransfers.isEmpty()) {
+            log.info("【调拨单同步任务】无需要同步的数据,结束");
+            return;
+        }
+        log.info("【调拨单同步任务】开始同步,共{}条数据", kdYdTransfers.size());
+
+        int successCount = 0;
+        int failCount = 0;
+
+        for (KdYdTransfer kdYdTransfer : kdYdTransfers) {
+            try {
+                Long transferId = kdYdTransfer.getId();
+                String djbh = kdYdTransfer.getDjbh();
+
+                log.debug("开始同步调拨单: ID={}, 单据编号={}", transferId, djbh);
+
+                LambdaQueryWrapper<KdYdTransferDetail> transferdetailqw = new LambdaQueryWrapper<>();
+                transferdetailqw.eq(KdYdTransferDetail::getTransferId, transferId)
+                        .orderByAsc(KdYdTransferDetail::getDetailId);
+                List<KdYdTransferDetail> kdYdTransferDetails = kdYdTransferDetailMapper.selectList(transferdetailqw);
+                ArrayList<Object> tableList = new ArrayList<>();
+                for (KdYdTransferDetail kdYdTransferDetail : kdYdTransferDetails) {
+                    HashMap<String, String> tablemap = new HashMap<>();
+                    tablemap.put("textField_mhubzsav", kdYdTransferDetail.getWlbm());
+                    tablemap.put("textField_mhubzsaw", kdYdTransferDetail.getWlmc());
+                    tablemap.put("textField_mhubzsax", kdYdTransferDetail.getGgxh());
+                    tablemap.put("textField_mhubzsay", kdYdTransferDetail.getDw());
+                    tablemap.put("numberField_mhubzsaz", String.valueOf(kdYdTransferDetail.getDbsl()));
+                    tablemap.put("textField_mhubzsb0", kdYdTransferDetail.getPh());
+                    tablemap.put("textField_mhubzsb1", kdYdTransferDetail.getDcck());
+                    tablemap.put("textField_mhubzsb5", kdYdTransferDetail.getDcckzt());
+                    tablemap.put("textField_mhubzsb2", kdYdTransferDetail.getDccw());
+                    tablemap.put("textField_mhubzsb3", kdYdTransferDetail.getDrck());
+                    tablemap.put("textField_mhubzsb6", kdYdTransferDetail.getDrckzt());
+                    tablemap.put("textField_mhubzsb4", kdYdTransferDetail.getDrcw());
+                    kdYdTransferDetail.setSyncStatus("1");
+                    kdYdTransferDetailMapper.updateById(kdYdTransferDetail);
+                    tableList.add(tablemap);
+
+                }
+                String xsddbh = kdYdTransfer.getDdbh();
+                String ddformInstanceId = null;
+                String ddbh = 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);
+
+                    // 宜搭返回的数据结构:List<Map<String, Object>>
+                    List<Map<String, Object>> ddlist = (List<Map<String, Object>>) ydClient.queryData(
+                            YDParam.builder()
+                                    .formUuid("FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C")
+                                    .searchCondition(JSON.toJSONString(UtilMap.map("serialNumberField_mewfgzku", 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;
+
+                            // 安全获取字段值(避免 ClassCastException)
+                            Object serialObj = khformData.get("serialNumberField_mewfgzku");
+                            String serialStr = serialObj instanceof String ? (String) serialObj : String.valueOf(serialObj);
+
+                            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 (ddformInstanceId == null) {
+                            log.warn("未找到与 xsddbh={} 完全匹配的订单数据", xsddbh);
+                        }
+                    } else {
+                        log.warn("未查询到订单数据: xsddbh={}", xsddbh);
+                    }
+
+                } catch (Exception e) {
+                    log.error("查询订单数据异常: xsddbh={}, 错误信息={}", xsddbh, e.getMessage(), e);
+                }
+
+// 构建更新数据
+                HashMap<String, Object> updateMap = new HashMap<>();
+                updateMap.put("tableField_mhubzsau", tableList);
+
+                if (ddbh != null && ddformInstanceId != null) {
+                    updateMap.put("associationFormField_mhubzsaf",
+                            Collections.singletonList(getddAss(ddbh, ddformInstanceId)));
+                }
+
+// 只有所有必要字段都非空时才填充关联字段
+                if (jydate != null && ghrq != null && jyyy != null && jtyy != null
+                        && xsy != null && khxypj != null && ddformInstanceId != null) {
+
+                    updateMap.put("dateField_mdya1lom", jydate);
+                    updateMap.put("dateField_meqpbxsj", ghrq);
+                    updateMap.put("multiSelectField_meqpbxsc", jyyy);
+                    updateMap.put("textareaField_meqpbxsd", jtyy); // 注意:原代码这里写成了 jyyy,已修正为 jtyy
+                    updateMap.put("employeeField_mejowmng", xsy);
+                    updateMap.put("selectField_mewirdx4", khxypj);
+                    updateMap.put("textField_miquh5zj", ddformInstanceId);
+                    updateMap.put("attachmentField_mfoqcctz", fj);
+                }
+
+// 基础字段同步(这些字段即使为空也会覆盖,符合原逻辑)
+                updateMap.put("selectField_mhubzsa5", kdYdTransfer.getDjlx());
+                updateMap.put("textField_mhubzsas", kdYdTransfer.getKh());
+                updateMap.put("textField_miptelgh", kdYdTransfer.getDdbh());
+                updateMap.put("textField_miptelgc", kdYdTransfer.getDjbh());
+                updateMap.put("textField_miptelgd", kdYdTransfer.getCgy());
+                updateMap.put("selectField_mhubzsa7", kdYdTransfer.getDchzlx());
+                updateMap.put("textField_mhubzsa6", kdYdTransfer.getYwlx());
+
+// 日期字段:转为毫秒字符串(保持原逻辑)
+                String rqMillis = "";
+                if (kdYdTransfer.getRq() != null) {
+                    rqMillis = String.valueOf(kdYdTransfer.getRq()
+                            .atZone(ZoneId.systemDefault())
+                            .toInstant()
+                            .toEpochMilli());
+                }
+                updateMap.put("dateField_mhubzsab", rqMillis);
+
+                updateMap.put("selectField_mhubzsa9", kdYdTransfer.getDrhzlx());
+                updateMap.put("selectField_mhubzsaa", kdYdTransfer.getDbfx());
+                updateMap.put("selectField_mhubzsac", kdYdTransfer.getDbdlx());
+                updateMap.put("textField_miptelge", kdYdTransfer.getDcbm());
+                updateMap.put("textField_miptelgf", kdYdTransfer.getDchz());
+                updateMap.put("textField_miptelgg", kdYdTransfer.getDrbm());
+                updateMap.put("selectField_mhubzsah", kdYdTransfer.getHdfs());
+                updateMap.put("selectField_mhubzsai", kdYdTransfer.getYsfs());
+                updateMap.put("selectField_mhubzsar", kdYdTransfer.getKdgs());
+                updateMap.put("selectField_mhubzsag", kdYdTransfer.getFkfs());
+
+                log.debug("开始同步到宜搭: 单据编号={}, 表单UUID=FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR", kdYdTransfer.getDjbh());
+
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
+                                .noExecuteExpression(false)
+                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", kdYdTransfer.getDjbh())))
+                        .formDataJson(JSONObject.toJSONString(updateMap))
+                        .build(), YDConf.FORM_OPERATION.upsert);
+
+// 更新同步状态
+                kdYdTransfer.setSyncStatus("1");
+                kdYdTransferMapper.updateById(kdYdTransfer);
+                successCount++;
+
+                log.info("调拨单同步成功: 单据编号={}", kdYdTransfer.getDjbh());
+            } catch (Exception e) {
+                failCount++;
+                log.error("同步单条调拨单数据异常: 单据编号={}, 错误信息={}",
+                        kdYdTransfer.getDjbh(), e.getMessage(), e);
+            }
+        }
+
+        log.info("【调拨单同步任务】完成: 成功={}, 失败={}, 总计={}",
+                successCount, failCount, kdYdTRANSFERdels.size());
+    }
+    private static String safeToString(Object obj) {
+        return obj == null ? null : obj.toString();
+    }
     private Object getddAss(String title, String id) {
         return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C", "receipt", id, title, "");
     }