lvjs 13 часов назад
Родитель
Сommit
96f9fc0f15

+ 16 - 1
src/main/java/com/malk/eastar/controller/AitableController.java

@@ -109,12 +109,18 @@ public class AitableController {
      */
     @PostMapping("/chanegBusinessUser")
     McR changeCustomerBusinessUser(@RequestBody JSONObject data) {
-        log.info("业务员变更, {}", data);
+//        log.info("业务员变更, {}", data);
+        McException.assertParamException_Null(data, "syncLogId");
+        String syncLogId = UtilMap.getString(data, "syncLogId");
+        log.info("数据同步日志ID:{}", syncLogId);
         McException.assertParamException_Null(data, "aitableId");
         String aitableId = UtilMap.getString(data, "aitableId");
         String yidaBusinessUserId = UtilMap.getString(data, "yidaBusinessUserId");  //业务userId
         Map<String,Object> fields = new HashMap<>();
         try {
+            /*
+                更新客户业务员
+             */
             JSONArray user = new JSONArray();
             if(yidaBusinessUserId == null || yidaBusinessUserId.isEmpty()){
                 log.info("业务userId为空,将业务置空");
@@ -125,6 +131,15 @@ public class AitableController {
             }
             fields.put("ynNC3Kq",JSONObject.toJSONString(user));  //业务【人事】
             aitableService.updateSys1CustomerData(aitableId,fields);
+
+            /*
+                更新数据同步时间
+             */
+            yidaService.updateSyncLogTime(syncLogId);
+
+            /*
+                返回成功标识
+             */
             return McR.success();
         } catch (Exception e) {
             return McR.error("400",e.getMessage());

+ 5 - 7
src/main/java/com/malk/eastar/controller/EastarYidaController.java

@@ -62,19 +62,17 @@ public class EastarYidaController {
     }
 
     /**
-     * 退回公海,补充前跟进人信息
+     * 退回公海
      * @param data
      * @return
      */
-    @PostMapping("/addPreviousBusinessUser")
-    McR addPreviousBusinessUser(@RequestBody JSONObject data) {
-        log.info("退回公海,补充前跟进人信息, {}", data);
+    @PostMapping("/backToPublicSea")
+    McR backToPublicSea(@RequestBody JSONObject data) {
+        log.info("退回公海, {}", data);
         McException.assertParamException_Null(data, "formInstId");
         String formInstId = UtilMap.getString(data, "formInstId");
-        String previousBusinessUserId = UtilMap.getString(data, "previousBusinessUserId");  //前跟进人员userId
-        String previousBusinessGroup = UtilMap.getString(data, "previousBusinessGroup");    //前跟进团队
         try {
-            yidaService.updatePreviousBusinessUser(formInstId,previousBusinessUserId,previousBusinessGroup);
+            yidaService.updateLtcCustomerBackToPublicSea(formInstId);
             return McR.success();
         } catch (Exception e) {
             return McR.error("400",e.getMessage());

+ 208 - 0
src/main/java/com/malk/eastar/schedule/ScheduleTask4.java

@@ -41,6 +41,214 @@ public class ScheduleTask4 {
     @Autowired
     private DDCoreClient ddCoreClient;
 
+    /**
+     * 更新客户的“新”或“老”标识
+     */
+//    @Scheduled(cron = "0 44 16 * * ?")
+    public void cleanCustomerNewOrOld20260805() {
+        log.info("更新客户的“新”或“老”标识开始");
+        /*
+            查询项目总表售前台账数据
+         */
+        log.info("查询项目总表售前台账数据");
+        List<Map> sys1SaleData = new ArrayList<>();
+        try {
+            sys1SaleData = aitableService.querySys1AllSaleData();
+            log.info("项目总表售前台账记录数量="+sys1SaleData.size());
+        } catch (Exception e) {
+            log.error("查询所有项目总表售前台账数据异常",e);
+            return;
+        }
+
+        /*
+            筛选实际成单日期在2025年8月1日至2026年8月1日的记录
+         */
+        List<Map> sys1SaleDataFilter = new ArrayList<>();
+        Long actualCloseDate;   //实际成单日期
+        for (Map sys1SaleRecord : sys1SaleData){
+            if(sys1SaleRecord.get("actualCloseDate") == null){
+                continue;
+            }
+            actualCloseDate = Long.parseLong(sys1SaleRecord.get("actualCloseDate").toString());
+            if(actualCloseDate >= 1753977600000L && actualCloseDate < 1785513600000L){   //2025-08-01 00:00:00 ~ 2026-08-01 00:00:00
+                sys1SaleDataFilter.add(sys1SaleRecord);
+            }
+        }
+        log.info("实际成单日期在2025年8月1日至2026年8月1日的记录数量="+sys1SaleDataFilter.size());
+
+
+        /*
+            获取近1年内有成单客户
+         */
+        Set<String> sustomerWithPast1YearOrdersSet = new HashSet<>();
+        String customerId;
+        for (Map sys1SaleRecord : sys1SaleDataFilter){
+            customerId = sys1SaleRecord.get("customerId").toString();
+//            System.out.println("客户ID="+customerId);
+            sustomerWithPast1YearOrdersSet.add(customerId);
+        }
+        log.info("近1年内有成单客户数量="+sustomerWithPast1YearOrdersSet.size());
+
+        /*
+            查询(易思达)客户名册所有记录
+         */
+        log.info("查询(易思达)客户名册所有记录");
+        List<Map> ltcCustomerData = new ArrayList<>();
+        try {
+            ltcCustomerData = yidaService.queryLtcAllCustomerData();
+        } catch (Exception e) {
+            log.error("查询(易思达)客户名册异常",e);
+        }
+
+        /*
+            修改新老客户
+         */
+        int count = 0;
+        String formInstId;
+        String aiTableId;
+        String customerName;
+        String newOrOld;
+        for (Map ltcCustomerRecord : ltcCustomerData){
+            if (ltcCustomerRecord.get("aiTableId") == null){
+                continue;
+            }
+            aiTableId = ltcCustomerRecord.get("aiTableId").toString();
+            customerName = "未知客户";
+            if (ltcCustomerRecord.get("customerName")  != null){
+                customerName = ltcCustomerRecord.get("customerName").toString();
+            }
+            newOrOld = "";
+            if(ltcCustomerRecord.get("newOrOld") != null){
+                newOrOld = ltcCustomerRecord.get("newOrOld").toString();
+            }
+            if("不合作".equals(newOrOld)){
+//                System.out.println("不合作客户:"+customerName);
+                continue;
+            }
+            formInstId = ltcCustomerRecord.get("formInstId").toString();
+            if (sustomerWithPast1YearOrdersSet.contains(aiTableId)){
+                //老客户
+                if(!newOrOld.equals("老")){
+                    count++;
+                    try {
+                        System.out.println("修改为老客户:"+customerName);
+                        yidaService.updateLtcCustomerNewOrOld(formInstId, "老");
+                        Thread.sleep(3000);
+                    } catch (Exception e) {
+                        log.error("修改为老客户异常",e);
+                    }
+                }
+
+            }else{
+                //新客户
+                if(!newOrOld.equals("新")){
+                    count++;
+                    try {
+                        System.out.println("修改为新客户:"+customerName);
+                        yidaService.updateLtcCustomerNewOrOld(formInstId, "新");
+                        Thread.sleep(3000);
+                    } catch (Exception e) {
+                        log.error("修改为新客户异常",e);
+                    }
+                }
+            }
+        }
+        log.info("更新数量="+count);
+
+        log.info("更新客户的“新”或“老”标识结束");
+    }
+
+    /**
+     * 清洗客户(下过单客户)数据
+     */
+//    @Scheduled(cron = "0 50 10 * * ?")
+    public void cleanCustomerWithPastOrders20260805() {
+        log.info("清洗客户(下过单客户)数据开始");
+        /*
+            查询项目总表售前台账数据
+         */
+        log.info("查询项目总表售前台账数据");
+        List<Map> sys1SaleData = new ArrayList<>();
+        try {
+            sys1SaleData = aitableService.querySys1AllSaleData();
+            log.info("项目总表售前台账记录数量="+sys1SaleData.size());
+        } catch (Exception e) {
+            log.error("查询所有项目总表售前台账数据异常",e);
+            return;
+        }
+
+        /*
+            筛选实际成单日期不为空且早于2026年8月1日前的记录
+         */
+        List<Map> sys1SaleDataFilter = new ArrayList<>();
+        Long actualCloseDate;   //实际成单日期
+        for (Map sys1SaleRecord : sys1SaleData){
+            if(sys1SaleRecord.get("actualCloseDate") == null){
+                continue;
+            }
+            actualCloseDate = Long.parseLong(sys1SaleRecord.get("actualCloseDate").toString());
+            if(actualCloseDate < 1785513600000L){   //2026-08-01 00:00:00
+                sys1SaleDataFilter.add(sys1SaleRecord);
+            }
+        }
+        log.info("实际成单日期早于2026年8月1日前的记录数量="+sys1SaleDataFilter.size());
+
+        /*
+            获取已成单售前台账关联客户
+         */
+        Set<String> sustomerWithPastOrdersSet = new HashSet<>();
+        String customerId;
+        for (Map sys1SaleRecord : sys1SaleDataFilter){
+            customerId = sys1SaleRecord.get("customerId").toString();
+//            System.out.println("客户ID="+customerId);
+            sustomerWithPastOrdersSet.add(customerId);
+        }
+        log.info("已成单售前台账关联客户数量="+sustomerWithPastOrdersSet.size());
+
+        /*
+            查询(易思达)客户名册所有记录
+         */
+        log.info("查询(易思达)客户名册所有记录");
+        List<Map> ltcCustomerData = new ArrayList<>();
+        try {
+            ltcCustomerData = yidaService.queryLtcAllCustomerData();
+        } catch (Exception e) {
+            log.error("查询(易思达)客户名册异常",e);
+        }
+
+        /*
+            更新下过单客户
+         */
+        String formInstId;
+        String aiTableId;
+        boolean isMatch;
+        for(String customerRelatedAiTableId : sustomerWithPastOrdersSet){
+            isMatch = false;
+            for (int i = 0; i < ltcCustomerData.size(); i++) {
+                if(ltcCustomerData.get(i).get("aiTableId") == null){
+                    continue;
+                }
+                aiTableId = ltcCustomerData.get(i).get("aiTableId").toString();
+                if(aiTableId.equals(customerRelatedAiTableId)){
+                    isMatch = true;
+                    try {
+                        formInstId = ltcCustomerData.get(i).get("formInstId").toString();
+                        System.out.println("更新下过单客户:"+ltcCustomerData.get(i).get("customerName").toString());
+                        yidaService.updateCustomerWithOrders(formInstId);
+                        Thread.sleep(3000);
+                    } catch (Exception e) {
+                        log.error("更新下过单客户异常",e);
+                    }
+                    break;
+                }
+            }
+            if (!isMatch){
+                System.out.println("未匹配到客户ID="+customerRelatedAiTableId);
+            }
+        }
+        log.info("清洗客户(下过单客户)数据结束");
+    }
+
 
     /**
      * 清洗客户(客户验重)数据

+ 1 - 1
src/main/java/com/malk/eastar/schedule/ScheduleTask9.java

@@ -38,7 +38,7 @@ public class ScheduleTask9 {
     /**
      * 计算业务员私海客户数量
      */
-    @Scheduled(cron = "0 30 10,16 * * ?")
+    @Scheduled(cron = "0 10 11,16 * * ?")
     public void calculateusinessUserPrivateCustomerNum() {
         log.info("计算业务员私海客户数量开始");
 

+ 15 - 2
src/main/java/com/malk/eastar/service/YidaService.java

@@ -18,6 +18,13 @@ public interface YidaService {
      */
     Map heartbeatTest(String param);
 
+    /**
+     * 更新数据同步时间
+     * @param formInstId
+     * @return
+     */
+    void updateSyncLogTime(String formInstId);
+
     /**
      * 【项目台账】→【采购任务】数据流转
      * @param formInstId
@@ -152,6 +159,10 @@ public interface YidaService {
      */
     void updateLtcCustomerBasicInfo8(String formInstId, long privateSeaTime, long lastContactTime) throws Exception;
 
+    /**
+     * 更新易思达系统客户基本信息(新老客户)
+     */
+    void updateLtcCustomerNewOrOld(String formInstId, String newOrOld) throws Exception;
 
     /**
      * 客户退回公海
@@ -169,9 +180,10 @@ public interface YidaService {
     void updateCustomerPotentialLevel(String formInstId, String customerPotentialLevel) throws Exception;
 
     /**
-     * 更新客户前跟进人信息
+     * 更新易思达系统客户基本信息(下过单客户)
      */
-    void updatePreviousBusinessUser(String formInstId, String previousBusinessUserId, String previousBusinessGroup) throws Exception;
+    void updateCustomerWithOrders(String formInstId) throws Exception;
+
 
     /**
      * 更新易思达系统客户的AI表格映射ID
@@ -203,6 +215,7 @@ public interface YidaService {
      */
     void updateLtcSaleProjectClearLevel(String formInstId, String clearLevelFlag) throws Exception;
 
+
     /**
      * 更新易思达系统销售项目业务员
      */

+ 56 - 14
src/main/java/com/malk/eastar/service/impl/YidaServiceImpl.java

@@ -50,6 +50,32 @@ public class YidaServiceImpl implements YidaService {
         return result;
     }
 
+    @Override
+    public void updateSyncLogTime(String formInstId) {
+        /*
+            参数定义
+         */
+        YDParam yidaParam;  //HTTP请求体
+        YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
+        String updateFormDataJson;  //更新内容
+
+        /*
+            初始化参数值
+         */
+        updateFormDataJson = JSONObject.toJSONString(
+                UtilMap.map("dateField_msgtizes",DateUtil.current())
+        );  //数据同步时间
+
+        /*
+            更新数据
+         */
+        ydParamBuilder = YDParam.builder();
+        ydParamBuilder = ydParamBuilder.formInstId(formInstId);
+        ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
+        yidaParam = ydParamBuilder.build();
+        ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
+    }
+
     @Override
     public Map createPartsTask(String formInstId) {
         log.info("【项目台账】→【采购任务】数据流转开始");
@@ -2398,6 +2424,32 @@ public class YidaServiceImpl implements YidaService {
         ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
     }
 
+    @Override
+    public void updateLtcCustomerNewOrOld(String formInstId, String newOrOld) throws Exception {
+        /*
+            参数定义
+         */
+        YDParam yidaParam;  //HTTP请求体
+        YDParam.YDParamBuilder ydParamBuilder; //宜搭参数构建
+        String updateFormDataJson;  //更新内容
+
+        /*
+            初始化参数值
+         */
+        Map<String,String> updateFormData = new HashMap<String,String>();
+        updateFormData.put("radioField_md6q7ox8",newOrOld);
+        updateFormDataJson = JSONObject.toJSONString(updateFormData);
+
+        /*
+            更新数据
+         */
+        ydParamBuilder = YDParam.builder();
+        ydParamBuilder = ydParamBuilder.formInstId(formInstId);
+        ydParamBuilder = ydParamBuilder.updateFormDataJson(updateFormDataJson);
+        yidaParam = ydParamBuilder.build();
+        ydClient.operateData(yidaParam,YDConf.FORM_OPERATION.update);
+    }
+
     @Override
     public void updateLtcCustomerBackToPublicSea(String formInstId) throws Exception {
         /*
@@ -2461,7 +2513,7 @@ public class YidaServiceImpl implements YidaService {
 
     @Override
     public void updateCustomerPotentialLevel(String formInstId, String customerPotentialLevel) throws Exception {
-/*
+        /*
             参数定义
          */
         YDParam yidaParam;  //HTTP请求体
@@ -2487,7 +2539,7 @@ public class YidaServiceImpl implements YidaService {
     }
 
     @Override
-    public void updatePreviousBusinessUser(String formInstId, String previousBusinessUserId, String previousBusinessGroup) throws Exception {
+    public void updateCustomerWithOrders(String formInstId) throws Exception {
         /*
             参数定义
          */
@@ -2498,19 +2550,9 @@ public class YidaServiceImpl implements YidaService {
         /*
             初始化参数值
          */
-        Map updateFormData = UtilMap.map(
-                "employeeField_mdo82twa, selectField_moyb4zx2, radioField_md6q7oxa, employeeField_lqanqe6n, employeeField_lqx3act6, selectField_moy9v8ve, textField_mnchujji, textField_lxa0ko5h",
-                previousBusinessUserId!=null?new String[]{previousBusinessUserId}:new String[]{},   //前跟进人员
-                previousBusinessGroup,  //前跟进团队
-                "公",    //公海/私海
-                new String[]{}, //业务员
-                new String[]{}, //业务组长
-                "", //业务小组
-                "", //业务员userId
-                ""  //业务员name
-        );
+        Map<String,String> updateFormData = new HashMap<String,String>();
+        updateFormData.put("radioField_ms43zj2s","是"); //下过单客户
         updateFormDataJson = JSONObject.toJSONString(updateFormData);
-        System.out.println(updateFormDataJson);
 
         /*
             更新数据