Browse Source

代码重构

tom.xu@informa.com 2 năm trước cách đây
mục cha
commit
d35f867557
48 tập tin đã thay đổi với 1058 bổ sung962 xóa
  1. 4 4
      src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java
  2. 2 1
      src/main/java/ieven/server/webapp/service/MongoExcelService.java
  3. 1 2
      src/main/java/ieven/server/webapp/service/Ops.java
  4. 4 0
      src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER.java
  5. 18 4
      src/main/java/ieven/server/webapp/service/alipay/AlipayService.java
  6. 14 12
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade1.java
  7. 14 12
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade2.java
  8. 77 74
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade3.java
  9. 77 73
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade4.java
  10. 103 100
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeEndAnalysis.java
  11. 83 80
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeScaleAnalysis.java
  12. 63 60
      src/main/java/ieven/server/webapp/service/alipay/DeliveryAnalysis.java
  13. 102 99
      src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java
  14. 78 75
      src/main/java/ieven/server/webapp/service/alipay/IpAnalysis.java
  15. 69 65
      src/main/java/ieven/server/webapp/service/alipay/ScaleAnalysis.java
  16. 73 70
      src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.java
  17. 2 2
      src/main/java/ieven/server/webapp/service/tenpay/TenpayAccount.java
  18. 3 2
      src/main/java/ieven/server/webapp/service/tenpay/TenpayMobile.java
  19. 14 2
      src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders.java
  20. 83 65
      src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java
  21. 15 12
      src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesEndAnalysis.java
  22. 85 77
      src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesScaleAnalysis.java
  23. 68 65
      src/main/java/ieven/server/webapp/util/DataUtils.java
  24. 1 1
      src/main/resources/application.properties
  25. 1 1
      src/main/resources/static/index.html
  26. 0 0
      src/main/resources/static/static/css/app.3986304a6058797e22d1ddfc282a956b.css
  27. 0 0
      src/main/resources/static/static/css/app.cebd9798414b29c56244a88705a4294b.css
  28. BIN
      src/main/resources/static/static/img/bg.b911eb2.png
  29. 0 0
      src/main/resources/static/static/js/1.67a628162816c1b0df6a.js
  30. 0 0
      src/main/resources/static/static/js/1.8e5f733f1d9c752ea4a5.js
  31. 0 0
      src/main/resources/static/static/js/2.8493d34aa9431b0bd522.js
  32. 0 0
      src/main/resources/static/static/js/2.b348e2b42c9ca1ba2ca6.js
  33. 0 0
      src/main/resources/static/static/js/3.2f8a46d076fbc01d600b.js
  34. 0 0
      src/main/resources/static/static/js/4.39c9dbc30edffe32bf3a.js
  35. 0 0
      src/main/resources/static/static/js/4.a0e40e116588d47ccbba.js
  36. 0 0
      src/main/resources/static/static/js/5.fcdf29e69e4f873cdb10.js
  37. 1 1
      src/main/resources/static/static/js/6.45ae0f0f221919860a05.js
  38. 0 1
      src/main/resources/static/static/js/6.824dbefd6ffc8faa9e2c.js
  39. 1 0
      src/main/resources/static/static/js/7.14c6d691c1c10a72d1dd.js
  40. 0 0
      src/main/resources/static/static/js/7.c3e477be9b296cf9cb64.js
  41. 0 0
      src/main/resources/static/static/js/8.5e9c34acc2267e2a08c4.js
  42. 0 0
      src/main/resources/static/static/js/app.3ae5c994cfbc337146c8.js
  43. 0 0
      src/main/resources/static/static/js/app.ff3280cae4cb3e62e61a.js
  44. 1 0
      src/main/resources/static/static/js/manifest.9d10e7f53562cf0b22dc.js
  45. 0 1
      src/main/resources/static/static/js/manifest.d900925bd9e3bb4c8ffa.js
  46. 1 1
      src/main/resources/static/static/js/vendor-async.faf63e3ae26f0c7c5766.js
  47. 0 0
      src/main/resources/static/static/js/vendor.42772dae5162b9fc0eb1.js
  48. 0 0
      src/main/resources/static/static/js/vendor.5ade341cd54c26914783.js

+ 4 - 4
src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java

@@ -23,8 +23,8 @@ public class TenpayHeaders {
     mappedHeaders.put(
         1,
         Arrays.asList(
-            "用户ID", "交易单号", "借贷类型", "交易类型", "交易金额(分)", "账户余额(分)", "交易时间", "银行类型", "交易说明", "商户名称",
-            "发送方", "发送金额(分)", "接收方", "接收时间", "接收金额(分)", "银行卡号", "网银联单号1", "网银联单号2"));
+            "用户ID", "交易单号", "借贷类型", "交易类型", "交易金额(分)", "账户余额(分)", "交易时间", "银行类型", "交易说明", "商户名称",
+            "发送方", "发送金额(分)", "接收方", "接收时间", "接收金额(分)", "银行卡号", "网银联单号1", "网银联单号2"));
 
     mappedHeaders.put(
         2,
@@ -38,8 +38,8 @@ public class TenpayHeaders {
             "借贷类型",
             "交易类型",
             "交易时间",
-            "交易金额(元)",
-            "账户余额(元)",
+            "交易金额(元)",
+            "账户余额(元)",
             "银行类型",
             "交易说明",
             "交易对手账号",

+ 2 - 1
src/main/java/ieven/server/webapp/service/MongoExcelService.java

@@ -30,7 +30,8 @@ public class MongoExcelService {
         String value = valueList.get(i);
         if (StringUtils.isNotBlank(value)) {
           // 存入数据库的字段名
-          String aliasField = "f" + i;
+          // String aliasField = "f" + i;
+          String aliasField = value.replaceAll("\\.", "_");
           headerDefined.put(aliasField, i);
           headerTransfer.put(aliasField, value);
           headerTransferReverse.put(value, aliasField);

+ 1 - 2
src/main/java/ieven/server/webapp/service/Ops.java

@@ -230,8 +230,7 @@ public class Ops {
     for (Fields fields : needToMatch) {
       List<String> oriHeaders = new ArrayList<>(fields.getFieldsReverse().keySet());
       // 字段完全一样就说明是需要查找的表
-      if (new HashSet<>(headers).containsAll(oriHeaders)
-          && new HashSet<>(oriHeaders).containsAll(headers)) {
+      if (headers.containsAll(oriHeaders) && oriHeaders.containsAll(headers)) {
         matched.add(fields);
       }
     }

+ 4 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER.java

@@ -6,6 +6,7 @@ import ieven.server.webapp.domain.alipay.AlipayType;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -18,6 +19,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ALIPAY_ORIGIN_REGISTER extends Ops implements Runnable {
 
   List<Fields> originFields;
@@ -42,6 +44,7 @@ public class ALIPAY_ORIGIN_REGISTER extends Ops implements Runnable {
 
   @Override
   public void run() {
+    log.info("五联单-注册信息开始");
     List<Fields> fieldsList = checkFields(originFields, AlipayType.ALIPAY_ORIGIN_REGISTER);
     if (CollectionUtils.isNotEmpty(fieldsList)) {
       Fields output = Ops.createFile(AlipayType.ALIPAY_GENERATED_REGISTER, modelId);
@@ -52,6 +55,7 @@ public class ALIPAY_ORIGIN_REGISTER extends Ops implements Runnable {
       }
     }
     latch.countDown();
+    log.info("五联单-注册信息结束");
   }
 
   public void extractRegister(Fields origin, Fields output) {

+ 18 - 4
src/main/java/ieven/server/webapp/service/alipay/AlipayService.java

@@ -45,6 +45,7 @@ public class AlipayService {
 
     // 无限制大小的threadpool
     ExecutorService exec = Executors.newCachedThreadPool();
+    log.info("latch");
     CountDownLatch latch = new CountDownLatch(7);
     // 五联单-注册信息
     exec.execute(new ALIPAY_ORIGIN_REGISTER(originFields, modelId, mongoTemplate, latch));
@@ -64,6 +65,8 @@ public class AlipayService {
         new SecurityOrder(
             headerProperties, originFields, modelId, mongoTemplate, fileService, latch));
     latch.await();
+    log.info("latch");
+    log.info("latch2");
     CountDownLatch latch2 = new CountDownLatch(7);
     // 五联单-账户透视
     exec.execute(
@@ -85,7 +88,6 @@ public class AlipayService {
     exec.execute(
         new IpAnalysis(
             headerProperties, originFields, modelId, mongoTemplate, fileService, latch2));
-
     // 存储了账号-户名的的信息
     Map<String, String> accountToName = new ConcurrentHashMap<>();
     // 反诈治安交易数据明细-从反诈读取户名
@@ -93,6 +95,8 @@ public class AlipayService {
     // 反诈治安交易数据明细-从治安读取户名
     exec.execute(new AntiSecurityTrade2(modelId, mongoTemplate, accountToName, latch2));
     latch2.await();
+    log.info("latch2");
+    log.info("latch3");
     CountDownLatch latch3 = new CountDownLatch(2);
     // 反诈治安交易数据明细-从反诈读取
     exec.execute(
@@ -103,6 +107,8 @@ public class AlipayService {
         new AntiSecurityTrade4(
             headerProperties, modelId, mongoTemplate, accountToName, fileService, latch3));
     latch3.await();
+    log.info("latch3");
+    log.info("latch4");
     CountDownLatch latch4 = new CountDownLatch(2);
     // 反诈治安-账户透视
     exec.execute(
@@ -113,17 +119,24 @@ public class AlipayService {
         new AntiSecurityTradeEndAnalysis(
             headerProperties, modelId, mongoTemplate, fileService, latch4));
     latch4.await();
+    log.info("latch4");
+    log.info("latch5");
     CountDownLatch latch5 = new CountDownLatch(1);
     exec.execute(
         new TenpayAccount(
             originFields, modelId, mongoTemplate, fileService, accountToName, latch5));
     latch5.await();
+    log.info("latch5");
+    log.info("latch6");
     CountDownLatch latch6 = new CountDownLatch(1);
     exec.execute(new TenpayOrders(originFields, modelId, mongoTemplate, fileService, latch6));
     latch6.await();
-
-    CountDownLatch latch7 = new CountDownLatch(4);
-    exec.execute(new TenpayTrades(modelId, mongoTemplate, accountToName, fileService, latch7));
+    log.info("latch6");
+    log.info("latch7");
+    CountDownLatch latch8 = new CountDownLatch(1);
+    exec.execute(new TenpayTrades(modelId, mongoTemplate, accountToName, fileService, latch8));
+    latch8.await();
+    CountDownLatch latch7 = new CountDownLatch(3);
     exec.execute(new TenpayMobile(originFields, modelId, mongoTemplate, fileService, latch7));
     exec.execute(
         new TenpayTradesEndAnalysis(headerProperties, modelId, mongoTemplate, fileService, latch7));
@@ -132,6 +145,7 @@ public class AlipayService {
             headerProperties, modelId, mongoTemplate, fileService, latch7));
     latch7.await();
     reorder(modelId);
+    log.info("执行完毕");
     return Mapped.OK();
   }
 

+ 14 - 12
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade1.java

@@ -32,18 +32,20 @@ public class AntiSecurityTrade1 extends Ops implements Runnable {
   public void run() {
     String dateFileId = getFileId("反诈数据-订单明细", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String name = origin.getString("收款方的商户名称");
-      String account = origin.getString("收款方的支付账号");
-      if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(name)) {
-        if (!"-".equals(account)
-            && !"-".equals(name)
-            && !"_".equals(account)
-            && !"_".equals(name)) {
-          accountToName.putIfAbsent(account, name);
+    if (StringUtils.isNotBlank(dateFileId)) {
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String name = origin.getString("收款方的商户名称");
+        String account = origin.getString("收款方的支付账号");
+        if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(name)) {
+          if (!"-".equals(account)
+              && !"-".equals(name)
+              && !"_".equals(account)
+              && !"_".equals(name)) {
+            accountToName.putIfAbsent(account, name);
+          }
         }
       }
     }

+ 14 - 12
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade2.java

@@ -31,18 +31,20 @@ public class AntiSecurityTrade2 extends Ops implements Runnable {
   public void run() {
     String dateFileId = getFileId("反诈数据-订单明细", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String name = origin.getString("收款方的商户名称");
-      String account = origin.getString("收款支付账号");
-      if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(name)) {
-        if (!"-".equals(account)
-            && !"-".equals(name)
-            && !"_".equals(account)
-            && !"_".equals(name)) {
-          accountToName.putIfAbsent(account, name);
+    if (StringUtils.isNotBlank(dateFileId)) {
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String name = origin.getString("收款方的商户名称");
+        String account = origin.getString("收款支付账号");
+        if (StringUtils.isNotBlank(account) && StringUtils.isNotBlank(name)) {
+          if (!"-".equals(account)
+              && !"-".equals(name)
+              && !"_".equals(account)
+              && !"_".equals(name)) {
+            accountToName.putIfAbsent(account, name);
+          }
         }
       }
     }

+ 77 - 74
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade3.java

@@ -48,89 +48,92 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
     String antiSecurityFileId = "";
     String dateFileId = getFileId("反诈数据-订单明细", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      antiSecurityFileId =
-          createLogicAndDeleteOld(
-              "反诈治安-交易明细",
-              modelId,
-              headerProperties.getAntiSecurityTradeOutput(),
-              mongoTemplate,
-              fileService);
-    }
-
-    Document origin;
-    List<DataMap> needToSave = new ArrayList<>(1000);
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      DataMap dataMap = new DataMap();
-      dataMap.put("fileId", antiSecurityFileId);
-      dataMap.put("支付订单号", origin.getString("支付订单号"));
-      dataMap.put("交易流水号", origin.getString("交易流水号"));
-      String flag = origin.getString("交易主体的出入账标识");
-      dataMap.put("交易主体的出入账标识", flag);
-      dataMap.put("交易类型", origin.getString("交易类型"));
-      dataMap.put("支付类型", origin.getString("支付类型"));
-      dataMap.put("币种", origin.getString("币种"));
-      dataMap.put("交易金额", origin.getString("交易金额"));
-      dataMap.put("交易余额", origin.getString("交易余额"));
-      dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
-      dataMap.put("交易设备类型", origin.getString("交易设备类型"));
-      dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
-      dataMap.put("MAC地址", origin.getString("MAC地址"));
-      dataMap.put("交易地点经度", origin.getString("交易地点经度"));
-      dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
-      dataMap.put("备注", origin.getString("备注"));
-      if ("出账".equals(flag)) {
-        dataMap.put("交易主体账号", origin.getString("付款方的支付账号"));
-        dataMap.put("交易主体银行卡号", origin.getString("付款方银行卡所属银行卡号"));
-        dataMap.put("交易主体银行名称", origin.getString("付款方银行卡所属银行名称"));
-        dataMap.put("交易主体户名", "");
-        dataMap.put("交易对手账号", origin.getString("收款方的支付账号"));
-        dataMap.put("交易对手银行卡号", origin.getString("收款方银行卡所属银行卡号"));
-        dataMap.put("交易对手银行名称", origin.getString("收款方银行卡所属银行名称"));
-        dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
+    if (StringUtils.isNotBlank(dateFileId)) {
 
-      } else if ("入账".equals(flag)) {
-        dataMap.put("交易主体账号", origin.getString("收款方的支付账号"));
-        dataMap.put("交易主体银行卡号", origin.getString("收款方银行卡所属银行卡号"));
-        dataMap.put("交易主体银行名称", origin.getString("收款方银行卡所属银行名称"));
-        dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
-        dataMap.put("交易对手账号", origin.getString("付款方的支付账号"));
-        dataMap.put("交易对手银行卡号", origin.getString("付款方银行卡所属银行卡号"));
-        dataMap.put("交易对手银行名称", origin.getString("付款方银行卡所属银行名称"));
-        dataMap.put("交易对手户名", "");
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        antiSecurityFileId =
+            createLogicAndDeleteOld(
+                "反诈治安-交易明细",
+                modelId,
+                headerProperties.getAntiSecurityTradeOutput(),
+                mongoTemplate,
+                fileService);
       }
-      dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
-      if ("".equals((String) dataMap.get("交易主体户名"))) {
-        String account = (String) dataMap.getOrDefault("交易主体账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易主体户名", newName);
+
+      Document origin;
+      List<DataMap> needToSave = new ArrayList<>(1000);
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        DataMap dataMap = new DataMap();
+        dataMap.put("fileId", antiSecurityFileId);
+        dataMap.put("支付订单号", origin.getString("支付订单号"));
+        dataMap.put("交易流水号", origin.getString("交易流水号"));
+        String flag = origin.getString("交易主体的出入账标识");
+        dataMap.put("交易主体的出入账标识", flag);
+        dataMap.put("交易类型", origin.getString("交易类型"));
+        dataMap.put("支付类型", origin.getString("支付类型"));
+        dataMap.put("币种", origin.getString("币种"));
+        dataMap.put("交易金额", origin.getString("交易金额"));
+        dataMap.put("交易余额", origin.getString("交易余额"));
+        dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
+        dataMap.put("交易设备类型", origin.getString("交易设备类型"));
+        dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
+        dataMap.put("MAC地址", origin.getString("MAC地址"));
+        dataMap.put("交易地点经度", origin.getString("交易地点经度"));
+        dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
+        dataMap.put("备注", origin.getString("备注"));
+        if ("出账".equals(flag)) {
+          dataMap.put("交易主体账号", origin.getString("付款方的支付账号"));
+          dataMap.put("交易主体银行卡号", origin.getString("付款方银行卡所属银行卡号"));
+          dataMap.put("交易主体银行名称", origin.getString("付款方银行卡所属银行名称"));
+          dataMap.put("交易主体户名", "");
+          dataMap.put("交易对手账号", origin.getString("收款方的支付账号"));
+          dataMap.put("交易对手银行卡号", origin.getString("收款方银行卡所属银行卡号"));
+          dataMap.put("交易对手银行名称", origin.getString("收款方银行卡所属银行名称"));
+          dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
+
+        } else if ("入账".equals(flag)) {
+          dataMap.put("交易主体账号", origin.getString("收款方的支付账号"));
+          dataMap.put("交易主体银行卡号", origin.getString("收款方银行卡所属银行卡号"));
+          dataMap.put("交易主体银行名称", origin.getString("收款方银行卡所属银行名称"));
+          dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
+          dataMap.put("交易对手账号", origin.getString("付款方的支付账号"));
+          dataMap.put("交易对手银行卡号", origin.getString("付款方银行卡所属银行卡号"));
+          dataMap.put("交易对手银行名称", origin.getString("付款方银行卡所属银行名称"));
+          dataMap.put("交易对手户名", "");
+        }
+        dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
+        if ("".equals((String) dataMap.get("交易主体户名"))) {
+          String account = (String) dataMap.getOrDefault("交易主体账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易主体户名", newName);
+            }
           }
         }
-      }
-      if ("".equals((String) dataMap.get("交易对手户名"))) {
-        String account = (String) dataMap.getOrDefault("交易对手账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易对手户名", newName);
+        if ("".equals((String) dataMap.get("交易对手户名"))) {
+          String account = (String) dataMap.getOrDefault("交易对手账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易对手户名", newName);
+            }
           }
         }
+        needToSave.add(dataMap);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
       }
-      needToSave.add(dataMap);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      if (CollectionUtils.isNotEmpty(needToSave)) {
+        saveLines(needToSave, mongoTemplate);
       }
     }
-    if (CollectionUtils.isNotEmpty(needToSave)) {
-      saveLines(needToSave, mongoTemplate);
-    }
     latch.countDown();
   }
 }

+ 77 - 73
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade4.java

@@ -32,6 +32,7 @@ public class AntiSecurityTrade4 extends Ops implements Runnable {
       Map<String, String> accountToName,
       FileService fileService,
       CountDownLatch latch3) {
+    this.headerProperties = headerProperties;
     this.accountToName = accountToName;
     this.modelId = modelId;
     this.mongoTemplate = mongoTemplate;
@@ -44,88 +45,91 @@ public class AntiSecurityTrade4 extends Ops implements Runnable {
     String antiSecurityFileId = "";
     String dateFileId = getFileId("治安数据-订单明细", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      antiSecurityFileId =
-          createLogicAndDeleteOld(
-              "反诈治安-交易明细",
-              modelId,
-              headerProperties.getAntiSecurityTradeOutput(),
-              mongoTemplate,
-              fileService);
-    }
-    Document origin;
-    List<DataMap> needToSave = new ArrayList<>(1000);
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      DataMap dataMap = new DataMap();
-      dataMap.put("fileId", antiSecurityFileId);
-      dataMap.put("支付订单号", origin.getString("支付订单号"));
-      dataMap.put("交易流水号", origin.getString("交易流水号"));
-      String flag = origin.getString("交易主体的出入账标识");
-      dataMap.put("交易主体的出入账标识", flag);
-      dataMap.put("交易类型", origin.getString("交易类型"));
-      dataMap.put("支付类型", origin.getString("支付类型"));
-      dataMap.put("币种", origin.getString("币种"));
-      dataMap.put("交易金额", origin.getString("交易金额"));
-      dataMap.put("交易余额", origin.getString("交易余额"));
-      dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
-      dataMap.put("交易设备类型", origin.getString("交易设备类型"));
-      dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
-      dataMap.put("MAC地址", origin.getString("MAC地址"));
-      dataMap.put("交易地点经度", origin.getString("交易地点经度"));
-      dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
-      dataMap.put("备注", origin.getString("备注"));
-      if ("出账".equals(flag)) {
-        dataMap.put("交易主体账号", origin.getString("付款支付账号"));
-        dataMap.put("交易主体银行卡号", origin.getString("付款银行卡号"));
-        dataMap.put("交易主体银行名称", origin.getString("付款银行卡银行名称"));
-        dataMap.put("交易主体户名", "");
-        dataMap.put("交易对手账号", origin.getString("收款支付账号"));
-        dataMap.put("交易对手银行卡号", origin.getString("收款银行卡号"));
-        dataMap.put("交易对手银行名称", origin.getString("收款银行卡银行名称"));
-        dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
+    if (StringUtils.isNotBlank(dateFileId)) {
 
-      } else if ("入账".equals(flag)) {
-        dataMap.put("交易主体账号", origin.getString("收款支付账号"));
-        dataMap.put("交易主体银行卡号", origin.getString("收款银行卡号"));
-        dataMap.put("交易主体银行名称", origin.getString("收款银行卡银行名称"));
-        dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
-        dataMap.put("交易对手账号", origin.getString("付款支付账号"));
-        dataMap.put("交易对手银行卡号", origin.getString("付款银行卡号"));
-        dataMap.put("交易对手银行名称", origin.getString("付款银行卡银行名称"));
-        dataMap.put("交易对手户名", "");
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        antiSecurityFileId =
+            createLogicAndDeleteOld(
+                "反诈治安-交易明细",
+                modelId,
+                headerProperties.getAntiSecurityTradeOutput(),
+                mongoTemplate,
+                fileService);
       }
-      dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
-      if ("".equals(dataMap.get("交易主体户名"))) {
-        String account = (String) dataMap.getOrDefault("交易主体账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易主体户名", newName);
+      Document origin;
+      List<DataMap> needToSave = new ArrayList<>(1000);
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        DataMap dataMap = new DataMap();
+        dataMap.put("fileId", antiSecurityFileId);
+        dataMap.put("支付订单号", origin.getString("支付订单号"));
+        dataMap.put("交易流水号", origin.getString("交易流水号"));
+        String flag = origin.getString("交易主体的出入账标识");
+        dataMap.put("交易主体的出入账标识", flag);
+        dataMap.put("交易类型", origin.getString("交易类型"));
+        dataMap.put("支付类型", origin.getString("支付类型"));
+        dataMap.put("币种", origin.getString("币种"));
+        dataMap.put("交易金额", origin.getString("交易金额"));
+        dataMap.put("交易余额", origin.getString("交易余额"));
+        dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
+        dataMap.put("交易设备类型", origin.getString("交易设备类型"));
+        dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
+        dataMap.put("MAC地址", origin.getString("MAC地址"));
+        dataMap.put("交易地点经度", origin.getString("交易地点经度"));
+        dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
+        dataMap.put("备注", origin.getString("备注"));
+        if ("出账".equals(flag)) {
+          dataMap.put("交易主体账号", origin.getString("付款支付账号"));
+          dataMap.put("交易主体银行卡号", origin.getString("付款银行卡号"));
+          dataMap.put("交易主体银行名称", origin.getString("付款银行卡银行名称"));
+          dataMap.put("交易主体户名", "");
+          dataMap.put("交易对手账号", origin.getString("收款支付账号"));
+          dataMap.put("交易对手银行卡号", origin.getString("收款银行卡号"));
+          dataMap.put("交易对手银行名称", origin.getString("收款银行卡银行名称"));
+          dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
+
+        } else if ("入账".equals(flag)) {
+          dataMap.put("交易主体账号", origin.getString("收款支付账号"));
+          dataMap.put("交易主体银行卡号", origin.getString("收款银行卡号"));
+          dataMap.put("交易主体银行名称", origin.getString("收款银行卡银行名称"));
+          dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
+          dataMap.put("交易对手账号", origin.getString("付款支付账号"));
+          dataMap.put("交易对手银行卡号", origin.getString("付款银行卡号"));
+          dataMap.put("交易对手银行名称", origin.getString("付款银行卡银行名称"));
+          dataMap.put("交易对手户名", "");
+        }
+        dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
+        if ("".equals(dataMap.get("交易主体户名"))) {
+          String account = (String) dataMap.getOrDefault("交易主体账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易主体户名", newName);
+            }
           }
         }
-      }
-      if ("".equals((String) dataMap.get("交易对手户名"))) {
-        String account = (String) dataMap.getOrDefault("交易对手账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易对手户名", newName);
+        if ("".equals((String) dataMap.get("交易对手户名"))) {
+          String account = (String) dataMap.getOrDefault("交易对手账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易对手户名", newName);
+            }
           }
         }
+        needToSave.add(dataMap);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
       }
-      needToSave.add(dataMap);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      if (CollectionUtils.isNotEmpty(needToSave)) {
+        saveLines(needToSave, mongoTemplate);
       }
     }
-    if (CollectionUtils.isNotEmpty(needToSave)) {
-      saveLines(needToSave, mongoTemplate);
-    }
     latch.countDown();
   }
 }

+ 103 - 100
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeEndAnalysis.java

@@ -43,114 +43,117 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
     // 直接删除并创建表
     String newFileId = "";
     String dateFileId = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "反诈治安-对手透视",
-              modelId,
-              headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      // 插入记录用户后续查询明细
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToMainIds = new HashMap<>();
-    Map<String, Set<String>> idToNames = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("交易对手账号");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("交易对手账号", alipayId);
-        dataMap.put("交易对手户名", "");
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
-        dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
-        dataMap.put("交易主体收入笔数", 0);
-        dataMap.put("交易主体支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        dataMap.put("共同交易主体数", 0);
-        dataMap.put("共同交易主体账号汇总", "");
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "反诈治安-对手透视",
+                modelId,
+                headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        // 插入记录用户后续查询明细
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String alipayUsername = origin.getString("交易对手户名");
-      if (StringUtils.isNotBlank(alipayUsername)
-          && !"_".equals(alipayUsername)
-          && !"-".equals(alipayUsername)) {
-        if (idToNames.containsKey(alipayId)) {
-          Set<String> names = idToNames.get(alipayId);
-          names.add(alipayUsername);
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToMainIds = new HashMap<>();
+      Map<String, Set<String>> idToNames = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String alipayId = origin.getString("交易对手账号");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
         } else {
-          Set<String> names = new HashSet<>();
-          names.add(alipayUsername);
-          idToNames.put(alipayId, names);
+          alipayIds.add(alipayId);
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("交易对手账号", alipayId);
+          dataMap.put("交易对手户名", "");
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
+          dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
+          dataMap.put("交易主体收入笔数", 0);
+          dataMap.put("交易主体支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          dataMap.put("共同交易主体数", 0);
+          dataMap.put("共同交易主体账号汇总", "");
+          idToData.put(alipayId, dataMap);
         }
-      }
-      String flag = "交易主体的出入账标识";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("交易金额");
-      if ("入账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易主体收入金额", oMoney);
-        int oCount = (int) dataMap.get("交易主体收入笔数");
-        oCount++;
-        dataMap.put("交易主体收入笔数", oCount);
-      } else if ("出账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+        String alipayUsername = origin.getString("交易对手户名");
+        if (StringUtils.isNotBlank(alipayUsername)
+            && !"_".equals(alipayUsername)
+            && !"-".equals(alipayUsername)) {
+          if (idToNames.containsKey(alipayId)) {
+            Set<String> names = idToNames.get(alipayId);
+            names.add(alipayUsername);
+          } else {
+            Set<String> names = new HashSet<>();
+            names.add(alipayUsername);
+            idToNames.put(alipayId, names);
+          }
+        }
+        String flag = "交易主体的出入账标识";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("交易金额");
+        if ("入账".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("交易主体收入金额", oMoney);
+          int oCount = (int) dataMap.get("交易主体收入笔数");
+          oCount++;
+          dataMap.put("交易主体收入笔数", oCount);
+        } else if ("出账".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("交易主体支出金额", oMoney);
+          int oCount = (int) dataMap.get("交易主体支出笔数");
+          oCount++;
+          dataMap.put("交易主体支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易主体支出金额", oMoney);
-        int oCount = (int) dataMap.get("交易主体支出笔数");
+        dataMap.put("交易额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("交易主体支出笔数", oCount);
-      }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-      String mainId = (String) origin.get("交易主体账号");
-      if (idToMainIds.containsKey(alipayId)) {
-        Set<String> mainIds = idToMainIds.get(alipayId);
-        mainIds.add(mainId);
-      } else {
-        Set<String> mainIds = new HashSet<>();
-        mainIds.add(mainId);
-        idToMainIds.put(alipayId, mainIds);
-      }
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        String key = entry.getKey();
-        DataMap value = entry.getValue();
-        Set<String> mainIds = idToMainIds.get(key);
-        if (CollectionUtils.isNotEmpty(mainIds)) {
-          value.put("共同交易主体数", mainIds.size());
-          value.put("共同交易主体账号汇总", StringUtils.join(mainIds, ";"));
+        dataMap.put("总笔数", oCount);
+        String mainId = (String) origin.get("交易主体账号");
+        if (idToMainIds.containsKey(alipayId)) {
+          Set<String> mainIds = idToMainIds.get(alipayId);
+          mainIds.add(mainId);
+        } else {
+          Set<String> mainIds = new HashSet<>();
+          mainIds.add(mainId);
+          idToMainIds.put(alipayId, mainIds);
         }
-        Set<String> names = idToNames.get(key);
-        if (CollectionUtils.isNotEmpty(names)) {
-          value.put("交易对手户名", StringUtils.join(names, ";"));
+      }
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          String key = entry.getKey();
+          DataMap value = entry.getValue();
+          Set<String> mainIds = idToMainIds.get(key);
+          if (CollectionUtils.isNotEmpty(mainIds)) {
+            value.put("共同交易主体数", mainIds.size());
+            value.put("共同交易主体账号汇总", StringUtils.join(mainIds, ";"));
+          }
+          Set<String> names = idToNames.get(key);
+          if (CollectionUtils.isNotEmpty(names)) {
+            value.put("交易对手户名", StringUtils.join(names, ";"));
+          }
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
+          dataMap.put("交易总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("交易主体收入金额");
+          dataMap.put("交易主体收入金额", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("交易主体支出金额");
+          dataMap.put("交易主体支出金额", money3.doubleValue());
         }
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
-        dataMap.put("交易总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("交易主体收入金额");
-        dataMap.put("交易主体收入金额", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("交易主体支出金额");
-        dataMap.put("交易主体支出金额", money3.doubleValue());
+        saveLines(idToData.values(), "交易总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易总额", mongoTemplate);
     }
     this.latch.countDown();
   }

+ 83 - 80
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeScaleAnalysis.java

@@ -42,94 +42,97 @@ public class AntiSecurityTradeScaleAnalysis extends Ops implements Runnable {
     // 直接删除并创建表
     String newFileId = "";
     String dateFileId = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "反诈治安-账户透视",
-              modelId,
-              headerProperties.getAntiSecurityTradeScaleAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      // 插入记录用户后续查询明细
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToNames = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("交易主体账号");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("交易主体账号", alipayId);
-        dataMap.put("交易主体户名", "");
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("收入金额", new BigDecimal("0.00"));
-        dataMap.put("支出金额", new BigDecimal("0.00"));
-        dataMap.put("收入笔数", 0);
-        dataMap.put("支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "反诈治安-账户透视",
+                modelId,
+                headerProperties.getAntiSecurityTradeScaleAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        // 插入记录用户后续查询明细
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String alipayUsername = origin.getString("交易主体户名");
-      if (StringUtils.isNotBlank(alipayUsername)) {
-        Set<String> namesSet;
-        if (idToNames.containsKey(alipayId)) {
-          namesSet = idToNames.get(alipayId);
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToNames = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String alipayId = origin.getString("交易主体账号");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
         } else {
-          namesSet = new HashSet<>();
-          idToNames.put(alipayId, namesSet);
+          alipayIds.add(alipayId);
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("交易主体账号", alipayId);
+          dataMap.put("交易主体户名", "");
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("收入金额", new BigDecimal("0.00"));
+          dataMap.put("支出金额", new BigDecimal("0.00"));
+          dataMap.put("收入笔数", 0);
+          dataMap.put("支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          idToData.put(alipayId, dataMap);
         }
-        namesSet.add(alipayUsername);
-      }
-      String flag = "交易主体的出入账标识";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("交易金额");
-      if ("入账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("收入金额", oMoney);
-        int oCount = (int) dataMap.get("收入笔数");
-        oCount++;
-        dataMap.put("收入笔数", oCount);
-      } else if ("出账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+        String alipayUsername = origin.getString("交易主体户名");
+        if (StringUtils.isNotBlank(alipayUsername)) {
+          Set<String> namesSet;
+          if (idToNames.containsKey(alipayId)) {
+            namesSet = idToNames.get(alipayId);
+          } else {
+            namesSet = new HashSet<>();
+            idToNames.put(alipayId, namesSet);
+          }
+          namesSet.add(alipayUsername);
+        }
+        String flag = "交易主体的出入账标识";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("交易金额");
+        if ("入账".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("收入金额", oMoney);
+          int oCount = (int) dataMap.get("收入笔数");
+          oCount++;
+          dataMap.put("收入笔数", oCount);
+        } else if ("出账".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("支出金额", oMoney);
+          int oCount = (int) dataMap.get("支出笔数");
+          oCount++;
+          dataMap.put("支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("支出金额", oMoney);
-        int oCount = (int) dataMap.get("支出笔数");
+        dataMap.put("交易总额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("支出笔数", oCount);
+        dataMap.put("笔数", oCount);
       }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
-        dataMap.put("交易总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
-        dataMap.put("收入金额", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
-        dataMap.put("支出金额", money3.doubleValue());
-        String id = (String) dataMap.get("交易主体账号");
-        Set<String> namesSet = idToNames.get(id);
-        if (CollectionUtils.isNotEmpty(namesSet)) {
-          dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
+          dataMap.put("交易总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
+          dataMap.put("收入金额", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
+          dataMap.put("支出金额", money3.doubleValue());
+          String id = (String) dataMap.get("交易主体账号");
+          Set<String> namesSet = idToNames.get(id);
+          if (CollectionUtils.isNotEmpty(namesSet)) {
+            dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
+          }
         }
+        saveLines(idToData.values(), "交易总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易总额", mongoTemplate);
     }
     latch.countDown();
   }

+ 63 - 60
src/main/java/ieven/server/webapp/service/alipay/DeliveryAnalysis.java

@@ -46,70 +46,73 @@ public class DeliveryAnalysis extends Ops implements Runnable {
     String newFileId = "";
     String dateFileId = getFileId("五联单-交易记录", modelId, mongoTemplate);
     // 遍历交易记录全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "五联单-收货地址分析",
-              modelId,
-              headerProperties.getDeliveryAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToBuyerIds = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String groupId = origin.getString("收货人地址");
-      if (StringUtils.isBlank(groupId)) {
-        continue;
-      }
-      DataMap dataMap;
-      if (idToData.containsKey(groupId)) {
-        dataMap = idToData.get(groupId);
-      } else {
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("收货人地址", groupId);
-        dataMap.put("交易金额", new BigDecimal("0.00"));
-        dataMap.put("交易次数", 0);
-        dataMap.put("买家用户ID数", 0);
-        dataMap.put("买家用户ID汇总", "");
-        idToData.put(groupId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "五联单-收货地址分析",
+                modelId,
+                headerProperties.getDeliveryAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String money = (String) origin.get("交易金额(元)");
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易金额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易金额", oMoney);
-      int oCount = (int) dataMap.get("交易次数");
-      oCount++;
-      dataMap.put("交易次数", oCount);
-      String buyerId = origin.getString("买家用户ID");
-      if (idToBuyerIds.containsKey(groupId)) {
-        Set<String> buyerIdSet = idToBuyerIds.get(groupId);
-        buyerIdSet.add(buyerId);
-      } else {
-        Set<String> buyerIdSet = new HashSet<>();
-        buyerIdSet.add(buyerId);
-        idToBuyerIds.put(groupId, buyerIdSet);
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToBuyerIds = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String groupId = origin.getString("收货人地址");
+        if (StringUtils.isBlank(groupId)) {
+          continue;
+        }
+        DataMap dataMap;
+        if (idToData.containsKey(groupId)) {
+          dataMap = idToData.get(groupId);
+        } else {
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("收货人地址", groupId);
+          dataMap.put("交易金额", new BigDecimal("0.00"));
+          dataMap.put("交易次数", 0);
+          dataMap.put("买家用户ID数", 0);
+          dataMap.put("买家用户ID汇总", "");
+          idToData.put(groupId, dataMap);
+        }
+        String money = (String) origin.get("交易金额(元)");
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易金额");
+        oMoney = oMoney.add(new BigDecimal(money));
+        dataMap.put("交易金额", oMoney);
+        int oCount = (int) dataMap.get("交易次数");
+        oCount++;
+        dataMap.put("交易次数", oCount);
+        String buyerId = origin.getString("买家用户ID");
+        if (idToBuyerIds.containsKey(groupId)) {
+          Set<String> buyerIdSet = idToBuyerIds.get(groupId);
+          buyerIdSet.add(buyerId);
+        } else {
+          Set<String> buyerIdSet = new HashSet<>();
+          buyerIdSet.add(buyerId);
+          idToBuyerIds.put(groupId, buyerIdSet);
+        }
       }
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        String key = entry.getKey();
-        DataMap value = entry.getValue();
-        Set<String> buyerIdSet = idToBuyerIds.get(key);
-        if (CollectionUtils.isNotEmpty(buyerIdSet)) {
-          value.put("买家用户ID数", buyerIdSet.size());
-          value.put("买家用户ID汇总", StringUtils.join(buyerIdSet, ";"));
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          String key = entry.getKey();
+          DataMap value = entry.getValue();
+          Set<String> buyerIdSet = idToBuyerIds.get(key);
+          if (CollectionUtils.isNotEmpty(buyerIdSet)) {
+            value.put("买家用户ID数", buyerIdSet.size());
+            value.put("买家用户ID汇总", StringUtils.join(buyerIdSet, ";"));
+          }
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易金额");
+          dataMap.put("交易金额", money1.doubleValue());
         }
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易金额");
-        dataMap.put("交易金额", money1.doubleValue());
+        saveLines(idToData.values(), "交易金额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易金额", mongoTemplate);
     }
     latch.countDown();
   }

+ 102 - 99
src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java

@@ -46,113 +46,116 @@ public class EndAnalysis extends Ops implements Runnable {
     String newFileId = "";
     String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
     // 遍历账户明细全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "五联单-对手透视",
-              modelId,
-              headerProperties.getEndAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToMainIds = new HashMap<>();
-    Map<String, Set<String>> idToNames = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("对手支付宝用户ID");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("对手支付宝用户ID", alipayId);
-        dataMap.put("对手支付宝户名", "");
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("主用户ID收入金额", new BigDecimal("0.00"));
-        dataMap.put("主用户ID支出金额", new BigDecimal("0.00"));
-        dataMap.put("主用户ID收入笔数", 0);
-        dataMap.put("主用户ID支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        dataMap.put("共同主用户ID数", 0);
-        dataMap.put("共同主用户ID汇总", "");
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "五联单-对手透视",
+                modelId,
+                headerProperties.getEndAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String alipayUsername = origin.getString("对手支付宝户名");
-      if (StringUtils.isNotBlank(alipayUsername)
-          && !"_".equals(alipayUsername)
-          && !"-".equals(alipayUsername)) {
-        if (idToNames.containsKey(alipayId)) {
-          Set<String> names = idToNames.get(alipayId);
-          names.add(alipayUsername);
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToMainIds = new HashMap<>();
+      Map<String, Set<String>> idToNames = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String alipayId = origin.getString("对手支付宝用户ID");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
         } else {
-          Set<String> names = new HashSet<>();
-          names.add(alipayUsername);
-          idToNames.put(alipayId, names);
+          alipayIds.add(alipayId);
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("对手支付宝用户ID", alipayId);
+          dataMap.put("对手支付宝户名", "");
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("主用户ID收入金额", new BigDecimal("0.00"));
+          dataMap.put("主用户ID支出金额", new BigDecimal("0.00"));
+          dataMap.put("主用户ID收入笔数", 0);
+          dataMap.put("主用户ID支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          dataMap.put("共同主用户ID数", 0);
+          dataMap.put("共同主用户ID汇总", "");
+          idToData.put(alipayId, dataMap);
         }
-      }
-      String flag = "收/支";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("金额(元)");
-      if ("收入".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("主用户ID收入金额", oMoney);
-        int oCount = (int) dataMap.get("主用户ID收入笔数");
-        oCount++;
-        dataMap.put("主用户ID收入笔数", oCount);
-      } else if ("支出".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID支出金额");
+        String alipayUsername = origin.getString("对手支付宝户名");
+        if (StringUtils.isNotBlank(alipayUsername)
+            && !"_".equals(alipayUsername)
+            && !"-".equals(alipayUsername)) {
+          if (idToNames.containsKey(alipayId)) {
+            Set<String> names = idToNames.get(alipayId);
+            names.add(alipayUsername);
+          } else {
+            Set<String> names = new HashSet<>();
+            names.add(alipayUsername);
+            idToNames.put(alipayId, names);
+          }
+        }
+        String flag = "收/支";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("金额(元)");
+        if ("收入".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("主用户ID收入金额", oMoney);
+          int oCount = (int) dataMap.get("主用户ID收入笔数");
+          oCount++;
+          dataMap.put("主用户ID收入笔数", oCount);
+        } else if ("支出".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("主用户ID支出金额", oMoney);
+          int oCount = (int) dataMap.get("主用户ID支出笔数");
+          oCount++;
+          dataMap.put("主用户ID支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("主用户ID支出金额", oMoney);
-        int oCount = (int) dataMap.get("主用户ID支出笔数");
+        dataMap.put("交易总额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("主用户ID支出笔数", oCount);
-      }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-      String mainId = (String) origin.get("支付宝用户ID");
-      if (idToMainIds.containsKey(alipayId)) {
-        Set<String> mainIds = idToMainIds.get(alipayId);
-        mainIds.add(mainId);
-      } else {
-        Set<String> mainIds = new HashSet<>();
-        mainIds.add(mainId);
-        idToMainIds.put(alipayId, mainIds);
-      }
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        String key = entry.getKey();
-        DataMap value = entry.getValue();
-        Set<String> mainIds = idToMainIds.get(key);
-        if (CollectionUtils.isNotEmpty(mainIds)) {
-          value.put("共同主用户ID数", mainIds.size());
-          value.put("共同主用户ID汇总", StringUtils.join(mainIds, ";"));
+        dataMap.put("总笔数", oCount);
+        String mainId = (String) origin.get("支付宝用户ID");
+        if (idToMainIds.containsKey(alipayId)) {
+          Set<String> mainIds = idToMainIds.get(alipayId);
+          mainIds.add(mainId);
+        } else {
+          Set<String> mainIds = new HashSet<>();
+          mainIds.add(mainId);
+          idToMainIds.put(alipayId, mainIds);
         }
-        Set<String> names = idToNames.get(key);
-        if (CollectionUtils.isNotEmpty(names)) {
-          value.put("对手支付宝户名", StringUtils.join(names, ";"));
+      }
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          String key = entry.getKey();
+          DataMap value = entry.getValue();
+          Set<String> mainIds = idToMainIds.get(key);
+          if (CollectionUtils.isNotEmpty(mainIds)) {
+            value.put("共同主用户ID数", mainIds.size());
+            value.put("共同主用户ID汇总", StringUtils.join(mainIds, ";"));
+          }
+          Set<String> names = idToNames.get(key);
+          if (CollectionUtils.isNotEmpty(names)) {
+            value.put("对手支付宝户名", StringUtils.join(names, ";"));
+          }
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
+          dataMap.put("交易总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("主用户ID收入金额");
+          dataMap.put("主用户ID收入金额", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("主用户ID支出金额");
+          dataMap.put("主用户ID支出金额", money3.doubleValue());
         }
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
-        dataMap.put("交易总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("主用户ID收入金额");
-        dataMap.put("主用户ID收入金额", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("主用户ID支出金额");
-        dataMap.put("主用户ID支出金额", money3.doubleValue());
+        saveLines(idToData.values(), "交易总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易总额", mongoTemplate);
     }
     latch.countDown();
   }

+ 78 - 75
src/main/java/ieven/server/webapp/service/alipay/IpAnalysis.java

@@ -44,91 +44,94 @@ public class IpAnalysis extends Ops implements Runnable {
     String newFileId = "";
     String dateFileId = getFileId("五联单-登录日志", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "五联单-IP地址分析",
-              modelId,
-              headerProperties.getIpAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToAlipayIds = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String groupId = origin.getString("客户端IP");
-      if (StringUtils.isBlank(groupId)) {
-        continue;
-      }
-      DataMap dataMap;
-      if (idToData.containsKey(groupId)) {
-        dataMap = idToData.get(groupId);
-      } else {
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("IP地址", groupId);
-        dataMap.put("登录时间段", "flag~flag");
-        dataMap.put("登录次数", 0);
-        dataMap.put("支付宝用户ID数", 0);
-        dataMap.put("支付宝用户ID汇总", "");
-        idToData.put(groupId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "五联单-IP地址分析",
+                modelId,
+                headerProperties.getIpAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String loginTime = origin.getString("操作发生时间");
-      String savedTime = (String) dataMap.get("登录时间段");
-      String[] doubleTime = savedTime.split("~");
-      if (doubleTime.length == 2) {
-        if (!"flag".equals(doubleTime[0])) {
-          // 左边更小的值
-          if (loginTime.compareTo(doubleTime[0]) < 0) {
-            doubleTime[0] = loginTime;
-          }
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToAlipayIds = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String groupId = origin.getString("客户端IP");
+        if (StringUtils.isBlank(groupId)) {
+          continue;
+        }
+        DataMap dataMap;
+        if (idToData.containsKey(groupId)) {
+          dataMap = idToData.get(groupId);
         } else {
-          doubleTime[0] = loginTime;
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("IP地址", groupId);
+          dataMap.put("登录时间段", "flag~flag");
+          dataMap.put("登录次数", 0);
+          dataMap.put("支付宝用户ID数", 0);
+          dataMap.put("支付宝用户ID汇总", "");
+          idToData.put(groupId, dataMap);
         }
-        if (!"flag".equals(doubleTime[1])) {
-          // 右边更大的值
-          if (loginTime.compareTo(doubleTime[1]) > 0) {
+        String loginTime = origin.getString("操作发生时间");
+        String savedTime = (String) dataMap.get("登录时间段");
+        String[] doubleTime = savedTime.split("~");
+        if (doubleTime.length == 2) {
+          if (!"flag".equals(doubleTime[0])) {
+            // 左边更小的值
+            if (loginTime.compareTo(doubleTime[0]) < 0) {
+              doubleTime[0] = loginTime;
+            }
+          } else {
+            doubleTime[0] = loginTime;
+          }
+          if (!"flag".equals(doubleTime[1])) {
+            // 右边更大的值
+            if (loginTime.compareTo(doubleTime[1]) > 0) {
+              doubleTime[1] = loginTime;
+            }
+          } else {
             doubleTime[1] = loginTime;
           }
+          dataMap.put("登录时间段", doubleTime[0] + "~" + doubleTime[1]);
+        }
+        int oCount = (int) dataMap.get("登录次数");
+        oCount++;
+        dataMap.put("登录次数", oCount);
+        String buyerId = origin.getString("支付宝用户ID");
+        if (idToAlipayIds.containsKey(groupId)) {
+          Set<String> buyerIdSet = idToAlipayIds.get(groupId);
+          buyerIdSet.add(buyerId);
         } else {
-          doubleTime[1] = loginTime;
+          Set<String> buyerIdSet = new HashSet<>();
+          buyerIdSet.add(buyerId);
+          idToAlipayIds.put(groupId, buyerIdSet);
         }
-        dataMap.put("登录时间段", doubleTime[0] + "~" + doubleTime[1]);
       }
-      int oCount = (int) dataMap.get("登录次数");
-      oCount++;
-      dataMap.put("登录次数", oCount);
-      String buyerId = origin.getString("支付宝用户ID");
-      if (idToAlipayIds.containsKey(groupId)) {
-        Set<String> buyerIdSet = idToAlipayIds.get(groupId);
-        buyerIdSet.add(buyerId);
-      } else {
-        Set<String> buyerIdSet = new HashSet<>();
-        buyerIdSet.add(buyerId);
-        idToAlipayIds.put(groupId, buyerIdSet);
-      }
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        String key = entry.getKey();
-        DataMap value = entry.getValue();
-        Set<String> buyerIdSet = idToAlipayIds.get(key);
-        if (CollectionUtils.isNotEmpty(buyerIdSet)) {
-          value.put("支付宝用户ID数", buyerIdSet.size());
-          value.put("支付宝用户ID汇总", StringUtils.join(buyerIdSet, ";"));
-        }
-        String loginTime = (String) value.get("登录时间段");
-        String[] doubleTime = loginTime.split("~");
-        if (doubleTime.length == 2 && doubleTime[0].equals(doubleTime[1])) {
-          value.put("登录时间段", doubleTime[0]);
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          String key = entry.getKey();
+          DataMap value = entry.getValue();
+          Set<String> buyerIdSet = idToAlipayIds.get(key);
+          if (CollectionUtils.isNotEmpty(buyerIdSet)) {
+            value.put("支付宝用户ID数", buyerIdSet.size());
+            value.put("支付宝用户ID汇总", StringUtils.join(buyerIdSet, ";"));
+          }
+          String loginTime = (String) value.get("登录时间段");
+          String[] doubleTime = loginTime.split("~");
+          if (doubleTime.length == 2 && doubleTime[0].equals(doubleTime[1])) {
+            value.put("登录时间段", doubleTime[0]);
+          }
         }
+        saveLines(idToData.values(), "登录次数", mongoTemplate);
       }
-      saveLines(idToData.values(), "登录次数", mongoTemplate);
     }
-    this.latch.countDown();
+    latch.countDown();
   }
 }

+ 69 - 65
src/main/java/ieven/server/webapp/service/alipay/ScaleAnalysis.java

@@ -7,6 +7,7 @@ import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
 
@@ -45,76 +46,79 @@ public class ScaleAnalysis extends Ops implements Runnable {
     String newFileId = "";
     String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
     // 遍历账户明细全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      createLogicAndDeleteOld(
-          "五联单-账户透视",
-          modelId,
-          headerProperties.getScaleAnalysisOutput(),
-          mongoTemplate,
-          fileService);
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("支付宝用户ID");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        String alipayUsername = origin.getString("支付宝户名");
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("支付宝用户ID", alipayId);
-        dataMap.put("支付宝户名", alipayUsername);
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("收入金额", new BigDecimal("0.00"));
-        dataMap.put("支出金额", new BigDecimal("0.00"));
-        dataMap.put("收入笔数", 0);
-        dataMap.put("支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        createLogicAndDeleteOld(
+            "五联单-账户透视",
+            modelId,
+            headerProperties.getScaleAnalysisOutput(),
+            mongoTemplate,
+            fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String flag = "收/支";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("金额(元)");
-      if ("收入".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String alipayId = origin.getString("支付宝用户ID");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
+        } else {
+          alipayIds.add(alipayId);
+          String alipayUsername = origin.getString("支付宝户名");
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("支付宝用户ID", alipayId);
+          dataMap.put("支付宝户名", alipayUsername);
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("收入金额", new BigDecimal("0.00"));
+          dataMap.put("支出金额", new BigDecimal("0.00"));
+          dataMap.put("收入笔数", 0);
+          dataMap.put("支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          idToData.put(alipayId, dataMap);
+        }
+        String flag = "收/支";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("金额(元)");
+        if ("收入".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("收入金额", oMoney);
+          int oCount = (int) dataMap.get("收入笔数");
+          oCount++;
+          dataMap.put("收入笔数", oCount);
+        } else if ("支出".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("支出金额", oMoney);
+          int oCount = (int) dataMap.get("支出笔数");
+          oCount++;
+          dataMap.put("支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("收入金额", oMoney);
-        int oCount = (int) dataMap.get("收入笔数");
+        dataMap.put("交易总额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("收入笔数", oCount);
-      } else if ("支出".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("支出金额", oMoney);
-        int oCount = (int) dataMap.get("支出笔数");
-        oCount++;
-        dataMap.put("支出笔数", oCount);
+        dataMap.put("总笔数", oCount);
       }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
-        dataMap.put("交易总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
-        dataMap.put("收入金额", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
-        dataMap.put("支出金额", money3.doubleValue());
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
+          dataMap.put("交易总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
+          dataMap.put("收入金额", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
+          dataMap.put("支出金额", money3.doubleValue());
+        }
+        saveLines(idToData.values(), "交易总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易总额", mongoTemplate);
     }
     latch.countDown();
   }

+ 73 - 70
src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.java

@@ -7,6 +7,7 @@ import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
 
@@ -45,81 +46,83 @@ public class TransferAnalysis extends Ops implements Runnable {
     String newFileId = "";
     String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
     // 遍历账户明细全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
-      newFileId =
-          createLogicAndDeleteOld(
-              "五联单-转账分析",
-              modelId,
-              headerProperties.getTransferAnalysisOutput(),
-              mongoTemplate,
-              fileService);
-      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    }
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String transferFlag = origin.getString("消费名称");
-      if (!transferFlag.equals("转账")) {
-        continue;
-      }
-      String alipayId = origin.getString("支付宝用户ID");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        String alipayUsername = origin.getString("支付宝户名");
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("支付宝用户ID", alipayId);
-        dataMap.put("支付宝户名", alipayUsername);
-        dataMap.put("转账总额", new BigDecimal("0.00"));
-        dataMap.put("转账收入", new BigDecimal("0.00"));
-        dataMap.put("转账支出", new BigDecimal("0.00"));
-        dataMap.put("转收笔数", 0);
-        dataMap.put("转支笔数", 0);
-        dataMap.put("总笔数", 0);
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "五联单-转账分析",
+                modelId,
+                headerProperties.getTransferAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String flag = "收/支";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("金额(元)");
-      if ("收入".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("转账收入");
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String transferFlag = origin.getString("消费名称");
+        if (!transferFlag.equals("转账")) {
+          continue;
+        }
+        String alipayId = origin.getString("支付宝用户ID");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
+        } else {
+          alipayIds.add(alipayId);
+          String alipayUsername = origin.getString("支付宝户名");
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("支付宝用户ID", alipayId);
+          dataMap.put("支付宝户名", alipayUsername);
+          dataMap.put("转账总额", new BigDecimal("0.00"));
+          dataMap.put("转账收入", new BigDecimal("0.00"));
+          dataMap.put("转账支出", new BigDecimal("0.00"));
+          dataMap.put("转收笔数", 0);
+          dataMap.put("转支笔数", 0);
+          dataMap.put("总笔数", 0);
+          idToData.put(alipayId, dataMap);
+        }
+        String flag = "收/支";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("金额(元)");
+        if ("收入".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("转账收入");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("转账收入", oMoney);
+          int oCount = (int) dataMap.get("转收笔数");
+          oCount++;
+          dataMap.put("转收笔数", oCount);
+        } else if ("支出".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("转账支出");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("转账支出", oMoney);
+          int oCount = (int) dataMap.get("转支笔数");
+          oCount++;
+          dataMap.put("转支笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("转账总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("转账收入", oMoney);
-        int oCount = (int) dataMap.get("转收笔数");
+        dataMap.put("转账总额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("转收笔数", oCount);
-      } else if ("支出".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("转账支出");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("转账支出", oMoney);
-        int oCount = (int) dataMap.get("转支笔数");
-        oCount++;
-        dataMap.put("转支笔数", oCount);
+        dataMap.put("总笔数", oCount);
       }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("转账总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("转账总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("转账总额");
-        dataMap.put("转账总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("转账收入");
-        dataMap.put("转账收入", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("转账支出");
-        dataMap.put("转账支出", money3.doubleValue());
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("转账总额");
+          dataMap.put("转账总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("转账收入");
+          dataMap.put("转账收入", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("转账支出");
+          dataMap.put("转账支出", money3.doubleValue());
+        }
+        saveLines(idToData.values(), "转账总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "转账总额", mongoTemplate);
     }
     latch.countDown();
   }

+ 2 - 2
src/main/java/ieven/server/webapp/service/tenpay/TenpayAccount.java

@@ -47,10 +47,10 @@ public class TenpayAccount extends Ops implements Runnable {
     log.info("财付通-开户信息开始");
     List<String> headers = TenpayHeaders.getHeaders(3);
     // 直接删除旧表创建新表
-    String newFileId =
-        createLogicAndDeleteOld("财付通-开户信息", modelId, headers, mongoTemplate, fileService);
     List<Fields> matched = matchHeaders(originFields, headers);
     if (CollectionUtils.isNotEmpty(matched)) {
+      String newFileId =
+          createLogicAndDeleteOld("财付通-开户信息", modelId, headers, mongoTemplate, fileService);
       for (Fields fields : matched) {
         String fileId = fields.getFileId();
         MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);

+ 3 - 2
src/main/java/ieven/server/webapp/service/tenpay/TenpayMobile.java

@@ -42,10 +42,11 @@ public class TenpayMobile extends Ops implements Runnable {
     log.info("财付通-手机明细开始");
     List<String> headers = TenpayHeaders.getHeaders(4);
     // 直接删除旧表创建新表
-    String newFileId =
-        createLogicAndDeleteOld("财付通-手机明细", modelId, headers, mongoTemplate, fileService);
+
     List<Fields> matched = matchHeaders(originFields, headers);
     if (CollectionUtils.isNotEmpty(matched)) {
+      String newFileId =
+          createLogicAndDeleteOld("财付通-手机明细", modelId, headers, mongoTemplate, fileService);
       for (Fields fields : matched) {
         String fileId = fields.getFileId();
         MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);

+ 14 - 2
src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders.java

@@ -8,6 +8,7 @@ import ieven.server.webapp.domain.tenpay.TenpayHeaders;
 import ieven.server.webapp.service.Ops;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
 
@@ -43,10 +44,11 @@ public class TenpayOrders extends Ops implements Runnable {
     log.info("财付通-订单明细开始");
     List<String> headers = TenpayHeaders.getHeaders(1);
     // 直接删除旧表创建新表
-    String newFileId =
-        createLogicAndDeleteOld("财付通-订单明细", modelId, headers, mongoTemplate, fileService);
+
     List<Fields> matched = matchHeaders(originFields, headers);
     if (CollectionUtils.isNotEmpty(matched)) {
+      String newFileId =
+          createLogicAndDeleteOld("财付通-订单明细", modelId, headers, mongoTemplate, fileService);
       for (Fields fields : matched) {
         String fileId = fields.getFileId();
         MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
@@ -56,6 +58,16 @@ public class TenpayOrders extends Ops implements Runnable {
           originDoc = cursor.next();
           // 拷贝到新的
           DataMap newDoc = initWithOrigin(originDoc, newFileId);
+          String s = (String) newDoc.get("用户ID");
+          if (StringUtils.isNotBlank(s) && s.contains("[")) {
+            s = s.replace("[", "").replace("]", "");
+            newDoc.put("用户ID", s);
+          }
+          String s2 = (String) newDoc.get("交易单号");
+          if (StringUtils.isNotBlank(s2) && s2.contains("[")) {
+            s2 = s2.replace("[", "").replace("]", "");
+            newDoc.put("交易单号", s2);
+          }
           needToSave.add(newDoc);
           if (needToSave.size() >= 1000) {
             saveLines(new ArrayList<>(needToSave), mongoTemplate);

+ 83 - 65
src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java

@@ -6,7 +6,7 @@ import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.domain.tenpay.TenpayHeaders;
 import ieven.server.webapp.service.Ops;
-import ieven.server.webapp.util.DataUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -17,6 +17,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class TenpayTrades extends Ops implements Runnable {
   MongoTemplate mongoTemplate;
   String modelId;
@@ -41,82 +42,99 @@ public class TenpayTrades extends Ops implements Runnable {
 
   @Override
   public void run() {
-    String antiSecurityFileId =
-        createLogicAndDeleteOld(
-            "财付通-交易明细", modelId, TenpayHeaders.getHeaders(2), mongoTemplate, fileService);
+    log.info("财付通-交易明细开始");
+    String antiSecurityFileId = "";
+
     String dateFileId = getFileId("财付通-订单明细", modelId, mongoTemplate);
     // 遍历登录日志全表
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    Document origin;
-    List<DataMap> needToSave = new ArrayList<>(1000);
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      DataMap dataMap = new DataMap();
-      dataMap.put("fileId", antiSecurityFileId);
-      dataMap.put("用户ID", origin.getString("用户ID").replace("[", "").replace("]", ""));
-      dataMap.put("交易单号", origin.getString("交易单号").replace("[", "").replace("]", ""));
-      String flag = origin.getString("借贷类型");
-      if ("出".equals(flag)) {
-        dataMap.put("交易主体账号", "");
-        dataMap.put("交易主体银行卡号", "");
-        dataMap.put("交易主体银行名称", origin.getString("商户名称"));
-        dataMap.put("交易主体户名", origin.getString("发送方"));
-        dataMap.put("交易对手账号", "");
-        dataMap.put("交易对手银行卡号", origin.getString("银行卡号"));
-        dataMap.put("交易对手银行名称", "");
-        dataMap.put("交易对手户名", origin.getString("接收方"));
-      }
-      if ("入".equals(flag)) {
-        dataMap.put("交易主体账号", origin.getString(""));
-        dataMap.put("交易主体银行卡号", origin.getString(""));
-        dataMap.put("交易主体银行名称", origin.getString(""));
-        dataMap.put("交易主体户名", origin.getString("接收方"));
+    if (StringUtils.isNotBlank(dateFileId)) {
 
-        dataMap.put("交易对手账号", origin.getString("付款支付账号"));
-        dataMap.put("交易对手银行卡号", origin.getString("付款银行卡号"));
-        dataMap.put("交易对手银行名称", origin.getString("付款银行卡银行名称"));
-        dataMap.put("交易对手户名", "");
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        antiSecurityFileId =
+            createLogicAndDeleteOld(
+                "财付通-交易明细", modelId, TenpayHeaders.getHeaders(2), mongoTemplate, fileService);
       }
+      Document origin;
+      List<DataMap> needToSave = new ArrayList<>(1000);
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        DataMap dataMap = new DataMap();
+        dataMap.put("fileId", antiSecurityFileId);
+        dataMap.put("用户ID", origin.getString("用户ID").replace("[", "").replace("]", ""));
+        dataMap.put("交易单号", origin.getString("交易单号").replace("[", "").replace("]", ""));
+        String flag = origin.getString("借贷类型");
+        if ("出".equals(flag)) {
+          dataMap.put("交易主体账号", accountToName.getOrDefault(origin.getString("发送方"), ""));
+          dataMap.put("交易主体银行卡号", "");
+          dataMap.put("交易主体银行名称", origin.getString("商户名称"));
+          dataMap.put("交易主体户名", origin.getString("发送方"));
+          dataMap.put("交易对手账号", accountToName.getOrDefault(origin.getString("接收方"), ""));
+          dataMap.put("交易对手银行卡号", origin.getString("银行卡号"));
+          dataMap.put("交易对手银行名称", "");
+          dataMap.put("交易对手户名", origin.getString("接收方"));
+        }
+        if ("入".equals(flag)) {
+          dataMap.put("交易主体账号", accountToName.getOrDefault(origin.getString("接收方"), ""));
+          dataMap.put("交易主体银行卡号", origin.getString(""));
+          dataMap.put("交易主体银行名称", origin.getString(""));
+          dataMap.put("交易主体户名", origin.getString("接收方"));
+
+          dataMap.put("交易对手账号", accountToName.getOrDefault(origin.getString("发送方"), ""));
+          dataMap.put("交易对手银行卡号", "");
+          dataMap.put("交易对手银行名称", "");
+          dataMap.put("交易对手户名", origin.getString("发送方"));
+        }
 
-      dataMap.put("借贷类型", flag);
-      dataMap.put("交易类型", origin.getString("交易类型"));
-      dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
-      dataMap.put("交易金额(元)", NumberUtil.roundStr(origin.getString("交易金额(分)"), 2));
-      dataMap.put("账户余额(元)", NumberUtil.roundStr(origin.getString("账户余额(分)"), 2));
-      dataMap.put("银行类型", origin.getString("银行类型"));
-      dataMap.put("交易说明", origin.getString("交易说明"));
-      dataMap.put("网银联单号1", origin.getString("网银联单号1"));
-      dataMap.put("网银联单号2", origin.getString("网银联单号2"));
+        dataMap.put("借贷类型", flag);
+        dataMap.put("交易类型", origin.getString("交易类型"));
+        dataMap.put("交易时间", origin.getString("交易时间"));
+        String string5 = origin.getString("交易金额(分)");
+        dataMap.put(
+            "交易金额(元)",
+            NumberUtil.roundStr(
+                NumberUtil.div(string5 == null ? "0" : string5, "100").doubleValue(), 2));
+        String string6 = origin.getString("账户余额(分)");
+        dataMap.put(
+            "账户余额(元)",
+            NumberUtil.roundStr(
+                NumberUtil.div(string6 == null ? "0" : string6, "100").doubleValue(), 2));
+        dataMap.put("银行类型", origin.getString("银行类型"));
+        dataMap.put("交易说明", origin.getString("交易说明"));
+        dataMap.put("网银联单号1", origin.getString("网银联单号1"));
+        dataMap.put("网银联单号2", origin.getString("网银联单号2"));
 
-      if ("".equals(dataMap.get("交易主体户名"))) {
-        String account = (String) dataMap.getOrDefault("交易主体账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易主体户名", newName);
+        if ("".equals(dataMap.get("交易主体户名"))) {
+          String account = (String) dataMap.getOrDefault("交易主体账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易主体户名", newName);
+            }
           }
         }
-      }
-      if ("".equals(dataMap.get("交易对手户名"))) {
-        String account = (String) dataMap.getOrDefault("交易对手账号", "");
-        if (StringUtils.isBlank(account) || "-".equals(account)) {
-        } else {
-          String newName = accountToName.getOrDefault(account, "");
-          if (StringUtils.isNotBlank(newName)) {
-            dataMap.put("交易对手户名", newName);
+        if ("".equals(dataMap.get("交易对手户名"))) {
+          String account = (String) dataMap.getOrDefault("交易对手账号", "");
+          if (StringUtils.isBlank(account) || "-".equals(account)) {
+          } else {
+            String newName = accountToName.getOrDefault(account, "");
+            if (StringUtils.isNotBlank(newName)) {
+              dataMap.put("交易对手户名", newName);
+            }
           }
         }
+        needToSave.add(dataMap);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
       }
-      needToSave.add(dataMap);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      if (CollectionUtils.isNotEmpty(needToSave)) {
+        saveLines(needToSave, mongoTemplate);
       }
     }
-    if (CollectionUtils.isNotEmpty(needToSave)) {
-      saveLines(needToSave, mongoTemplate);
-    }
-    this.latch = latch;
+    this.latch.countDown();
+    log.info("财付通-交易明细结束");
   }
 }

+ 15 - 12
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesEndAnalysis.java

@@ -45,17 +45,20 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
   public void run() {
     log.info("财付通-对手透视开始");
     // 直接删除并创建表
-    String newFileId =
-        createLogicAndDeleteOld(
-            "财付通-对手透视",
-            modelId,
-            headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
-            mongoTemplate,
-            fileService);
+    String newFileId = "";
     String dateFileId = getFileId("财付通-交易明细", modelId, mongoTemplate);
     // 插入记录用户后续查询明细
-    insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
     MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+    if (cursor.hasNext()) {
+      newFileId =
+          createLogicAndDeleteOld(
+              "财付通-对手透视",
+              modelId,
+              headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
+              mongoTemplate,
+              fileService);
+      insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
+    }
     Set<String> alipayIds = new HashSet<>();
     Map<String, DataMap> idToData = new HashMap<>();
     Map<String, Set<String>> idToMainIds = new HashMap<>();
@@ -96,17 +99,17 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
           idToNames.put(alipayId, names);
         }
       }
-      String flag = "交易主体的出入账标识";
+      String flag = "借贷类型";
       String flagValue = origin.getString(flag);
-      String money = (String) origin.get("交易金额");
-      if ("入".equals(flagValue)) {
+      String money = (String) origin.get("交易金额(元)");
+      if ("入".equals(flagValue)) {
         BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
         oMoney = oMoney.add(new BigDecimal(money));
         dataMap.put("交易主体收入金额", oMoney);
         int oCount = (int) dataMap.get("交易主体收入笔数");
         oCount++;
         dataMap.put("交易主体收入笔数", oCount);
-      } else if ("出".equals(flagValue)) {
+      } else if ("出".equals(flagValue)) {
         BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
         oMoney = oMoney.add(new BigDecimal(money));
         dataMap.put("交易主体支出金额", oMoney);

+ 85 - 77
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesScaleAnalysis.java

@@ -43,93 +43,101 @@ public class TenpayTradesScaleAnalysis extends Ops implements Runnable {
   public void run() {
     log.info("财付通-账户透视开始");
     // 直接删除并创建表
-    String newFileId =
-        createLogicAndDeleteOld(
-            "财付通-账户透视",
-            modelId,
-            headerProperties.getAntiSecurityTradeScaleAnalysisOutput(),
-            mongoTemplate,
-            fileService);
+    String newFileId = "";
     String dateFileId = getFileId("财付通-交易明细", modelId, mongoTemplate);
     // 插入记录用户后续查询明细
-    insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
-    MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    Set<String> alipayIds = new HashSet<>();
-    Map<String, DataMap> idToData = new HashMap<>();
-    Map<String, Set<String>> idToNames = new HashMap<>();
-    Document origin;
-    while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("交易主体账号");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("交易主体账号", alipayId);
-        dataMap.put("交易主体户名", "");
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("收入金额", new BigDecimal("0.00"));
-        dataMap.put("支出金额", new BigDecimal("0.00"));
-        dataMap.put("收入笔数", 0);
-        dataMap.put("支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        idToData.put(alipayId, dataMap);
+    if (StringUtils.isNotBlank(dateFileId)) {
+      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+      if (cursor.hasNext()) {
+        newFileId =
+            createLogicAndDeleteOld(
+                "财付通-账户透视",
+                modelId,
+                headerProperties.getAntiSecurityTradeScaleAnalysisOutput(),
+                mongoTemplate,
+                fileService);
+        insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
       }
-      String alipayUsername = origin.getString("交易主体户名");
-      if (StringUtils.isNotBlank(alipayUsername)) {
-        Set<String> namesSet;
-        if (idToNames.containsKey(alipayId)) {
-          namesSet = idToNames.get(alipayId);
+      Set<String> alipayIds = new HashSet<>();
+      Map<String, DataMap> idToData = new HashMap<>();
+      Map<String, Set<String>> idToNames = new HashMap<>();
+      Document origin;
+      while (cursor.hasNext()) {
+        origin = cursor.next();
+        String alipayId = origin.getString("交易主体账号");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
         } else {
-          namesSet = new HashSet<>();
-          idToNames.put(alipayId, namesSet);
+          alipayIds.add(alipayId);
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("交易主体账号", alipayId);
+          dataMap.put("交易主体户名", "");
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("收入金额", new BigDecimal("0.00"));
+          dataMap.put("支出金额", new BigDecimal("0.00"));
+          dataMap.put("收入笔数", 0);
+          dataMap.put("支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          idToData.put(alipayId, dataMap);
+        }
+        String alipayUsername = origin.getString("交易主体户名");
+        if (StringUtils.isNotBlank(alipayUsername)) {
+          Set<String> namesSet;
+          if (idToNames.containsKey(alipayId)) {
+            namesSet = idToNames.get(alipayId);
+          } else {
+            namesSet = new HashSet<>();
+            idToNames.put(alipayId, namesSet);
+          }
+          namesSet.add(alipayUsername);
+        }
+        String flag = "借贷类型";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("交易金额(元)");
+        if ("入".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("收入金额", oMoney);
+          int oCount = (int) dataMap.get("收入笔数");
+          oCount++;
+          dataMap.put("收入笔数", oCount);
+        } else if ("出".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("支出金额", oMoney);
+          int oCount = (int) dataMap.get("支出笔数");
+          oCount++;
+          dataMap.put("支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
+        if (oMoney == null) {
+          oMoney = new BigDecimal(0);
         }
-        namesSet.add(alipayUsername);
-      }
-      String flag = "交易主体的出入账标识";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("交易金额");
-      if ("入账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("收入金额", oMoney);
-        int oCount = (int) dataMap.get("收入笔数");
-        oCount++;
-        dataMap.put("收入笔数", oCount);
-      } else if ("出账".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("支出金额", oMoney);
-        int oCount = (int) dataMap.get("支出笔数");
+        dataMap.put("交易总额", oMoney);
+        int oCount = (int) dataMap.get("总笔数");
         oCount++;
-        dataMap.put("支出笔数", oCount);
+        dataMap.put("总笔数", oCount);
       }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-    }
-    if (CollectionUtils.isNotEmpty(idToData.values())) {
-      for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-        DataMap dataMap = entry.getValue();
-        BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
-        dataMap.put("交易总额", money1.doubleValue());
-        BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
-        dataMap.put("收入金额", money2.doubleValue());
-        BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
-        dataMap.put("支出金额", money3.doubleValue());
-        String id = (String) dataMap.get("交易主体账号");
-        Set<String> namesSet = idToNames.get(id);
-        if (CollectionUtils.isNotEmpty(namesSet)) {
-          dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
+      if (CollectionUtils.isNotEmpty(idToData.values())) {
+        for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+          DataMap dataMap = entry.getValue();
+          BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
+          dataMap.put("交易总额", money1.doubleValue());
+          BigDecimal money2 = (BigDecimal) dataMap.get("收入金额");
+          dataMap.put("收入金额", money2.doubleValue());
+          BigDecimal money3 = (BigDecimal) dataMap.get("支出金额");
+          dataMap.put("支出金额", money3.doubleValue());
+          String id = (String) dataMap.get("交易主体账号");
+          Set<String> namesSet = idToNames.get(id);
+          if (CollectionUtils.isNotEmpty(namesSet)) {
+            dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
+          }
         }
+        saveLines(idToData.values(), "交易总额", mongoTemplate);
       }
-      saveLines(idToData.values(), "交易总额", mongoTemplate);
     }
     latch.countDown();
     log.info("财付通-账户透视结束");

+ 68 - 65
src/main/java/ieven/server/webapp/util/DataUtils.java

@@ -5,6 +5,8 @@
 
 package ieven.server.webapp.util;
 
+import org.apache.commons.lang3.StringUtils;
+
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -12,87 +14,88 @@ import java.util.Date;
 import java.util.Locale;
 
 public class DataUtils {
-    public DataUtils() {
-    }
+  public DataUtils() {}
 
-    public static String currentDate() {
-        return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date());
-    }
+  public static String currentDate() {
+    return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date());
+  }
 
-    public static String getDate(Date date) {
-        return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
-    }
+  public static String getDate(Date date) {
+    return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
+  }
 
-    public static Date transferData(String str) {
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date date = null;
+  public static Date transferData(String str) {
+    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    Date date = null;
 
-        try {
-            date = format.parse(str);
-            return date;
-        } catch (ParseException var4) {
-            return null;
-        }
+    try {
+      date = format.parse(str);
+      return date;
+    } catch (ParseException var4) {
+      return null;
     }
+  }
 
-    public static String transferDateToStr(String str) {
-        String resultString = null;
-
-        try {
-            Calendar cldCalendar = convToCalender(str, "yyyyMMddhhmmss");
-            resultString = convToString(cldCalendar, "yyyy-MM-dd HH:mm:ss");
-        } catch (Exception var3) {
-            var3.printStackTrace();
-        }
-
-        return resultString;
+  public static String transferDateToStr(String str) {
+    if (StringUtils.isBlank(str)) {
+      return null;
+    }
+    String resultString = null;
+    try {
+      Calendar cldCalendar = convToCalender(str, "yyyyMMddhhmmss");
+      resultString = convToString(cldCalendar, "yyyy-MM-dd HH:mm:ss");
+    } catch (Exception var3) {
+      var3.printStackTrace();
     }
 
-    public static Calendar convToCalender(String str, String template) {
-        Calendar cltResult = Calendar.getInstance();
-        SimpleDateFormat sdf = new SimpleDateFormat(template, Locale.getDefault());
+    return resultString;
+  }
 
-        try {
-            Date date = sdf.parse(str);
-            cltResult.setTime(date);
-        } catch (Exception var6) {
-            var6.printStackTrace();
-        }
+  public static Calendar convToCalender(String str, String template) {
+    Calendar cltResult = Calendar.getInstance();
+    SimpleDateFormat sdf = new SimpleDateFormat(template, Locale.getDefault());
 
-        return cltResult;
+    try {
+      Date date = sdf.parse(str);
+      cltResult.setTime(date);
+    } catch (Exception var6) {
+      var6.printStackTrace();
     }
 
-    public static String convToString(Calendar cld, String template) {
-        String resultString = null;
+    return cltResult;
+  }
 
-        try {
-            Date date = cld.getTime();
-            SimpleDateFormat sdf = new SimpleDateFormat(template, Locale.getDefault());
-            resultString = sdf.format(date);
-        } catch (Exception var5) {
-            var5.printStackTrace();
-        }
+  public static String convToString(Calendar cld, String template) {
+    String resultString = null;
 
-        return resultString;
+    try {
+      Date date = cld.getTime();
+      SimpleDateFormat sdf = new SimpleDateFormat(template, Locale.getDefault());
+      resultString = sdf.format(date);
+    } catch (Exception var5) {
+      var5.printStackTrace();
     }
 
-    public static String getDateFront(String str) {
-        Date date = transferData(str);
-        if (date != null) {
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            return format.format(date);
-        } else {
-            return "";
-        }
-    }
+    return resultString;
+  }
 
-    public static String getDateEnd(String str) {
-        Date date = transferData(str);
-        if (date != null) {
-            SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
-            return format.format(date);
-        } else {
-            return "";
-        }
+  public static String getDateFront(String str) {
+    Date date = transferData(str);
+    if (date != null) {
+      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+      return format.format(date);
+    } else {
+      return "";
+    }
+  }
+
+  public static String getDateEnd(String str) {
+    Date date = transferData(str);
+    if (date != null) {
+      SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
+      return format.format(date);
+    } else {
+      return "";
     }
+  }
 }

+ 1 - 1
src/main/resources/application.properties

@@ -1,6 +1,6 @@
 spring.application.name=webapp
 #spring.data.mongodb.uri=mongodb://admin:123456@localhost:27017/ieven
-spring.data.mongodb.uri=mongodb://localhost:28000/user_model
+spring.data.mongodb.uri=mongodb://localhost:27017/user_model
 #spring.data.mongodb.database=idata
 #spring.data.mongodb.host=localhost
 #spring.data.mongodb.port=27017

+ 1 - 1
src/main/resources/static/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><meta http-equiv=X-UA-Compatible content="IE=edge"><title>追迹者-资金清洗研判系统</title><link href=/static/css/app.cebd9798414b29c56244a88705a4294b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.d900925bd9e3bb4c8ffa.js></script><script type=text/javascript src=/static/js/vendor.42772dae5162b9fc0eb1.js></script><script type=text/javascript src=/static/js/app.ff3280cae4cb3e62e61a.js></script></body></html>
+<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><meta http-equiv=X-UA-Compatible content="IE=edge"><title>追迹者-资金清洗研判系统</title><link href=/static/css/app.3986304a6058797e22d1ddfc282a956b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.9d10e7f53562cf0b22dc.js></script><script type=text/javascript src=/static/js/vendor.5ade341cd54c26914783.js></script><script type=text/javascript src=/static/js/app.3ae5c994cfbc337146c8.js></script></body></html>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/css/app.3986304a6058797e22d1ddfc282a956b.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/css/app.cebd9798414b29c56244a88705a4294b.css


BIN
src/main/resources/static/static/img/bg.b911eb2.png


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/1.67a628162816c1b0df6a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/1.8e5f733f1d9c752ea4a5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/2.8493d34aa9431b0bd522.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/2.b348e2b42c9ca1ba2ca6.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/3.2f8a46d076fbc01d600b.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/4.39c9dbc30edffe32bf3a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/4.a0e40e116588d47ccbba.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/5.fcdf29e69e4f873cdb10.js


+ 1 - 1
src/main/resources/static/static/js/5.a704aa2e93c17e6a2771.js → src/main/resources/static/static/js/6.45ae0f0f221919860a05.js

@@ -1 +1 @@
-webpackJsonp([5],{"3DAu":function(n,t,e){var r=e("JrHz");"string"==typeof r&&(r=[[n.i,r,""]]),r.locals&&(n.exports=r.locals);e("rjj0")("4e69fa9a",r,!0,{})},JrHz:function(n,t,e){t=n.exports=e("FZ+f")(!1),t.push([n.i,"\n.cm-container {\n    width: 100%;\n    height: calc(100vh - 100px);\n    padding: 5px 0;\n    overflow-y: auto;\n}\n",""])},oYzN:function(n,t,e){"use strict";function r(n){e("3DAu")}Object.defineProperty(t,"__esModule",{value:!0});var o={data:function(){return{type:"analyse"}},mounted:function(){}},a=function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"cm-container"},[e("transition",{attrs:{mode:"out-in"}},[e("router-view")],1)],1)},i=[],c={render:a,staticRenderFns:i},u=c,s=e("VU/8"),l=r,f=s(o,u,!1,l,null,null);t.default=f.exports}});
+webpackJsonp([6],{"3DAu":function(n,t,e){var r=e("JrHz");"string"==typeof r&&(r=[[n.i,r,""]]),r.locals&&(n.exports=r.locals);e("rjj0")("6d8665e8",r,!0,{})},JrHz:function(n,t,e){t=n.exports=e("FZ+f")(!1),t.push([n.i,"\n.cm-container {\n    width: 100%;\n    height: calc(100vh - 100px);\n    padding: 5px 0;\n    overflow-y: auto;\n}\n",""])},oYzN:function(n,t,e){"use strict";function r(n){e("3DAu")}Object.defineProperty(t,"__esModule",{value:!0});var o={data:function(){return{type:"analyse"}},mounted:function(){}},i=function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"cm-container"},[e("transition",{attrs:{mode:"out-in"}},[e("router-view")],1)],1)},a=[],c={render:i,staticRenderFns:a},u=c,s=e("VU/8"),l=r,d=s(o,u,!1,l,null,null);t.default=d.exports}});

+ 0 - 1
src/main/resources/static/static/js/6.824dbefd6ffc8faa9e2c.js

@@ -1 +0,0 @@
-webpackJsonp([6],{"0AeZ":function(n,t,e){t=n.exports=e("FZ+f")(!1),t.push([n.i,"\n.container-404[data-v-4b136946] {\n    text-align: center;\n    width: 100%;\n    padding: 50px 30px;\n}\n.wrap404[data-v-4b136946] {\n    height: 480px;\n    width: 800px;\n    border: 15px solid #e6e6e6;\n    margin: 0 auto;\n    padding: 30px 20px;\n    border-radius: 10px;\n    color: #000;\n    font-weight: 600;\n    font-size: 20px;\n    -webkit-box-shadow: inset 2px 2px 1px 1px #d5d5d5,\n        inset -2px -2px 1px 1px #d5d5d5, 2px 2px 1px 1px #d5d5d5,\n        -2px -2px 1px 1px #d5d5d5;\n    background-color: #032d58;\n}\n.wrap404 .title[data-v-4b136946] {\n    text-shadow: 5px 1px 6px rgb(241, 232, 222);\n    margin-top: 40px;\n    color: lightblue;\n}\n.wrap404 .link[data-v-4b136946] {\n    text-shadow: 5px 1px 6px green;\n    text-decoration: underline;\n    margin-top: 20px;\n}\n.wrap404 .title404[data-v-4b136946] {\n    text-shadow: 5px 1px 6px #f93;\n    font-weight: 800;\n    font-size: 120px;\n    color: #d42f09;\n    margin-top: 30px;\n}\n\n",""])},FNfY:function(n,t,e){"use strict";function a(n){e("X7YA")}Object.defineProperty(t,"__esModule",{value:!0});var p={mounted:function(){console.log("数据分析系统")}},i=function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"container-404"},[e("div",{staticClass:"wrap404"},[e("h1",{staticClass:"title"},[n._v("页面不存在")]),n._v(" "),e("router-link",{attrs:{to:"/"}},[e("span",{staticClass:"link"},[n._v("首 页")])]),n._v(" "),e("h1",{staticClass:"title404"},[n._v("404")])],1)])},o=[],x={render:i,staticRenderFns:o},r=x,d=e("VU/8"),s=a,l=d(p,r,!1,s,"data-v-4b136946",null);t.default=l.exports},X7YA:function(n,t,e){var a=e("0AeZ");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);e("rjj0")("f0c2384a",a,!0,{})}});

+ 1 - 0
src/main/resources/static/static/js/7.14c6d691c1c10a72d1dd.js

@@ -0,0 +1 @@
+webpackJsonp([7],{D31M:function(n,t,a){var e=a("UB9S");"string"==typeof e&&(e=[[n.i,e,""]]),e.locals&&(n.exports=e.locals);a("rjj0")("37c34406",e,!0,{})},FNfY:function(n,t,a){"use strict";function e(n){a("D31M")}Object.defineProperty(t,"__esModule",{value:!0});var p={mounted:function(){console.log("数据分析系统111")}},i=function(){var n=this,t=n.$createElement,a=n._self._c||t;return a("div",{staticClass:"container-404"},[a("div",{staticClass:"wrap404"},[a("h1",{staticClass:"title"},[n._v("页面不存在")]),n._v(" "),a("router-link",{attrs:{to:"/"}},[a("span",{staticClass:"link"},[n._v("首 页")])]),n._v(" "),a("h1",{staticClass:"title404"},[n._v("404")])],1)])},o=[],x={render:i,staticRenderFns:o},r=x,d=a("VU/8"),s=e,c=d(p,r,!1,s,"data-v-71b4c4a4",null);t.default=c.exports},UB9S:function(n,t,a){t=n.exports=a("FZ+f")(!1),t.push([n.i,"\n.container-404[data-v-71b4c4a4] {\n    text-align: center;\n    width: 100%;\n    padding: 50px 30px;\n}\n.wrap404[data-v-71b4c4a4] {\n    height: 480px;\n    width: 800px;\n    border: 15px solid #e6e6e6;\n    margin: 0 auto;\n    padding: 30px 20px;\n    border-radius: 10px;\n    color: #000;\n    font-weight: 600;\n    font-size: 20px;\n    -webkit-box-shadow: inset 2px 2px 1px 1px #d5d5d5,\n        inset -2px -2px 1px 1px #d5d5d5, 2px 2px 1px 1px #d5d5d5,\n        -2px -2px 1px 1px #d5d5d5;\n    background-color: #032d58;\n}\n.wrap404 .title[data-v-71b4c4a4] {\n    text-shadow: 5px 1px 6px rgb(241, 232, 222);\n    margin-top: 40px;\n    color: lightblue;\n}\n.wrap404 .link[data-v-71b4c4a4] {\n    text-shadow: 5px 1px 6px green;\n    text-decoration: underline;\n    margin-top: 20px;\n}\n.wrap404 .title404[data-v-71b4c4a4] {\n    text-shadow: 5px 1px 6px #f93;\n    font-weight: 800;\n    font-size: 120px;\n    color: #d42f09;\n    margin-top: 30px;\n}\n\n",""])}});

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/7.c3e477be9b296cf9cb64.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/8.5e9c34acc2267e2a08c4.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/app.3ae5c994cfbc337146c8.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/app.ff3280cae4cb3e62e61a.js


+ 1 - 0
src/main/resources/static/static/js/manifest.9d10e7f53562cf0b22dc.js

@@ -0,0 +1 @@
+!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var f,i,u,d=0,s=[];d<t.length;d++)i=t[d],o[i]&&s.push(o[i][0]),o[i]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(r&&r(t,c,a);s.length;)s.shift()();if(a)for(d=0;d<a.length;d++)u=n(n.s=a[d]);return u};var t={},o={11:0};n.e=function(e){function r(){f.onerror=f.onload=null,clearTimeout(i);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.timeout=12e4,n.nc&&f.setAttribute("nonce",n.nc),f.src=n.p+"static/js/"+({0:"vendor-async"}[e]||e)+"."+{0:"faf63e3ae26f0c7c5766",1:"67a628162816c1b0df6a",2:"b348e2b42c9ca1ba2ca6",3:"2f8a46d076fbc01d600b",4:"39c9dbc30edffe32bf3a",5:"fcdf29e69e4f873cdb10",6:"45ae0f0f221919860a05",7:"14c6d691c1c10a72d1dd",8:"5e9c34acc2267e2a08c4"}[e]+".js";var i=setTimeout(r,12e4);return f.onerror=f.onload=r,a.appendChild(f),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="/",n.oe=function(e){throw console.error(e),e}}([]);

+ 0 - 1
src/main/resources/static/static/js/manifest.d900925bd9e3bb4c8ffa.js

@@ -1 +0,0 @@
-!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,a,c){for(var f,i,u,s=0,d=[];s<t.length;s++)i=t[s],o[i]&&d.push(o[i][0]),o[i]=0;for(f in a)Object.prototype.hasOwnProperty.call(a,f)&&(e[f]=a[f]);for(r&&r(t,a,c);d.length;)d.shift()();if(c)for(s=0;s<c.length;s++)u=n(n.s=c[s]);return u};var t={},o={10:0};n.e=function(e){function r(){f.onerror=f.onload=null,clearTimeout(i);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var a=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=a;var c=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.timeout=12e4,n.nc&&f.setAttribute("nonce",n.nc),f.src=n.p+"static/js/"+({0:"vendor-async"}[e]||e)+"."+{0:"f97ed98272f8cf46d635",1:"8e5f733f1d9c752ea4a5",2:"8493d34aa9431b0bd522",3:"8124a69fbfe430b4050f",4:"a0e40e116588d47ccbba",5:"a704aa2e93c17e6a2771",6:"824dbefd6ffc8faa9e2c",7:"c3e477be9b296cf9cb64"}[e]+".js";var i=setTimeout(r,12e4);return f.onerror=f.onload=r,c.appendChild(f),a},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="/",n.oe=function(e){throw console.error(e),e}}([]);

+ 1 - 1
src/main/resources/static/static/js/vendor-async.f97ed98272f8cf46d635.js → src/main/resources/static/static/js/vendor-async.faf63e3ae26f0c7c5766.js

@@ -1 +1 @@
-webpackJsonp([0],{"Nym/":function(n,e,t){e=n.exports=t("FZ+f")(!1),e.push([n.i,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* 分页 */\n.alignItem[data-v-051746fc] {\n    padding: 5px;\n    text-align: center;\n}\n.casepage[data-v-051746fc] {\n    background-color: #032d58;\n}\n",""])},UvCS:function(n,e,t){var a=t("Nym/");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);t("rjj0")("25aee9ce",a,!0,{})},cMGX:function(n,e,t){"use strict";function a(n){t("UvCS")}var i=t("Dd8w"),r=t.n(i),s={props:{dataList:{type:Object,required:!0},upParam:{type:Object,default:{page:1,pageSize:20}},simple:{type:Boolean,default:!1}},data:function(){return{pageSizes:this.$store.getters.getpageSizes,layoutStr1:"total, sizes, prev, pager, next, jumper",layoutStr2:"total, prev, pager, next"}},watch:{},computed:{pageLabel:function(){}},mounted:function(){},methods:{handleSizeChange:function(n){console.log("come in");var e=r()({},this.upParam);e.page=1,e.pageSize=n,this.$store.commit("set_current_temp_pagesize",n),this.$emit("loadMethod",e)},handleCurrentChange:function(n){var e=r()({},this.upParam);e.pageSize=this.$store.getters.getTpagesize,e.page=n,this.$emit("loadMethod",e)}}},o=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"alignItem casepage"},[t("el-pagination",{attrs:{"current-page":n.dataList.page,"page-size":n.dataList.pageSize,"page-sizes":n.pageSizes,layout:n.simple?n.layoutStr2:n.layoutStr1,total:n.dataList.total},on:{"size-change":n.handleSizeChange,"current-change":n.handleCurrentChange,"update:currentPage":function(e){n.$set(n.dataList,"page",e)}}})],1)},p=[],c={render:o,staticRenderFns:p},g=c,u=t("VU/8"),l=a,d=u(s,g,!1,l,"data-v-051746fc",null);e.a=d.exports}});
+webpackJsonp([0],{"Nym/":function(n,e,t){e=n.exports=t("FZ+f")(!1),e.push([n.i,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* 分页 */\n.alignItem[data-v-051746fc] {\n    padding: 5px;\n    text-align: center;\n}\n.casepage[data-v-051746fc] {\n    background-color: #032d58;\n}\n",""])},UvCS:function(n,e,t){var a=t("Nym/");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);t("rjj0")("ddc5ebce",a,!0,{})},cMGX:function(n,e,t){"use strict";function a(n){t("UvCS")}var i=t("Dd8w"),r=t.n(i),s={props:{dataList:{type:Object,required:!0},upParam:{type:Object,default:{page:1,pageSize:20}},simple:{type:Boolean,default:!1}},data:function(){return{pageSizes:this.$store.getters.getpageSizes,layoutStr1:"total, sizes, prev, pager, next, jumper",layoutStr2:"total, prev, pager, next"}},watch:{},computed:{pageLabel:function(){}},mounted:function(){},methods:{handleSizeChange:function(n){console.log("come in");var e=r()({},this.upParam);e.page=1,e.pageSize=n,this.$store.commit("set_current_temp_pagesize",n),this.$emit("loadMethod",e)},handleCurrentChange:function(n){var e=r()({},this.upParam);e.pageSize=this.$store.getters.getTpagesize,e.page=n,this.$emit("loadMethod",e)}}},o=function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"alignItem casepage"},[t("el-pagination",{attrs:{"current-page":n.dataList.page,"page-size":n.dataList.pageSize,"page-sizes":n.pageSizes,layout:n.simple?n.layoutStr2:n.layoutStr1,total:n.dataList.total},on:{"size-change":n.handleSizeChange,"current-change":n.handleCurrentChange,"update:currentPage":function(e){return n.$set(n.dataList,"page",e)},"update:current-page":function(e){return n.$set(n.dataList,"page",e)}}})],1)},p=[],c={render:o,staticRenderFns:p},g=c,u=t("VU/8"),l=a,d=u(s,g,!1,l,"data-v-051746fc",null);e.a=d.exports}});

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/vendor.42772dae5162b9fc0eb1.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
src/main/resources/static/static/js/vendor.5ade341cd54c26914783.js


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác