DataStaticAnalysisTotal.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package ieven.server.webapp.service.datastatic;
  2. import com.mongodb.client.MongoCursor;
  3. import ieven.server.webapp.domain.alipay.AlipayHeaders;
  4. import ieven.server.webapp.domain.alipay.HeaderProperties;
  5. import ieven.server.webapp.domain.data.AccountVO;
  6. import ieven.server.webapp.domain.data.DataMap;
  7. import ieven.server.webapp.domain.file.FileService;
  8. import ieven.server.webapp.domain.tenpay.TenpayHeaders;
  9. import ieven.server.webapp.service.Ops;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.apache.commons.collections4.CollectionUtils;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.bson.Document;
  14. import org.springframework.data.mongodb.core.MongoTemplate;
  15. import org.springframework.data.mongodb.core.query.Criteria;
  16. import org.springframework.data.mongodb.core.query.Query;
  17. import java.math.BigDecimal;
  18. import java.util.*;
  19. import java.util.concurrent.CountDownLatch;
  20. @Slf4j
  21. public class DataStaticAnalysisTotal extends Ops implements Runnable {
  22. private HeaderProperties headerProperties;
  23. String modelId;
  24. MongoTemplate mongoTemplate;
  25. FileService fileService;
  26. CountDownLatch latch;
  27. public DataStaticAnalysisTotal(
  28. HeaderProperties headerProperties,
  29. String modelId,
  30. MongoTemplate mongoTemplate,
  31. FileService fileService,
  32. CountDownLatch latch) {
  33. this.headerProperties = headerProperties;
  34. this.modelId = modelId;
  35. this.mongoTemplate = mongoTemplate;
  36. this.fileService = fileService;
  37. this.latch = latch;
  38. }
  39. @Override
  40. public void run() {
  41. log.info("数据分析-主体信息汇总开始");
  42. // 直接删除并创建表
  43. String newFileId = "";
  44. String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
  45. // 插入记录用户后续查询明细
  46. if (StringUtils.isNotBlank(dateFileId)) {
  47. MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
  48. if (cursor.hasNext()) {
  49. newFileId =createLogicAndDeleteOld("数据分析-主体信息汇总", modelId,headerProperties.getAntiSecurityTradeScaleAnalysisOutput(),mongoTemplate, fileService);
  50. insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
  51. }
  52. Set<String> alipayIds = new HashSet<>();
  53. Map<String, DataMap> idToData = new HashMap<>();
  54. Map<String, Set<String>> idToNames = new HashMap<>();
  55. Document origin;
  56. while (cursor.hasNext()) {
  57. try {
  58. origin = cursor.next();
  59. String alipayId = origin.getString("交易主体账号");
  60. DataMap dataMap;
  61. if (!alipayIds.contains(alipayId)) {
  62. alipayIds.add(alipayId);
  63. dataMap = new DataMap();
  64. dataMap.put("fileId", newFileId);
  65. dataMap.put("交易主体账号", alipayId);
  66. dataMap.put("交易主体户名", "");
  67. idToData.put(alipayId, dataMap);
  68. }
  69. String alipayUsername = origin.getString("交易主体户名");
  70. if (StringUtils.isNotBlank(alipayUsername)) {
  71. Set<String> namesSet;
  72. if (idToNames.containsKey(alipayId)) {
  73. namesSet = idToNames.get(alipayId);
  74. } else {
  75. namesSet = new HashSet<>();
  76. idToNames.put(alipayId, namesSet);
  77. }
  78. namesSet.add(alipayUsername);
  79. }
  80. } catch (Exception exception) {
  81. log.error(exception.getMessage(), exception);
  82. }
  83. }
  84. if (CollectionUtils.isNotEmpty(idToData.values())) {
  85. for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
  86. DataMap dataMap = entry.getValue();
  87. String id = (String) dataMap.get("交易主体账号");
  88. Set<String> namesSet = idToNames.get(id);
  89. if (CollectionUtils.isNotEmpty(namesSet)) {
  90. dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
  91. }
  92. //查询其他的基本信息
  93. }
  94. }
  95. }
  96. latch.countDown();
  97. log.info("数据分析-主体信息汇总开始");
  98. }
  99. public void getData(DataMap dataMap,Document origin){
  100. String type = origin.getString("类型");
  101. String account = origin.getString("交易主体账号");
  102. String zjha="";
  103. String bdyhkh="";
  104. String khyhmc="";
  105. String bdsjh="";
  106. String zcsj="";
  107. if("财付通".equals(type)){
  108. //账户状态", "账号", "注册姓名", "注册时间", "注册身份证号", "绑定手机", "绑定状态", "开户行信息", "银行账号"
  109. String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
  110. List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
  111. Criteria.where("modelId")
  112. .is(modelId)
  113. .and("fileId")
  114. .is(dateFileId2)
  115. .and("账号")
  116. .is(account)
  117. .and("generated")
  118. .is(Boolean.TRUE))), DataMap.class);
  119. if(CollectionUtils.isNotEmpty(dataMaps)){
  120. zjha=String.valueOf(dataMaps.get(0).get("注册身份证号"));
  121. bdyhkh=String.valueOf(dataMaps.get(0).get("银行账号"));
  122. khyhmc=String.valueOf(dataMaps.get(0).get("开户行信息"));
  123. bdsjh=String.valueOf(dataMaps.get(0).get("绑定手机"));
  124. zcsj=String.valueOf(dataMaps.get(0).get("注册时间"));
  125. }
  126. }else if("反诈".equals(type)){
  127. // "交易号", "商户订单号", "交易创建时间", "付款时间", "最近修改时间", "交易来源地", "类型", "用户信息", "交易对方信息", "消费名称", "金额(元)", "收/支", "交易状态", "备注", "对应的协查数据"));
  128. }else if("五联单".equals(type)){
  129. // "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
  130. String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
  131. List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
  132. Criteria.where("modelId")
  133. .is(modelId)
  134. .and("fileId")
  135. .is(dateFileId2)
  136. .and("用户ID")
  137. .is(account)
  138. .and("generated")
  139. .is(Boolean.TRUE))), DataMap.class);
  140. if(CollectionUtils.isNotEmpty(dataMaps)){
  141. zjha=String.valueOf(dataMaps.get(0).get("证件号"));
  142. bdyhkh=String.valueOf(dataMaps.get(0).get("绑定银行卡"));
  143. khyhmc=String.valueOf(dataMaps.get(0).get("账户名称"));
  144. bdsjh=String.valueOf(dataMaps.get(0).get("登录手机"));
  145. zcsj=String.valueOf(dataMaps.get(0).get("注册时间"));
  146. }
  147. }
  148. dataMap.put("证件号码", zjha);
  149. dataMap.put("绑定银行卡号", bdyhkh);
  150. dataMap.put("开户银行名称", khyhmc);
  151. dataMap.put("绑定手机号", bdsjh);
  152. dataMap.put("注册时间", zcsj);
  153. }
  154. }