2 Revize 6a8ab7cbc1 ... 4368816ca5

Autor SHA1 Zpráva Datum
  “lqy 4368816ca5 Merge remote-tracking branch 'origin/master' před 1 měsícem
  “lqy 8fdfb8ae83 11.6代码提交 před 1 měsícem
36 změnil soubory, kde provedl 1278 přidání a 136 odebrání
  1. 17 10
      mjava-huagao/src/main/java/com/malk/huagao/controller/KdYdCustomerController.java
  2. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomer.java
  3. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomerLiaison.java
  4. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomerReferrer.java
  5. 5 1
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdDelivery.java
  6. 6 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdDeliveryDetail.java
  7. 12 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdMaterial.java
  8. 3 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrder.java
  9. 6 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrderDetail.java
  10. 41 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrderPayment.java
  11. 15 1
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOutbound.java
  12. 13 1
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOutboundDetail.java
  13. 66 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdPaymentReceipt.java
  14. 66 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdPaymentReceiptDetail.java
  15. 14 2
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivable.java
  16. 6 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivableDetail.java
  17. 39 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivablePayment.java
  18. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdZp.java
  19. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdZpDetail.java
  20. 9 1
      mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdDeliveryDetailMapper.java
  21. 7 0
      mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdOrderPaymentMapper.java
  22. 7 0
      mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdPaymentReceiptDetailMapper.java
  23. 8 0
      mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdPaymentReceiptMapper.java
  24. 7 0
      mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdReceivalablePaymentMapper.java
  25. 20 2
      mjava-huagao/src/main/java/com/malk/huagao/schedule/YdScheduleTask.java
  26. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/service/YdHuaGaoService.java
  27. 6 1
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerLiaisonServiceImpl.java
  28. 12 8
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerReferrerServiceImpl.java
  29. 4 0
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerServiceImpl.java
  30. 32 9
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdDeliveryServiceImpl.java
  31. 25 3
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdMaterialServiceImpl.java
  32. 83 8
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOrderServiceImpl.java
  33. 20 4
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOutboundServiceImpl.java
  34. 18 4
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdReceivableServiceImpl.java
  35. 17 3
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdZpServiceImpl.java
  36. 670 78
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/YdHuaGaoServiceImpl.java

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

@@ -2,6 +2,7 @@ package com.malk.huagao.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.malk.huagao.service.IKdYdCustomerService;
+import com.malk.huagao.service.YdHuaGaoService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
@@ -30,21 +31,27 @@ import java.util.Map;
 public class KdYdCustomerController {
     @Autowired
     private IKdYdCustomerService  kdYdCustomerService;
+    @Autowired
+    private YdHuaGaoService ydHuaGaoService;
 @Autowired
 private YDClient ydClient;
     @PostMapping("/test30")
     McR test13(@RequestBody Map data) {
         MDC.put("MDC_KEY_PID","1003");
-        String ins = String.valueOf(data.get("formInstId"));
-
-
-
-        ydClient.operateData(YDParam.builder()
-                .formInstanceId(ins)
-      .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgowmnlf","100111")))//xz04
-//                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map(employ,id)))//xz04
-                .useLatestVersion(true)
-                .build(), YDConf.FORM_OPERATION.update);
+//        String ins = String.valueOf(data.get("formInstId"));
+//
+//
+//
+//        ydClient.operateData(YDParam.builder()
+//                .formInstanceId(ins)
+//      .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mhirg0kz","156")))//xz04
+////                .updateFormDataJson(JSONObject.toJSONString(UtilMap.map(employ,id)))//xz04
+//                .useLatestVersion(true)
+//                .build(), YDConf.FORM_OPERATION.update);
+//        ydHuaGaoService.synckdYdMaterial();
+//        ydHuaGaoService.synckdYdPayment();
+        ydHuaGaoService.syncKdYdReceivable();
+        ydHuaGaoService.synckdYdOutbound();
         return McR.success();
     }
     @PostMapping("/kdYdCustomer")

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomer.java

@@ -84,4 +84,8 @@ public class KdYdCustomer implements Serializable {
 
     private String uuid;
     private String tjruuid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomerLiaison.java

@@ -50,4 +50,8 @@ public class KdYdCustomerLiaison implements Serializable {
     private LocalDateTime updateTime;
     @TableField("formInstId")
     private String formInstId;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdCustomerReferrer.java

@@ -53,4 +53,8 @@ public class KdYdCustomerReferrer implements Serializable {
     private String formInstId;
 
     private String tjruuid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 5 - 1
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdDelivery.java

@@ -30,7 +30,7 @@ public class KdYdDelivery implements Serializable {
 
     private String djbh;
 
-    private Long orderId;
+    private String orderId;
 
     private LocalDateTime rq;
 
@@ -69,4 +69,8 @@ public class KdYdDelivery implements Serializable {
     private LocalDateTime updateTime;
 
     private String forminstid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 6 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdDeliveryDetail.java

@@ -59,8 +59,14 @@ public class KdYdDeliveryDetail implements Serializable {
 
     private String kddh;
 
+    private Integer detailId;
+
     private String mdh;
 
+    private String syncStatus;
+
+    private String operationType;
+
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;

+ 12 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdMaterial.java

@@ -58,6 +58,14 @@ public class KdYdMaterial implements Serializable {
 
     private String jyzt;
 
+    private String dzl;
+
+    private String pzzt;
+
+    private String speedname;
+
+    private String materialtitle;
+
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
@@ -66,4 +74,8 @@ public class KdYdMaterial implements Serializable {
 
       @TableId(value = "id", type = IdType.AUTO)
       private Long id;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 3 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrder.java

@@ -70,4 +70,7 @@ public class KdYdOrder implements Serializable {
     private LocalDateTime updateTime;
 
     private String forminstid;
+    private String syncStatus;
+
+    private String operationType;
 }

+ 6 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrderDetail.java

@@ -67,9 +67,15 @@ public class KdYdOrderDetail implements Serializable {
 
     private String smzs;
 
+    private Integer detailId;
+
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
 
     private String forminstid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 41 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOrderPayment.java

@@ -0,0 +1,41 @@
+package com.malk.huagao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@TableName("KD_YD_ORDER_PAYMENT")
+public class KdYdOrderPayment {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Long orderId;
+
+    private String sfys;
+
+    private BigDecimal ysbl;
+
+    private BigDecimal ysje;
+
+    private BigDecimal ssje;
+
+    private Integer detailId;
+
+    private LocalDateTime endTime;
+
+    private String gldh;
+
+    private String syncStatus;
+
+    private String operationType;
+}

+ 15 - 1
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOutbound.java

@@ -46,11 +46,25 @@ public class KdYdOutbound implements Serializable {
 
     private String xsy;
 
-    private Long deliveryId;
+    private String  deliveryId;
 
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
 
+    private LocalDateTime dateTime;
+
     private String forminstid;
+
+    private String xsDept;
+
+    private String fhDept;
+
+    private String cgy;
+
+    private String syncStatus;
+
+    private String operationType;
+
+
 }

+ 13 - 1
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdOutboundDetail.java

@@ -63,8 +63,14 @@ public class KdYdOutboundDetail implements Serializable {
 
     private BigDecimal jtc;
 
+    private BigDecimal sfsl;
+
+    private BigDecimal yfsl;
+
     private String sjr;
 
+    private String sfzp;
+
     private String sjdh;
 
     private String sjdz;
@@ -77,13 +83,19 @@ public class KdYdOutboundDetail implements Serializable {
 
     private String xlh;
 
-    private Integer zbqsf;
+    private String zbqsf;
 
     private String kddh;
 
     private String jx;
 
+    private String detailId;
+
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 66 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdPaymentReceipt.java

@@ -0,0 +1,66 @@
+package com.malk.huagao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author LQY
+ * @since 2025-10-16
+ */
+@Getter
+@Setter
+  @TableName("KD_YD_PAYMENT_RECEIPT")
+public class KdYdPaymentReceipt implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+      private Long id;
+
+    private String djlx;
+
+    private String fkdwlx;
+
+    private String djbh;
+
+    private String skgld;
+
+    private LocalDateTime ywrq;
+
+    private String bb;
+
+    private String bz;
+
+    private String wldwlx;
+
+    private String xsddbh;
+
+    private String wldw;
+
+    private BigDecimal ysje;
+
+    private BigDecimal ssje;
+
+    private String xsy;
+
+    private LocalDateTime createTime;
+
+    private LocalDateTime updateTime;
+
+    private String xsbm;
+
+    private String syncStatus;
+
+    private String operationType;
+}

+ 66 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdPaymentReceiptDetail.java

@@ -0,0 +1,66 @@
+package com.malk.huagao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author LQY
+ * @since 2025-10-16
+ */
+@Getter
+@Setter
+  @TableName("KD_YD_PAYMENT_RECEIPT_DETAIL")
+public class KdYdPaymentReceiptDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      @TableId(value = "id", type = IdType.AUTO)
+      private Long id;
+
+      private Long payreceiptId;
+
+    private String jsfs;
+
+    private String skyt;
+
+    private String ysxmlx;
+
+    private String ysxsdd;
+
+    private String cdk;
+
+    private String wfyhzh;
+
+    private BigDecimal ysje;
+
+    private BigDecimal sxf;
+
+    private BigDecimal ssje;
+
+    private BigDecimal zhje;
+
+    private String xsddh;
+
+    private Integer detailId;
+
+    private LocalDateTime createTime;
+
+    private LocalDateTime updateTime;
+
+    private String fyxm;
+
+    private String syncStatus;
+
+    private String operationType;
+}

+ 14 - 2
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivable.java

@@ -27,10 +27,12 @@ public class KdYdReceivable implements Serializable {
       @TableId(value = "id", type = IdType.AUTO)
       private Long id;
 
-      private Long outboundId;
+//      private Long outboundId;
 
     private String djlx;
 
+    private String ckddjbh;
+
     private String djbh;
 
     private String bb;
@@ -49,11 +51,21 @@ public class KdYdReceivable implements Serializable {
 
     private String xsy;
 
-    private BigDecimal zdzkje;
+    private BigDecimal jshj;
 
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
 
+    private LocalDateTime endTime;
+
+    private LocalDateTime businessTime;
+
+    private String lzlx;
+
     private String forminstid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 6 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivableDetail.java

@@ -73,9 +73,15 @@ public class KdYdReceivableDetail implements Serializable {
 
     private String jx;
 
+    private String detailId;
+
     private BigDecimal jjjbsl;
 
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 39 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdReceivablePayment.java

@@ -0,0 +1,39 @@
+package com.malk.huagao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@TableName("KD_YD_RECEIVABLE_PAYMENT")
+public class KdYdReceivablePayment {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Long receivableId;
+
+    private BigDecimal ysbl;
+
+    private BigDecimal ysje;
+
+    private BigDecimal ysjebwb;
+
+    private BigDecimal stkdglje;
+
+    private Integer detailId;
+
+    private LocalDateTime endTime;
+
+    private String xsddh;
+
+
+}

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdZp.java

@@ -54,4 +54,8 @@ public class KdYdZp implements Serializable {
     private LocalDateTime updateTime;
 
     private String forminstid;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 4 - 0
mjava-huagao/src/main/java/com/malk/huagao/entity/KdYdZpDetail.java

@@ -72,4 +72,8 @@ public class KdYdZpDetail implements Serializable {
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
+
+    private String syncStatus;
+
+    private String operationType;
 }

+ 9 - 1
mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdDeliveryDetailMapper.java

@@ -1,7 +1,12 @@
 package com.malk.huagao.mapper;
 
+import com.malk.huagao.entity.KdYdDelivery;
 import com.malk.huagao.entity.KdYdDeliveryDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2025-10-15
  */
 public interface KdYdDeliveryDetailMapper extends BaseMapper<KdYdDeliveryDetail> {
-
+    @Select("SELECT delivery_id, mdh, update_time, wlbm FROM KD_YD_DELIVERY_DETAIL " +
+            "WHERE update_time >= #{startTime} " +
+            "AND mdh IS NOT NULL")
+    List<KdYdDeliveryDetail> selectRecentUpdated(LocalDateTime startTime);
 }

+ 7 - 0
mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdOrderPaymentMapper.java

@@ -0,0 +1,7 @@
+package com.malk.huagao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.huagao.entity.KdYdOrderPayment;
+
+public interface KdYdOrderPaymentMapper extends BaseMapper<KdYdOrderPayment> {
+}

+ 7 - 0
mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdPaymentReceiptDetailMapper.java

@@ -0,0 +1,7 @@
+package com.malk.huagao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.huagao.entity.KdYdPaymentReceiptDetail;
+
+public interface KdYdPaymentReceiptDetailMapper extends BaseMapper<KdYdPaymentReceiptDetail> {
+}

+ 8 - 0
mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdPaymentReceiptMapper.java

@@ -0,0 +1,8 @@
+package com.malk.huagao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.huagao.entity.KdYdOrderPayment;
+import com.malk.huagao.entity.KdYdPaymentReceipt;
+
+public interface KdYdPaymentReceiptMapper extends BaseMapper<KdYdPaymentReceipt> {
+}

+ 7 - 0
mjava-huagao/src/main/java/com/malk/huagao/mapper/KdYdReceivalablePaymentMapper.java

@@ -0,0 +1,7 @@
+package com.malk.huagao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.malk.huagao.entity.KdYdReceivablePayment;
+
+public interface KdYdReceivalablePaymentMapper extends BaseMapper<KdYdReceivablePayment> {
+}

+ 20 - 2
mjava-huagao/src/main/java/com/malk/huagao/schedule/YdScheduleTask.java

@@ -26,8 +26,8 @@ import java.util.Map;
 
 @Slf4j
 @Configuration
-@EnableScheduling
-@ConditionalOnProperty(name = {"enable.scheduling"})
+//@EnableScheduling
+//@ConditionalOnProperty(name = {"enable.scheduling"})
 public class YdScheduleTask {
 @Autowired
 private YdHuaGaoService ydHuaGaoService;
@@ -101,6 +101,15 @@ private YdHuaGaoService ydHuaGaoService;
         }
     }
     @Scheduled(cron = "0 0/5 * * * ?")
+    public void syncKdYdDeliveryDetail() {
+        log.info("定时同步-发货通知单详情");
+        try {
+            ydHuaGaoService.syncKdYdDeliveryDetail();
+        } catch (Exception e) {
+            log.error("【发货通知单详情同步任务】执行过程中发生严重错误", e);
+        }
+    }
+    @Scheduled(cron = "0 0/5 * * * ?")
     public void synckdYdOutbound() {
         log.info("定时同步-出库单");
         try {
@@ -136,4 +145,13 @@ private YdHuaGaoService ydHuaGaoService;
             log.error("【物料信息同步任务】执行过程中发生严重错误", e);
         }
     }
+    @Scheduled(cron = "0 0/5 * * * ?")
+    public void synckdYdPayment() {
+        log.info("定时同步-synckdYdPayment");
+        try {
+            ydHuaGaoService.synckdYdPayment();
+        } catch (Exception e) {
+            log.error("【synckdYdPayment同步任务】执行过程中发生严重错误", e);
+        }
+    }
 }

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

@@ -16,4 +16,8 @@ public interface YdHuaGaoService {
     void synckdYdZp();
 
     void synckdYdMaterial();
+
+    void syncKdYdDeliveryDetail();
+
+    void synckdYdPayment();
 }

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

@@ -55,11 +55,14 @@ public class KdYdCustomerLiaisonServiceImpl extends ServiceImpl<KdYdCustomerLiai
         String xb = UtilMap.getString(formData, "radioField_l3s6ubhx");
 //        String customerId = UtilMap.getString(formData, "textField_mgoxa46w");
         String uuid = UtilMap.getString(formData, "textField_mfkp33s5");
+
         LambdaQueryWrapper<KdYdCustomer> YdCustomerLambdaQueryWrapper = new LambdaQueryWrapper<>();
         YdCustomerLambdaQueryWrapper.eq(KdYdCustomer::getUuid, uuid);
         KdYdCustomer kdYdCustomer1 = kdYdCustomerMapper.selectOne(YdCustomerLambdaQueryWrapper);
         Long id = kdYdCustomer1.getId();
-        String khbm = kdYdCustomer1.getKhbm();
+//        String khbm = kdYdCustomer1.getKhbm();
+//        String khmc = kdYdCustomer1.getKhmc();
+
 
 //        if (customerId == null) {
 //            List<Map> xmdata = (List<Map>) ydClient.queryData(
@@ -83,6 +86,8 @@ public class KdYdCustomerLiaisonServiceImpl extends ServiceImpl<KdYdCustomerLiai
         kdYdCustomerLiaison.setXb(xb);
         kdYdCustomerLiaison.setFormInstId(formInstId);
         kdYdCustomerLiaison.setCustomerId(id);
+        kdYdCustomerLiaison.setSyncStatus("0");
+        kdYdCustomerLiaison.setOperationType("1");
         this.save(kdYdCustomerLiaison);
 //        ydClient.operateData(
 //                YDParam.builder()

+ 12 - 8
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdCustomerReferrerServiceImpl.java

@@ -41,22 +41,26 @@ private KdYdCustomerReferrerMapper kdYdCustomerReferrerMapper;
         String mc = UtilMap.getString(formData, "textField_mgqbiouh");
         String sfzh = UtilMap.getString(formData, "textField_mgqbioux");
         String sjh = UtilMap.getString(formData, "textField_mgqbioui");
-        String skrmc = UtilMap.getString(formData, "textField_mgqbioun");
-        String skzh = UtilMap.getString(formData, "textField_mgqbious");
-        String khh = UtilMap.getString(formData, "textField_mgqbiov0");
-        String ms = UtilMap.getString(formData, "textField_mgqbiov1");
+        String bm = UtilMap.getString(formData, "serialNumberField_mhk5zwzs");
+//        String skrmc = UtilMap.getString(formData, "textField_mgqbioun");
+//        String skzh = UtilMap.getString(formData, "textField_mgqbious");
+//        String khh = UtilMap.getString(formData, "textField_mgqbiov0");
+//        String ms = UtilMap.getString(formData, "textField_mgqbiov1");
         String tjruuid = UtilMap.getString(formData, "textField_mgqbiov3");
         String xsy = UtilMap.getString(formData, "employeeField_mgqbiouz").replace("[\"", "").replace("\"]", "").trim();
         KdYdCustomerReferrer kdYdCustomerReferrer = new KdYdCustomerReferrer();
         kdYdCustomerReferrer.setMc(mc);
         kdYdCustomerReferrer.setSfzh(sfzh);
         kdYdCustomerReferrer.setSjh(sjh);
-        kdYdCustomerReferrer.setSkrmc(skrmc);
-        kdYdCustomerReferrer.setSkzh(skzh);
-        kdYdCustomerReferrer.setKhh(khh);
-        kdYdCustomerReferrer.setMs(ms);
+//        kdYdCustomerReferrer.setSkrmc(skrmc);
+//        kdYdCustomerReferrer.setSkzh(skzh);
+//        kdYdCustomerReferrer.setKhh(khh);
+//        kdYdCustomerReferrer.setMs(ms);
         kdYdCustomerReferrer.setXsy(xsy);
         kdYdCustomerReferrer.setTjruuid(tjruuid);
+        kdYdCustomerReferrer.setBm(bm);
+        kdYdCustomerReferrer.setSyncStatus("0");
+        kdYdCustomerReferrer.setOperationType("1");
         kdYdCustomerReferrer.setFormInstId(formInstId);
 
         this.save(kdYdCustomerReferrer);

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

@@ -97,6 +97,10 @@ public class KdYdCustomerServiceImpl extends ServiceImpl<KdYdCustomerMapper, KdY
         kdYdCustomer.setKhxypj(khxypj);
         kdYdCustomer.setFormInstId(formInstId);
         kdYdCustomer.setTjruuid(tjruuid);
+        kdYdCustomer.setSyncStatus("0");
+        kdYdCustomer.setOperationType("1");
+
+
 
         boolean save = this.save(kdYdCustomer);
 //        LambdaQueryWrapper<KdYdCustomer> YdCustomerLambdaQueryWrapper = new LambdaQueryWrapper<>();

+ 32 - 9
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdDeliveryServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -53,11 +54,12 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
         Map formData = ddrNew.getFormData();
 
         String djlx = UtilMap.getString(formData, "selectField_mg3fuqvg");
-        long orderId = UtilMap.getLong(formData, "textField_mgrmn66f");
+        String orderId = UtilMap.getString(formData, "textField_mf6a0h6f");
 //        long orderId = 6L;
         LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_krbgloam"));
         String kh = UtilMap.getString(formData, "textField_mejnamf2");
         String jsbb = UtilMap.getString(formData, "selectField_mg3fuqvn");
+        String djbh = UtilMap.getString(formData, "serialNumberField_mheazm7w");
         String xsbm = UtilMap.getString(formData, "textField_krnn5bmr");
 //        String xsy = UtilMap.getString(formData, "employeeField_mejowmng").replace("[\"", "").replace("\"]", "").trim();
         String lllx = UtilMap.getString(formData, "selectField_mejowmnc");
@@ -79,7 +81,10 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
         kdYdDelivery.setOrderId(orderId);
         kdYdDelivery.setRq(rq);
         kdYdDelivery.setKh(kh);
+        kdYdDelivery.setDjbh(djbh);
         kdYdDelivery.setJsbb(jsbb);
+        kdYdDelivery.setSyncStatus("0");
+        kdYdDelivery.setOperationType("1");
         kdYdDelivery.setXsbm(xsbm);
         kdYdDelivery.setLllx(lllx);
         kdYdDelivery.setJjr(jjr);
@@ -98,6 +103,7 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
 
         Long id = kdYdDelivery.getId();
         System.out.println("id:"+id);
+        int count = 1;
         for (Map item : tableField) {
             String wlbm = safeGetString(item, "textField_mejnamff");
             String wlmc = safeGetString(item, "textField_mejnamfg");
@@ -119,6 +125,7 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
             kdYdDeliveryDetail.setWlbm(wlbm);
             kdYdDeliveryDetail.setWlmc(wlmc);
             kdYdDeliveryDetail.setGgxh(ggxh);
+            kdYdDeliveryDetail.setDetailId(count);
             kdYdDeliveryDetail.setXsdw(xsdw);
             kdYdDeliveryDetail.setJjsl(jjsl);
             kdYdDeliveryDetail.setSsxl(ssxl);
@@ -129,18 +136,21 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
             kdYdDeliveryDetail.setCkcw(ckcw);
             kdYdDeliveryDetail.setSjr(sjr);
             kdYdDeliveryDetail.setSjdh(sjdh);
+            kdYdDeliveryDetail.setSyncStatus("0");
+            kdYdDeliveryDetail.setOperationType("1");
             kdYdDeliveryDetail.setSjdz(sjdz);
             kdYdDeliveryDetail.setZbq(zbq);
             kdYdDeliveryDetail.setKddh(kddh);
             kdYdDeliveryDetail.setMdh(mdh);
             kdYdDeliveryDetailMapper.insert(kdYdDeliveryDetail);
+            count++;
 //save(kdYdDeliveryDetail);
         }
-        ydClient.operateData(
-                YDParam.builder()
-                        .formInstanceId(formInstId)
-                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrqnxmm", id)))
-                        .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+//        ydClient.operateData(
+//                YDParam.builder()
+//                        .formInstanceId(formInstId)
+//                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrqnxmm", id)))
+//                        .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
     }
     private static LocalDateTime parseTimestamp(String timestampStr) {
         if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
@@ -170,12 +180,25 @@ public class KdYdDeliveryServiceImpl extends ServiceImpl<KdYdDeliveryMapper, KdY
     }
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
     }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 25 - 3
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdMaterialServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Map;
 
 /**
@@ -56,6 +57,10 @@ public class KdYdMaterialServiceImpl extends ServiceImpl<KdYdMaterialMapper, KdY
         String smzs = UtilMap.getString(formData, "textField_mfxbtce4");
         String sjzt = UtilMap.getString(formData, "textField_mfxbtce6");
         String jyzt = UtilMap.getString(formData, "textField_mfxbtcea");
+        String dzl = UtilMap.getString(formData, "textField_mfxbtcea");
+        String pzzt = UtilMap.getString(formData, "selectField_mejl9nrq");
+        String wlbt = wlmc+"-"+xh;
+        String sdmc = ssxl+"-"+pzzt+"-"+safeGetString(formData, "numberField_mfxbtceb");
 
         KdYdMaterial kdYdMaterial = new KdYdMaterial();
         kdYdMaterial.setWlmc(wlmc);
@@ -74,6 +79,10 @@ public class KdYdMaterialServiceImpl extends ServiceImpl<KdYdMaterialMapper, KdY
         kdYdMaterial.setSmzs(smzs);
         kdYdMaterial.setSjzt(sjzt);
         kdYdMaterial.setJyzt(jyzt);
+        kdYdMaterial.setDzl(dzl);
+        kdYdMaterial.setPzzt(pzzt);
+        kdYdMaterial.setMaterialtitle(wlbt);
+        kdYdMaterial.setSpeedname(sdmc);
         kdYdMaterial.setForminstid(formInstId);
         kdYdMaterialMapper.insert(kdYdMaterial);
 
@@ -95,12 +104,25 @@ public class KdYdMaterialServiceImpl extends ServiceImpl<KdYdMaterialMapper, KdY
     }
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
     }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 83 - 8
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOrderServiceImpl.java

@@ -1,10 +1,15 @@
 package com.malk.huagao.service.impl;
 
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.huagao.entity.KdYdOrder;
 import com.malk.huagao.entity.KdYdOrderDetail;
+import com.malk.huagao.entity.KdYdOrderPayment;
 import com.malk.huagao.mapper.KdYdOrderDetailMapper;
 import com.malk.huagao.mapper.KdYdOrderMapper;
+import com.malk.huagao.mapper.KdYdOrderPaymentMapper;
 import com.malk.huagao.service.IKdYdOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.malk.server.aliwork.YDConf;
@@ -12,14 +17,18 @@ import com.malk.server.aliwork.YDParam;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -39,6 +48,10 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
     private KdYdOrderMapper kdYdOrderMapper;
     @Autowired
     private KdYdOrderDetailMapper kdYdOrderDetailMapper;
+    @Autowired
+    private KdYdOrderPaymentMapper kdYdOrderPaymentMapper;
+
+
     @Override
     public void insertkdYdOrder(Map map) {
         MDC.put("MDC_KEY_PID", "1003");
@@ -50,6 +63,7 @@ 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, "serialNumberField_mewfgzku");
         LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_mejowmnb"));
         String khxypj = UtilMap.getString(formData, "selectField_mewirdx4");
         String ywlx = UtilMap.getString(formData, "textField_mfxv2vfz");
@@ -62,6 +76,21 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
         String sktj = UtilMap.getString(formData, "selectField_mgisux07");
         String zdzkestr = UtilMap.getString(formData, "numberField_mejowmni");
         BigDecimal zdzke = toBigDecimal(zdzkestr);
+//        String fj = UtilMap.getString(formData, "attachmentField_mfoqcctz");
+//        JSONArray array = JSONObject.parseArray(fj);
+//        List<String> resultList = new ArrayList<>();
+//        if(array != null){
+//            for (int i = 0; i < array.size(); i++) {
+//                JSONObject jsonObject = array.getJSONObject(i);
+//                String url = jsonObject.getString("url");
+//                String s = ydClient.convertTemporaryUrl(url, 3600000);
+//                resultList.add(s);
+//            }
+//        }
+//        if(StringUtils.isNotBlank(fj)){
+//            List<Map> fjList =(List<Map>) JSON.parse(fj);
+//            resultList.add(ydClient.convertTemporaryUrl(UtilMap.getString(fjList.get(0),"url"), 3600000));
+//        }
         String sestr = UtilMap.getString(formData, "numberField_mfxv2vgh");
         BigDecimal se = toBigDecimal(sestr);
         String jestr = UtilMap.getString(formData, "numberField_mfxv2vgj");
@@ -71,8 +100,10 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
         String sfhs = UtilMap.getString(formData, "radioField_mfxv2vg4");
         String jws = UtilMap.getString(formData, "radioField_mfxv2vgm");
         List<Map> tableField = (List<Map>) formData.get("tableField_mfbx1pqi");
+        List<Map> tableFieldPayment = (List<Map>) formData.get("tableField_mhiui6v5");
         KdYdOrder kdYdOrder = new KdYdOrder();
         kdYdOrder.setDjlx(djlx);
+        kdYdOrder.setDjbh(djbh);
         kdYdOrder.setKhmc(khmc);
         kdYdOrder.setRq(rq);
         kdYdOrder.setKhxypj(khxypj);
@@ -90,10 +121,14 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
         kdYdOrder.setJshj(jshj);
         kdYdOrder.setSfhs(sfhs);
         kdYdOrder.setJws(jws);
+        kdYdOrder.setSyncStatus("0");
+        kdYdOrder.setOperationType("1");
         kdYdOrder.setForminstid(formInstId);
         kdYdOrderMapper.insert(kdYdOrder);
         Long id = kdYdOrder.getId();
+        int count = 1;
         for (Map item : tableField) {
+
             String wlbm = safeGetString(item, "textField_mfbx1pqt");
             String wlmc = safeGetString(item, "textField_mfbx1pqs");
             String ggxh = safeGetString(item, "textField_mfbx1pqr");
@@ -133,16 +168,43 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
             kdYdOrderDetail.setZke(zke);
             kdYdOrderDetail.setYhrq(yhrq);
             kdYdOrderDetail.setXsjzj(xsjzj);
+            kdYdOrderDetail.setDetailId(count);
             kdYdOrderDetail.setSmzs(zmzs);
+            kdYdOrderDetail.setSyncStatus("0");
+            kdYdOrderDetail.setOperationType("1");
             kdYdOrderDetail.setForminstid(formInstId);
 
             kdYdOrderDetailMapper.insert(kdYdOrderDetail);
+            count++;
+        }
+        if (tableFieldPayment != null){
+            for (int i = 0; i < tableFieldPayment.size(); i++) {
+                Map row = tableFieldPayment.get(i);
+                String sfys = safeGetString(row, "radioField_mhiui6v7");
+                String gldh = safeGetString(row, "textField_mhiui6va");
+                BigDecimal ysbl = toBigDecimal(UtilMap.getString(row, "numberField_mhiui6v6"));
+                BigDecimal ysje = toBigDecimal(UtilMap.getString(row, "numberField_mhiui6v8"));
+                BigDecimal ssje = toBigDecimal(UtilMap.getString(row, "numberField_mhiui6vb"));
+                LocalDateTime endTime = parseTimestamp(UtilMap.getString(row, "dateField_mhiui6v9"));
+                KdYdOrderPayment kdYdOrderPayment = new KdYdOrderPayment();
+                kdYdOrderPayment.setOrderId(id);
+                kdYdOrderPayment.setSfys(sfys);
+                kdYdOrderPayment.setGldh(gldh);
+                kdYdOrderPayment.setYsbl(ysbl);
+                kdYdOrderPayment.setYsje(ysje);
+                kdYdOrderPayment.setSsje(ssje);
+                kdYdOrderPayment.setDetailId(i + 1);
+                kdYdOrderPayment.setEndTime(endTime);
+                kdYdOrderPayment.setSyncStatus("0");
+                kdYdOrderPayment.setOperationType("1");
+                kdYdOrderPaymentMapper.insert(kdYdOrderPayment);
+            }
         }
-        ydClient.operateData(
-                YDParam.builder()
-                        .formInstanceId(formInstId)
-                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrmn66f", id)))
-                        .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+//        ydClient.operateData(
+//                YDParam.builder()
+//                        .formInstanceId(formInstId)
+//                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrmn66f", id)))
+//                        .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
 
     }
     private static LocalDateTime parseTimestamp(String timestampStr) {
@@ -173,12 +235,25 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
     }
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+    }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
     }
 }

+ 20 - 4
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOutboundServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -53,6 +54,7 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
         Map formData = ddrNew.getFormData();
 
         String djlx = UtilMap.getString(formData, "selectField_mejowmna");
+//        String djbh = UtilMap.getString(formData, "serialNumberField_mheazm7w");
         long deliceryId = UtilMap.getLong(formData, "textField_mgrqnxmm");
 //        long deliceryId = 6L;
         String kh = UtilMap.getString(formData, "textField_mejnamf2");
@@ -72,6 +74,7 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
         kdYdOutbound.setJsbb(jsbb);
         kdYdOutbound.setYsdh(ysdh);
         kdYdOutbound.setXslx(xslx);
+//        kdYdOutbound.setDjbh(djbh);
         kdYdOutbound.setKhsx(khsx);
         kdYdOutbound.setXssx(xssx);
         kdYdOutbound.setKhtjr(khtjr);
@@ -133,7 +136,7 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
             kdYdOutboundDetail.setZbq(zbq);
             kdYdOutboundDetail.setFwdqr(fwdqr);
             kdYdOutboundDetail.setXlh(xlh);
-            kdYdOutboundDetail.setZbqsf(zbqsf);
+//            kdYdOutboundDetail.setZbqsf(zbqsf);
             kdYdOutboundDetail.setKddh(kddh);
             kdYdOutboundDetail.setJx(jx);
             kdYdOutboundDetailMapper.insert(kdYdOutboundDetail);
@@ -172,12 +175,25 @@ public class KdYdOutboundServiceImpl extends ServiceImpl<KdYdOutboundMapper, KdY
     }
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
     }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 18 - 4
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdReceivableServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -79,7 +80,7 @@ public class KdYdReceivableServiceImpl extends ServiceImpl<KdYdReceivableMapper,
         kdYdReceivable.setXslx(xslx);
         kdYdReceivable.setKhsx(khsx);
         kdYdReceivable.setXsy(xsy);
-        kdYdReceivable.setZdzkje(zdzkje);
+//        kdYdReceivable.setZdzkje(zdzkje);
         kdYdReceivable.setBz(bz);
         kdYdReceivable.setForminstid(formInstId);
         kdYdReceivableMapper.insert(kdYdReceivable);
@@ -175,12 +176,25 @@ public class KdYdReceivableServiceImpl extends ServiceImpl<KdYdReceivableMapper,
 
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
     }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 17 - 3
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdZpServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -160,12 +161,25 @@ public class KdYdZpServiceImpl extends ServiceImpl<KdYdZpMapper, KdYdZp> impleme
 
     public static BigDecimal toBigDecimal(String str) {
         if (str == null || str.trim().isEmpty()) {
-            return BigDecimal.ZERO; // 或返回 null,看业务需要
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
         try {
-            return new BigDecimal(str.trim());
+            return new BigDecimal(str.trim())
+                    .setScale(2, RoundingMode.HALF_UP);
         } catch (NumberFormatException e) {
-            throw new IllegalArgumentException("无法转换为数字: " + str, e);
+            // 返回默认值而不是抛出异常,避免程序中断
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
         }
     }
+
+    /**
+     * 重载方法,支持Number类型输入
+     */
+    public static BigDecimal toBigDecimal(Number number) {
+        if (number == null) {
+            return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+        }
+        return new BigDecimal(number.toString())
+                .setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 670 - 78
mjava-huagao/src/main/java/com/malk/huagao/service/impl/YdHuaGaoServiceImpl.java

@@ -1,6 +1,7 @@
 package com.malk.huagao.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.malk.huagao.entity.*;
@@ -8,6 +9,7 @@ import com.malk.huagao.mapper.*;
 import com.malk.huagao.service.YdHuaGaoService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.dingtalk.DDConf;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
@@ -15,10 +17,11 @@ import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -38,9 +41,26 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
     @Autowired
     private KdYdReceivableMapper kdYdReceivableMapper;
     @Autowired
+    private KdYdOutboundDetailMapper kdYdOutboundDetailMapper;
+    @Autowired
+    private KdYdReceivableDetailMapper kdYdReceivableDetailMapper;
+    @Autowired
+    private KdYdDeliveryDetailMapper kdYdDeliveryDetailMapper;
+    @Autowired
+    private KdYdPaymentReceiptDetailMapper kdYdPaymentReceiptDetailMapper;
+    @Autowired
+    private KdYdPaymentReceiptMapper kdYdPaymentReceiptMapper;
+    @Autowired
+    private KdYdReceivalablePaymentMapper kdYdReceivalablePaymentMapper;
+    @Autowired
     private KdYdZpMapper kdYdZpMapper;
     @Autowired
     private KdYdMaterialMapper kdYdMaterialMapper;
+    @Autowired
+    private YDConf ydConf;
+    @Autowired
+    private DDConf ddConf;
+
     @Override
     public void syncKdYdCustomer() {
 
@@ -208,87 +228,353 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
             log.error("【发货单同步任务】执行过程中发生严重错误", e);
         }
     }
-//TODO: 2022/5/10 订单出库同步
+
+
     @Override
     public void synckdYdOutbound() {
         log.info("定时同步-出库单");
-        try {
+        LambdaQueryWrapper<KdYdOutbound> outboundqw = new LambdaQueryWrapper<>();
+        outboundqw.eq(KdYdOutbound::getSyncStatus, "0");
+        List<KdYdOutbound> kdYdOutbounds = kdYdOutboundMapper.selectList(outboundqw);
+        if (kdYdOutbounds.isEmpty()) {
+            log.info("【出库单同步任务】无需要同步的数据,结束");
+            return;
+        }
+        log.info("【出库单同步任务】开始同步,共{}条数据", kdYdOutbounds.size());
+
+        int successCount = 0;
+        int failCount = 0;
+
+        for (KdYdOutbound kdYdOutbound : kdYdOutbounds) {
+            try {
+                Long outboundId = kdYdOutbound.getId();
+                String djbh = kdYdOutbound.getDjbh();
+                String deliveryId = kdYdOutbound.getDeliveryId();
+
+                log.debug("开始同步出库单: ID={}, 单据编号={}", outboundId, djbh);
+
+                LambdaQueryWrapper<KdYdOutboundDetail> outbounddetailqw = new LambdaQueryWrapper<>();
+                outbounddetailqw.eq(KdYdOutboundDetail::getOutboundId, outboundId)
+                        .orderByAsc(KdYdOutboundDetail::getDetailId);
+                List<KdYdOutboundDetail> kdYdOutboundDetails = kdYdOutboundDetailMapper.selectList(outbounddetailqw);
+
+                ArrayList<Object> tableList = new ArrayList<>();
+                for (KdYdOutboundDetail kdYdOutboundDetail : kdYdOutboundDetails) {
+                    HashMap<String, String> tablemap = 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());
+//                    tablemap.put("radioField_mf6a0h6h", kdYdOutboundDetail.getSfzp());
+                    tableList.add(tablemap);
 
-            LocalDateTime now = LocalDateTime.now();
-            LocalDateTime fiveMinutesAgo = now.minusMinutes(5);
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            List<KdYdOutbound> KdYdOutbounds = kdYdOutboundMapper.selectRecentUpdated(fiveMinutesAgo);
-            if (KdYdOutbounds.isEmpty()) {
-                log.info("【出库单同步任务】无需要同步的数据,结束");
-                return;
-            }
+                }
 
-            for (KdYdOutbound kdYdOutbound : KdYdOutbounds) {
+                String fhdformInstanceId = null;
+                String fhdbh = null;
                 try {
-                    String djbh = kdYdOutbound.getDjbh();
-//                    String tjruuid = kdYdOrder.getTjruuid();
-                    String formInstId = kdYdOutbound.getForminstid();
-                    if (ObjectUtil.hasEmpty(formInstId, djbh)) {
-                        log.warn("跳过同步: formInstId 或 khbm 为空, customer={}", kdYdOutbound.getId());
-                        continue;
-                    }
+                    log.debug("开始查询出库数据: deliveryId={}", deliveryId);
 
-                    ydClient.operateData(
+                    List<Map> ddlist = (List<Map>) ydClient.queryData(
                             YDParam.builder()
-                                    .formInstanceId(formInstId)
-                                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", djbh)))
-                                    .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+                                    .formUuid("FORM-A7F03ACEE01D4F609550C86BF7FE87D35M6I")
+                                    .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("同步单条出库单数据异常: formInstId={}", kdYdOutbound.getForminstid(), e);
+                    log.error("查询订单数据异常: fhdbh={}, 错误信息={}", fhdbh, e.getMessage(), e);
+                }
+                HashMap<Object, Object> updateMap = new HashMap<>();
+                updateMap.put("tableField_mejnamfd", tableList);
+                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("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());
+
+                // 添加同步操作(根据您的实际需求添加)
+                // ydClient.operateData(...);
+
+                // 更新同步状态
+                kdYdOutbound.setSyncStatus("1");
+                kdYdOutboundMapper.updateById(kdYdOutbound);
+                successCount++;
+
+                log.info("出库单同步成功: 单据编号={}", djbh);
+
+            } catch (Exception e) {
+                failCount++;
+                log.error("同步单条出库单数据异常: 单据编号={}, 错误信息={}",
+                         kdYdOutbound.getDjbh(), e.getMessage(), e);
             }
-
-            log.info("【出库单同步任务】执行完成,共处理 {} 条记录", KdYdOutbounds.size());
-        } catch (Exception e) {
-            log.error("【出库单同步任务】执行过程中发生严重错误", e);
         }
-    }
 
+        log.info("【出库单同步任务】完成: 成功={}, 失败={}, 总计={}",
+                successCount, failCount, kdYdOutbounds.size());
+    }
     @Override
     public void syncKdYdReceivable() {
         log.info("定时同步-应收单");
-        try {
+        LambdaQueryWrapper<KdYdReceivable> receivableqw = new LambdaQueryWrapper<>();
+        receivableqw.eq(KdYdReceivable::getSyncStatus, "0");
+        List<KdYdReceivable> kdYdReceivables = kdYdReceivableMapper.selectList(receivableqw);
+        if (kdYdReceivables.isEmpty()) {
+            log.info("【应收单同步任务】无需要同步的数据,结束");
+            return;
+        }
 
-            LocalDateTime now = LocalDateTime.now();
-            LocalDateTime fiveMinutesAgo = now.minusMinutes(5);
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            List<KdYdReceivable> KdYdReceivables = kdYdReceivableMapper.selectRecentUpdated(fiveMinutesAgo);
-            if (KdYdReceivables.isEmpty()) {
-                log.info("【应收单同步任务】无需要同步的数据,结束");
-                return;
-            }
+        log.info("【应收单同步任务】开始同步,共{}条数据", kdYdReceivables.size());
+        int successCount = 0;
+        int failCount = 0;
+
+        for (KdYdReceivable kdYdReceivable : kdYdReceivables) {
+            try {
+                Long id = kdYdReceivable.getId();
+                String djbh = kdYdReceivable.getDjbh();
+
+                log.debug("开始同步应收单: ID={}, 单据编号={}", id, djbh);
+
+                // 同步应收单明细
+                LambdaQueryWrapper<KdYdReceivableDetail> receivabledetailqw = new LambdaQueryWrapper<>();
+                receivabledetailqw.eq(KdYdReceivableDetail::getReceivableId, id)
+                        .orderByAsc(KdYdReceivableDetail::getDetailId);
+                List<KdYdReceivableDetail> kdYdReceivabledetails = kdYdReceivableDetailMapper.selectList(receivabledetailqw);
+                if (kdYdReceivabledetails.isEmpty()) {
+                    log.info("【应收单{}】无需要同步的明细数据", djbh);
+                    continue;
+                }
 
-            for (KdYdReceivable kdYdReceivable : KdYdReceivables) {
-                try {
-                    String djbh = kdYdReceivable.getDjbh();
-//                    String tjruuid = kdYdOrder.getTjruuid();
-                    String formInstId = kdYdReceivable.getForminstid();
-                    if (ObjectUtil.hasEmpty(formInstId, djbh)) {
-                        log.warn("跳过同步: formInstId 或 khbm 为空, customer={}", kdYdReceivable.getId());
-                        continue;
+                ArrayList<Object> tableList = new ArrayList<>();
+                for (KdYdReceivableDetail kdYdReceivableDetail : kdYdReceivabledetails) {
+                    HashMap<Object, Object> tablemap = new HashMap<>();
+                    String wlbm = kdYdReceivableDetail.getWlbm();
+                    String wlmc = kdYdReceivableDetail.getWlmc();
+                    String ggxh = kdYdReceivableDetail.getGgxh();
+                    String jjdw = kdYdReceivableDetail.getJjdw();
+                    String ssxl = kdYdReceivableDetail.getSsxl();
+                    BigDecimal dj = kdYdReceivableDetail.getDj();
+                    BigDecimal hsdj = kdYdReceivableDetail.getHsdj();
+                    BigDecimal sl = kdYdReceivableDetail.getSl();
+                    BigDecimal je = kdYdReceivableDetail.getJe();
+                    BigDecimal zbjshj = kdYdReceivableDetail.getJshj();
+                    String kcdw = kdYdReceivableDetail.getKcdw();
+                    String ph = kdYdReceivableDetail.getPh();
+                    BigDecimal se = kdYdReceivableDetail.getSe();
+                    BigDecimal jjsl = kdYdReceivableDetail.getJjsl();
+                    BigDecimal zkl = kdYdReceivableDetail.getZkl();
+                    BigDecimal bhsje = kdYdReceivableDetail.getBhsje();
+                    BigDecimal jjjbsl = kdYdReceivableDetail.getJjjbsl();
+                    BigDecimal kcsl = kdYdReceivableDetail.getKcsl();
+                    String sfzp = kdYdReceivableDetail.getSfzp();
+                    String gg = kdYdReceivableDetail.getGg();
+                    BigDecimal tc = kdYdReceivableDetail.getTc();
+                    String jx = kdYdReceivableDetail.getJx();
+                    BigDecimal zke = kdYdReceivableDetail.getZke();
+                    String detailId = kdYdReceivableDetail.getDetailId();
+
+                    // 优化:确保所有金额字段保留两位小数
+                    tablemap.put("textField_mf6el3zy", wlbm);
+                    tablemap.put("textField_mf6el3zz", wlmc);
+                    tablemap.put("textField_mejmtic5", ggxh);
+                    tablemap.put("textField_mf6el400", jjdw);
+                    tablemap.put("textField_mhllijwo", ssxl);
+                    tablemap.put("numberField_mf6el402", dj != null ? dj.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mejmticb", hsdj != null ? hsdj.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mf6el403", sl != null ? sl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mejmtic7", zbjshj != null ? zbjshj.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("textField_mf6el409", kcdw);
+                    tablemap.put("textField_mf6el408", ph);
+                    tablemap.put("numberField_mf6el406", se != null ? se.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mejmtic6", jjsl != null ? jjsl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mf6el404", zkl != null ? zkl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mejmticc", bhsje != null ? bhsje.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mf6el407", jjjbsl != null ? jjjbsl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("numberField_mf6el40a", kcsl != null ? kcsl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("radioField_mejnamfn", sfzp);
+                    tablemap.put("numberField_mf6el40c", tc != null ? tc.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tablemap.put("textField_mf6el40d", jx);
+                    tablemap.put("textField_mf6el40b", gg);
+                    tablemap.put("numberField_mf6el405", zke != null ? zke.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                    tableList.add(tablemap);
+
+                    kdYdReceivableDetail.setSyncStatus("1");
+                    kdYdReceivableDetailMapper.updateById(kdYdReceivableDetail);
+                }
+
+                // 同步收款计划
+                LambdaQueryWrapper<KdYdReceivablePayment> receivablepayqw = new LambdaQueryWrapper<>();
+                receivablepayqw
+                        .eq(KdYdReceivablePayment::getReceivableId, id)
+                        .orderByAsc(KdYdReceivablePayment::getDetailId);
+                List<KdYdReceivablePayment> kdYdReceivablePayments = kdYdReceivalablePaymentMapper.selectList(receivablepayqw);
+
+                ArrayList<Object> tableListPay = new ArrayList<>();
+                if (!kdYdReceivablePayments.isEmpty()) {
+                    for (KdYdReceivablePayment kdYdReceivablePayment : kdYdReceivablePayments) {
+                        HashMap<Object, Object> tablemap1 = new HashMap<>();
+                        long timestamp = kdYdReceivablePayment.getEndTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli();
+                        String xsddh = kdYdReceivablePayment.getXsddh();
+                        BigDecimal ysje = kdYdReceivablePayment.getYsje();
+                        BigDecimal ysbl = kdYdReceivablePayment.getYsbl();
+                        BigDecimal ysjebwb = kdYdReceivablePayment.getYsjebwb();
+                        BigDecimal stkdglje = kdYdReceivablePayment.getStkdglje();
+
+                        tablemap1.put("textField_mhiui6va", xsddh);
+                        tablemap1.put("dateField_mhiui6v9", timestamp);
+                        tablemap1.put("numberField_mhiui6v8", ysje != null ? ysje.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                        tablemap1.put("numberField_mhiui6v6", ysbl != null ? ysbl.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                        tablemap1.put("numberField_mhiui6vb", ysjebwb != null ? ysjebwb.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                        tablemap1.put("numberField_mhjy9hzj", stkdglje != null ? stkdglje.setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                        tableListPay.add(tablemap1);
                     }
+                }
+                String ckddjbh = kdYdReceivable.getCkddjbh();
+                String ckdformInstanceId = null;
+                String ckdbh = null;
 
-                    ydClient.operateData(
+                try {
+                    List<Map> ddlist = (List<Map>) ydClient.queryData(
                             YDParam.builder()
-                                    .formInstanceId(formInstId)
-                                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mg34txgm", djbh)))
-                                    .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+                                    .formUuid("FORM-AADBCDA8126F41A0ADDEE3353828583192M8")
+                                    .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                                    .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                                    .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 && ckddjbh.equals(khformData.get("textField_mg34txgm"))) {
+                                ckdformInstanceId = (String) khitem.get("formInstanceId");
+                                ckdbh = (String) khformData.get("textField_mejnamf2");
+                                break;
+                            }
+                        }
+
+                        if (ckdformInstanceId == null) {
+                            log.warn("未找到与ckdbh={}完全匹配的订单数据", ckdbh);
+                        }
+                    } else {
+                        log.warn("未查询到订单数据: ckdbh={}", ckdbh);
+                    }
 
                 } catch (Exception e) {
-                    log.error("同步单条应收单数据异常: formInstId={}", kdYdReceivable.getForminstid(), e);
+                    log.error("查询订单数据异常: ckdbh={}, 错误信息={}", ckdbh, e.getMessage(), e);
                 }
+                HashMap<Object, Object> updateMap = new HashMap<>();
+                updateMap.put("tableField_mh9woanl", tableList);
+                if (ckdbh != null && ckdformInstanceId != null) {
+                    updateMap.put("associationFormField_mejmtick",
+                            Arrays.asList(getysdAss(ckdbh,ckdformInstanceId)));
+                }
+                // 构建主表数据
+                HashMap<Object, Object> updateData = new HashMap<>();
+                updateData.put("tableField_mf6el3zx", tableList);
+                updateData.put("tableField_mhiui6v5", tableListPay);
+                updateData.put("textField_mg3a0tgs", kdYdReceivable.getDjbh());
+                updateData.put("selectField_mg3a0th4", kdYdReceivable.getDjlx());
+                updateData.put("selectField_mev13l3r", kdYdReceivable.getSktj());
+                updateData.put("dateField_mejmtic3", kdYdReceivable.getEndTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli());
+                updateData.put("dateField_mejmtic2", kdYdReceivable.getBusinessTime().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli());
+                updateData.put("numberField_mejmtic8", kdYdReceivable.getJshj() != null ? kdYdReceivable.getJshj().setScale(2, java.math.RoundingMode.HALF_UP) : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                updateData.put("textField_mejmml3k", kdYdReceivable.getKh());
+                updateData.put("textField_mhjy9hzh", kdYdReceivable.getXsy());
+                updateData.put("selectField_mejowmnc", kdYdReceivable.getXslx());
+                updateData.put("selectField_megi74y8", kdYdReceivable.getKhsx());
+                updateData.put("textField_krnn5bmr", kdYdReceivable.getXsbm());
+                updateData.put("textField_mhjy9hzi", kdYdReceivable.getLzlx());
+                updateData.put("textareaField_mg3a0tgx", kdYdReceivable.getBz());
+                updateData.put("selectField_mg3fuqvn", kdYdReceivable.getBb());
+
+                log.debug("开始同步到宜搭: 单据编号={}, 表单UUID=FORM-4E1CE4550339494A9BE5498FB119FF2E9ERU", djbh);
+
+                // 执行同步
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-4E1CE4550339494A9BE5498FB119FF2E9ERU")
+                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg3a0tgs", kdYdReceivable.getDjbh())))
+                        .formDataJson(JSONObject.toJSONString(updateData))
+                        .build(), YDConf.FORM_OPERATION.upsert
+                );
+
+                kdYdReceivable.setSyncStatus("1");
+                kdYdReceivableMapper.updateById(kdYdReceivable);
+                successCount++;
+
+                log.info("应收单同步成功: 单据编号={}", djbh);
+
+            } catch (Exception e) {
+                failCount++;
+                log.error("同步应收单异常: ID={}, 单据编号={}, 错误信息={}",
+                        kdYdReceivable.getId(), kdYdReceivable.getDjbh(), e.getMessage(), e);
             }
-
-            log.info("【应收单同步任务】执行完成,共处理 {} 条记录", KdYdReceivables.size());
-        } catch (Exception e) {
-            log.error("【应收单同步任务】执行过程中发生严重错误", e);
         }
+
+        log.info("【应收单同步任务】完成: 成功={}, 失败={}, 总计={}",
+                successCount, failCount, kdYdReceivables.size());
     }
 
     @Override
@@ -310,7 +596,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
                     String djbh = kdYdZp.getDjbh();
                     String fph = kdYdZp.getFph();
                     String formInstId = kdYdZp.getForminstid();
-                    if (ObjectUtil.hasEmpty(formInstId, djbh,fph)) {
+                    if (ObjectUtil.hasEmpty(formInstId, djbh, fph)) {
                         log.warn("跳过同步: formInstId 或 khbm 为空, customer={}", kdYdZp.getId());
                         continue;
                     }
@@ -335,43 +621,349 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
     @Override
     public void synckdYdMaterial() {
         log.info("定时同步-物料单");
-        try {
+        LambdaQueryWrapper<KdYdMaterial> materialqw = new LambdaQueryWrapper<>();
+        materialqw.eq(KdYdMaterial::getSyncStatus, "0");
+//                .or()
+//                .eq(KdYdMaterial::getOperationType, 2);
+        List<KdYdMaterial> kdYdMaterials = kdYdMaterialMapper.selectList(materialqw);
+
+        log.info("本次需要同步的物料单数量: {}", kdYdMaterials.size());
+        int successCount = 0;
+        int failCount = 0;
+
+        for (KdYdMaterial kdYdMaterial : kdYdMaterials) {
+            try {
+                String wlbm = kdYdMaterial.getWlbm();
+                String wlmc = kdYdMaterial.getWlmc();
+                String xh = kdYdMaterial.getXh();
+                String gg = kdYdMaterial.getGg();
+                String wlfz = kdYdMaterial.getWlfz();
+                String wlsx = kdYdMaterial.getWlsx();
+                String jbdw = kdYdMaterial.getJbdw();
+                String ssxl = kdYdMaterial.getSsxl();
+                String jx = kdYdMaterial.getJx();
+                Integer sd = kdYdMaterial.getSd();
+                String mrsl = kdYdMaterial.getMrsl();
+                String chlb = kdYdMaterial.getChlb();
+                String xsy = kdYdMaterial.getXsy();
+                BigDecimal xsjzj = kdYdMaterial.getXsjzj();
+                String smzs = kdYdMaterial.getSmzs();
+                String sjzt = kdYdMaterial.getSjzt();
+                String jyzt = kdYdMaterial.getJyzt();
+                String dzl = kdYdMaterial.getDzl();
+                String pzzt = kdYdMaterial.getPzzt();
+                String wlbt = wlmc + wlbm;
+//                String materialtitle = kdYdMaterial.getMaterialtitle();
+                Map updateFormData = new HashMap();
+                updateFormData.put("textField_l43jpnsf", wlmc);
+                updateFormData.put("textField_mfxbtcdh", wlbm);
+                updateFormData.put("textField_l43jpnsg", xh);
+                updateFormData.put("textField_lqbxkzbq", gg);
+                updateFormData.put("textField_mhlbx8hi", wlfz);
+                updateFormData.put("textField_l43jpnsh", wlsx);
+                updateFormData.put("textField_mfxbtcdo", jbdw);
+                updateFormData.put("textField_mfxbtcdp", ssxl);
+                updateFormData.put("textField_mejl9nrs", jx);
+                updateFormData.put("numberField_mfxbtceb", sd);
+                updateFormData.put("textField_mejl9nrp", dzl);
+                updateFormData.put("selectField_mejl9nrq", pzzt);
+                updateFormData.put("textField_mfxbtcdq", mrsl);
+                updateFormData.put("textField_mfxbtcdr", chlb);
+                updateFormData.put("textField_mfxbtce5", xsy);
+
+                //确保金额字段保留两位小数
+                if (xsjzj != null) {
+                    updateFormData.put("numberField_mejl9nsc", xsjzj.setScale(2, java.math.RoundingMode.HALF_UP));
+                } else {
+                    updateFormData.put("numberField_mejl9nsc", java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP));
+                }
 
+                updateFormData.put("textField_mfxbtce4", smzs);
+                updateFormData.put("textField_mfxbtcea", jyzt);
+                updateFormData.put("textField_mg4h6mz5", wlbt);
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-E132ECE2BED94BCF81D9842B3F2054E7XWQ7")
+                        .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                        .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mg4h6mz5", wlbt)))
+//                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mfxbtcdh", wlbm)))
+                        .formDataJson(JSONObject.toJSONString(updateFormData))
+                        .build(), YDConf.FORM_OPERATION.upsert);
+
+                // 同步成功,更新状态
+                kdYdMaterial.setSyncStatus("1");
+                kdYdMaterialMapper.updateById(kdYdMaterial);
+                successCount++;
+
+                log.info("物料单同步成功: wlbm={}, wlmc={}", wlbm, wlmc);
+
+            } catch (Exception e) {
+                failCount++;
+                log.error("同步单条物料单数据异常: wlbm={}, wlmc={}",
+                        kdYdMaterial.getWlbm(), kdYdMaterial.getWlmc(), e);
+            }
+        }
+
+        // 添加同步结果统计日志
+        log.info("物料单同步完成: 成功={}, 失败={}, 总计={}",
+                successCount, failCount, kdYdMaterials.size());
+    }
+
+    @Override
+    public void syncKdYdDeliveryDetail() {
+        log.info("定时同步-发货单详情");
+        try {
             LocalDateTime now = LocalDateTime.now();
             LocalDateTime fiveMinutesAgo = now.minusMinutes(5);
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            List<KdYdMaterial> kdYdMaterials = kdYdMaterialMapper.selectRecentUpdated(fiveMinutesAgo);
-            if (kdYdMaterials.isEmpty()) {
-                log.info("【物料单同步任务】无需要同步的数据,结束");
+
+            // 1. 查询最近更新的 delivery detail
+            List<KdYdDeliveryDetail> kdYdDeliveryDetails = kdYdDeliveryDetailMapper.selectRecentUpdated(fiveMinutesAgo);
+
+            if (kdYdDeliveryDetails.isEmpty()) {
+                log.info("【发货详情单同步任务】无需要同步的数据,结束");
                 return;
             }
 
-            for (KdYdMaterial kdYdMaterial : kdYdMaterials) {
+            // 2. 按 deliveryId 提取主单 ID 列表,避免重复查询
+            Set<Long> deliveryIds = kdYdDeliveryDetails.stream()
+                    .map(KdYdDeliveryDetail::getDeliveryId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toSet());
+
+            // 3. 批量查询主单信息(包含 formInstId)
+            List<KdYdDelivery> mainDeliveries = kdYdDeliveryMapper.selectBatchIds(deliveryIds);
+            Map<Long, KdYdDelivery> deliveryMap = mainDeliveries.stream()
+                    .collect(Collectors.toMap(KdYdDelivery::getId, d -> d));
+
+            // 4. 按 formInstId 分组,减少 API 调用次数
+            Map<String, List<KdYdDeliveryDetail>> detailsByFormInstId = kdYdDeliveryDetails.stream()
+                    .filter(detail -> deliveryMap.containsKey(detail.getDeliveryId()))
+                    .collect(Collectors.groupingBy(detail -> {
+                        KdYdDelivery main = deliveryMap.get(detail.getDeliveryId());
+                        return main != null ? main.getForminstid() : null;
+                    }));
+
+            int successCount = 0;
+            int errorCount = 0;
+
+            // 5. 遍历每个 formInstId,只调用一次 query + 一次 update
+            for (Map.Entry<String, List<KdYdDeliveryDetail>> entry : detailsByFormInstId.entrySet()) {
+                String formInstId = entry.getKey();
+                if (formInstId == null || formInstId.trim().isEmpty()) {
+                    log.warn("跳过空 formInstId 的记录");
+                    continue;
+                }
+
                 try {
-                    String wlbm = kdYdMaterial.getWlbm();
-                    String wlmc = kdYdMaterial.getWlmc();
-                    String wlbt = wlmc + wlbm ;
-                    String formInstId = kdYdMaterial.getForminstid();
+                    // 查询当前表单数据
+                    Map formData = ydClient.queryData(
+                            YDParam.builder()
+                                    .formInstId(formInstId)
+                                    .appType(ydConf.getAppType())
+                                    .systemToken(ydConf.getSystemToken())
+                                    .userId(ddConf.getOperator())
+                                    .build(),
+                            YDConf.FORM_QUERY.retrieve_id
+                    ).getFormData();
+
+                    if (formData == null) {
+                        log.warn("formInstId={} 的 formData 为空", formInstId);
+                        continue;
+                    }
 
-                    if (ObjectUtil.hasEmpty(wlbm, wlmc)) {
-                        log.warn("跳过同步: formInstId 或 khbm 为空, customer={}", kdYdMaterial.getId());
+                    List<Map<String, Object>> tableData = (List<Map<String, Object>>) formData.get("tableField_mejnamfd");
+                    if (tableData == null || tableData.isEmpty()) {
+                        log.warn("formInstId={} 的子表 tableField_mejnamfd 为空", formInstId);
                         continue;
                     }
+                    // 标记是否需要更新
+                    boolean modified = false;
+
+                    // 处理当前 formInstId 下的所有待同步 detail
+                    for (KdYdDeliveryDetail detail : entry.getValue()) {
+                        String wlbm = detail.getWlbm();
+                        String mdh = detail.getMdh();
+
+                        for (Map<String, Object> row : tableData) {
+                            Object wlbmIdObj = row.get("textField_mejnamff");
+                            if (wlbmIdObj != null && wlbm.equals(wlbmIdObj.toString())) {
+                                row.put("textField_mf6a0h6y", mdh);
+                                modified = true;
+                                successCount++;
+                                break; // 找到匹配行即可跳出
+                            }
+                        }
+                    }
 
-                    ydClient.operateData(
-                            YDParam.builder()
-                                    .formInstanceId(formInstId)
-                                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mfxbtcdh, textField_mg4h6mz5", wlbm, wlbt)))
-                                    .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+                    // 只有修改了才提交
+                    if (modified) {
+                        ydClient.operateData(
+                                YDParam.builder()
+                                        .formInstanceId(formInstId)
+                                        .updateFormDataJson(JSON.toJSONString(Collections.singletonMap("tableField_mejnamfd", tableData)))
+                                        .useLatestVersion(true)
+                                        .build(),
+                                YDConf.FORM_OPERATION.update
+                        );
+                        log.debug("已更新 formInstId={} 的子表数据", formInstId);
+                    } else {
+                        log.debug("formInstId={} 无需更新", formInstId);
+                    }
 
                 } catch (Exception e) {
-                    log.error("同步单条物料单数据异常: formInstId={}", kdYdMaterial.getForminstid(), e);
+                    errorCount += entry.getValue().size(); // 统计失败数量
+                    log.error("同步 formInstId={} 时发生异常", formInstId, e);
                 }
             }
 
-            log.info("【物料单同步任务】执行完成,共处理 {} 条记录", kdYdMaterials.size());
+            log.info("【发货详情单同步任务】执行完成,共处理 {} 条记录,成功 {} 条,失败 {} 条",
+                    kdYdDeliveryDetails.size(), successCount, errorCount);
+
         } catch (Exception e) {
-            log.error("【物料单同步任务】执行过程中发生严重错误", e);
+            log.error("【发货单同步任务】执行过程中发生严重错误", e);
+        }
+    }
+
+    @Override
+    public void synckdYdPayment() {
+        log.info("定时同步-收款单");
+        LambdaQueryWrapper<KdYdPaymentReceipt> paymentqw = new LambdaQueryWrapper<>();
+        paymentqw.eq(KdYdPaymentReceipt::getSyncStatus, "0");
+        List<KdYdPaymentReceipt> kdYdPaymentReceipts = kdYdPaymentReceiptMapper.selectList(paymentqw);
+        if (kdYdPaymentReceipts.isEmpty()) {
+            log.info("【收款单同步任务】无需要同步的数据,结束");
+            return;
         }
+        log.info("【收款单同步任务】开始同步,共{}条数据", kdYdPaymentReceipts.size());
+
+        int successCount = 0;
+        int failCount = 0;
+
+        for (KdYdPaymentReceipt kdYdPaymentReceipt : kdYdPaymentReceipts) {
+            try {
+                Long paymentReceiptId = kdYdPaymentReceipt.getId();
+                String djbh = kdYdPaymentReceipt.getDjbh();
+
+                log.debug("开始同步收款单: ID={}, 单据编号={}", paymentReceiptId, djbh);
+
+                LambdaQueryWrapper<KdYdPaymentReceiptDetail> receivedetailqw = new LambdaQueryWrapper<>();
+                receivedetailqw.eq(KdYdPaymentReceiptDetail::getPayreceiptId, paymentReceiptId)
+                        .orderByAsc(KdYdPaymentReceiptDetail::getDetailId);
+                List<KdYdPaymentReceiptDetail> kdYDPaymentReceiptDetails = kdYdPaymentReceiptDetailMapper.selectList(receivedetailqw);
+                ArrayList<Object> tableList = new ArrayList<>();
+                for (KdYdPaymentReceiptDetail kdYdPaymentReceiptDetail : kdYDPaymentReceiptDetails) {
+                    HashMap<String, String> tablemap = new HashMap<>();
+                    tablemap.put("textField_mh9woanr", kdYdPaymentReceiptDetail.getJsfs());
+                    tablemap.put("textField_mh9woans", kdYdPaymentReceiptDetail.getSkyt());
+                    tablemap.put("textField_mh9woant", kdYdPaymentReceiptDetail.getYsxmlx());
+                    tablemap.put("textField_mh9woanu", kdYdPaymentReceiptDetail.getYsxsdd());
+                    tablemap.put("numberField_mh9woanv", kdYdPaymentReceiptDetail.getYsje() != null ? kdYdPaymentReceiptDetail.getYsje().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+                    tablemap.put("numberField_mh9woanw", kdYdPaymentReceiptDetail.getSxf() != null ? kdYdPaymentReceiptDetail.getSxf().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+                    tablemap.put("textField_mhmr1ecr", kdYdPaymentReceiptDetail.getCdk());
+                    tablemap.put("textField_mh9woany", kdYdPaymentReceiptDetail.getWfyhzh());
+                    tablemap.put("textField_mh9woao2", kdYdPaymentReceiptDetail.getXsddh());
+                    tablemap.put("textField_mh9woao1", kdYdPaymentReceiptDetail.getFyxm());
+                    tablemap.put("numberField_mh9woanz", kdYdPaymentReceiptDetail.getSsje() != null ? kdYdPaymentReceiptDetail.getSsje().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+                    tablemap.put("numberField_mh9woao0", kdYdPaymentReceiptDetail.getZhje() != null ? kdYdPaymentReceiptDetail.getZhje().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+
+//                    tablemap.put("radioField_mf6a0h6h", kdYdOutboundDetail.getSfzp());
+                    tableList.add(tablemap);
+
+                }
+                String xsddbh = kdYdPaymentReceipt.getXsddbh();
+                String ddformInstanceId = null;
+                String ddbh = null;
+
+                try {
+                    log.debug("开始查询订单数据: xsddbh={}", xsddbh);
+
+                    List<Map> ddlist = (List<Map>) ydClient.queryData(
+                            YDParam.builder()
+                                    .formUuid("FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C")
+                                    .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                                    .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                                    .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 && xsddbh.equals(khformData.get("serialNumberField_mewfgzku"))) {
+                                ddformInstanceId = (String) khitem.get("formInstanceId");
+                                ddbh = (String) khformData.get("serialNumberField_mewfgzku");
+                                break;
+                            }
+                        }
+
+                        if (ddformInstanceId == null) {
+                            log.warn("未找到与xsddbh={}完全匹配的订单数据", xsddbh);
+                        }
+                    } else {
+                        log.warn("未查询到订单数据: xsddbh={}", xsddbh);
+                    }
+
+                } catch (Exception e) {
+                    log.error("查询订单数据异常: xsddbh={}, 错误信息={}", xsddbh, e.getMessage(), 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", kdYdPaymentReceipt.getDjlx());
+                updateMap.put("textField_mh9woann", kdYdPaymentReceipt.getFkdwlx());
+                updateMap.put("textField_mh9woamt", kdYdPaymentReceipt.getDjbh());
+                updateMap.put("textField_mh9woamz", kdYdPaymentReceipt.getSkgld());
+                updateMap.put("textField_mh9woano", kdYdPaymentReceipt.getBb());
+                updateMap.put("dateField_mh9woan5", kdYdPaymentReceipt.getYwrq() != null ? String.valueOf(kdYdPaymentReceipt.getYwrq().atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli()) : "");
+                updateMap.put("textField_mh9woanp", kdYdPaymentReceipt.getWldwlx());
+                updateMap.put("textField_mh9woanq", kdYdPaymentReceipt.getWldw());
+                updateMap.put("numberField_mh9woanc", kdYdPaymentReceipt.getYsje() != null ? kdYdPaymentReceipt.getYsje().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+                updateMap.put("numberField_mh9woand", kdYdPaymentReceipt.getSsje() != null ? kdYdPaymentReceipt.getSsje().setScale(2, java.math.RoundingMode.HALF_UP).toString() : java.math.BigDecimal.ZERO.setScale(2, java.math.RoundingMode.HALF_UP).toString());
+                updateMap.put("textField_mhjxv2tf", kdYdPaymentReceipt.getXsy());
+                updateMap.put("textField_mhjxv2tg", kdYdPaymentReceipt.getXsbm());
+                updateMap.put("textareaField_mh9woank", kdYdPaymentReceipt.getBz());
+
+                log.debug("开始同步到宜搭: 单据编号={}, 表单UUID=FORM-0569C06E47074C2981ADEEAFCE083EDAK5AM", djbh);
+
+                // 添加同步操作(根据您的实际需求添加)
+                ydClient.operateData(YDParam.builder()
+                        .formUuid("FORM-0569C06E47074C2981ADEEAFCE083EDAK5AM")
+                        .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                        .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mh9woamt", kdYdPaymentReceipt.getDjbh())))
+                        .formDataJson(JSONObject.toJSONString(updateMap))
+                        .build(), YDConf.FORM_OPERATION.upsert);
+
+                // 更新同步状态
+                kdYdPaymentReceipt.setSyncStatus("1");
+                kdYdPaymentReceiptMapper.updateById(kdYdPaymentReceipt);
+                successCount++;
+
+                log.info("收款单同步成功: 单据编号={}", djbh);
+
+            } catch (Exception e) {
+                failCount++;
+                log.error("同步单条收款单数据异常: 单据编号={}, 错误信息={}",
+                        kdYdPaymentReceipt.getDjbh(), e.getMessage(), e);
+            }
+        }
+
+        log.info("【收款单同步任务】完成: 成功={}, 失败={}, 总计={}",
+                successCount, failCount, kdYdPaymentReceipts.size());
+    }
+    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 Object getysdAss(String title, String id) {
+        return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-AADBCDA8126F41A0ADDEE3353828583192M8", "receipt", id, title, "");
     }
-}
+}