Procházet zdrojové kódy

新增定时任务,对比易思达系统和项目总表的客户业务员差异

lvjs před 1 měsícem
rodič
revize
66cad87b8b

+ 204 - 4
src/main/java/com/malk/eastar/schedule/ScheduleTask3.java

@@ -14,10 +14,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 易思达系统数据清洗定时任务
@@ -37,6 +34,209 @@ public class ScheduleTask3 {
     @Autowired
     private DDCoreClient ddCoreClient;
 
+    /**
+     * 对比易思达系统和项目总表的客户业务员差异
+     */
+//    @Scheduled(cron = "0 22 10 * * ?")
+    public void compareCustomerBusinessUser() {
+        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<>();
+        Map<String,String> userIdNameMap = new HashMap<>();
+        Set<String> userIdSet = new HashSet<>();
+        String userId;
+        Set<String> unionIdSet = new HashSet<>();
+        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);
+                userIdNameMap.put(userId,ltcBusinessUserRecord.get("businessUserName").toString());
+                userIdSet.add(userId);
+                unionIdSet.add(unionId);
+                System.out.println("userName=" + ltcBusinessUserRecord.get("businessUserName").toString() +",userId="+userId+",unionId="+unionId);
+            } catch (Exception e) {
+                log.error("获取userId和unionId映射关系异常");
+                return;
+            }
+
+        }
+
+
+        /*
+            查询(易思达)客户名册所有记录
+         */
+        log.info("查询(易思达)客户名册所有记录");
+        List<Map> ltcCustomerData = new ArrayList<>();
+        try {
+            ltcCustomerData = yidaService.queryLtcAllCustomerData();
+            log.info("易思达系统客户数量="+ltcCustomerData.size());
+        } catch (Exception e) {
+            log.error("查询(易思达)客户名册异常",e);
+            return;
+        }
+
+        /*
+            客户按userId分组
+         */
+        Map<String,List<Map>> ltcCustomerDataByUserId = new HashMap<>();
+        String testUseFlag;
+        for(Map ltcCustomerRecord : ltcCustomerData){
+            if(!"否".equals(ltcCustomerRecord.get("testUseFlag"))){
+                //忽略测试使用
+                continue;
+            }
+            userId = ltcCustomerRecord.get("userId").toString();
+            if(ltcCustomerDataByUserId.containsKey(userId)){
+                ltcCustomerDataByUserId.get(userId).add(ltcCustomerRecord);
+            }else{
+                ltcCustomerDataByUserId.put(userId,new ArrayList<>());
+                ltcCustomerDataByUserId.get(userId).add(ltcCustomerRecord);
+            }
+        }
+
+        /*
+            从项目总表(系统1)获取客户数据
+         */
+        log.info("查询项目总表客户名册所有记录");
+        List<Map> sys1CustomerData = new ArrayList<>();
+        try {
+            sys1CustomerData = aitableService.querySys1CustomerData();
+            log.info("项目总表客户数量="+sys1CustomerData.size());
+        } catch (Exception e) {
+            log.error("查询项目总表客户数据异常",e);
+            return;
+        }
+
+        /*
+            客户按unionId分组
+         */
+        Map<String,List<Map>> sys1CustomerDataByUnionId = new HashMap<>();
+        for(Map sys1CustomerRecord : sys1CustomerData){
+            if(!"否".equals(sys1CustomerRecord.get("testUseFlag"))){
+                //忽略测试使用
+                continue;
+            }
+            unionId = sys1CustomerRecord.get("businessUserUnionId").toString();
+            if(sys1CustomerDataByUnionId.containsKey(unionId)){
+                sys1CustomerDataByUnionId.get(unionId).add(sys1CustomerRecord);
+            }else{
+                sys1CustomerDataByUnionId.put(unionId,new ArrayList<>());
+                sys1CustomerDataByUnionId.get(unionId).add(sys1CustomerRecord);
+            }
+        }
+
+        /*
+            对比
+         */
+        int count1 = 0;
+        int count2 = 0;
+        List<Map> customers1 = new ArrayList<>();
+        List<Map> customers2 = new ArrayList<>();
+        String formInstId;
+        String customerName1;
+        String aiTableId;
+        String customerName2;
+        boolean isSame = false;
+        for(String buId : userIdSet){
+            count1 = 0;
+            count2 = 0;
+            if(ltcCustomerDataByUserId.containsKey(buId)){
+                customers1 = ltcCustomerDataByUserId.get(buId);
+                count1 = customers1.size();
+            }
+            unionId = userIdUnionIdMap.get(buId);
+            if(sys1CustomerDataByUnionId.containsKey(unionId)){
+                customers2 = sys1CustomerDataByUnionId.get(unionId);
+                count2 = customers2.size();
+            }
+            if(count1 != count2){
+                System.out.println("userName="+userIdNameMap.get(buId)+",易思达系统客户数量="+count1+",项目总表客户数量="+count2);
+                for(Map customer : customers1){
+                    formInstId = customer.get("formInstId").toString();
+                    if (customer.get("customerName") == null){
+                        System.out.println(formInstId+" customerName为空!");
+                        continue;
+                    }
+                    customerName1 = customer.get("customerName").toString();
+                    if(customers2 == null || customers2.size() == 0){
+                        System.out.println("项目总表缺失:"+customerName1);
+                        continue;
+                    }
+                    isSame = false;
+                    for (int i = 0; i < customers2.size(); i++) {
+                        aiTableId = customers2.get(i).get("aiTableId").toString();
+                        if(customers2.get(i).get("customerName") == null){
+                            continue;
+                        }
+                        customerName2 = customers2.get(i).get("customerName").toString();
+                        if(customerName1.equals(customerName2)){
+                            isSame = true;
+                            break;
+                        }
+                    }
+                    if(!isSame){
+                        System.out.println("项目总表缺失:"+customerName1);
+                    }
+                }
+                for(Map customer : customers2){
+                    aiTableId = customer.get("aiTableId").toString();
+                    if (customer.get("customerName") == null){
+                        System.out.println(aiTableId+" customerName为空!");
+                        continue;
+                    }
+                    customerName2 = customer.get("customerName").toString();
+                    if(customers1 == null || customers1.size() == 0){
+                        System.out.println("易思达系统缺失:"+customerName2);
+                    }
+                    isSame = false;
+                    for (int i = 0; i < customers1.size(); i++) {
+                        formInstId = customers1.get(i).get("formInstId").toString();
+                        if(customers1.get(i).get("customerName") == null){
+                            continue;
+                        }
+                        customerName1 = customers1.get(i).get("customerName").toString();
+                        if(customerName1.equals(customerName2)){
+                            isSame = true;
+                            break;
+                        }
+                    }
+                    if(!isSame){
+                        System.out.println("易思达系统缺失:"+customerName2);
+                    }
+                }
+            }
+
+        }
+
+        log.info("对比易思达系统和项目总表的客户业务员差异结束");
+    }
+
 
     /**
      * 补充遗漏的客户数据