Browse Source

数据分析-增加数据明细接口

hankunkun 10 months ago
parent
commit
ef88478d47

+ 16 - 56
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisTotal.java

@@ -45,7 +45,7 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
         log.info("数据分析-主体信息汇总开始");
         // 直接删除并创建表
         String newFileId = "";
-        //String newFileIdAll = "";
+        String newFileIdAll = "";
         String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
         String cft = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
         String wld = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
@@ -56,21 +56,21 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                 newFileId = createLogicAndDeleteOld("数据分析-主体信息汇总", modelId, headerProperties.getStaticUserOutput(), mongoTemplate, fileService);
                 insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
 
-              /*  //维护一张人员信息基础表,用于模型计算
+                //维护一张人员信息基础表,用于模型计算
                 newFileIdAll = createLogicAndDeleteOld("数据分析-所有主体信息汇总", modelId, headerProperties.getStaticUserAllOutput(), mongoTemplate, fileService);
-                insertFromTo(dateFileId, newFileIdAll, modelId, mongoTemplate);*/
+                insertFromTo(dateFileId, newFileIdAll, modelId, mongoTemplate);
 
                 String newFileIdAll1 = createLogicAndDeleteOld("数据分析-共同关系网络", modelId, headerProperties.getStaticUserAllOutput(), mongoTemplate, fileService);
                 insertFromTo(dateFileId, newFileIdAll1, modelId, mongoTemplate);
             }
             Set<String> alipayIds = new HashSet<>();
-            //Set<String> alipayIdsAll = new HashSet<>();
+            Set<String> alipayIdsAll = new HashSet<>();
             Map<String, DataMap> idToData = new HashMap<>();
             Map<String, Set<String>> idToNames = new HashMap<>();
             Document origin;
             List<DataMap> needToSave = new ArrayList<>(1000);
-            //List<DataMap> needToSaveall = new ArrayList<>(1000);
-            //Map<String, Object> dataMapUser = new HashMap<>();
+            List<DataMap> needToSaveall = new ArrayList<>(1000);
+            Map<String, Object> dataMapUser = new HashMap<>();
             while (cursor.hasNext()) {
                 try {
                     origin = cursor.next();
@@ -106,31 +106,11 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                         }
                         namesSet.add(alipayUsername);
                     }
-                 /*   getDataAll(needToSaveall, origin, alipayIdsAll, newFileIdAll, dataMapUser, idToData, dateFileId2);
+                    getDataAll(needToSaveall, origin, alipayIdsAll, newFileIdAll, dataMapUser, idToData, dateFileId2);
                     if (needToSaveall.size() >= 1000) {
-                        List<DataMap> newDataList = new ArrayList<>();
-                        for (DataMap map : needToSaveall) {
-                            String zh = String.valueOf(map.get("账号"));
-                            String zhmc = String.valueOf(map.get("账户名称"));
-                            String key = zh + "-" + zhmc;
-                            if (StringUtils.isBlank(zhmc) || "null".equals(zhmc)) {
-                                String newZh = String.valueOf(dataMapUser.get(key));
-                                if (StringUtils.isBlank(newZh) || "null".equals(newZh)) {
-                                    continue;
-                                } else {
-                                    map.put("账户名称", newZh);
-                                    newDataList.add(map);
-                                }
-                            } else {
-                                newDataList.add(map);
-                            }
-
-                        }
-                        if (CollectionUtils.isNotEmpty(newDataList)) {
-                            saveLines(newDataList, mongoTemplate);
-                        }
+                        saveLines(needToSaveall, mongoTemplate);
                         needToSaveall.clear();
-                    }*/
+                    }
 
                 } catch (Exception exception) {
                     log.error(exception.getMessage(), exception);
@@ -156,29 +136,9 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                 }
             }
 
-            /*if (CollectionUtils.isNotEmpty(needToSaveall)) {
-                List<DataMap> newDataList = new ArrayList<>();
-                for (DataMap map : needToSaveall) {
-                    String zh = String.valueOf(map.get("账号"));
-                    String zhmc = String.valueOf(map.get("账户名称"));
-                    String key = zh + "-" + zhmc;
-                    if (StringUtils.isBlank(zhmc) || "null".equals(zhmc)) {
-                        String newZh = String.valueOf(dataMapUser.get(key));
-                        if (StringUtils.isBlank(newZh) || "null".equals(newZh)) {
-                            continue;
-                        } else {
-                            map.put("账户名称", newZh);
-                            newDataList.add(map);
-                        }
-                    } else {
-                        newDataList.add(map);
-                    }
-
-                }
-                if (CollectionUtils.isNotEmpty(newDataList)) {
-                    saveLines(newDataList, mongoTemplate);
-                }
-            }*/
+            if (CollectionUtils.isNotEmpty(needToSaveall)) {
+                saveLines(needToSaveall, mongoTemplate);
+            }
         }
         latch.countDown();
         log.info("数据分析-主体信息汇总开始");
@@ -235,13 +195,13 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
 
     public void getDataAll(List<DataMap> needToSaveall, Document origin, Set<String> alipayIdsAll, String newFileIdAll, Map<String, Object> userMap, Map<String, DataMap> havedUser, String dateFileId2) {
         String type = origin.getString("类型");
-        String account = String.valueOf(origin.getString("交易主体账号"));
-        String accounthm = String.valueOf(origin.getString("交易主体户名"));
+        /*String account = String.valueOf(origin.getString("交易主体账号"));
+        String accounthm = String.valueOf(origin.getString("交易主体户名"));*/
         String accountds = String.valueOf(origin.getString("交易对手账号"));
         String accountdshm = String.valueOf(origin.getString("交易对手户名"));
         Set<String> accountList = new HashSet<>();
         Map<String, Object> dataMaphm = new HashMap<>();
-        if (StringUtils.isNotBlank(account) && !"null".equals(account)) {
+        /*if (StringUtils.isNotBlank(account) && !"null".equals(account)) {
             String key = account + "-" + accounthm;
             accountList.add(key);
             dataMaphm.put(key, accounthm);
@@ -251,7 +211,7 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     userMap.put(key, accounthm);
                 }
             }
-        }
+        }*/
 
         if (StringUtils.isNotBlank(accountds) && !"null".equals(accountds)) {
             String key1 = accountds + "-" + accountdshm;

+ 56 - 59
src/main/java/ieven/server/webapp/service/datastatic/DataStaticService.java

@@ -99,6 +99,7 @@ public class DataStaticService extends Ops {
         String modelId = staticModelInput.getModelId();
         String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
         String dateFileIdUser = getFileId("数据分析-所有主体信息汇总", modelId, mongoTemplate);
+        String dateFileIdUserTotal = getFileId("数据分析-主体信息汇总", modelId, mongoTemplate);
         if (StringUtils.isBlank(dateFileId)) {
             return Mapped.ERROR("数据分析-主体信息汇总明细不存在");
         }
@@ -107,31 +108,39 @@ public class DataStaticService extends Ops {
             return Mapped.ERROR("数据分析-所有主体信息汇总");
         }
 
+        Map<String, List<DataMap>> personzhmcMap = new HashMap<>();
+        List<DataMap> dataMapsZt = this.mongoTemplate.find((new Query(
+                Criteria.where("fileId")
+                        .is(dateFileIdUserTotal))), DataMap.class);
+        if(CollectionUtils.isNotEmpty(dataMapsZt)){
+            for (DataMap dataMap : dataMapsZt) {
+                String jyzthm = String.valueOf(dataMap.get("交易主体户名"));
+                if(!PublicStatic.checkStr(jyzthm)){
+                    String[] split = jyzthm.split(";");
+                    for (String s : split) {
+                        List<DataMap> dataMaps = personzhmcMap.get(s);
+                        if(CollectionUtils.isEmpty(dataMaps)){
+                            dataMaps=new ArrayList<>();
+                        }
+                        dataMaps.add(dataMap);
+                        personzhmcMap.put(s,dataMaps);
+                    }
+                }
+            }
+        }
         //查询所有的主体信息汇总
         List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
                 Criteria.where("fileId")
                         .is(dateFileIdUser))), DataMap.class);
         Map<String, List<DataMap>> personMap = new HashMap<>();
-        Map<String, List<DataMap>> personzhmcMap = new HashMap<>();
         for (DataMap dataMap : dataMaps) {
             String zh = String.valueOf(dataMap.get("账号"));
-            String zhmc = String.valueOf(dataMap.get("账户名称"));
-            String key1=zh+"-"+zhmc;
-            String key=zhmc+"-"+zh;
-            List<DataMap> dataMaps1 = personMap.get(key1);
-            List<DataMap> dataMapshmc = personzhmcMap.get(key);
+            List<DataMap> dataMaps1 = personMap.get(zh);
             if (CollectionUtils.isEmpty(dataMaps1)) {
-                personMap.put(key1, Lists.newArrayList(dataMap));
+                personMap.put(zh, Lists.newArrayList(dataMap));
             } else {
                 dataMaps1.add(dataMap);
-                personMap.put(key1, dataMaps1);
-            }
-
-            if (CollectionUtils.isEmpty(dataMapshmc)) {
-                personzhmcMap.put(key, Lists.newArrayList(dataMap));
-            } else {
-                dataMapshmc.add(dataMap);
-                personzhmcMap.put(key, dataMapshmc);
+                personMap.put(zh, dataMaps1);
             }
         }
 
@@ -172,44 +181,37 @@ public class DataStaticService extends Ops {
         List<DataMap> dataMapDetail = this.mongoTemplate.find(query, DataMap.class);
         //先去判断从是否有大于2的数据
 
-        Map<String,List<DataMap>>dsMap=new HashMap<>();
+        Map<String, List<DataMap>> dsMap = new HashMap<>();
 
-        Map<String,Set<String>>zh=new HashMap<>();
+        Map<String, Set<String>> zh = new HashMap<>();
         for (DataMap map : dataMapDetail) {
             String jydszh = String.valueOf(map.get("交易对手账号"));
-            String jydshm = String.valueOf(map.get("交易对手户名"));
-            String jyds = String.valueOf(map.get("交易主体账号"));
-            if (PublicStatic.checkStr(jydszh)) {
+            String jyzthm = String.valueOf(map.get("交易主体户名"));
+            if (PublicStatic.checkStr(jydszh)||PublicStatic.checkStr(jyzthm)) {
                 continue;
             }
-            String key=jydszh+"-"+jydshm;
-            List<DataMap> dataMaps1 = dsMap.get(key);
-            if(CollectionUtils.isEmpty(dataMaps1)){
-                dsMap.put(key,Lists.newArrayList(map));
-            }else {
-                dataMaps1.add(map);
-                dsMap.put(key,dataMaps1);
-            }
-            //存储主体账号
-            Set<String> strings = zh.get(key);
+            Set<String> strings = zh.get(jydszh);
             if(CollectionUtils.isEmpty(strings)){
-                Set<String> objects = new HashSet<>();
-                objects.add(jyds);
-                zh.put(key,objects);
+                strings = new HashSet<>();
+                strings.add(jyzthm);
             }else {
-                strings.add(jyds);
-                zh.put(key,strings);
+                strings.add(jyzthm);
             }
+            zh.put(jydszh,strings);
+
+            List<DataMap> dataMaps1 = Optional.ofNullable(dsMap.get(jydszh)).orElse(new ArrayList<DataMap>());
+            dataMaps1.add(map);
+            dsMap.put(jydszh,dataMaps1);
         }
-        if(dsMap==null){
+        if (dsMap == null) {
             return Mapped.ERROR("数据有误,请重新查询");
         }
-        List<DataMap>newList=Lists.newArrayList();
-        for (Map.Entry<String,Set<String>> entry : zh.entrySet()) {
-           if(entry.getValue().size()>1){
-               List<DataMap> dataMaps1 = dsMap.get(entry.getKey());
-               newList.addAll(dataMaps1);
-           }
+        List<DataMap> newList = Lists.newArrayList();
+        for (Map.Entry<String, Set<String>> entry : zh.entrySet()) {
+            if (entry.getValue().size() > 1) {
+                List<DataMap> dataMaps1 = dsMap.get(entry.getKey());
+                newList.addAll(dataMaps1);
+            }
         }
 
         List<String> userList = new ArrayList<>();
@@ -217,9 +219,7 @@ public class DataStaticService extends Ops {
         List<String> userAllList = new ArrayList<>();
         for (DataMap map : newList) {
             String jythm = String.valueOf(map.get("交易主体户名"));
-            String jythmds = String.valueOf(map.get("交易对手户名"));
             String jydszh = String.valueOf(map.get("交易对手账号"));
-            String jyzh = String.valueOf(map.get("交易主体账号"));
             if (StringUtils.isBlank(jythm) || "null".equals(jythm)) {
                 continue;
             }
@@ -229,15 +229,13 @@ public class DataStaticService extends Ops {
                 continue;
             }
 
-            String key=jythm+"-"+jyzh;
-            String key1=jydszh+"-"+jythmds;
             //获取节点名称
-            List<DataMap> dataMapsparty1 = personzhmcMap.get(key);
-            List<DataMap> dataMapsparty2 = personMap.get(key1);
-            if(CollectionUtils.isEmpty(dataMapsparty1)||CollectionUtils.isEmpty(dataMapsparty2)){
+            List<DataMap> dataMapsparty1 = personzhmcMap.get(jythm);
+            List<DataMap> dataMapsparty2 = personMap.get(jydszh);
+            if (CollectionUtils.isEmpty(dataMapsparty1) || CollectionUtils.isEmpty(dataMapsparty2)) {
                 continue;
             }
-            if (!userList.contains(key)) {
+            if (!usermcList.contains(jythm)) {
                 Map<String, Object> userMap = new HashMap<>();
                 if (CollectionUtils.isNotEmpty(dataMapsparty1)) {
                     userMap.put("id", String.valueOf(dataMapsparty1.get(0).get("_id")));
@@ -245,11 +243,11 @@ public class DataStaticService extends Ops {
                     userMap.put("relationPersons", dataMapsparty1);
                     userMap.put("type", "主");
                     partyDataList.add(userMap);
-                    userList.add(key);
+                    usermcList.add(jythm);
                 }
             }
 
-            if (!usermcList.contains(key1)) {
+            if (!userList.contains(jydszh)) {
                 Map<String, Object> userMap = new HashMap<>();
                 if (CollectionUtils.isNotEmpty(dataMapsparty2)) {
                     String cid = String.valueOf(dataMapsparty2.get(0).get("_id"));
@@ -258,7 +256,7 @@ public class DataStaticService extends Ops {
                     userMap.put("relationPersons", dataMapsparty2);
                     userMap.put("type", "从");
                     partyDataList.add(userMap);
-                    usermcList.add(key1);
+                    userList.add(jydszh);
                 }
             }
             //增加线上数据
@@ -269,8 +267,8 @@ public class DataStaticService extends Ops {
 
             String userAllId = "";
             if (jdlx.equals("借")) {
-                List<DataMap> dataMaps1 = personzhmcMap.get(key);
-                List<DataMap> dataMaps2 = personMap.get(key1);
+                List<DataMap> dataMaps1 = personzhmcMap.get(jythm);
+                List<DataMap> dataMaps2 = personMap.get(jydszh);
                 if (CollectionUtils.isNotEmpty(dataMaps1) && CollectionUtils.isNotEmpty(dataMaps2)) {
                     String one = String.valueOf(dataMaps1.get(0).get("_id"));
                     party1.put("id", one);
@@ -282,10 +280,9 @@ public class DataStaticService extends Ops {
                     userAllId = one + "-" + two;
                 }
 
-            }
-            else if (jdlx.equals("贷")) {
-                List<DataMap> dataMaps1 = personzhmcMap.get(key);
-                List<DataMap> dataMaps2 = personMap.get(key1);
+            } else if (jdlx.equals("贷")) {
+                List<DataMap> dataMaps1 = personzhmcMap.get(jythm);
+                List<DataMap> dataMaps2 = personMap.get(jydszh);
                 if (CollectionUtils.isNotEmpty(dataMaps1) && CollectionUtils.isNotEmpty(dataMaps2)) {
                     String two = String.valueOf(dataMaps1.get(0).get("_id"));
                     party2.put("id", String.valueOf(dataMaps1.get(0).get("_id")));