lvjs дней назад: 2
Родитель
Сommit
1d275a42c6

+ 197 - 0
src/main/java/com/malk/eastar/schedule/ScheduleTask3.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.malk.eastar.service.AitableService;
 import com.malk.eastar.service.DDCoreClient;
 import com.malk.eastar.service.YidaService;
+import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +37,202 @@ public class ScheduleTask3 {
     @Autowired
     private DDCoreClient ddCoreClient;
 
+
+    /**
+     * 补充遗漏的客户数据
+     */
+//    @Scheduled(cron = "0 49 10 * * ?")
+    public void syncCustomerData20260804() {
+        log.info("补充遗漏的客户数据开始");
+        /*
+            查询业务小组档案中的成员信息
+         */
+        List<Map> ltcBusinessUserData = new ArrayList<>();
+        try {
+            ltcBusinessUserData = yidaService.queryLtcAllBusinessUserData();
+        } catch (Exception e) {
+            log.error("查询业务小组档案中的成员信息异常",e);
+        }
+
+        /*
+            从项目总表(系统1)获取客户数据
+         */
+        List<Map> sys1CustomerData = new ArrayList<>(); // 项目总表客户数据
+        try {
+            sys1CustomerData = aitableService.querySys1CustomerData();
+            log.info("项目总表客户数量="+sys1CustomerData.size());
+        } catch (Exception e) {
+            log.error("查询项目总表客户数据异常",e);
+        }
+
+        /*
+            查询(易思达)客户名册所有记录
+         */
+        log.info("查询(易思达)客户名册所有记录");
+        List<Map> ltcCustomerData = new ArrayList<>();
+        try {
+            ltcCustomerData = yidaService.queryLtcAllCustomerData();
+        } catch (Exception e) {
+            log.error("查询(易思达)客户名册异常",e);
+        }
+
+
+        /*
+            寻找易思达系统不存在的客户,并新增
+         */
+        String aiTableId;   //AI表格ID
+        String customerName1;
+        Object businessUserUnionId;
+        String businessUserId;
+        String customerLevel;
+        String newOrOld;
+        String businessLeaderUserId;
+        String businessDepartment;
+        List deptIdList;
+        List<Map> ltcCustomerAddData = new ArrayList<>();
+        Map<String,List<Map>> customerNameUpperCaseMap = new HashMap<>();
+        String customerName1UpperCase;
+        String customerName2;
+        String customerName2UpperCase;
+        List<Map> maplist;
+        for (Map sys1CustomerRecord : sys1CustomerData){
+            if(sys1CustomerRecord.get("customerName")!= null){
+                customerName1 = sys1CustomerRecord.get("customerName").toString();
+                if(!customerName1.isEmpty()){
+                    /*
+                        按大写客户名称归类
+                     */
+                    customerName1UpperCase = customerName1.replaceAll(" ","").toUpperCase();
+                    if(customerNameUpperCaseMap.containsKey(customerName1UpperCase)){
+                        maplist = customerNameUpperCaseMap.get(customerName1UpperCase);
+                    }else{
+                        maplist = new ArrayList<>();
+                    }
+                    maplist.add(sys1CustomerRecord);
+                    customerNameUpperCaseMap.put(customerName1UpperCase,maplist);
+                }
+            }
+        }
+        boolean isExist;
+        for(String customerNameUpperCase : customerNameUpperCaseMap.keySet()){
+            isExist = false;
+            for (int i=0; i<ltcCustomerData.size(); i++){
+                customerName2 = ltcCustomerData.get(i).get("customerName").toString();
+                customerName2UpperCase = customerName2.replaceAll(" ","").toUpperCase();
+                if(customerNameUpperCase.equals(customerName2UpperCase)){
+                    isExist = true;
+                    break;
+                }
+            }
+            if(!isExist){
+                ltcCustomerAddData.add(customerNameUpperCaseMap.get(customerNameUpperCase).get(0));
+            }
+        }
+
+        String businessUserName;
+        Map privateSeaCustomerRecord;
+        int otherCount = 0; //其它差异数量
+        for(Map ltcCustomerAddRecord : ltcCustomerAddData){
+            aiTableId = "";
+            businessUserId = null;
+            businessUserName = "";
+            customerLevel = "";
+            newOrOld = "";
+            businessLeaderUserId = null;
+            businessDepartment = null;
+            if (ltcCustomerAddRecord.get("customerName") != null) {
+                customerName1 = ltcCustomerAddRecord.get("customerName").toString();
+                if (ltcCustomerAddRecord.get("aiTableId") != null) {
+                    aiTableId = ltcCustomerAddRecord.get("aiTableId").toString();
+                }
+                if (ltcCustomerAddRecord.get("businessUserName") != null) {
+                    businessUserName = ltcCustomerAddRecord.get("businessUserName").toString();
+                }
+                businessUserUnionId = ltcCustomerAddRecord.get("businessUserUnionId");
+                if (businessUserUnionId != null) {
+                    try {
+                        businessUserId = ddCoreClient.getUserIdByUnionId(businessUserUnionId.toString());
+                        if(businessUserId.isEmpty()){
+                            throw new RuntimeException("businessUserUserId为空");
+                        }
+                    } catch (Exception e) {
+                        log.error("没有找到业务员unionId["+businessUserUnionId+"]对应的userId");
+                    }
+                }
+                if(businessUserId!=null && !businessUserId.isEmpty()){
+                    for (int i = 0; i < ltcBusinessUserData.size(); i++) {
+                        if(UtilMap.getString(ltcBusinessUserData.get(i), "userId").equals(businessUserId)){
+                            businessLeaderUserId = UtilMap.getString(ltcBusinessUserData.get(i), "businessLeaderUserId");
+                            if(businessLeaderUserId.isEmpty()){
+                                businessLeaderUserId = null;
+                            }
+                            break;
+                        }
+                    }
+                    try {
+                        deptIdList = ddCoreClient.getDeptIdListByUserId(businessUserId);
+                        if(deptIdList!=null && !deptIdList.isEmpty()){
+                            businessDepartment = String.valueOf(deptIdList.get(0));
+                        }
+                        if(businessDepartment.isEmpty()){
+                            businessDepartment = null;
+                        }
+                    } catch (Exception e) {
+                        log.error("获取业务userId与业务部门映射异常",e);
+                    }
+                }else{
+                    businessUserId = null;
+                }
+                if (ltcCustomerAddRecord.get("customerLevel") != null) {
+                    customerLevel = ltcCustomerAddRecord.get("customerLevel").toString();
+                }
+                if (ltcCustomerAddRecord.get("newOrOld") != null) {
+                    newOrOld = ltcCustomerAddRecord.get("newOrOld").toString();
+                }
+                if("Matagot/Kolossal".equals(customerName1)){
+                    System.out.println("businessUserName="+businessUserName+",aiTableId="+aiTableId+",customerName1="+customerName1
+                            +",businessUserId="+businessUserId+",customerLevel="+customerLevel
+                            +",newOrOld="+newOrOld+",businessLeaderUserId="+businessLeaderUserId
+                            +",businessDepartment="+businessDepartment);
+                    privateSeaCustomerRecord = new HashMap();
+                    privateSeaCustomerRecord.put("customerName",customerName1);
+                    customerName1UpperCase = customerName1.replaceAll(" ","").toUpperCase();
+                    privateSeaCustomerRecord.put("customerName1UpperCase",customerName1UpperCase);
+                    privateSeaCustomerRecord.put("businessLeaderUserId",businessLeaderUserId);
+                    privateSeaCustomerRecord.put("businessDepartment",businessDepartment);
+                    privateSeaCustomerRecord.put("newOrOld",newOrOld);
+                    privateSeaCustomerRecord.put("customerLevel",customerLevel);
+                    privateSeaCustomerRecord.put("aiTableId",aiTableId);
+                    privateSeaCustomerRecord.put("customerLevelActual","E");
+                    if(businessUserId == null){
+                        privateSeaCustomerRecord.put("businessUserId","");
+                        privateSeaCustomerRecord.put("businessUserName","");
+                        privateSeaCustomerRecord.put("seaType","公");
+                    }else{
+                        privateSeaCustomerRecord.put("businessUserId",businessUserId);
+                        if(businessUserName!=null && !businessUserName.isEmpty()){
+                            businessUserName = businessUserName.split("-")[0];
+                        }
+                        privateSeaCustomerRecord.put("businessUserName",businessUserName);
+                        privateSeaCustomerRecord.put("seaType","私");
+                    }
+
+                    privateSeaCustomerRecord.put("testUseFlag","否");
+                    try {
+                        yidaService.insertCustomerData(privateSeaCustomerRecord);
+                    } catch (Exception e) {
+                        log.error("新增易思达系统客户记录异常",e);
+                    }
+                }else{
+                    otherCount++;
+                }
+            }
+        }
+        log.info("其它差异数量="+otherCount);
+
+        log.info("补充遗漏的客户数据完成");
+    }
+
     /**
      * 同步销售项目数据
      */

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

@@ -326,7 +326,7 @@ public class ScheduleTask4 {
      * 清洗客户(业务员)数据
      * 查找易思达系统和项目总表中业务员不一致的客户
      */
-//    @Scheduled(cron = "0 42 11 * * ?")
+//    @Scheduled(cron = "0 44 13 * * ?")
     public void cleanCustomerBusinessUser20260708() {
         /*
             查询(易思达)客户名册所有记录

+ 6 - 0
src/main/java/com/malk/eastar/schedule/ScheduleTask7.java

@@ -48,6 +48,7 @@ public class ScheduleTask7 {
             log.info("易思达系统销售项目记录数量="+ltcSaleProjectList.size());
         } catch (Exception e) {
             log.error("查询易思达系统销售项目数据异常",e);
+            return;
         }
 
         /*
@@ -60,6 +61,7 @@ public class ScheduleTask7 {
             log.info("项目总表售前台账记录数量="+sys1SaleData.size());
         } catch (Exception e) {
             log.error("查询所有项目总表售前台账数据异常",e);
+            return;
         }
 
         /*
@@ -208,6 +210,7 @@ public class ScheduleTask7 {
             log.info("易思达系统销售项目记录数量="+ltcSaleProjectList.size());
         } catch (Exception e) {
             log.error("查询易思达系统销售项目数据异常",e);
+            return;
         }
 
         /*
@@ -220,6 +223,7 @@ public class ScheduleTask7 {
             log.info("项目总表售前台账记录数量="+sys1SaleData.size());
         } catch (Exception e) {
             log.error("查询所有项目总表售前台账数据异常",e);
+            return;
         }
 
         /*
@@ -319,6 +323,7 @@ public class ScheduleTask7 {
             ltcSaleProjectData = yidaService.queryLtcSaleProjectData(params);
         } catch (Exception e) {
             log.error("查询销售台账记录异常",e);
+            return;
         }
         //查询所有AI表格已成单【表1】售前台账数据
         List<Map> saleData = new ArrayList<>();
@@ -328,6 +333,7 @@ public class ScheduleTask7 {
             saleData = aitableService.querySys1SaleData(params);
         } catch (Exception e) {
             log.error("查询售前台账数据异常",e);
+            return;
         }
 
         //对比找出不一致的

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

@@ -257,9 +257,117 @@ public class ScheduleTask8 {
      * 同步销售项目数据到项目总表
      * 业务员
      */
-//    @Scheduled(cron = "0 37 11 * * ?")
+//    @Scheduled(cron = "0 10 9 * * ?")
     public void syncSaleProjectBusinessUser() {
+        log.info("同步销售项目数据到项目总表(业务员)开始");
 
+        /*
+            查询易思达系统所有业务员档案
+         */
+        log.info("查询易思达系统所有在职业务员档案");
+        List<Map> ltcBusinessUserData = new ArrayList<>();
+        try {
+            ltcBusinessUserData = yidaService.queryEmployedBusinessUserData();
+            log.info("所有在职业务员档案数量="+ltcBusinessUserData.size());
+        } catch (Exception e) {
+            log.error("查询易思达系统所有在职业务员档案异常",e);
+            return;
+        }
+
+        /*
+            获取userId和unionId映射关系
+         */
+        log.info("获取userId和unionId映射关系");
+        Map<String,String> userIdUnionIdMap = new HashMap<>();
+        String userId;
+        String unionId;
+        for(Map ltcBusinessUserRecord : ltcBusinessUserData){
+            try {
+                userId = ltcBusinessUserRecord.get("userId").toString();
+                if(userId == null || StringUtils.isEmpty(userId)){
+                    log.info("userId为空!");
+                    continue;
+                }
+                unionId = ddCoreClient.getUnionIdByUserId(userId);
+                if(unionId == null || StringUtils.isEmpty(unionId)){
+                    log.info("userId="+userId+",unionId为空!");
+                    continue;
+                }
+                userIdUnionIdMap.put(userId,unionId);
+                log.info("userName=" + ltcBusinessUserRecord.get("businessUserName").toString() +",userId="+userId+",unionId="+unionId);
+            } catch (Exception e) {
+                log.error("获取userId和unionId映射关系异常");
+                return;
+            }
+        }
+
+        /*
+            查询易思达系统销售项目数据
+         */
+        log.info("查询易思达系统销售项目数据");
+        List<Map> ltcSaleProjectList = new ArrayList<>();
+        try {
+            ltcSaleProjectList = yidaService.queryLtcAllSaleProjectData();
+            log.info("易思达系统销售项目记录数量="+ltcSaleProjectList.size());
+        } catch (Exception e) {
+            log.error("查询易思达系统销售项目数据异常",e);
+            return;
+        }
+
+        /*
+            查询项目总表售前台账数据
+         */
+        log.info("查询项目总表售前台账数据");
+        List<Map> sys1SaleData = new ArrayList<>();
+        try {
+            sys1SaleData = aitableService.querySys1AllSaleData();
+            log.info("项目总表售前台账记录数量="+sys1SaleData.size());
+        } catch (Exception e) {
+            log.error("查询所有项目总表售前台账数据异常",e);
+            return;
+        }
+
+        /*
+            查找业务员不一致的客户
+         */
+        boolean isNotMatch = false; //是否不一致
+        int isNotMatchCount = 0;
+        String formInstId;
+        String projectName;
+        String businessUserId; //易思达系统客户业务员userId
+        String aiTableId1;
+        String aiTableId2;
+        String unionId1; //易思达系统客户业务员userId对应的unionId
+        String unionId2; //项目总表客户业务员的unionId
+        for (Map ltcSaleProjectRecord : ltcSaleProjectList){
+            try {
+                isNotMatch = false;
+                projectName = ltcSaleProjectRecord.get("projectName").toString();
+                aiTableId1 = ltcSaleProjectRecord.get("aiTableId").toString();
+                businessUserId = ltcSaleProjectRecord.get("businessUserId").toString();
+                unionId1 = userIdUnionIdMap.get(businessUserId);
+                for (int i = 0; i < sys1SaleData.size(); i++) {
+                    aiTableId2 = sys1SaleData.get(i).get("aiTableId").toString();
+                    if(aiTableId1.equals(aiTableId2)){
+                        unionId2  = sys1SaleData.get(i).get("unionId").toString();
+                        if(!unionId1.equals(unionId2)){
+                            log.info(projectName+" 业务员不一致 "+unionId1+" "+unionId2);
+                            isNotMatch = true;
+                        }
+                        break;
+                    }
+                }
+                if(isNotMatch){
+                    isNotMatchCount++;
+                }
+            } catch (Exception e) {
+                log.error("查找业务员不一致的客户异常",e);
+            }
+        }
+
+        log.info("项目总表售前台账数据业务员不一致数量="+isNotMatchCount);
+
+        log.info("同步销售项目数据到项目总表(业务员)完成");
     }
 
 
@@ -280,6 +388,7 @@ public class ScheduleTask8 {
             ltcSaleProjectData = yidaService.queryLtcSaleProjectData(params);
         } catch (Exception e) {
             log.error("查询销售台账记录异常",e);
+            return;
         }
         //获取所有AI表格映射ID不为空的销售项目
         String aitableId;
@@ -321,6 +430,7 @@ public class ScheduleTask8 {
             saleData = aitableService.querySys1SaleData(params);
         } catch (Exception e) {
             log.error("查询售前台账数据异常",e);
+            return;
         }
 
 

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

@@ -1,5 +1,6 @@
 package com.malk.eastar.schedule;
 
+import com.alibaba.fastjson.JSONObject;
 import com.malk.eastar.service.AitableService;
 import com.malk.eastar.service.DDCoreClient;
 import com.malk.eastar.service.YidaService;
@@ -51,6 +52,7 @@ public class ScheduleTask9 {
             log.info("所有在职业务员档案数量="+ltcBusinessUserData.size());
         } catch (Exception e) {
             log.error("查询易思达系统所有在职业务员档案异常",e);
+            return;
         }
 
         /*
@@ -87,6 +89,7 @@ public class ScheduleTask9 {
                 unionIdFormInstIdMap.put(unionId, formInstId);
             } catch (Exception e) {
                 log.error("获取userId和unionId映射关系异常");
+                return;
             }
 
         }
@@ -101,6 +104,7 @@ public class ScheduleTask9 {
             log.info("易思达系统客户数量="+ltcCustomerData.size());
         } catch (Exception e) {
             log.error("查询(易思达)客户名册异常",e);
+            return;
         }
 
         /*
@@ -113,6 +117,7 @@ public class ScheduleTask9 {
             log.info("项目总表客户数量="+sys1CustomerData.size());
         } catch (Exception e) {
             log.error("查询项目总表客户数据异常",e);
+            return;
         }
 
         String testUseFlag; //测试使用
@@ -164,6 +169,11 @@ public class ScheduleTask9 {
             }
         }
 
+//        if(privateCustomerNumMap.isEmpty()){
+//            log.info("业务员私海客户数量获取不正确");
+//            return;
+//        }
+
         /*
             更新各业务员私海客户数量
          */
@@ -183,6 +193,8 @@ public class ScheduleTask9 {
 //            }
 //        }
 
+
+
         /*
             统计项目总表私海客户数量
             私海客户总数
@@ -214,6 +226,11 @@ public class ScheduleTask9 {
             }
         }
 
+        if(privateCustomerNumMap.isEmpty()){
+            log.info("业务员私海客户数量(项目总表)获取不正确");
+            return;
+        }
+
 
         /*
             更新各业务员私海客户数量(项目总表)

+ 11 - 11
src/main/java/com/malk/eastar/schedule/package-info.java

@@ -2,24 +2,24 @@ package com.malk.eastar.schedule;
 
 /*
     【每小时执行任务】
-    09:18-22:18 同步售前台账数据到新系统(订单金额、预计成单日期、实际成单日期)   Java
+    09:18-22:18 同步售前台账数据到新系统(订单金额、预计成单日期、实际成单日期)   ScheduleTask7
 
     【每天执行任务】
-    02:15    同步客户数据到项目总表(业务员)  Java
-    05:00    同步销售项目数据到项目总表(销售项目整体阶段)  Java
-    05:30    同步售前台账数据到新系统(AI表格映射ID)   Java
-    06:00    更新员工在职情况   Java
+    02:15    同步客户数据到项目总表(业务员)  ScheduleTask8
+    05:00    同步销售项目数据到项目总表(销售项目整体阶段)  ScheduleTask8
+    05:30    同步售前台账数据到新系统(AI表格映射ID)   ScheduleTask7
+    06:00    更新员工在职情况   ScheduleTask6
     06:15    在职和考核剩余天数更新    宜搭
-    07:11    纠正销售项目的业务员,使其与客户的业务员保持一致  Java
-    07:46    同步售前台账数据到新系统(是否计算为通关项目)  Java
-    08:18    计算试用期业务员RFQ数量和成单额  Java
+    07:11    纠正销售项目的业务员,使其与客户的业务员保持一致  ScheduleTask6
+    07:46    同步售前台账数据到新系统(是否计算为通关项目)  ScheduleTask7
+    08:18    计算试用期业务员RFQ数量和成单额  ScheduleTask6
     09:00/17:00  每日推送报价时效报表   宜搭
-    10:30/16:30  计算业务员私海客户数量  Java
+    09:55    项目总表表2未填写完成统计   ScheduleTask5
+    10:30/16:30  计算业务员私海客户数量  ScheduleTask9
     10:45/16:45  每日推送项目总表同步失败报表   宜搭
-    09:55    项目总表表2未填写完成统计   Java
 
     【每周执行任务】
     每周五
-    19:00   计算月度预计和实际AB客户发展数   Java
+    19:00   计算月度预计和实际AB客户发展数   ScheduleTask5
 
  */

+ 2 - 2
src/main/java/com/malk/eastar/service/impl/AitableServiceImpl.java

@@ -230,8 +230,8 @@ public class AitableServiceImpl implements AitableService {
             /*
                 获取新老客户
              */
-            if(fields.get("测试使用") != null){
-                testUseFlag = fields.getJSONObject("测试使用").getString("name");
+            if(fields.get("不正确or测试使用") != null){
+                testUseFlag = fields.getJSONObject("不正确or测试使用").getString("name");
             }
 
             /*