|
@@ -1,5 +1,6 @@
|
|
|
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.StaticInput;
|
|
|
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.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
@@ -114,33 +117,178 @@ public class DataStaticService extends Ops {
|
|
|
.is(dateFileIdUser)
|
|
|
.and("generated")
|
|
|
.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:主体是否有数据如果有就按交易主体的计算
|
|
|
|
|
|
- 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("fileId").is(dateFileId));
|
|
|
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()))));
|
|
|
}
|
|
|
- if(StringUtils.isNotBlank(staticModelInput.getJyzthm())){
|
|
|
+ if (StringUtils.isNotBlank(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()))));
|
|
|
}
|
|
|
- if(StringUtils.isNotBlank(staticModelInput.getJyzthmds())){
|
|
|
+ if (StringUtils.isNotBlank(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()))));
|
|
|
}
|
|
|
+
|
|
|
+ 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);
|
|
|
|
|
|
- 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;
|
|
|
}
|
|
|
}
|