“lqy пре 1 месец
родитељ
комит
7db5dd0df2

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

@@ -59,9 +59,20 @@ private YDClient ydClient;
 //                .formInstanceIdList((List<String>) ddrNew.getData())
 //                .build(), YDConf.FORM_OPERATION.delete_batch);
 
+        DDR_New ddrNew = ydClient.queryData(YDParam.builder()
+                .formInstId("FINST-S2666U81RZA18BDUNZO2U8URNQ8H3X0D2GMJMW932")
+                .build(), YDConf.FORM_QUERY.retrieve_id);
 
+        if (ddrNew == null || ddrNew.getFormData() == null) {
+            throw new RuntimeException("未找到订单信息");
+        }
 
+        Map formData1 = ddrNew.getFormData();
+        String ddje = UtilMap.getString(formData1, "numberField_mjm9k35k");
+        String dddate = UtilMap.getString(formData1, "dateField_mjm9k35j");
 
+        System.out.println(dddate);
+        System.out.println(ddje);
 //        ydClient.operateData(YDParam.builder()
 //                .formInstanceId(ins)
 //      .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mhirg0kz","156")))//xz04

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

@@ -32,4 +32,9 @@ public class KdYdOrderController {
         kdYdOrderService.insertkdYdOrder(map);
         return McR.success();
     }
+    @PostMapping("/SckdYdOrder")
+    McR SckdYdOrder(@RequestBody Map map) {
+        kdYdOrderService.SckdYdOrder(map);
+        return McR.success();
+    }
 }

+ 2 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/IKdYdOrderService.java

@@ -16,4 +16,6 @@ import java.util.Map;
 public interface IKdYdOrderService extends IService<KdYdOrder> {
 
     void insertkdYdOrder(Map map);
+
+    void SckdYdOrder(Map map);
 }

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

@@ -1,5 +1,7 @@
 package com.malk.huagao.service;
 
+import com.malk.server.common.McR;
+
 public interface YdHuaGaoService {
     void syncKdYdCustomer();
 
@@ -23,4 +25,5 @@ public interface YdHuaGaoService {
 
     void synckdYdTRANSFER();
 
+
 }

+ 190 - 3
mjava-huagao/src/main/java/com/malk/huagao/service/impl/KdYdOrderServiceImpl.java

@@ -13,6 +13,8 @@ import com.malk.huagao.service.IKdYdOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
+import com.malk.server.aliwork.YDSearch;
+import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
@@ -24,12 +26,11 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -240,6 +241,192 @@ public class KdYdOrderServiceImpl extends ServiceImpl<KdYdOrderMapper, KdYdOrder
 
     }
 
+    @Override
+    public void SckdYdOrder(Map map) {
+        MDC.put("MDC_KEY_PID", "1003");
+
+        try {
+            String formInstId = UtilMap.getString(map, "formInstId");
+            String khbm = UtilMap.getString(map, "khbm");
+
+            // 1. 查询订单详情
+            DDR_New ddrNew = ydClient.queryData(YDParam.builder()
+                    .formInstId(formInstId)
+                    .build(), YDConf.FORM_QUERY.retrieve_id);
+
+            if (ddrNew == null || ddrNew.getFormData() == null) {
+                throw new RuntimeException("未找到订单信息");
+            }
+
+            Map formData1 = ddrNew.getFormData();
+            String ddje = UtilMap.getString(formData1, "numberField_mewfgzkv");
+            String dddateTimestamp = UtilMap.getString(formData1, "dateField_mejowmnb");
+
+            // 参数校验
+            if (ddje == null || ddje.trim().isEmpty()) {
+                throw new RuntimeException("订单金额不能为空");
+            }
+            if (dddateTimestamp == null || dddateTimestamp.trim().isEmpty()) {
+                throw new RuntimeException("订单日期不能为空");
+            }
+
+            System.out.println("获取到的时间戳:" + dddateTimestamp);
+
+            // 2. 计算订单金额(保留两位小数)
+            Double orderAmount = null;
+            try {
+                orderAmount = Double.parseDouble(ddje);
+                // 保留两位小数
+                orderAmount = Math.round(orderAmount * 100.0) / 100.0;
+            } catch (NumberFormatException e) {
+                throw new RuntimeException("订单金额格式错误: " + ddje);
+            }
+
+            String ghcDateTimestamp = null;
+
+            // 3. 查询客户历史信息
+            List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder()
+                    .formUuid("FORM-F79B680547674A6BBD11C0D511E3C14B28FY")
+                    .searchFieldJson(JSONObject.toJSONString(Arrays.asList(
+                            new YDSearch("textField_mjm9k35n",
+                                    khbm,
+                                    "客户编号",
+                                    YDSearch.Type.TEXT_FIELD,
+                                    YDSearch.Operator.EQ)
+                    )))
+                    .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
+
+            // 5. 计算累计金额和释放日期
+            Double historicalAmount = 0.0;
+            if (list.size() > 0) {
+                historicalAmount = UtilMap.getDouble(list.get(0), "numberField_mjm9k35k");
+                if (historicalAmount == null) {
+                    historicalAmount = 0.0;
+                } else {
+                    // 历史金额也保留两位小数
+                    historicalAmount = Math.round(historicalAmount * 100.0) / 100.0;
+                }
+            }
+
+            // 计算总金额 = 当前订单金额 + 历史累计金额(保留两位小数)
+            Double totalAmount = orderAmount + historicalAmount;
+            totalAmount = Math.round(totalAmount * 100.0) / 100.0;
+
+            System.out.println("金额计算:订单金额=" + orderAmount +
+                    ", 历史金额=" + historicalAmount +
+                    ", 总金额=" + totalAmount);
+
+            // 6. 根据总金额计算释放公海池日期
+            long baseTimestamp = Long.parseLong(dddateTimestamp.trim());
+            // 7. 更新客户信息
+            Map<String, Object> formData = new HashMap<>();
+            if (totalAmount == null || totalAmount <= 0) {
+                // 情况4:无订单/金额为空或0 → +90天
+                ghcDateTimestamp = String.valueOf(calculateTimestamp(baseTimestamp, 90));
+                formData.put("selectField_l3nrjuq0", "未成交");
+                System.out.println("情况4:无金额,释放日期=" + ghcDateTimestamp);
+            } else if (totalAmount < 75000) {
+                // 情况1:金额 < 7.5万 → +180天
+                ghcDateTimestamp = String.valueOf(calculateTimestamp(baseTimestamp, 180));
+                formData.put("selectField_l3nrjuq0", "半年金额不足");
+                System.out.println("情况1:金额<7.5万,释放日期=" + ghcDateTimestamp);
+            } else if (totalAmount < 150000) {
+                // 情况2:7.5万 ≤ 金额 < 15万 → +360天
+                ghcDateTimestamp = String.valueOf(calculateTimestamp(baseTimestamp, 360));
+                formData.put("selectField_l3nrjuq0", "一年金额不足");
+                System.out.println("情况2:金额7.5-15万,释放日期=" + ghcDateTimestamp);
+            } else {
+                // 情况3:金额 ≥ 15万 → 空值(不释放)
+                ghcDateTimestamp = null;
+                System.out.println("情况3:金额≥15万,不释放公海池");
+            }
+
+
+            // 重要:直接保存时间戳格式,不是格式化后的日期
+            formData.put("dateField_mjm9k35j", dddateTimestamp); // 最后成交日期(时间戳格式)
+
+            if (ghcDateTimestamp != null) {
+                formData.put("dateField_mjm9k35l", ghcDateTimestamp); // 释放公海日期(时间戳格式)
+            } else {
+                formData.put("dateField_mjm9k35l", ""); // 明确设置为空
+            }
+
+            // 更新累计金额(保留两位小数)
+            formData.put("numberField_mjm9k35k", totalAmount);
+
+            System.out.println("更新客户数据:" + formData);
+
+            // 执行更新操作
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-F79B680547674A6BBD11C0D511E3C14B28FY")
+                    .appType("APP_VQDMMWS6OR1VHL8VMFD3")
+                    .systemToken("XE766X81JHKXK4Z27SYOI86CPCLQ3J1LV7ODMH2")
+                    .noExecuteExpression(false)
+                    .searchFieldJson(JSONObject.toJSONString(Arrays.asList(
+                            new YDSearch("textField_mjm9k35n",
+                                    khbm,
+                                    "客户编号",
+                                    YDSearch.Type.TEXT_FIELD,
+                                    YDSearch.Operator.EQ)
+                    )))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+
+            System.out.println("客户信息更新成功,客户编号:" + khbm);
+
+        } catch (Exception e) {
+            // 添加错误日志
+            System.err.println("处理订单失败: " + e.getMessage());
+            e.printStackTrace();
+            throw new RuntimeException("处理订单失败: " + e.getMessage(), e);
+        } finally {
+            MDC.remove("MDC_KEY_PID");
+        }
+    }
+
+    /**
+     * 计算时间戳:在基础时间戳上添加天数
+     * @param baseTimestamp 基础时间戳(毫秒)
+     * @param days 要添加的天数
+     * @return 计算后的时间戳(毫秒)
+     */
+    private long calculateTimestamp(long baseTimestamp, int days) {
+        try {
+            // 1天 = 24小时 * 60分钟 * 60秒 * 1000毫秒
+            long oneDayMillis = 24L * 60L * 60L * 1000L;
+            long daysMillis = days * oneDayMillis;
+
+            long resultTimestamp = baseTimestamp + daysMillis;
+
+            // 输出调试信息
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String baseDate = sdf.format(new Date(baseTimestamp));
+            String resultDate = sdf.format(new Date(resultTimestamp));
+
+            System.out.println("时间戳计算:" + baseDate + " (" + baseTimestamp + ") + " +
+                    days + "天 = " + resultDate + " (" + resultTimestamp + ")");
+
+            return resultTimestamp;
+        } catch (Exception e) {
+            System.err.println("时间戳计算失败:" + baseTimestamp + ", 天数:" + days + ", 错误:" + e.getMessage());
+            // 如果计算失败,返回一个默认值(基础时间戳 + 大致的天数)
+            return baseTimestamp + (days * 24L * 60L * 60L * 1000L);
+        }
+    }
+
+    /**
+     * 辅助方法:将时间戳转换为可读日期(仅用于调试)
+     */
+    private String timestampToDateString(String timestamp) {
+        try {
+            long ts = Long.parseLong(timestamp.trim());
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            return sdf.format(new Date(ts));
+        } catch (Exception e) {
+            return "无效时间戳:" + timestamp;
+        }
+    }
+
     private static LocalDateTime parseTimestamp(String timestampStr) {
         if (timestampStr == null || timestampStr.trim().isEmpty()) return null;
         try {

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

@@ -10,11 +10,11 @@ import com.malk.huagao.service.YdHuaGaoService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.aliwork.YDSearch;
+import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDConf;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.units.qual.A;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -1537,7 +1537,7 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
 
                 ydClient.operateData(YDParam.builder()
                         .formUuid("FORM-F1B2BA2AF310476C88F4756F4DB50667VXDR")
-                                .noExecuteExpression(false)
+                        .noExecuteExpression(false)
                         .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_miptelgc", kdYdTransfer.getDjbh())))
                         .formDataJson(JSONObject.toJSONString(updateMap))
                         .build(), YDConf.FORM_OPERATION.upsert);
@@ -1558,9 +1558,11 @@ public class YdHuaGaoServiceImpl implements YdHuaGaoService {
         log.info("【调拨单同步任务】完成: 成功={}, 失败={}, 总计={}",
                 successCount, failCount, kdYdTRANSFERdels.size());
     }
+
     private static String safeToString(Object obj) {
         return obj == null ? null : obj.toString();
     }
+
     private Object getddAss(String title, String id) {
         return UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle", "APP_VQDMMWS6OR1VHL8VMFD3", "FORM-B62CAE3075CE4098B17BB86C90FFA21C9B7C", "receipt", id, title, "");
     }