Browse Source

主体信息模型

hankunkun 11 months ago
parent
commit
46e4c97a3c

+ 11 - 1
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysis.java

@@ -136,6 +136,7 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
         accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
         accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
         accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
         accountVO.setJydshm(origin.getString("交易对手户名"));
         accountVO.setJydshm(origin.getString("交易对手户名"));
+        accountVO.setJyztdcrzbz(origin.getString("借贷类型"));
         accountVO.setType("财付通");
         accountVO.setType("财付通");
     }
     }
     public void assembleDatafzza(Document origin, AccountVO accountVO) {
     public void assembleDatafzza(Document origin, AccountVO accountVO) {
@@ -191,7 +192,7 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         dataMap.put("交易主体户名", accountVO.getJyzthm());
         dataMap.put("交易主体户名", accountVO.getJyzthm());
         dataMap.put("交易类型", accountVO.getJylx());
         dataMap.put("交易类型", accountVO.getJylx());
         dataMap.put("支付类型", accountVO.getZflx());
         dataMap.put("支付类型", accountVO.getZflx());
-        dataMap.put("交易主体的出入账标识", accountVO.getJyztdcrzbz());
+        dataMap.put("借贷类型", getJtType(accountVO.getJyztdcrzbz()));
         dataMap.put("交易时间", accountVO.getJysj());
         dataMap.put("交易时间", accountVO.getJysj());
         dataMap.put("币种", accountVO.getBz());
         dataMap.put("币种", accountVO.getBz());
         dataMap.put("交易金额", accountVO.getJyje());
         dataMap.put("交易金额", accountVO.getJyje());
@@ -212,4 +213,13 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         dataMap.put("备注", accountVO.getRemark());
         dataMap.put("备注", accountVO.getRemark());
         dataMap.put("类型", accountVO.getType());
         dataMap.put("类型", accountVO.getType());
     }
     }
+
+    public String getJtType(String type){
+        if(type.equals("借")||type.equals("出")||type.equals("支")||type.equals("出账")){
+            return "借";
+        }else if(type.equals("贷")||type.equals("入")||type.equals("支")||type.equals("入账")){
+            return "贷";
+        }
+        return type;
+    }
 }
 }

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

@@ -211,8 +211,8 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     if(!alipayIdsAll.contains(String.valueOf(dataMap.get("账号")))){
                     if(!alipayIdsAll.contains(String.valueOf(dataMap.get("账号")))){
                         DataMap newDataMap=new DataMap();
                         DataMap newDataMap=new DataMap();
                         newDataMap.put("fileId", newFileIdAll);
                         newDataMap.put("fileId", newFileIdAll);
-                        newDataMap.put("注册身份证号",String.valueOf(dataMap.get("注册身份证号")));
-                        newDataMap.put("注册姓名",String.valueOf(dataMap.get("注册姓名")));
+                        newDataMap.put("证号",String.valueOf(dataMap.get("注册身份证号")));
+                        newDataMap.put("账户名称",String.valueOf(dataMap.get("注册姓名")));
                         newDataMap.put("账号",String.valueOf(dataMap.get("账号")));
                         newDataMap.put("账号",String.valueOf(dataMap.get("账号")));
                         needToSaveall.add(newDataMap);
                         needToSaveall.add(newDataMap);
                         alipayIdsAll.add(String.valueOf(dataMap.get("账号")));
                         alipayIdsAll.add(String.valueOf(dataMap.get("账号")));

+ 157 - 9
src/main/java/ieven/server/webapp/service/datastatic/DataStaticService.java

@@ -1,5 +1,6 @@
 package ieven.server.webapp.service.datastatic;
 package ieven.server.webapp.service.datastatic;
 
 
+import com.google.common.collect.Lists;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.StaticInput;
 import ieven.server.webapp.domain.data.StaticInput;
 import ieven.server.webapp.domain.data.StaticModelInput;
 import ieven.server.webapp.domain.data.StaticModelInput;
@@ -18,8 +19,10 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
 import java.util.function.Function;
 import java.util.function.Function;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Slf4j
 @Slf4j
@@ -114,33 +117,178 @@ public class DataStaticService extends Ops {
                         .is(dateFileIdUser)
                         .is(dateFileIdUser)
                         .and("generated")
                         .and("generated")
                         .is(Boolean.TRUE))), DataMap.class);
                         .is(Boolean.TRUE))), DataMap.class);
-        Map<String, DataMap> personMap = dataMaps.stream().collect(Collectors.toMap(dataMap -> String.valueOf(dataMap.get("账号")), Function.identity()));
+        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("账户名称"));
+            List<DataMap> dataMaps1 = personMap.get(zh);
+            List<DataMap> dataMapshmc = personzhmcMap.get(zhmc);
+            if (CollectionUtils.isEmpty(dataMaps1)) {
+                personMap.put(zh, Lists.newArrayList(dataMap));
+            } else {
+                dataMaps1.add(dataMap);
+                personMap.put(zh, dataMaps1);
+            }
+
+            if (CollectionUtils.isEmpty(dataMapshmc)) {
+                personzhmcMap.put(zhmc, Lists.newArrayList(dataMap));
+            } else {
+                dataMapshmc.add(dataMap);
+                personzhmcMap.put(zhmc, dataMapshmc);
+            }
+        }
 
 
         //分两种情况,1:主体是否有数据如果有就按交易主体的计算
         //分两种情况,1:主体是否有数据如果有就按交易主体的计算
 
 
-        Query query=new Query();
+        Query query = new Query();
+        //Pattern compile = Pattern.compile("^((?!" + "张"+ ").)*$",Pattern.CASE_INSENSITIVE);
         query.addCriteria(Criteria.where("modelId").is(modelId));
         query.addCriteria(Criteria.where("modelId").is(modelId));
-        query.addCriteria(Criteria.where("fileId").is(dateFileId));
         query.addCriteria(Criteria.where("generated").is(Boolean.TRUE));
         query.addCriteria(Criteria.where("generated").is(Boolean.TRUE));
-        if(StringUtils.isNotBlank(staticModelInput.getJyztzh())){
+        query.addCriteria(new Criteria().andOperator(getQuery()));
+        if (StringUtils.isNotBlank(staticModelInput.getJyztzh())) {
             query.addCriteria(Criteria.where("交易主体账号").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyztzh()))));
             query.addCriteria(Criteria.where("交易主体账号").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyztzh()))));
         }
         }
-        if(StringUtils.isNotBlank(staticModelInput.getJyzthm())){
+        if (StringUtils.isNotBlank(staticModelInput.getJyzthm())) {
             query.addCriteria(Criteria.where("交易主体户名").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyzthm()))));
             query.addCriteria(Criteria.where("交易主体户名").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyzthm()))));
         }
         }
-        if(StringUtils.isNotBlank(staticModelInput.getJyztzhds())){
+        if (StringUtils.isNotBlank(staticModelInput.getJyztzhds())) {
             query.addCriteria(Criteria.where("交易对手账号").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyztzhds()))));
             query.addCriteria(Criteria.where("交易对手账号").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyztzhds()))));
         }
         }
-        if(StringUtils.isNotBlank(staticModelInput.getJyzthmds())){
+        if (StringUtils.isNotBlank(staticModelInput.getJyzthmds())) {
             query.addCriteria(Criteria.where("交易对手户名").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyzthmds()))));
             query.addCriteria(Criteria.where("交易对手户名").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJyzthmds()))));
         }
         }
 
 
-        if(StringUtils.isNotBlank(staticModelInput.getJysj())){
+        if (StringUtils.isNotBlank(staticModelInput.getJysj())) {
             query.addCriteria(Criteria.where("交易时间").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJysj()))));
             query.addCriteria(Criteria.where("交易时间").in(Objects.requireNonNull(SplitCharacterEnum.splitByCharacter(staticModelInput.getJysj()))));
         }
         }
+
+        Map<String, Object> dataMap = new HashMap<>();
+
+        List<Map<String, Object>> partyDataList = new ArrayList<>();
+        List<Map<String, Object>> relationshipGraphList = new ArrayList<>();
         List<DataMap> dataMapDetail = this.mongoTemplate.find(query, DataMap.class);
         List<DataMap> dataMapDetail = this.mongoTemplate.find(query, DataMap.class);
 
 
-        return Mapped.OK();
+        List<String> userList = new ArrayList<>();
+        List<String> usermcList = new ArrayList<>();
+        List<String> userAllList = new ArrayList<>();
+        for (DataMap map : dataMapDetail) {
+            String jythm = String.valueOf(map.get("交易主体户名"));
+            String jydszh = String.valueOf(map.get("交易对手账号"));
+            String jdlx = String.valueOf(map.get("借贷类型"));
+            if (!jdlx.equals("借") || !jdlx.equals("贷")) {
+                continue;
+            }
+
+            //获取节点名称
+            if (!userList.contains(jythm)) {
+                Map<String, Object> userMap = new HashMap<>();
+                List<DataMap> dataMaps1 = personzhmcMap.get(jythm);
+                userMap.put("id", dataMaps1.get(0).get("_id"));
+                userMap.put("name", dataMaps1.get(0).get("账户名称"));
+                userMap.put("relationPersons", dataMaps1);
+                userMap.put("type", "主");
+                partyDataList.add(userMap);
+                userList.add(jythm);
+            }
+
+            if (!usermcList.contains(jydszh)) {
+                Map<String, Object> userMap = new HashMap<>();
+                List<DataMap> dataMaps1 = personMap.get(jydszh);
+                String cid = String.valueOf(dataMaps1.get(0).get("_id"));
+                userMap.put("id", cid);
+                userMap.put("name", dataMaps1.get(0).get("账户"));
+                userMap.put("relationPersons", dataMaps1);
+                userMap.put("type", "从");
+                partyDataList.add(userMap);
+                usermcList.add(jydszh);
+            }
+            //增加线上数据
+            Map<String, Object> total = new HashMap<>();
+            Map<String, Object> party1 = new HashMap<>();
+            Map<String, Object> party2 = new HashMap<>();
+            Map<String, Object> relationData = new HashMap<>();
 
 
+            String userAllId = "";
+            if (jdlx.equals("借")) {
+                List<DataMap> dataMaps1 = personzhmcMap.get(jythm);
+                String one = String.valueOf(dataMaps1.get(0).get("_id"));
+                party1.put("id", one);
+                party1.put("name", dataMaps1.get(0).get("账户名称"));
+
+                List<DataMap> dataMaps2 = personMap.get(jydszh);
+                String two = String.valueOf(dataMaps2.get(0).get("_id"));
+                party2.put("id", two);
+                party2.put("name", dataMaps2.get(0).get("账号"));
+                userAllId = one + "-" + two;
+
+            } else if (jdlx.equals("贷")) {
+                List<DataMap> dataMaps1 = personzhmcMap.get(jythm);
+                String two = String.valueOf(dataMaps1.get(0).get("_id"));
+                party2.put("id", dataMaps1.get(0).get("_id"));
+                party2.put("name", dataMaps1.get(0).get("账户名称"));
+
+                List<DataMap> dataMaps2 = personMap.get(jydszh);
+                String one = String.valueOf(dataMaps2.get(0).get("_id"));
+                party1.put("id", dataMaps2.get(0).get("_id"));
+                party1.put("name", dataMaps2.get(0).get("账号"));
+                userAllId = one + "-" + two;
+            }
+            if (!userAllList.contains(userAllId)) {
+                //查询所有的数据
+                //查询所有的主体信息汇总
+                BigDecimal sum = BigDecimal.ZERO;
+                List<DataMap> dataDetailList = this.mongoTemplate.find((new Query(
+                        Criteria.where("modelId")
+                                .is(modelId)
+                                .and("fileId")
+                                .is(dateFileId)
+                                .and("交易主体户名")
+                                .is(jythm)
+                                .and("交易对手账号")
+                                .is(jydszh)
+                                .and("generated")
+                                .is(Boolean.TRUE))), DataMap.class);
+                for (DataMap dataMap1 : dataDetailList) {
+                    String jyje = String.valueOf(dataMap1.get("交易金额"));
+                    sum.add(new BigDecimal(jyje));
+                }
+
+                relationData.put("jeTotal", sum);
+                relationData.put("sum", dataDetailList.size());
+                total.put("party1", party1);
+                total.put("party2", party2);
+                total.put("relationData", relationData);
+                total.put("relationships", dataDetailList);
+                relationshipGraphList.add(total);
+                userAllList.add(userAllId);
+            }
+        }
+        dataMap.put("partyData", partyDataList);
+        dataMap.put("relationshipGraph", relationshipGraphList);
+
+        Mapped mapped = Mapped.OK();
+        mapped.put("result", dataMaps);
+        return mapped;
+    }
+
+    public List<Criteria>getQuery(){
+        List<Criteria>dataList=new ArrayList<>();
+        List<String>filedsList=Lists.newArrayList("交易对手账号","交易对手户名");
+        List<String>noQueryData=Lists.newArrayList(
+                "公司","慈善","红十字","店","工作室","商行","中心","经营部","水果行","餐厅","超市","市场","商贸","西饼屋","科技","酒楼","停车场","ETC","etc","服务","批发",
+                "渔场","浴场","设计","物业","咨询","批发","合作社","工厂","鞋厂","动物园","植物园","土黑猪","猫狗","学校","学院","大学","棋牌","娱乐","袜厂","制品厂","加油站",
+                "体育馆","研究所","保健院","龙虾","羊蝎子","足道","公安局","税务局","法院","菜馆","棋牌","水产行","海鲜行","公司","服饰","服装","基金","宠物","车行","保险","理财",
+                "支付宝","财付通","apple","烟酒","经营者","商户"
+        );
+        for (String s : filedsList) {
+            for (String noQueryDatum : noQueryData) {
+                Criteria newCri = new Criteria(s);
+                Pattern compile = Pattern.compile("^((?!" + noQueryDatum+ ").)*$",Pattern.CASE_INSENSITIVE);
+                newCri.regex(compile);
+                dataList.add(newCri);
+            }
+        }
+        return dataList;
     }
     }
 }
 }