|
|
@@ -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("对比易思达系统和项目总表的客户业务员差异结束");
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 补充遗漏的客户数据
|