瀏覽代碼

增加财付通-商户订单

hankunkun 7 月之前
父節點
當前提交
034ea5224b
共有 58 個文件被更改,包括 1350 次插入392 次删除
  1. 10 0
      pom.xml
  2. 81 55
      src/main/java/ieven/server/webapp/api/AlipayController.java
  3. 5 0
      src/main/java/ieven/server/webapp/domain/alipay/AlipayHeaders.java
  4. 5 1
      src/main/java/ieven/server/webapp/domain/exporter/Exporter.java
  5. 50 42
      src/main/java/ieven/server/webapp/domain/file/FileService.java
  6. 10 2
      src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java
  7. 2 2
      src/main/java/ieven/server/webapp/infrastructure/InitDB.java
  8. 7 0
      src/main/java/ieven/server/webapp/service/FieldsService.java
  9. 16 0
      src/main/java/ieven/server/webapp/service/Ops.java
  10. 210 0
      src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_ACCOUNT_JZY.java
  11. 1 0
      src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_LOGIN.java
  12. 1 0
      src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRADE.java
  13. 15 11
      src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER_JZY.java
  14. 5 2
      src/main/java/ieven/server/webapp/service/alipay/AlipayService.java
  15. 2 1
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeEndAnalysis.java
  16. 2 1
      src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeScaleAnalysis.java
  17. 19 4
      src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java
  18. 118 104
      src/main/java/ieven/server/webapp/service/alipay/ScaleAnalysis.java
  19. 6 3
      src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.java
  20. 42 10
      src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysis.java
  21. 137 1
      src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisDs.java
  22. 76 1
      src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisMain.java
  23. 233 126
      src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisTotal.java
  24. 41 5
      src/main/java/ieven/server/webapp/service/datastatic/DataStaticService.java
  25. 125 0
      src/main/java/ieven/server/webapp/service/tenpay/TenpayShopOrders.java
  26. 97 2
      src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java
  27. 9 0
      src/main/java/ieven/server/webapp/util/SpreadsheetVersion.java
  28. 12 5
      src/main/java/ieven/server/webapp/util/excel/PublicStatic.java
  29. 3 4
      src/main/resources/application.properties
  30. 6 6
      src/main/resources/static/index.html
  31. 0 0
      src/main/resources/static/static/css/app.210ef67e8053cd8b79be4dda146c81de.css
  32. 0 0
      src/main/resources/static/static/css/app.b456dd765f35856ac930a90e5d5d2d6e.css
  33. 二進制
      src/main/resources/static/static/img/WechatIMG5377.0744abf.png
  34. 二進制
      src/main/resources/static/static/img/第三方支付数据分析.2bbf410.png
  35. 0 0
      src/main/resources/static/static/js/1.33a275a6eb59212ae3a1.js
  36. 0 0
      src/main/resources/static/static/js/1.ae78cdc309b39ffef27d.js
  37. 0 0
      src/main/resources/static/static/js/2.3a01fde1d7de5d5a06ff.js
  38. 0 0
      src/main/resources/static/static/js/2.98fb3d13dd04a517e204.js
  39. 0 0
      src/main/resources/static/static/js/3.06fe544040aa0b217262.js
  40. 0 0
      src/main/resources/static/static/js/3.5c7d7e854b299287aa82.js
  41. 0 0
      src/main/resources/static/static/js/4.2571522439317ff25e62.js
  42. 0 0
      src/main/resources/static/static/js/4.89e4bcfaae26ae920991.js
  43. 0 0
      src/main/resources/static/static/js/5.79038595bf0c643c0c37.js
  44. 0 0
      src/main/resources/static/static/js/5.88474330e20ec52b2c88.js
  45. 0 1
      src/main/resources/static/static/js/6.0241be8ac660362730fd.js
  46. 0 0
      src/main/resources/static/static/js/6.eedbbe55278fd36cf8c6.js
  47. 1 0
      src/main/resources/static/static/js/7.83ecdc9548c3706f90ec.js
  48. 0 0
      src/main/resources/static/static/js/7.8a8cb80660f8592ace0c.js
  49. 1 0
      src/main/resources/static/static/js/8.1cfc86658a36840181e1.js
  50. 0 1
      src/main/resources/static/static/js/8.9f1727fb7c525797e8fc.js
  51. 0 0
      src/main/resources/static/static/js/app.252166ed3d117834cf08.js
  52. 0 0
      src/main/resources/static/static/js/app.915e8cf5d8433b50898a.js
  53. 0 0
      src/main/resources/static/static/js/app.e904dc68d4c75696cbd0.js
  54. 1 1
      src/main/resources/static/static/js/manifest.4bc99859f4c9e5417bbb.js
  55. 0 1
      src/main/resources/static/static/js/vendor-async.19963eec668c4d51f579.js
  56. 1 0
      src/main/resources/static/static/js/vendor-async.72c0f1a4a3db5cd2a74a.js
  57. 0 0
      src/main/resources/static/static/js/vendor.4a30d08b867d4749cfcc.js
  58. 0 0
      src/main/resources/static/static/js/vendor.c436d94f503c6278dee7.js

+ 10 - 0
pom.xml

@@ -153,6 +153,16 @@
             <artifactId>spring-test</artifactId>
             <version>5.3.1</version>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+            <version>5.8.22</version>
+        </dependency>
+        <dependency>
+            <groupId>com.opencsv</groupId>
+            <artifactId>opencsv</artifactId>
+            <version>4.5</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 81 - 55
src/main/java/ieven/server/webapp/api/AlipayController.java

@@ -8,7 +8,6 @@ import ieven.server.webapp.domain.alipay.TFromToFileIds;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.DataService;
 import ieven.server.webapp.domain.data.Fields;
-import ieven.server.webapp.domain.data.StaticInput;
 import ieven.server.webapp.domain.exporter.Exporter;
 import ieven.server.webapp.domain.file.LogicalFile;
 import ieven.server.webapp.domain.model.Model;
@@ -18,7 +17,6 @@ import ieven.server.webapp.util.excel.PublicStatic;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
@@ -32,8 +30,6 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 
 @RestController
 @RequestMapping({"/alipay"})
@@ -62,13 +58,12 @@ public class AlipayController {
             return Mapped.ERROR("没有选择模型!");
         } else {
             String filename = input.getFilename();
-            if (filename.equals("数据分析-对手透视") || filename.equals("数据分析-账户透视")) {
-                String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
-                input.setFileId(dateFileId);
-            }
             String fileId = input.getFileId();
             String clickHeader = input.getClickHeader();
             String lineId = input.getLineId();
+            if (filename.equals("数据分析-对手透视") || filename.equals("数据分析-账户透视")) {
+                fileId = getFileId("数据分析-主体信息汇总", modelId, mongoTemplate);
+            }
             int page = input.getPage();
             int pageSize = input.getPageSize();
             int skip = (page - 1) * pageSize;
@@ -138,12 +133,11 @@ public class AlipayController {
         if (modelId == null) {
             return Mapped.ERROR("没有选择模型!");
         } else {
-            String filename = input.getFilename();
+            String fileId = input.getFileId();
+            String filename = getFilename(fileId, modelId, mongoTemplate);
             if (filename.equals("数据分析-对手透视") || filename.equals("数据分析-账户透视")) {
-                String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
-                input.setFileId(dateFileId);
+                fileId = getFileId("数据分析-主体信息汇总", modelId, mongoTemplate);
             }
-            String fileId = input.getFileId();
             TFromToFileIds oldFile =
                     this.mongoTemplate.findOne(
                             new Query(Criteria.where("toFileId").is(fileId)), TFromToFileIds.class);
@@ -180,6 +174,9 @@ public class AlipayController {
         } else {
             String filename = input.getFilename();
             String fileId = input.getFileId();
+            if(filename.equals("数据分析-账户透视")||filename.equals("数据分析-对手透视")){
+                fileId = getFileId("数据分析-主体信息汇总", modelId, mongoTemplate);
+            }
             String clickHeader = input.getClickHeader();
             String lineId = input.getLineId();
             Criteria criteria = this.resolveDetailQuery(filename, fileId, lineId, clickHeader);
@@ -255,6 +252,45 @@ public class AlipayController {
         }
     }
 
+    @PostMapping({"/staticDetailContentExport"})
+    public Mapped staticDetailContentExport(@RequestBody StaticPageInput input) throws IOException {
+        String modelId = input.getModelId();
+        if (modelId == null) {
+            return Mapped.ERROR("没有选择模型!");
+        } else {
+            String fileId = input.getFileId();
+            String jythm = input.getJythm();
+            String jydszh = input.getJydszh();
+            Criteria criteria = Criteria.where("fileId")
+                    .is(fileId)
+                    .and("交易主体户名")
+                    .is(jythm)
+                    .and("交易对手账号")
+                    .is(jydszh);
+            if (criteria == null) {
+                return Mapped.ERROR("未查询到明细");
+            } else {
+                Query dataQuery = new Query(criteria);
+                MongoCursor<Document> cursor =
+                        mongoTemplate
+                                .getCollection("data")
+                                .find(dataQuery.getQueryObject())
+                                .batchSize(1000)
+                                .noCursorTimeout(true)
+                                .cursor();
+
+                LogicalFile logicalFile =
+                        mongoTemplate.findOne(
+                                new Query(Criteria.where("id").is(fileId)), LogicalFile.class);
+                Exporter exporter = new Exporter();
+                String exportFileId = exporter.export(cursor, fileId, logicalFile.getFilename());
+                Mapped mapped = Mapped.OK();
+                mapped.put("result", exportFileId);
+                return mapped;
+            }
+        }
+    }
+
     protected String getFileId(String filename, String modelId, MongoTemplate mongoTemplate) {
         Query query =
                 new Query(
@@ -272,6 +308,24 @@ public class AlipayController {
         }
     }
 
+    public String getFilename(String fileId, String modelId, MongoTemplate mongoTemplate) {
+        Query query =
+                new Query(
+                        Criteria.where("modelId")
+                                .is(modelId)
+                                .and("id")
+                                .is(fileId)
+                                .and("generated")
+                                .is(Boolean.TRUE));
+        LogicalFile oldFile = mongoTemplate.findOne(query, LogicalFile.class);
+        if (oldFile != null) {
+            return oldFile.getFilename();
+        } else {
+            return "";
+        }
+    }
+
+
     private Criteria resolveDetailQuery(
             String filename, String fileId, String lineId, String clickHeader) {
         List<String> fileIds = this.destFileId(fileId);
@@ -395,46 +449,6 @@ public class AlipayController {
             } else {
                 criteria.and("交易主体账号").is(dszfbyhid);
             }
-          /*  if (String.valueOf(dataMap.get("来源")).equals("财付通")) {
-                dszfbyhid = (String) dataMap.get("交易主体账号");
-                if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
-                    if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
-                        if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
-                            criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("出");
-                        }
-                    } else {
-                        criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("入");
-                    }
-                } else {
-                    criteria.and("交易主体账号").is(dszfbyhid);
-                }
-            } else if (String.valueOf(dataMap.get("来源")).equals("五联单")) {
-                dszfbyhid = (String) dataMap.get("交易主体账号");
-                if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
-                    if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
-                        if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
-                            criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("支出");
-                        }
-                    } else {
-                        criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("收入");
-                    }
-                } else {
-                    criteria.and("支付宝用户ID").is(dszfbyhid);
-                }
-            } else if (String.valueOf(dataMap.get("来源")).equals("反诈")) {
-                dszfbyhid = (String) dataMap.get("交易主体账号");
-                if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
-                    if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
-                        if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
-                            criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("借");
-                        }
-                    } else {
-                        criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("贷");
-                    }
-                } else {
-                    criteria.and("交易主体账号").is(dszfbyhid);
-                }
-            }*/
 
         } else if (filename.equals("数据分析-对手透视")) {
             if (lineId == null) {
@@ -457,7 +471,19 @@ public class AlipayController {
             } else {
                 criteria.and("交易对手账号").is(dszfbyhid);
             }
-        /*    if (String.valueOf(dataMap.get("来源")).equals("财付通")) {
+           /* dszfbyhid = (String) dataMap.get("交易主体账号");
+            if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
+                if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
+                    if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
+                        criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("借");
+                    }
+                } else {
+                    criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("贷");
+                }
+            } else {
+                criteria.and("交易主体账号").is(dszfbyhid);
+            }*/
+        /*    if(String.valueOf(dataMap.get("来源")).equals("财付通")){
                 dszfbyhid = (String) dataMap.get("交易对手账号");
                 if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
                     if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
@@ -471,7 +497,7 @@ public class AlipayController {
                     criteria.and("交易对手账号").is(dszfbyhid);
                 }
             }
-            else if (String.valueOf(dataMap.get("来源")).equals("五联单")) {
+            else if(String.valueOf(dataMap.get("来源")).equals("五联单")){
                 dszfbyhid = (String) dataMap.get("交易对手账号");
                 if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
                     if (!clickHeader.equals("主用户ID收入金额") && !clickHeader.equals("主用户ID收入笔数")) {
@@ -485,7 +511,7 @@ public class AlipayController {
                     criteria.and("对手支付宝用户ID").is(dszfbyhid);
                 }
             }
-            else if (String.valueOf(dataMap.get("来源")).equals("反诈")) {
+            else if(String.valueOf(dataMap.get("来源")).equals("反诈")){
                 dszfbyhid = (String) dataMap.get("交易对手账号");
                 if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
                     if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {

+ 5 - 0
src/main/java/ieven/server/webapp/domain/alipay/AlipayHeaders.java

@@ -46,6 +46,10 @@ public class AlipayHeaders {
         mappedHeaders.put(11, Arrays.asList("用户ID", "用户名", "额外字段1", "额外字段2", "额外字段3"));
         mappedHeaders.put(15, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型", "关联账户", "对应的协查数据"));
         mappedHeaders.put(16, Arrays.asList("用户ID", "登录邮箱", "登陆手机", "账户名称", "证件类型", "证件号码", "可用余额", "绑定手机号", "注册时间", "绑定银行卡", "关联账户", "查询主体", "查询主体类型", "案件ID", "请求单号"));
+        mappedHeaders.put(17, Arrays.asList("账单订单号", "商户订单号", "账单创建时间", "最近修改时间", "付款时间","交易来源地","交易类型","业务子类型","支付宝ID","用户名称","用户登录ID","交易对方信息","交易对方名称","交易对方登录ID","消费名称","金额","资金工具名称",
+                "收/支标志","交易状态","备注","关联交易流水号","余额收入","余额支出","余额","服务费","退款金额","收货人姓名","收货人手机","收货地址","外部银行流水号","付款方银行代码","付款方银行名称","付款方银行卡号","收款方银行代码","收款方银行名称","收款方银行卡号",
+                "查询主体","查询主体类型","备用字段","请求单号","案件ID"));
+        mappedHeaders.put(18, Arrays.asList("交易号", "商户订单号", "交易创建时间", "付款时间", "最近修改时间", "交易来源地", "类型", "支付宝用户ID", "支付宝户名","交易主体银行卡号","交易主体银行名称", "对手支付宝用户ID", "对手支付宝户名","交易对手银行卡号", "交易对手银行名称","消费名称", "金额(元)", "收/支", "交易状态", "备注", "对应的协查数据"));
         mappedNames.put(2, "五联单-注册信息");
         mappedNames.put(4, "五联单-登录日志");
         mappedNames.put(6, "五联单-交易记录");
@@ -54,6 +58,7 @@ public class AlipayHeaders {
         mappedNames.put(11, "五联单-用户汇总表");
         mappedNames.put(15, "五联单-注册信息");
         mappedNames.put(16, "经侦云-注册信息");
+        mappedNames.put(17, "经侦云-账户明细");
     }
 
     public AlipayHeaders() {

+ 5 - 1
src/main/java/ieven/server/webapp/domain/exporter/Exporter.java

@@ -71,7 +71,11 @@ public class Exporter {
                     if (StringUtils.isBlank(String.valueOf(value)) || "null".equals(String.valueOf(value))) {
                         cell.setCellValue("");
                     } else {
-                        cell.setCellValue((String) value);
+                        String value1 = (String) value;
+                        if (value1.length() > 32767) {
+                            value1 = value1.substring(0, 32767);
+                        }
+                        cell.setCellValue(value1);
                     }
                 } else if (value instanceof Number) {
                     cell.setCellType(CellType.NUMERIC);

+ 50 - 42
src/main/java/ieven/server/webapp/domain/file/FileService.java

@@ -13,6 +13,7 @@ import cn.hutool.poi.excel.ExcelReader;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.mongodb.client.gridfs.model.GridFSFile;
 import com.mongodb.client.result.DeleteResult;
+import com.opencsv.CSVReader;
 import ieven.server.webapp.domain.IdInput;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
@@ -65,13 +66,14 @@ public class FileService {
     @Value("${spring.data.fileExportPath}")
     private String fileUploadPath;
 
-    String[] order1 = {"反诈数据-订单明细","反诈数据-订单明细2", "治安数据-订单明细", "经侦数据-订单明细", "网黑数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
+    String[] order1 = {"反诈数据-订单明细", "反诈数据-订单明细2", "治安数据-订单明细", "经侦数据-订单明细", "网黑数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
     String[] order2 = {
             "五联单-注册信息",
             "经侦云-注册信息",
             "五联单-登录日志",
             "五联单-交易记录",
             "五联单-账户明细",
+            "经侦云-账户明细",
             "五联单-转账明细",
             "五联单-转账分析",
             "五联单-账户透视",
@@ -79,7 +81,7 @@ public class FileService {
             "五联单-IP地址分析",
             "五联单-收货地址分析"
     };
-    String[] order3 = {"财付通-注册信息", "财付通-订单明细1", "财付通-订单明细2", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
+    String[] order3 = {"财付通-注册信息", "财付通-订单明细1", "财付通-订单明细2","财付通-商户订单", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
 
     String[] order4 = {"数据分析-主体信息汇总", "数据分析-账户透视", "数据分析-对手透视", "数据分析-共同关系网络"};
     @Autowired
@@ -185,55 +187,61 @@ public class FileService {
                     } else if (filename.endsWith(".csv")) {
                         mongoExcelService = new MongoExcelService(this.mongoTemplate, uploaded.getId());
                         log.info("encoding2:{}", encoding);
-                        CSVParser csvParser = null;
+                        /*CSVParser csvParser = null;
                         if (encoding.equalsIgnoreCase("UTF-8")) {
                             csvParser = CSVFormat.EXCEL.parse(new InputStreamReader(inputStream, "utf-8"));
                         } else {
                             csvParser = CSVFormat.EXCEL.parse(new InputStreamReader(inputStream));
-                        }
+                        }*/
                         int curRow = 0;
                         int curRowWxFile = 0;
                         boolean wxFile = false;
                         String nickname = ""; // 微信手机账单文件  添加一列 微信昵称  需要单独处理
-                        for (CSVRecord record : csvParser) {
-                            log.info("record,{}", record);
-                            List<String> strings = record.toList();
-                            List<String> strings2 = new ArrayList<>();
-                            strings2.addAll(strings);
-                            /*************      此处内容一下均为处理微信账单表头             ****************/
-                            String join = String.join("", strings);
-                            join = PublicStatic.removeAllSpecial(join);
-                            if (join.equals("微信支付账单明细")) {
-                                wxFile = true;
-                            }
-                            if (wxFile && curRowWxFile < 16) {
-                                if (curRowWxFile == 1) {
-                                    String temp = strings.get(0);
-                                    if (StringUtils.isNotBlank(temp)) {
-                                        nickname = temp.replace("微信昵称:[", "").replace("]", "");
+                        try (CSVReader reader = new CSVReader(new InputStreamReader(inputStream))) {
+                            List<String[]> lines = reader.readAll();
+                            for (String[] line : lines) {
+                                log.info("record,{}", line);
+                                List<String> strings = Arrays.asList(line);
+                                List<String> strings2 = new ArrayList<>();
+                                strings2.addAll(strings);
+                                /*************      此处内容一下均为处理微信账单表头             ****************/
+                                String join = String.join("", strings);
+                                join = PublicStatic.removeAllSpecial(join);
+                                if (join.equals("微信支付账单明细")) {
+                                    wxFile = true;
+                                }
+                                if (wxFile && curRowWxFile < 16) {
+                                    if (curRowWxFile == 1) {
+                                        String temp = strings.get(0);
+                                        if (StringUtils.isNotBlank(temp)) {
+                                            nickname = temp.replace("微信昵称:[", "").replace("]", "");
+                                        }
                                     }
+                                    curRowWxFile++;
+                                    continue;
                                 }
-                                curRowWxFile++;
-                                continue;
-                            }
-                            if (wxFile && curRowWxFile > 16) {
-                                strings2.add(0, nickname);
-                                curRowWxFile++;
-                            }
-                            if (wxFile && curRowWxFile == 16) {
-                                strings2.add(0, "微信昵称");
-                                curRowWxFile++;
+                                if (wxFile && curRowWxFile > 16) {
+                                    strings2.add(0, nickname);
+                                    curRowWxFile++;
+                                }
+                                if (wxFile && curRowWxFile == 16) {
+                                    strings2.add(0, "微信昵称");
+                                    curRowWxFile++;
+                                }
+
+                                /*************      此处内容以上均为处理微信账单表头             ****************/
+                                mongoExcelService.getRows(
+                                        0,
+                                        curRow,
+                                        strings2.stream()
+                                                .map(PublicStatic::removeAllSpecial)
+                                                .collect(Collectors.toList())
+                                );
+                                curRow++;
                             }
 
-                            /*************      此处内容以上均为处理微信账单表头             ****************/
-                            mongoExcelService.getRows(
-                                    0,
-                                    curRow,
-                                    strings2.stream()
-                                            .map(PublicStatic::removeAllSpecial)
-                                            .collect(Collectors.toList())
-                            );
-                            curRow++;
+                        } catch (Exception e) {
+                            e.printStackTrace();
                         }
                         mongoExcelService.insertRest();
                     } else if (filename.endsWith(".txt")) {
@@ -287,8 +295,8 @@ public class FileService {
             List<LogicalFile> resultList = this.mongoTemplate.find(query, LogicalFile.class);
             // 将文件 按照  反诈  财付通 五联单  进行分类
             List<GroupLogincalFile> groupLogincalFiles = new ArrayList<>();
-            groupLogicalFile("反诈治安数据分析", new String[]{"反诈", "治安", "经侦", "网黑"}, resultList, groupLogincalFiles);
-            groupLogicalFile("支付宝数据分析", new String[]{"五联单"}, resultList, groupLogincalFiles);
+            groupLogicalFile("反诈治安数据分析", new String[]{"反诈", "治安", "经侦数据", "网黑"}, resultList, groupLogincalFiles);
+            groupLogicalFile("支付宝数据分析", new String[]{"五联单", "经侦云"}, resultList, groupLogincalFiles);
             groupLogicalFile("财付通数据分析", new String[]{"财付通"}, resultList, groupLogincalFiles);
             groupLogicalFile("数据综合分析", new String[]{"数据分析"}, resultList, groupLogincalFiles);
             Mapped res = Mapped.OK();
@@ -481,7 +489,7 @@ public class FileService {
                 // 在这里,主线程会等待 future 的结果
                 Mapped mapped = future.get(); // 这将会阻塞,直到Callable任务完成
                 if (200 != Integer.valueOf(String.valueOf(mapped.get("code")))) {
-                    failNameList.add(savedName+":"+String.valueOf(mapped.get("message")));
+                    failNameList.add(savedName + ":" + String.valueOf(mapped.get("message")));
                 }
                 //删除文件
                 FileUtils.deleteFile(filepath);

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

@@ -62,14 +62,22 @@ public class TenpayHeaders {
         mappedHeaders.put(6, Arrays.asList(
                 "用户ID", "交易单号", "借贷类型", "交易类型", "交易金额(分)", "账户余额(分)", "交易时间", "银行类型", "交易说明", "商户名称", "发送方", "发送金额(分)", "接收方", "接收时间", "接收金额(分)", "银行卡号", "对手银行卡号", "网银联单号1", "网银联单号2"));
         mappedHeaders.put(7, Arrays.asList(
-                "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号",  "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1"
+                "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1"
         ));
         mappedHeaders.put(8, Arrays.asList(
-                "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号",  "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1","备注2"
+                "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1", "备注2"
+        ));
+        mappedHeaders.put(9, Arrays.asList(
+                "商户ID", "交易单号", "大单号", "用户侧账户名称", "商户C账户号", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "网联/银联", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "是否内部交易", "备注"
+        ));
+        mappedHeaders.put(10, Arrays.asList(
+                "商户ID", "交易单号", "大单号", "用户侧账户名称",  "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "网联/银联", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "是否内部交易", "备注"
+
         ));
         mappedNames.put(1, "财付通-订单明细1");
         mappedNames.put(2, "财付通-订单明细2");
         mappedNames.put(3, "财付通-注册信息");
+        mappedNames.put(4, "财付通-交易明细");
 
 
     }

+ 2 - 2
src/main/java/ieven/server/webapp/infrastructure/InitDB.java

@@ -47,8 +47,8 @@ public class InitDB implements CommandLineRunner {
         Properties.DETAILS_EXPORTABLE = (Map)objectMapper.convertValue(jsonNode.get("detailsExportable"), new TypeReference<Map<String, String>>() {
         });
         this.tryCreateIndex("data", "fileId", -1);
-        this.tryCreateIndex("data", "交易对手账号", -1);
-        this.tryCreateIndex("data", "交易对手户名", -1);
+        //this.tryCreateIndex("data", "交易对手账号", -1);
+        //this.tryCreateIndex("data", "交易对手户名", -1);
         this.tryCreateIndex("fields", "fileId", -1);
         this.tryCreateIndex("logical_file", "modelId", -1);
         this.tryCreateIndex("model", "createTime", -1);

+ 7 - 0
src/main/java/ieven/server/webapp/service/FieldsService.java

@@ -52,6 +52,9 @@ public class FieldsService extends Ops {
         // 五联单-账户明细
         fields = this.checkFields(originFields, AlipayType.ALIPAY_ORIGIN_ACCOUNT);
         this.updateLogicalFile(fields, "五联单-账户明细");
+        // 经侦云-账户明细
+        fields = this.checkFields(originFields, 17);
+        this.updateLogicalFile(fields, "经侦云-账户明细");
         // 五联单-转账明细  ALIPAY_ORIGIN_TRANSFER
         fields = this.checkFields(originFields, AlipayType.ALIPAY_ORIGIN_TRANSFER);
         this.updateLogicalFile(fields, "五联单-转账明细 ");
@@ -77,6 +80,10 @@ public class FieldsService extends Ops {
         this.updateLogicalFile(fields, "财付通-订单明细1");
         fields = matchHeaders(originFields, TenpayHeaders.getHeaders(8));
         this.updateLogicalFile(fields, "财付通-订单明细1");
+        fields = matchHeaders(originFields, TenpayHeaders.getHeaders(9));
+        this.updateLogicalFile(fields, "财付通-商户订单");
+        fields = matchHeaders(originFields, TenpayHeaders.getHeaders(10));
+        this.updateLogicalFile(fields, "财付通-商户订单");
         // 财付通-手机明细
         fields = matchHeaders(originFields, TenpayHeaders.getHeaders(4));
         this.updateLogicalFile(fields, "财付通-手机明细");

+ 16 - 0
src/main/java/ieven/server/webapp/service/Ops.java

@@ -287,6 +287,22 @@ public class Ops {
         }
     }
 
+    public String getFilename(String fileId, String modelId, MongoTemplate mongoTemplate) {
+        Query query =
+                new Query(
+                        Criteria.where("modelId")
+                                .is(modelId)
+                                .and("fileId")
+                                .is(fileId)
+                                .and("generated")
+                                .is(Boolean.TRUE));
+        LogicalFile oldFile = mongoTemplate.findOne(query, LogicalFile.class);
+        if (oldFile != null) {
+            return oldFile.getId();
+        } else {
+            return "";
+        }
+    }
 
     protected String getLogicalFileId(String filename, String modelId, MongoTemplate mongoTemplate) {
         Query query =

+ 210 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_ACCOUNT_JZY.java

@@ -0,0 +1,210 @@
+package ieven.server.webapp.service.alipay;
+
+import com.google.common.collect.Lists;
+import com.mongodb.client.MongoCursor;
+import ieven.server.webapp.domain.alipay.AlipayHeaders;
+import ieven.server.webapp.domain.alipay.HeaderProperties;
+import ieven.server.webapp.domain.data.DataMap;
+import ieven.server.webapp.domain.data.Fields;
+import ieven.server.webapp.domain.file.FileService;
+import ieven.server.webapp.service.Ops;
+import ieven.server.webapp.util.Common;
+import ieven.server.webapp.util.excel.PublicStatic;
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+@Slf4j
+public class ALIPAY_GENERATED_ACCOUNT_JZY extends Ops implements Runnable {
+    private HeaderProperties headerProperties;
+    List<Fields> originFields;
+    String modelId;
+    MongoTemplate mongoTemplate;
+    FileService fileService;
+    CountDownLatch latch;
+
+    public ALIPAY_GENERATED_ACCOUNT_JZY(
+            HeaderProperties headerProperties,
+            List<Fields> originFields,
+            String modelId,
+            MongoTemplate mongoTemplate,
+            FileService fileService,
+            CountDownLatch latch) {
+        this.headerProperties = headerProperties;
+        this.originFields = originFields;
+        this.modelId = modelId;
+        this.mongoTemplate = mongoTemplate;
+        this.fileService = fileService;
+        this.latch = latch;
+    }
+
+    @Override
+    public void run() {
+    /*// 账户明细
+    List<Fields> accountFieldsList = checkFields(originFields, 17);
+    List<Fields> matched = matchHeaders(originFields, headers);
+    if (CollectionUtils.isNotEmpty(accountFieldsList)) {
+      Fields outputAccount = Ops.createFile(17, modelId);
+      for (Fields origin : accountFieldsList) {
+        extractAccount(getCursor(origin.getFileId(), mongoTemplate), origin, outputAccount);
+      }
+    }*/
+        List<String> headers = AlipayHeaders.getHeaders(17);
+        List<String> outputHeaders = AlipayHeaders.getHeaders(18);
+        List<Fields> matched = matchHeaders(originFields, headers);
+        if (CollectionUtils.isNotEmpty(matched)) {
+            String newFileId =
+                    createLogicAndDeleteOld("经侦云-账户明细", modelId, outputHeaders, mongoTemplate, fileService);
+            for (Fields fields : matched) {
+                String fileId = fields.getFileId();
+                MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
+                Document originDoc;
+                List<DataMap> needToSave = new ArrayList<>(1000);
+                while (cursor.hasNext()) {
+                    // 写法1(建议)
+                    try {
+                        originDoc = cursor.next();
+                        DataMap dataMap = new DataMap();
+            /*String v3 = Ops.getString(originDoc, fields, "交易对方信息");
+            List<String> v3List = Ops.extract_1(v3);
+            if (v3List.size() > 1) {
+              Ops.setString(dataMap, AlipayHeaders.ACCOUNT_3, outputHeaders, v3List.get(0));
+              Ops.setString(dataMap, AlipayHeaders.ACCOUNT_4, outputHeaders, v3List.get(1));
+            }
+            else if (v3List.size() == 1) {
+              String v = v3List.get(0);
+              // 包含数字代表是对手ID,否则就是对手户名
+              if (Common.HasDigit(v)) {
+                Ops.setString(dataMap, AlipayHeaders.ACCOUNT_3, outputHeaders, v);
+              } else {
+                Ops.setString(dataMap, AlipayHeaders.ACCOUNT_4, outputHeaders, v);
+              }
+            }*/
+                        String type = originDoc.getString("收/支标志");
+                        dataMap.put("fileId", newFileId);
+                        dataMap.put("交易号", originDoc.getString("账单订单号"));
+                        dataMap.put("商户订单号", originDoc.getString("商户订单号"));
+                        dataMap.put("交易创建时间", originDoc.getString("账单创建时间"));
+                        dataMap.put("最近修改时间", originDoc.getString("最近修改时间"));
+                        dataMap.put("付款时间", originDoc.getString("付款时间"));
+                        dataMap.put("交易来源地", originDoc.getString("交易来源地"));
+                        dataMap.put("类型", type);
+                        dataMap.put("支付宝户名", originDoc.getString("用户名称"));
+                        dataMap.put("支付宝用户ID", originDoc.getString("支付宝ID"));
+                        dataMap.put("对手支付宝户名", originDoc.getString("交易对方名称"));
+                        dataMap.put("对手支付宝用户ID", originDoc.getString("交易对方登录ID"));
+                        dataMap.put("消费名称", originDoc.getString("消费名称"));
+                        dataMap.put("金额(元)", originDoc.getString("金额"));
+                        dataMap.put("收/支", originDoc.getString("收/支标志"));
+                        dataMap.put("交易状态", originDoc.getString("交易状态"));
+                        dataMap.put("备注", originDoc.getString("备注"));
+                        dataMap.put("对应的协查数据", originDoc.getString("查询主体"));
+                        String skf = originDoc.getString("收款方银行名称");
+                        String fkf = originDoc.getString("付款方银行名称");
+                        if (checkStatus(skf, fkf)) {
+                            dataMap.put("交易主体银行名称", PublicStatic.removeStr(originDoc.getString("收款方银行名称")));
+                            dataMap.put("交易主体银行卡号", PublicStatic.removeStr(originDoc.getString("收款方银行卡号")));
+                            dataMap.put("交易对手银行名称", PublicStatic.removeStr(originDoc.getString("付款方银行名称")));
+                            dataMap.put("交易对手银行卡号", PublicStatic.removeStr(originDoc.getString("付款方银行卡号")));
+                        } else if (type.equals("收入")) {
+                            dataMap.put("交易主体银行名称", PublicStatic.removeStr(originDoc.getString("收款方银行名称")));
+                            dataMap.put("交易主体银行卡号", PublicStatic.removeStr(originDoc.getString("收款方银行卡号")));
+                            dataMap.put("交易对手银行名称", PublicStatic.removeStr(originDoc.getString("付款方银行名称")));
+                            dataMap.put("交易对手银行卡号", PublicStatic.removeStr(originDoc.getString("付款方银行卡号")));
+                        } else if (type.equals("支出")) {
+                            dataMap.put("交易主体银行名称", PublicStatic.removeStr(originDoc.getString("付款方银行名称")));
+                            dataMap.put("交易主体银行卡号", PublicStatic.removeStr(originDoc.getString("付款方银行卡号")));
+                            dataMap.put("交易对手银行名称", PublicStatic.removeStr(originDoc.getString("收款方银行名称")));
+                            dataMap.put("交易对手银行卡号", PublicStatic.removeStr(originDoc.getString("收款方银行卡号")));
+                        } else {
+                            dataMap.put("交易主体银行名称", "");
+                            dataMap.put("交易主体银行卡号", "");
+                            dataMap.put("交易对手银行名称", "");
+                            dataMap.put("交易对手银行卡号", "");
+                        }
+                        needToSave.add(dataMap);
+                        if (needToSave.size() >= 1000) {
+                            saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                            needToSave.clear();
+                        }
+                    } catch (Exception ex) {
+                        log.error(ex.getMessage(), ex);
+                    }
+                }
+                if (CollectionUtils.isNotEmpty(needToSave)) {
+                    saveLines(needToSave, mongoTemplate);
+                }
+            }
+        }
+        latch.countDown();
+    }
+
+    public void extractAccount(MongoCursor<Document> cursor, Fields origin, Fields output) {
+        Document originDoc;
+        List<DataMap> needToSave = new ArrayList<>(1000);
+        while (cursor.hasNext()) {
+            // 写法1(建议)
+            try {
+                originDoc = cursor.next();
+                DataMap dataMap = new DataMap();
+                String v3 = Ops.getString(originDoc, origin, "交易对方信息");
+                List<String> v3List = Ops.extract_1(v3);
+                if (v3List.size() > 1) {
+                    Ops.setString(dataMap, AlipayHeaders.ACCOUNT_3, output, v3List.get(0));
+                    Ops.setString(dataMap, AlipayHeaders.ACCOUNT_4, output, v3List.get(1));
+                } else if (v3List.size() == 1) {
+                    String v = v3List.get(0);
+                    // 包含数字代表是对手ID,否则就是对手户名
+                    if (Common.HasDigit(v)) {
+                        Ops.setString(dataMap, AlipayHeaders.ACCOUNT_3, output, v);
+                    } else {
+                        Ops.setString(dataMap, AlipayHeaders.ACCOUNT_4, output, v);
+                    }
+                }
+                dataMap.put("fileId", output.getFileId());
+                dataMap.put("交易号", originDoc.getString("账单订单号"));
+                dataMap.put("商户订单号", originDoc.getString("商户订单号"));
+                dataMap.put("交易创建时间", originDoc.getString("账单创建时间"));
+                dataMap.put("最近修改时间", originDoc.getString("最近修改时间"));
+                dataMap.put("付款时间", originDoc.getString("付款时间"));
+                dataMap.put("交易来源地", originDoc.getString("交易来源地"));
+                dataMap.put("类型", originDoc.getString("交易类型"));
+                dataMap.put("支付宝户名", originDoc.getString("用户名称"));
+                dataMap.put("支付宝用户ID", originDoc.getString("支付宝ID"));
+                dataMap.put("对手支付宝户名", originDoc.getString("交易对方名称"));
+                dataMap.put("对手支付宝用户ID", originDoc.getString("交易对方登录ID"));
+                dataMap.put("消费名称", originDoc.getString("消费名称"));
+                dataMap.put("金额(元)", originDoc.getString("金额"));
+                dataMap.put("收/支", originDoc.getString("收/支标志"));
+                dataMap.put("交易状态", originDoc.getString("交易状态"));
+                dataMap.put("备注", originDoc.getString("备注"));
+                dataMap.put("对应的协查数据", originDoc.getString("查询主体"));
+                needToSave.add(dataMap);
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(needToSave)) {
+            saveLines(needToSave, mongoTemplate);
+        }
+    }
+
+    private static List<String> list = Lists.newArrayList("支付宝", "网联清算有限公司");
+
+    public boolean checkStatus(String skf, String szf) {
+        if ((StringUtils.isNotBlank(skf) || StringUtils.isNotBlank(skf)) && (list.contains(skf) || list.contains(szf))) {
+            return true;
+        }
+        return false;
+    }
+}

+ 1 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_LOGIN.java

@@ -59,6 +59,7 @@ public class ALIPAY_GENERATED_LOGIN extends Ops implements Runnable {
 
         originDoc = cursor.next();
         DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+        deleteKey(newDoc, "FILEID");
         // 绑定银行卡字段
         String aO1 = inputReversed.get("操作发生时间");
         String vO1 = originDoc.getString(aO1);

+ 1 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRADE.java

@@ -70,6 +70,7 @@ public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
             try {
                 originDoc = cursor.next();
                 DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+                deleteKey(newDoc, "FILEID");
                 // 绑定银行卡字段
                 String v1 = Ops.getString(originDoc, origin, "买家信息");
                 List<String> sp1 = Ops.extract_1(v1);

+ 15 - 11
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER_JZY.java

@@ -81,19 +81,23 @@ public class ALIPAY_ORIGIN_REGISTER_JZY extends Ops implements Runnable {
                 // 绑定银行卡字段
                 deleteKey(newDoc, "FILEID");
                 String vO1 = Ops.getString(originDoc, origin, "绑定银行卡");
-                String[] sp1 = vO1.split(";");
-                for (String s1 : sp1) {
-                    if (StringUtils.isNotBlank(s1)) {
-                        String[] sp2 = s1.split(":");
-                        if (sp2.length == 3) {
-                            // 拷贝一行新的
-                            DataMap newLine = new DataMap(newDoc);
-                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_1, "-1"), sp2[0]);
-                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_2, "-1"), sp2[1]);
-                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_3, "-1"), sp2[2]);
-                            needToSave.add(newLine);
+                if(StringUtils.isNotBlank(vO1)){
+                    String[] sp1 = vO1.split(";");
+                    for (String s1 : sp1) {
+                        if (StringUtils.isNotBlank(s1)) {
+                            String[] sp2 = s1.split(":");
+                            if (sp2.length == 3) {
+                                // 拷贝一行新的
+                                DataMap newLine = new DataMap(newDoc);
+                                newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_1, "-1"), sp2[0]);
+                                newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_2, "-1"), sp2[1]);
+                                newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_3, "-1"), sp2[2]);
+                                needToSave.add(newLine);
+                            }
                         }
                     }
+                }else {
+                    needToSave.add(newDoc);
                 }
                 if (needToSave.size() >= 1000) {
                     saveLines(new ArrayList<>(needToSave), mongoTemplate);

+ 5 - 2
src/main/java/ieven/server/webapp/service/alipay/AlipayService.java

@@ -70,7 +70,7 @@ public class AlipayService {
         // 无限制大小的threadpool
         ExecutorService exec = Executors.newCachedThreadPool();
         log.info("latch");
-        CountDownLatch latch = new CountDownLatch(9);
+        CountDownLatch latch = new CountDownLatch(10);
         // 五联单-注册信息
         exec.execute(new ALIPAY_ORIGIN_REGISTER(originFields, modelId, mongoTemplate, latch));
 
@@ -81,6 +81,8 @@ public class AlipayService {
         exec.execute(new ALIPAY_GENERATED_TRADE(originFields, modelId, mongoTemplate, latch));
         // 五联单-账户明细
         exec.execute(new ALIPAY_GENERATED_ACCOUNT(originFields, modelId, mongoTemplate, latch));
+        //经侦云-账户明细
+        exec.execute(new ALIPAY_GENERATED_ACCOUNT_JZY(headerProperties, originFields, modelId, mongoTemplate, fileService, latch));
         // 五联单-转账明细
         exec.execute(new ALIPAY_GENERATED_TRANSFER(originFields, modelId, mongoTemplate, latch));
         // 反诈平台订单数据
@@ -188,9 +190,10 @@ public class AlipayService {
         log.info("latch6");
 
         log.info("latch8");
-        CountDownLatch latch8 = new CountDownLatch(1);
+        CountDownLatch latch8 = new CountDownLatch(2);
         // 财付通-订单明细
         exec.execute(new TenpayOrders0422(originFields, modelId, mongoTemplate, fileService, latch8));
+        exec.execute(new TenpayShopOrders(originFields, modelId, mongoTemplate, fileService, latch8));
         latch8.await();
         log.info("latch8");
 

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

@@ -5,6 +5,7 @@ import ieven.server.webapp.domain.alipay.HeaderProperties;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
+import ieven.server.webapp.util.excel.PublicStatic;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -105,7 +106,7 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
                     }
                     String flag = "交易主体的出入账标识";
                     String flagValue = origin.getString(flag);
-                    String money = (String) origin.get("交易金额");
+                    String money = PublicStatic.checkStrJe((String) origin.get("交易金额"));
                     if ("入账".equals(flagValue)) {
                         BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
                         oMoney = oMoney.add(new BigDecimal(money));

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

@@ -5,6 +5,7 @@ import ieven.server.webapp.domain.alipay.HeaderProperties;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
+import ieven.server.webapp.util.excel.PublicStatic;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -96,7 +97,7 @@ public class AntiSecurityTradeScaleAnalysis extends Ops implements Runnable {
           }
           String flag = "交易主体的出入账标识";
           String flagValue = origin.getString(flag);
-          String money = (String) origin.get("交易金额");
+          String money = PublicStatic.checkStrJe((String) origin.get("交易金额"));
           if ("入账".equals(flagValue)) {
             BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
             oMoney = oMoney.add(new BigDecimal(money));

+ 19 - 4
src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java

@@ -1,11 +1,13 @@
 package ieven.server.webapp.service.alipay;
 
+import com.google.common.collect.Lists;
 import com.mongodb.client.MongoCursor;
 import ieven.server.webapp.domain.alipay.HeaderProperties;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
+import ieven.server.webapp.util.excel.PublicStatic;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -47,10 +49,18 @@ public class EndAnalysis extends Ops implements Runnable {
         // 直接删除并创建表
         String newFileId = "";
         String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
-        // 遍历账户明细全表
+        String dateFileId1 = getFileId("经侦云-账户明细", modelId, mongoTemplate);
+        List<String> dateFileIdList = new ArrayList<>();
         if (StringUtils.isNotBlank(dateFileId)) {
+            dateFileIdList.add(dateFileId);
+        }
+        if (StringUtils.isNotBlank(dateFileId1)) {
+            dateFileIdList.add(dateFileId1);
+        }
+        // 遍历账户明细全表
+        if (StringUtils.isNotBlank(dateFileId)||StringUtils.isNotBlank(dateFileId1)) {
 
-            MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+            MongoCursor<Document> cursor = getCursor(dateFileIdList, mongoTemplate);
             if (cursor.hasNext()) {
                 newFileId =
                         createLogicAndDeleteOld(
@@ -60,7 +70,12 @@ public class EndAnalysis extends Ops implements Runnable {
                                 mongoTemplate,
                                 fileService
                         );
-                insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
+                if(StringUtils.isNotBlank(dateFileId)){
+                    insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
+                }
+                if(StringUtils.isNotBlank(dateFileId1)){
+                    insertFromTo(dateFileId1, newFileId, modelId, mongoTemplate);
+                }
             }
             Set<String> alipayIds = new HashSet<>();
             Map<String, DataMap> idToData = new HashMap<>();
@@ -108,7 +123,7 @@ public class EndAnalysis extends Ops implements Runnable {
                     }
                     String flag = "收/支";
                     String flagValue = origin.getString(flag);
-                    String money = (String) origin.get("金额(元)");
+                    String money = PublicStatic.checkStrJe((String) origin.get("金额(元)"));
                     if ("收入".equals(flagValue)) {
                         BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
                         oMoney = oMoney.add(new BigDecimal(money));

+ 118 - 104
src/main/java/ieven/server/webapp/service/alipay/ScaleAnalysis.java

@@ -6,6 +6,7 @@ import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.service.Ops;
+import ieven.server.webapp.util.excel.PublicStatic;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -19,115 +20,128 @@ import java.util.concurrent.CountDownLatch;
 @Slf4j
 public class ScaleAnalysis extends Ops implements Runnable {
 
-  private HeaderProperties headerProperties;
-  List<Fields> originFields;
-  String modelId;
-  MongoTemplate mongoTemplate;
-  FileService fileService;
+    private HeaderProperties headerProperties;
+    List<Fields> originFields;
+    String modelId;
+    MongoTemplate mongoTemplate;
+    FileService fileService;
 
-  CountDownLatch latch;
+    CountDownLatch latch;
 
-  public ScaleAnalysis(
-      HeaderProperties headerProperties,
-      List<Fields> originFields,
-      String modelId,
-      MongoTemplate mongoTemplate,
-      FileService fileService,
-      CountDownLatch latch) {
-    this.headerProperties = headerProperties;
-    this.originFields = originFields;
-    this.modelId = modelId;
-    this.mongoTemplate = mongoTemplate;
-    this.fileService = fileService;
-    this.latch = latch;
-  }
+    public ScaleAnalysis(
+            HeaderProperties headerProperties,
+            List<Fields> originFields,
+            String modelId,
+            MongoTemplate mongoTemplate,
+            FileService fileService,
+            CountDownLatch latch) {
+        this.headerProperties = headerProperties;
+        this.originFields = originFields;
+        this.modelId = modelId;
+        this.mongoTemplate = mongoTemplate;
+        this.fileService = fileService;
+        this.latch = latch;
+    }
 
-  @Override
-  public void run() {
-    // 直接删除并创建表
-    String newFileId = "";
-    String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
-    // 遍历账户明细全表
-    if (StringUtils.isNotBlank(dateFileId)) {
+    @Override
+    public void run() {
+        // 直接删除并创建表
+        String newFileId = "";
+        String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
+        String dateFileId1 = getFileId("经侦云-账户明细", modelId, mongoTemplate);
+        List<String> dateFileIdList = new ArrayList<>();
+        if (StringUtils.isNotBlank(dateFileId)) {
+            dateFileIdList.add(dateFileId);
+        }
+        if (StringUtils.isNotBlank(dateFileId1)) {
+            dateFileIdList.add(dateFileId1);
+        }
+        // 遍历账户明细全表
+        if (StringUtils.isNotBlank(dateFileId) || StringUtils.isNotBlank(dateFileId1)) {
 
-      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-      if (cursor.hasNext()) {
-        newFileId =
-            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()) {
-        try {
+            MongoCursor<Document> cursor = getCursor(dateFileIdList, mongoTemplate);
+            if (cursor.hasNext()) {
+                newFileId =
+                        createLogicAndDeleteOld(
+                                "五联单-账户透视",
+                                modelId,
+                                headerProperties.getScaleAnalysisOutput(),
+                                mongoTemplate,
+                                fileService);
+                if(StringUtils.isNotBlank(dateFileId)){
+                    insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
+                }
+                if(StringUtils.isNotBlank(dateFileId1)){
+                    insertFromTo(dateFileId1, newFileId, modelId, mongoTemplate);
+                }
+            }
+            Set<String> alipayIds = new HashSet<>();
+            Map<String, DataMap> idToData = new HashMap<>();
+            Document origin;
+            while (cursor.hasNext()) {
+                try {
 
-          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("总笔数");
-          oCount++;
-          dataMap.put("总笔数", oCount);
-        } catch (Exception exception) {
-          log.error(exception.getMessage(), exception);
-        }
-      }
-      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());
+                    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 = PublicStatic.checkStrJe((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("总笔数");
+                    oCount++;
+                    dataMap.put("总笔数", oCount);
+                } catch (Exception exception) {
+                    log.error(exception.getMessage(), exception);
+                }
+            }
+            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();
     }
-    latch.countDown();
-  }
 }

+ 6 - 3
src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.java

@@ -1,5 +1,6 @@
 package ieven.server.webapp.service.alipay;
 
+import com.google.common.collect.Lists;
 import com.mongodb.client.MongoCursor;
 import ieven.server.webapp.domain.alipay.HeaderProperties;
 import ieven.server.webapp.domain.data.DataMap;
@@ -47,9 +48,10 @@ public class TransferAnalysis extends Ops implements Runnable {
     // 直接删除并创建表
     String newFileId = "";
     String dateFileId = getFileId("五联单-账户明细", modelId, mongoTemplate);
+    //String dateFileId1 = getFileId("经侦云-账户明细", modelId, mongoTemplate);
     // 遍历账户明细全表
-    if (StringUtils.isNotBlank(dateFileId)) {
-      MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
+    if (StringUtils.isNotBlank(dateFileId)/*||StringUtils.isNotBlank(dateFileId1)*/) {
+      MongoCursor<Document> cursor = getCursor(Lists.newArrayList(dateFileId), mongoTemplate);
       if (cursor.hasNext()) {
         newFileId =
             createLogicAndDeleteOld(
@@ -59,6 +61,7 @@ public class TransferAnalysis extends Ops implements Runnable {
                 mongoTemplate,
                 fileService);
         insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
+        //insertFromTo(dateFileId1, newFileId, modelId, mongoTemplate);
       }
       Set<String> alipayIds = new HashSet<>();
       Map<String, DataMap> idToData = new HashMap<>();
@@ -68,7 +71,7 @@ public class TransferAnalysis extends Ops implements Runnable {
 
           origin = cursor.next();
           String transferFlag = origin.getString("消费名称");
-          if (!transferFlag.equals("转账")) {
+          if (transferFlag==null||!transferFlag.equals("转账")||StringUtils.isBlank(transferFlag)) {
             continue;
           }
           String alipayId = origin.getString("支付宝用户ID");

+ 42 - 10
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysis.java

@@ -46,8 +46,9 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         String dateFileIdcft = getFileId("财付通-交易明细", modelId, mongoTemplate);
         String dateFileIdfzza = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
         String dateFileIdwld = getFileId("五联单-账户明细", modelId, mongoTemplate);
+        String dateFileIdjzy = getFileId("经侦云-账户明细", modelId, mongoTemplate);
 
-        if (StringUtils.isNotBlank(dateFileIdcft) || StringUtils.isNotBlank(dateFileIdfzza)||StringUtils.isNotBlank(dateFileIdwld)) {
+        if (StringUtils.isNotBlank(dateFileIdcft) || StringUtils.isNotBlank(dateFileIdfzza)||StringUtils.isNotBlank(dateFileIdwld)||StringUtils.isNotBlank(dateFileIdjzy)) {
             newFileId = createLogicAndDeleteOld("数据分析-主体信息汇总明细", modelId, headerProperties.getUserAccountOutput(), mongoTemplate, fileService);
         }
         // 插入记录用户后续查询明细
@@ -102,6 +103,33 @@ public class DataStaticAnalysis extends Ops implements Runnable {
             MongoCursor<Document> cursor = getCursor(dateFileIdwld, mongoTemplate);
             Document origin;
             List<DataMap> needToSave = new ArrayList<>(1000);
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                if((!PublicStatic.checkStr(origin.getString("对手支付宝用户ID"))&&origin.getString("对手支付宝用户ID").equals("2088112713342808"))&&(!PublicStatic.checkStr(origin.getString("对手支付宝用户ID"))&&origin.getString("支付宝用户ID").equals("2088122912178272"))){
+                    System.out.println("111");
+
+                }
+                DataMap dataMap = new DataMap();
+                dataMap.put("fileId", newFileId);
+                AccountVO accountVO = new AccountVO();
+                assembleDatawld(origin, accountVO);
+                insertDataWld(accountVO, dataMap);
+                needToSave.add(dataMap);
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+            }
+            if (CollectionUtils.isNotEmpty(needToSave)) {
+                saveLines(needToSave, mongoTemplate);
+            }
+        }
+
+        //经侦云
+        if (StringUtils.isNotBlank(dateFileIdjzy)) {
+            MongoCursor<Document> cursor = getCursor(dateFileIdjzy, mongoTemplate);
+            Document origin;
+            List<DataMap> needToSave = new ArrayList<>(1000);
             while (cursor.hasNext()) {
                 origin = cursor.next();
                 DataMap dataMap = new DataMap();
@@ -126,17 +154,17 @@ public class DataStaticAnalysis extends Ops implements Runnable {
     public void assembleDataCft(Document origin, AccountVO accountVO) {
         accountVO.setZfddh(origin.getString("交易单号"));
         accountVO.setJyztzh(origin.getString("交易主体账号"));
+        accountVO.setJyzthm(origin.getString("交易主体户名"));
         accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
         accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
-        accountVO.setJyzthm(origin.getString("交易主体户名"));
         accountVO.setJylx(origin.getString("交易类型"));
         accountVO.setJysj(origin.getString("交易时间"));
         accountVO.setJyje(origin.getString("交易金额(元)"));
         accountVO.setJyye(origin.getString("账户余额(元)"));
         accountVO.setJydszh(origin.getString("交易对手账号"));
+        accountVO.setJydshm(origin.getString("交易对手户名"));
         accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
         accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
-        accountVO.setJydshm(origin.getString("交易对手户名"));
         accountVO.setJyztdcrzbz(origin.getString("借贷类型"));
         accountVO.setType("财付通");
     }
@@ -144,6 +172,9 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         accountVO.setZfddh(origin.getString("支付订单号"));
         accountVO.setJylsh(origin.getString("交易流水号"));
         accountVO.setJyztzh(origin.getString("交易主体账号"));
+        accountVO.setJyzthm(origin.getString("交易主体户名"));
+        accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
+        accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
         accountVO.setJyztdcrzbz(origin.getString("交易主体的出入账标识"));
         accountVO.setJylx(origin.getString("交易类型"));
         accountVO.setZflx(origin.getString("支付类型"));
@@ -157,14 +188,11 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         accountVO.setJyddjd(origin.getString("交易地点经度"));
         accountVO.setJyddwd(origin.getString("交易地点纬度"));
         accountVO.setRemark(origin.getString("备注"));
-        accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
-        accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
-        accountVO.setJyzthm(origin.getString("交易主体户名"));
         accountVO.setJysj(origin.getString("交易时间"));
         accountVO.setJydszh(origin.getString("交易对手账号"));
+        accountVO.setJydshm(origin.getString("交易对手户名"));
         accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
         accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
-        accountVO.setJydshm(origin.getString("交易对手户名"));
         accountVO.setType("反诈");
     }
     public void assembleDatawld(Document origin, AccountVO accountVO) {
@@ -173,11 +201,15 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         accountVO.setJylsh(origin.getString("交易号"));
         accountVO.setJyztzh(origin.getString("支付宝用户ID"));
         accountVO.setJyzthm(origin.getString("支付宝户名"));
+        accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
+        accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
         accountVO.setJyztdcrzbz(origin.getString("收/支"));
         accountVO.setJysj(origin.getString("交易创建时间"));
         accountVO.setJyje(origin.getString("金额(元)"));
         accountVO.setJydszh(origin.getString("对手支付宝用户ID"));
         accountVO.setJydshm(origin.getString("对手支付宝户名"));
+        accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
+        accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
         accountVO.setXfmc(origin.getString("消费名称"));
         accountVO.setJylyd(origin.getString("交易来源地"));
         accountVO.setJyzt(origin.getString("交易状态"));
@@ -187,10 +219,10 @@ public class DataStaticAnalysis extends Ops implements Runnable {
     public void insertDataWld(AccountVO accountVO, DataMap dataMap) {
         dataMap.put("支付订单号", PublicStatic.removeStr(accountVO.getZfddh()));
         dataMap.put("交易流水号", PublicStatic.removeStr(accountVO.getJylsh()));
-        dataMap.put("交易主体银行名称", PublicStatic.removeStr(accountVO.getJyztyhmc()));
         dataMap.put("交易主体账号", PublicStatic.removeStr(accountVO.getJyztzh()));
-        dataMap.put("交易主体银行卡号", PublicStatic.removeStr(accountVO.getJyztyhkh()));
         dataMap.put("交易主体户名", PublicStatic.removeStr(accountVO.getJyzthm()));
+        dataMap.put("交易主体银行卡号", PublicStatic.removeStr(accountVO.getJyztyhkh()));
+        dataMap.put("交易主体银行名称", PublicStatic.removeStr(accountVO.getJyztyhmc()));
         dataMap.put("交易类型", PublicStatic.removeStr(accountVO.getJylx()));
         dataMap.put("支付类型", PublicStatic.removeStr(accountVO.getZflx()));
         dataMap.put("借贷类型", PublicStatic.removeStr(getJtType(accountVO.getJyztdcrzbz())));
@@ -199,9 +231,9 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         dataMap.put("交易金额", PublicStatic.removeStr(accountVO.getJyje()));
         dataMap.put("交易余额", PublicStatic.removeStr(accountVO.getJyye()));
         dataMap.put("交易对手账号", PublicStatic.removeStr(accountVO.getJydszh()));
+        dataMap.put("交易对手户名", PublicStatic.removeStr(accountVO.getJydshm()));
         dataMap.put("交易对手银行卡号", PublicStatic.removeStr(accountVO.getJydsyhkh()));
         dataMap.put("交易对手银行名称", PublicStatic.removeStr(accountVO.getJydsyhkhmc()));
-        dataMap.put("交易对手户名", PublicStatic.removeStr(accountVO.getJydshm()));
         dataMap.put("消费POS机编号", PublicStatic.removeStr(accountVO.getXfposjbh()));
         dataMap.put("交易设备类型", PublicStatic.removeStr(accountVO.getJysblx()));
         dataMap.put("交易支付设备IP", PublicStatic.removeStr(accountVO.getJyzfsbip()));

+ 137 - 1
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisDs.java

@@ -37,10 +37,11 @@ public class DataStaticAnalysisDs extends Ops implements Runnable {
         // 直接删除并创建表
         String newFileId = "";
         String dateFileIdwld = getFileId("五联单-账户明细", modelId, mongoTemplate);
+        String dateFileIdjzy = getFileId("经侦云-账户明细", modelId, mongoTemplate);
         String dateFileIdfa = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
         String dateFileIdcft = getFileId("财付通-交易明细", modelId, mongoTemplate);
         // 插入记录用户后续查询明细
-        if (StringUtils.isNotBlank(dateFileIdwld) || StringUtils.isNotBlank(dateFileIdfa) || StringUtils.isNotBlank(dateFileIdcft)) {
+        if (StringUtils.isNotBlank(dateFileIdjzy)||StringUtils.isNotBlank(dateFileIdwld) || StringUtils.isNotBlank(dateFileIdfa) || StringUtils.isNotBlank(dateFileIdcft)) {
             newFileId = createLogicAndDeleteOld("数据分析-对手透视", modelId, headerProperties.getAntiSecurityTradeEndAnalysisOutput(), mongoTemplate, fileService);
         }
 
@@ -455,6 +456,141 @@ public class DataStaticAnalysisDs extends Ops implements Runnable {
                 dataMapList.addAll(idToData.values());
             }
         }
+        if (StringUtils.isNotBlank(dateFileIdjzy)) {
+
+            MongoCursor<Document> cursor = getCursor(dateFileIdjzy, mongoTemplate);
+            if (cursor.hasNext()) {
+                insertFromTo(dateFileIdjzy, 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<>();
+            Map<String, Set<String>> hm = new HashMap<>();
+            Document origin;
+            while (cursor.hasNext()) {
+
+                try {
+
+                    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("交易对手账号", 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("共同交易主体账号汇总", "");
+                        dataMap.put("共同交易主体户名汇总", 0);
+                        dataMap.put("来源", "五联单");
+                        idToData.put(alipayId, dataMap);
+                    }
+                    String alipayUsername = origin.getString("对手支付宝户名");
+                    if (StringUtils.isNotBlank(alipayUsername) && !"_".equals(alipayUsername) && !"-".equals(alipayUsername) && !"null".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("总笔数");
+                    oCount++;
+                    dataMap.put("总笔数", oCount);
+                    String mainId = (String) origin.get("支付宝用户ID");
+                    String mainIdhm = (String) origin.get("支付宝户名");
+                    if (StringUtils.isNotBlank(mainId) && StringUtils.isNotBlank(mainIdhm)) {
+                        if (hm.containsKey(mainId)) {
+                            Set<String> hmnew = hm.get(mainId);
+                            hmnew.add(mainIdhm);
+                            hm.put(mainId, hmnew);
+                        } else {
+                            Set<String> mainIds = new HashSet<>();
+                            mainIds.add(mainIdhm);
+                            hm.put(mainId, mainIds);
+                        }
+                    }
+                    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);
+                    }
+                } catch (Exception exception) {
+                    log.error(exception.getMessage(), exception);
+                }
+            }
+            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);
+                    Set<String> names = idToNames.get(key);
+                    if (CollectionUtils.isNotEmpty(names)) {
+                        value.put("交易对手户名", StringUtils.join(names, ";"));
+                    }
+                    if (CollectionUtils.isNotEmpty(mainIds)) {
+                        value.put("共同交易主体数", mainIds.size());
+                        String str = "";
+                        Set<String> jyzthm = new HashSet<>();
+                        int count = 0;
+                        for (String mainId : mainIds) {
+                            Set<String> strings = hm.get(mainId);
+                            if (CollectionUtils.isNotEmpty(strings)) {
+                                count++;
+                            }
+                            str += CollectionUtils.isEmpty(strings) ? mainId + ";" : mainId + "(" + StringUtils.join(strings, ",") + ");";
+                        }
+                        value.put("共同交易主体账号汇总", str);
+                        value.put("共同交易主体户名汇总", Math.min(mainIds.size(), count));
+                    }
+
+                    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());
+                }
+                dataMapList.addAll(idToData.values());
+            }
+        }
 
         if (CollectionUtils.isNotEmpty(dataMapList)) {
             saveLines(dataMapList, "共同交易主体数", mongoTemplate);

+ 76 - 1
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisMain.java

@@ -46,10 +46,11 @@ public class DataStaticAnalysisMain extends Ops implements Runnable {
         // 直接删除并创建表
         String newFileId = "";
         String dateFileIdwld = getFileId("五联单-账户明细", modelId, mongoTemplate);
+        String dateFileIdjzy = getFileId("经侦云-账户明细", modelId, mongoTemplate);
         String dateFileIdfa = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
         String dateFileIdcft = getFileId("财付通-交易明细", modelId, mongoTemplate);
         // 插入记录用户后续查询明细
-        if (StringUtils.isNotBlank(dateFileIdwld) || StringUtils.isNotBlank(dateFileIdfa) || StringUtils.isNotBlank(dateFileIdcft)) {
+        if (StringUtils.isNotBlank(dateFileIdjzy)||StringUtils.isNotBlank(dateFileIdwld) || StringUtils.isNotBlank(dateFileIdfa) || StringUtils.isNotBlank(dateFileIdcft)) {
             newFileId = createLogicAndDeleteOld("数据分析-账户透视", modelId, headerProperties.getAntiSecurityTradeScaleAnalysisOutput(), mongoTemplate, fileService);
         }
         // 插入记录用户后续查询明细
@@ -312,6 +313,80 @@ public class DataStaticAnalysisMain extends Ops implements Runnable {
             }
         }
 
+        if (StringUtils.isNotBlank(dateFileIdjzy)) {
+
+            MongoCursor<Document> cursor = getCursor(dateFileIdjzy, mongoTemplate);
+            if (cursor.hasNext()) {
+                insertFromTo(dateFileIdjzy, newFileId, modelId, mongoTemplate);
+            }
+            Set<String> alipayIds = new HashSet<>();
+            Map<String, DataMap> idToData = new HashMap<>();
+            Document origin;
+            while (cursor.hasNext()) {
+                try {
+
+                    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("交易主体账号", 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);
+                        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("支出金额");
+                        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("总笔数");
+                    oCount++;
+                    dataMap.put("总笔数", oCount);
+                } catch (Exception exception) {
+                    log.error(exception.getMessage(), exception);
+                }
+            }
+            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);
+            }
+        }
         latch.countDown();
         log.info("数据分析-账户透视");
     }

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

@@ -50,29 +50,34 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
         String newFileIdAll = "";
         String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
         String cft = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
+        String cftjymx = getFileId(TenpayHeaders.getGeneratedName(4), modelId, mongoTemplate);
         String wld = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+        String wldzhmx = getFileId(AlipayHeaders.getGeneratedName(8), modelId, mongoTemplate);
         String wldjzy = getFileId(AlipayHeaders.getGeneratedName(16), modelId, mongoTemplate);
-        boolean cftFlag=false;
-        boolean wldFlag=false;
-        boolean wldFlagjzy=false;
+        String wldjzyzhmx = getFileId(AlipayHeaders.getGeneratedName(17), modelId, mongoTemplate);
+        String fz = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
         // 插入记录用户后续查询明细
+        List<DataMap> needToSave = new ArrayList<>(1000);
+        Map<String, DataMap> idToData = new HashMap<>();
+        Map<String, Set<String>> idToNames = new HashMap<>();
+        boolean cftflag = true;
+        boolean wldflag = true;
+        boolean wldjzyflag = true;
         if (StringUtils.isNotBlank(cft)) {
             MongoCursor<Document> cursor = getCursor(cft, mongoTemplate);
-            List<DataMap> needToSave = new ArrayList<>(1000);
             Document origin;
-            cftFlag=true;
-            while (cursor.hasNext()){
+            while (cursor.hasNext()) {
+                cftflag = false;
                 origin = cursor.next();
-                DataMap dataMap=new DataMap();
+                DataMap dataMap = new DataMap();
                 dataMap.put("fileId", newFileId);
-                dataMap.put("交易主体账号",PublicStatic.removeStr(origin.getString("账号")));
-                dataMap.put("交易主体户名",PublicStatic.removeStr(origin.getString("注册姓名")));
-                dataMap.put("证件号码",PublicStatic.removeStr(origin.getString("注册身份证号")));
-                dataMap.put("绑定银行卡号",PublicStatic.removeStr(origin.getString("银行账号")));
-                dataMap.put("开户银行名称",PublicStatic.removeStr(origin.getString("开户行信息")));
-                dataMap.put("绑定手机号",PublicStatic.removeStr(origin.getString("绑定手机")));
-                dataMap.put("注册时间",PublicStatic.removeStr(origin.getString("注册时间")));
-
+                dataMap.put("交易主体账号", PublicStatic.removeStr(origin.getString("账号")));
+                dataMap.put("交易主体户名", PublicStatic.removeStr(origin.getString("注册姓名")));
+                dataMap.put("证件号码", PublicStatic.removeStr(origin.getString("注册身份证号")));
+                dataMap.put("绑定银行卡号", PublicStatic.removeStr(origin.getString("银行账号")));
+                dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("开户行信息")));
+                dataMap.put("绑定手机号", PublicStatic.removeStr(origin.getString("绑定手机")));
+                dataMap.put("注册时间", PublicStatic.removeStr(origin.getString("注册时间")));
                 needToSave.add(dataMap);
                 if (needToSave.size() >= 1000) {
                     saveLines(needToSave, mongoTemplate);
@@ -81,26 +86,56 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             }
             if (CollectionUtils.isNotEmpty(needToSave)) {
                 saveLines(needToSave, mongoTemplate);
+                needToSave.clear();
+            }
+        }
+        if (StringUtils.isNotBlank(cftjymx)) {
+            Set<String> alipayIds = new HashSet<>();
+            MongoCursor<Document> cursor = getCursor(cftjymx, mongoTemplate);
+            Document origin;
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                DataMap dataMap = new DataMap();
+                String alipayId = origin.getString("交易主体账号");
+                String alipayUsername = origin.getString("交易主体户名");
+                String yhkh = origin.getString("交易主体银行卡号");
+                String value = alipayId + "-" + yhkh;
+                if (StringUtils.isNotBlank(alipayUsername) && !"null".equals(alipayUsername)) {
+                    Set<String> namesSet;
+                    if (idToNames.containsKey(alipayId)) {
+                        namesSet = idToNames.get(alipayId);
+                    } else {
+                        namesSet = new HashSet<>();
+                        idToNames.put(alipayId, namesSet);
+                    }
+                    namesSet.add(alipayUsername);
+                }
+                if (!PublicStatic.checkStr(alipayId) && !alipayIds.contains(value)) {
+                    dataMap.put("fileId", newFileId);
+                    dataMap.put("交易主体账号", alipayId);
+                    dataMap.put("绑定银行卡号", PublicStatic.removeStr(yhkh));
+                    dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("交易主体银行名称")));
+                    dataMap.put("类型", "财付通");
+                    alipayIds.add(value);
+                    idToData.put(alipayId, dataMap);
+                }
             }
         }
-
         if (StringUtils.isNotBlank(wld)) {
             MongoCursor<Document> cursor = getCursor(wld, mongoTemplate);
-
-            wldFlag=true;
             Document origin;
-            List<DataMap> needToSave = new ArrayList<>(1000);
-            while (cursor.hasNext()){
+            while (cursor.hasNext()) {
                 origin = cursor.next();
-                DataMap dataMap=new DataMap();
+                wldflag = false;
+                DataMap dataMap = new DataMap();
                 dataMap.put("fileId", newFileId);
-                dataMap.put("交易主体账号",PublicStatic.removeStr(origin.getString("用户ID")));
-                dataMap.put("交易主体户名",PublicStatic.removeStr(origin.getString("账户名称")));
-                dataMap.put("证件号码",PublicStatic.removeStr(origin.getString("证件号")));
-                dataMap.put("绑定银行卡号",PublicStatic.removeStr(origin.getString("绑定卡号")));
-                dataMap.put("开户银行名称",PublicStatic.removeStr(origin.getString("银行简称")));
-                dataMap.put("绑定手机号",PublicStatic.removeStr(origin.getString("绑定手机")));
-                dataMap.put("注册时间","");
+                dataMap.put("交易主体账号", PublicStatic.removeStr(origin.getString("用户ID")));
+                dataMap.put("交易主体户名", PublicStatic.removeStr(origin.getString("账户名称")));
+                dataMap.put("证件号码", PublicStatic.removeStr(origin.getString("证件号")));
+                dataMap.put("绑定银行卡号", PublicStatic.removeStr(origin.getString("绑定卡号")));
+                dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("银行简称")));
+                dataMap.put("绑定手机号", PublicStatic.removeStr(origin.getString("绑定手机")));
+                dataMap.put("注册时间", PublicStatic.removeStr(origin.getString("注册时间")));
 
                 needToSave.add(dataMap);
                 if (needToSave.size() >= 500) {
@@ -110,25 +145,57 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             }
             if (CollectionUtils.isNotEmpty(needToSave)) {
                 saveLines(needToSave, mongoTemplate);
+                needToSave.clear();
+            }
+        }
+        if (StringUtils.isNotBlank(wldzhmx)) {
+            Set<String> alipayIds = new HashSet<>();
+            MongoCursor<Document> cursor = getCursor(wldzhmx, mongoTemplate);
+            Document origin;
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                DataMap dataMap = new DataMap();
+                String alipayId = origin.getString("支付宝用户ID");
+                String alipayUsername = origin.getString("支付宝户名");
+                String yhkh = origin.getString("交易主体银行卡号");
+                String value = alipayId + "-" + yhkh;
+                if (StringUtils.isNotBlank(alipayUsername) && !"null".equals(alipayUsername)) {
+                    Set<String> namesSet;
+                    if (idToNames.containsKey(alipayId)) {
+                        namesSet = idToNames.get(alipayId);
+                    } else {
+                        namesSet = new HashSet<>();
+                        idToNames.put(alipayId, namesSet);
+                    }
+                    namesSet.add(alipayUsername);
+                }
+                if (!PublicStatic.checkStr(alipayId) && !alipayIds.contains(value)) {
+                    dataMap.put("fileId", newFileId);
+                    dataMap.put("交易主体账号", alipayId);
+                    dataMap.put("绑定银行卡号", PublicStatic.removeStr(yhkh));
+                    dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("交易主体银行名称")));
+                    dataMap.put("类型", "五联单");
+                    alipayIds.add(value);
+                    idToData.put(alipayId, dataMap);
+                }
             }
         }
 
         if (StringUtils.isNotBlank(wldjzy)) {
             MongoCursor<Document> cursor = getCursor(wldjzy, mongoTemplate);
-            wldFlagjzy=true;
             Document origin;
-            List<DataMap> needToSave = new ArrayList<>(1000);
-            while (cursor.hasNext()){
+            while (cursor.hasNext()) {
                 origin = cursor.next();
-                DataMap dataMap=new DataMap();
+                wldjzyflag = false;
+                DataMap dataMap = new DataMap();
                 dataMap.put("fileId", newFileId);
-                dataMap.put("交易主体账号",PublicStatic.removeStr(origin.getString("用户ID")));
-                dataMap.put("交易主体户名",PublicStatic.removeStr(origin.getString("账户名称")));
-                dataMap.put("证件号码",PublicStatic.removeStr(origin.getString("证件号码")));
-                dataMap.put("绑定银行卡号",PublicStatic.removeStr(origin.getString("绑定卡号")));
-                dataMap.put("开户银行名称",PublicStatic.removeStr(origin.getString("银行简称")));
-                dataMap.put("绑定手机号",PublicStatic.removeStr(origin.getString("绑定手机号")));
-                dataMap.put("注册时间","");
+                dataMap.put("交易主体账号", PublicStatic.removeStr(origin.getString("用户ID")));
+                dataMap.put("交易主体户名", PublicStatic.removeStr(origin.getString("账户名称")));
+                dataMap.put("证件号码", PublicStatic.removeStr(origin.getString("证件号码")));
+                dataMap.put("绑定银行卡号", PublicStatic.removeStr(origin.getString("绑定卡号")));
+                dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("银行简称")));
+                dataMap.put("绑定手机号", PublicStatic.removeStr(origin.getString("绑定手机号")));
+                dataMap.put("注册时间", PublicStatic.removeStr(origin.getString("注册时间")));
 
                 needToSave.add(dataMap);
                 if (needToSave.size() >= 500) {
@@ -138,9 +205,75 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             }
             if (CollectionUtils.isNotEmpty(needToSave)) {
                 saveLines(needToSave, mongoTemplate);
+                needToSave.clear();
+            }
+        }
+        if (StringUtils.isNotBlank(wldjzyzhmx)) {
+            Set<String> alipayIds = new HashSet<>();
+            MongoCursor<Document> cursor = getCursor(wldjzyzhmx, mongoTemplate);
+            Document origin;
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                DataMap dataMap = new DataMap();
+                String alipayId = origin.getString("支付宝用户ID");
+                String alipayUsername = origin.getString("支付宝户名");
+                String yhkh = origin.getString("交易主体银行卡号");
+                String value = alipayId + "-" + yhkh;
+                if (StringUtils.isNotBlank(alipayUsername) && !"null".equals(alipayUsername)) {
+                    Set<String> namesSet;
+                    if (idToNames.containsKey(alipayId)) {
+                        namesSet = idToNames.get(alipayId);
+                    } else {
+                        namesSet = new HashSet<>();
+                        idToNames.put(alipayId, namesSet);
+                    }
+                    namesSet.add(alipayUsername);
+                }
+                if (!PublicStatic.checkStr(alipayId) && !alipayIds.contains(value)) {
+                    dataMap.put("fileId", newFileId);
+                    dataMap.put("交易主体账号", alipayId);
+                    dataMap.put("绑定银行卡号", PublicStatic.removeStr(yhkh));
+                    dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("交易主体银行名称")));
+                    dataMap.put("类型", "经侦云");
+                    alipayIds.add(value);
+                    idToData.put(value, dataMap);
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(fz)) {
+            {
+                Set<String> alipayIds = new HashSet<>();
+                MongoCursor<Document> cursor = getCursor(fz, mongoTemplate);
+                Document origin;
+                while (cursor.hasNext()) {
+                    origin = cursor.next();
+                    DataMap dataMap = new DataMap();
+                    String alipayId = origin.getString("交易主体账号");
+                    String alipayUsername = origin.getString("交易主体户名");
+                    String yhkh = origin.getString("交易主体银行卡号");
+                    String value = alipayId + "-" + yhkh;
+                    if (StringUtils.isNotBlank(alipayUsername) && !"null".equals(alipayUsername)) {
+                        Set<String> namesSet;
+                        if (idToNames.containsKey(alipayId)) {
+                            namesSet = idToNames.get(alipayId);
+                        } else {
+                            namesSet = new HashSet<>();
+                            idToNames.put(alipayId, namesSet);
+                        }
+                        namesSet.add(alipayUsername);
+                    }
+                    if (!PublicStatic.checkStr(alipayId) && !alipayIds.contains(value)) {
+                        dataMap.put("fileId", newFileId);
+                        dataMap.put("交易主体账号", alipayId);
+                        dataMap.put("绑定银行卡号", PublicStatic.removeStr(yhkh));
+                        dataMap.put("开户银行名称", PublicStatic.removeStr(origin.getString("交易主体银行名称")));
+                        dataMap.put("类型", "反诈");
+                        alipayIds.add(value);
+                        idToData.put(alipayId, dataMap);
+                    }
+                }
             }
         }
-
         if (StringUtils.isNotBlank(dateFileId)) {
             MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
             if (cursor.hasNext()) {
@@ -153,20 +286,13 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                 String newFileIdAll1 = createLogicAndDeleteOld("数据分析-共同关系网络", modelId, headerProperties.getStaticUserAllOutput(), mongoTemplate, fileService);
                 insertFromTo(dateFileId, newFileIdAll1, modelId, mongoTemplate);
             }
-            Set<String> alipayIds = new HashSet<>();
             Set<String> alipayIdsAll = new HashSet<>();
-            Map<String, DataMap> idToData = new HashMap<>();
-            Map<String, Set<String>> idToNames = new HashMap<>();
             Document origin;
-            List<DataMap> needToSave = new ArrayList<>(1000);
             List<DataMap> needToSaveall = new ArrayList<>(1000);
             Map<String, Object> dataMapUser = new HashMap<>();
             while (cursor.hasNext()) {
                 try {
                     origin = cursor.next();
-                    String alipayId = origin.getString("交易主体账号");
-                    DataMap dataMap;
-                    //组装用户基本信息
                     String type = origin.getString("类型");
                     String dateFileId2 = "";
                     if ("财付通".equals(type)) {
@@ -176,26 +302,6 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                         dateFileId2 = wld;
 
                     }
-                    if (StringUtils.isNotBlank(alipayId) && !"null".equals(alipayId) && !alipayIds.contains(alipayId)) {
-                        alipayIds.add(alipayId);
-                        dataMap = new DataMap();
-                        dataMap.put("fileId", newFileId);
-                        dataMap.put("交易主体账号", alipayId);
-                        dataMap.put("交易主体户名", "");
-                        getData(dataMap, origin, dateFileId2);
-                        idToData.put(alipayId, dataMap);
-                    }
-                    String alipayUsername = origin.getString("交易主体户名");
-                    if (StringUtils.isNotBlank(alipayUsername) && !"null".equals(alipayUsername)) {
-                        Set<String> namesSet;
-                        if (idToNames.containsKey(alipayId)) {
-                            namesSet = idToNames.get(alipayId);
-                        } else {
-                            namesSet = new HashSet<>();
-                            idToNames.put(alipayId, namesSet);
-                        }
-                        namesSet.add(alipayUsername);
-                    }
                     getDataAll(needToSaveall, origin, alipayIdsAll, newFileIdAll, dataMapUser, idToData, dateFileId2);
                     if (needToSaveall.size() >= 1000) {
                         saveLines(needToSaveall, mongoTemplate);
@@ -206,49 +312,42 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     log.error(exception.getMessage(), exception);
                 }
             }
-            if (CollectionUtils.isNotEmpty(idToData.values())) {
-                for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
-                    DataMap dataMap = entry.getValue();
-                    String id = (String) dataMap.get("交易主体账号");
-                    String type = (String) dataMap.get("类型");
-                    Set<String> namesSet = idToNames.get(id);
-                    if (CollectionUtils.isNotEmpty(namesSet)) {
-                        dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
-                    }
-
-                    //将filedId 替换然后给网络关系图用
-                    DataMap dataMap1=new DataMap();
-                    BeanUtil.copyProperties(dataMap,dataMap1);
-                    dataMap1.put("fileId", newFileId1);
-                    needToSave.add(dataMap1);
-
-                    if(cftFlag&&"反诈".equals(type)){
-                        needToSave.add(dataMap);
-                    }else if(wldFlag&&"反诈".equals(type)){
-                        needToSave.add(dataMap);
-                    }else if(wldFlagjzy&&"反诈".equals(type)){
-                        needToSave.add(dataMap);
-                    }else if(!cftFlag){
-                        needToSave.add(dataMap);
-                    }else if(!wldFlag){
-                        needToSave.add(dataMap);
-                    }else if(!wldFlagjzy){
-                        needToSave.add(dataMap);
-                    }
-
-                    if (needToSave.size() >= 1000) {
-                        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-                        needToSave.clear();
-                    }
-                    //查询其他的基本信息
+            if (CollectionUtils.isNotEmpty(needToSaveall)) {
+                saveLines(needToSaveall, mongoTemplate);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(idToData.values())) {
+            for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
+                DataMap dataMap = entry.getValue();
+                String id = (String) dataMap.get("交易主体账号");
+                String type = String.valueOf(dataMap.get("类型"));
+                Set<String> namesSet = idToNames.get(id);
+                if (CollectionUtils.isNotEmpty(namesSet)) {
+                    dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
                 }
-                if (CollectionUtils.isNotEmpty(needToSave)) {
-                    saveLines(needToSave, mongoTemplate);
+                deleteKey(dataMap, "类型");
+                //将filedId 替换然后给网络关系图用
+                DataMap dataMap1 = new DataMap();
+                BeanUtil.copyProperties(dataMap, dataMap1);
+                dataMap1.put("fileId", newFileId1);
+                needToSave.add(dataMap1);
+                if (type.equals("财付通") && cftflag) {
+                    needToSave.add(dataMap);
+                } else if (type.equals("五联单") && wldflag) {
+                    needToSave.add(dataMap);
+                } else if (type.equals("经侦云") && wldjzyflag) {
+                    needToSave.add(dataMap);
+                } else if(type.equals("反诈")){
+                    needToSave.add(dataMap);
                 }
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+                //查询其他的基本信息
             }
-
-            if (CollectionUtils.isNotEmpty(needToSaveall)) {
-                saveLines(needToSaveall, mongoTemplate);
+            if (CollectionUtils.isNotEmpty(needToSave)) {
+                saveLines(needToSave, mongoTemplate);
             }
         }
         latch.countDown();
@@ -279,9 +378,11 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     bdsjh = String.valueOf(dataMaps.get(0).get("绑定手机"));
                     zcsj = String.valueOf(dataMaps.get(0).get("注册时间"));
                 }
+            } else {
+                bdyhkh = origin.getString("交易主体银行卡号");
+                khyhmc = origin.getString("交易主体银行名称");
             }
-        }
-        else if ("五联单".equals(type)) {
+        } else if ("五联单".equals(type)) {
 //       "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
             if (StringUtils.isNotBlank(dateFileId2)) {
                 List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
@@ -296,9 +397,11 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     bdsjh = String.valueOf(dataMaps.get(0).get("登录手机"));
                     zcsj = String.valueOf(dataMaps.get(0).get("注册时间"));
                 }
+            } else {
+                bdyhkh = origin.getString("交易主体银行卡号");
+                khyhmc = origin.getString("交易主体银行名称");
             }
-        }
-        else if("反诈".equals(type)){
+        } else if ("反诈".equals(type)) {
             bdyhkh = origin.getString("交易主体银行卡号");
             khyhmc = origin.getString("交易主体银行名称");
         }
@@ -324,17 +427,6 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
         }
         Set<String> accountList = new HashSet<>();
         Map<String, Object> dataMaphm = new HashMap<>();
-        /*if (StringUtils.isNotBlank(account) && !"null".equals(account)) {
-            String key = account + "-" + accounthm;
-            accountList.add(key);
-            dataMaphm.put(key, accounthm);
-            if (StringUtils.isNotBlank(account) && !"null".equals(account) && StringUtils.isNotBlank(accounthm) && !"null".equals(accounthm)) {
-                String s = String.valueOf(userMap.get(key));
-                if (PublicStatic.checkStr(s)) {
-                    userMap.put(key, accounthm);
-                }
-            }
-        }*/
 
         if (StringUtils.isNotBlank(accountds) && !"null".equals(accountds)) {
             String key1 = accountds + "-" + accountdshm;
@@ -355,12 +447,15 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             //账户状态", "账号", "注册姓名", "注册时间", "注册身份证号", "绑定手机", "绑定状态", "开户行信息", "银行账号"
             if (CollectionUtils.isNotEmpty(accountList)) {
                 for (String s : accountList) {
+                    if (s.split("-").length == 0) {
+                        continue;
+                    }
                     String s1 = s.split("-")[0];
                     DataMap dataMap = havedUser.get(s1);
                     if (dataMap != null) {
                         DataMap newDataMap = new DataMap();
                         newDataMap.put("证件号", String.valueOf(dataMap.get("证件号码")));
-                        newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体户名"))) ? s.split("-").length==1?"":s.split("-")[1] : String.valueOf(dataMap.get("交易主体户名")));
+                        newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体户名"))) ? s.split("-").length == 1 ? "" : s.split("-")[1] : String.valueOf(dataMap.get("交易主体户名")));
                         newDataMap.put("账号", String.valueOf(dataMap.get("交易主体账号")));
                         dataMaps.add(newDataMap);
                     } else {
@@ -375,7 +470,7 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                                 for (DataMap map : dataMapnew) {
                                     DataMap newDataMap = new DataMap();
                                     newDataMap.put("证件号", String.valueOf(map.get("注册身份证号")));
-                                    newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(map.get("注册姓名"))) ? s.split("-").length==1?"":s.split("-")[1] : String.valueOf(map.get("注册姓名")));
+                                    newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(map.get("注册姓名"))) ? s.split("-").length == 1 ? "" : s.split("-")[1] : String.valueOf(map.get("注册姓名")));
                                     newDataMap.put("账号", String.valueOf(map.get("账号")));
                                     dataMaps.add(newDataMap);
                                 }
@@ -410,6 +505,9 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     }
                 } else {
                     for (String s : accountList) {
+                        if (s.split("-").length == 0) {
+                            continue;
+                        }
                         if (!alipayIdsAll.contains(s)) {
                             DataMap newDataMap = new DataMap();
                             newDataMap.put("fileId", newFileIdAll);
@@ -424,6 +522,9 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             }
         } else if ("反诈".equals(type)) {
             for (String s : accountList) {
+                if (s.split("-").length == 0) {
+                    continue;
+                }
                 if (!PublicStatic.checkStr(s) && !alipayIdsAll.contains(s)) {
                     DataMap newDataMap = new DataMap();
                     newDataMap.put("fileId", newFileIdAll);
@@ -440,12 +541,15 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             //账户状态", "账号", "注册姓名", "注册时间", "注册身份证号", "绑定手机", "绑定状态", "开户行信息", "银行账号"
             if (CollectionUtils.isNotEmpty(accountList)) {
                 for (String s : accountList) {
+                    if (s.split("-").length == 0) {
+                        continue;
+                    }
                     String s1 = s.split("-")[0];
                     DataMap dataMap = havedUser.get(s1);
                     if (dataMap != null) {
                         DataMap newDataMap = new DataMap();
                         newDataMap.put("证件号", String.valueOf(dataMap.get("证件号码")));
-                        newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体户名"))) ? s.split("-").length==1?"":s.split("-")[1] : String.valueOf(dataMap.get("交易主体户名")));
+                        newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体户名"))) ? s.split("-").length == 1 ? "" : s.split("-")[1] : String.valueOf(dataMap.get("交易主体户名")));
                         newDataMap.put("账号", String.valueOf(dataMap.get("交易主体账号")));
                         dataMaps.add(newDataMap);
                     } else {
@@ -459,7 +563,7 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                                 for (DataMap map : dataMapnew) {
                                     DataMap newDataMap = new DataMap();
                                     newDataMap.put("证件号", String.valueOf(map.get("证件号")));
-                                    newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(map.get("账户名称"))) ? s.split("-").length==1?"":s.split("-")[1] : String.valueOf(map.get("账户名称")));
+                                    newDataMap.put("账户名称", PublicStatic.checkStr(String.valueOf(map.get("账户名称"))) ? s.split("-").length == 1 ? "" : s.split("-")[1] : String.valueOf(map.get("账户名称")));
                                     newDataMap.put("账号", String.valueOf(map.get("用户ID")));
                                     dataMaps.add(newDataMap);
                                 }
@@ -493,6 +597,9 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                     }
                 } else {
                     for (String s : accountList) {
+                        if (s.split("-").length == 0) {
+                            continue;
+                        }
                         if (!alipayIdsAll.contains(s)) {
                             DataMap newDataMap = new DataMap();
                             newDataMap.put("fileId", newFileIdAll);

+ 41 - 5
src/main/java/ieven/server/webapp/service/datastatic/DataStaticService.java

@@ -247,6 +247,7 @@ public class DataStaticService extends Ops {
         Map<String, Set<String>> zh = new HashMap<>();
 
         Map<String, List<DataMap>> jyzthmMap = new HashMap<>();
+        Map<String,List<String>>dataListMap=new HashMap<>();
         while (cursor.hasNext()) {
             // 写法1(建议)
             try {
@@ -268,9 +269,17 @@ public class DataStaticService extends Ops {
                                 List<DataMap> dataMaps3 = new ArrayList<>();
                                 dataMaps3.add(dataMap1);
                                 jyzthmMap.put(jyzthm,dataMaps3);
+                                dataListMap.put(jyzthm,Lists.newArrayList(jyztzh1));
                             }else {
-                                dataMaps2.add(dataMap1);
-                                jyzthmMap.put(jyzthm,dataMaps2);
+                                List<String> list = dataListMap.get(jyzthm);
+                                if(CollectionUtils.isEmpty(list)){
+                                    dataListMap.put(jyzthm,Lists.newArrayList(jyztzh1));
+                                }else if(!list.contains(jyztzh1)){
+                                    list.add(jyztzh1);
+                                    dataMaps2.add(dataMap1);
+                                    jyzthmMap.put(jyzthm,dataMaps2);
+                                    dataListMap.put(jyzthm,list);
+                                }
                             }
                         }
                     }
@@ -344,11 +353,38 @@ public class DataStaticService extends Ops {
             }
 
             //获取节点名称
-            List<DataMap> dataMapsparty1 = jyzthmMap.get(jythm);
-            List<DataMap> dataMapsparty2 = personMap.get(jydszh);
-            if (CollectionUtils.isEmpty(dataMapsparty1) || CollectionUtils.isEmpty(dataMapsparty2)) {
+            if(jythm.contains("喻思瑶")||jythm.contains("18995527099")){
+                System.out.println("111");
+            }
+            List<DataMap> dataMapsparty11 = personzhmcMap.get(jythm);
+            List<DataMap> dataMapsparty22 = personMap.get(jydszh);
+            if (CollectionUtils.isEmpty(dataMapsparty11) || CollectionUtils.isEmpty(dataMapsparty22)) {
                 continue;
             }
+            List<DataMap> dataMapsparty1=new ArrayList<>(dataMapsparty11.size());
+            List<String>valueList=new ArrayList<>();
+            for (DataMap dataMap1 : dataMapsparty11) {
+                String zhnew=String.valueOf(dataMap1.get("交易主体账号"));
+                String hmnew=String.valueOf(dataMap1.get("交易主体户名"));
+                String valuenew=zhnew+"_"+hmnew;
+                if(!valueList.contains(valuenew)){
+                    dataMapsparty1.add(dataMap1);
+                    valueList.add(valuenew);
+                }
+            }
+
+            List<DataMap> dataMapsparty2=new ArrayList<>(dataMapsparty22.size());
+            List<String>valueList2=new ArrayList<>();
+            for (DataMap dataMap1 : dataMapsparty22) {
+                String zhnew=String.valueOf(dataMap1.get("交易主体账号"));
+                String hmnew=String.valueOf(dataMap1.get("交易主体户名"));
+                String valuenew=zhnew+"_"+hmnew;
+                if(!valueList.contains(valuenew)){
+                    dataMapsparty2.add(dataMap1);
+                    valueList2.add(valuenew);
+                }
+            }
+
             if (!usermcList.contains(jythm)) {
                 Map<String, Object> userMap = new HashMap<>();
                 if (CollectionUtils.isNotEmpty(dataMapsparty1)) {

+ 125 - 0
src/main/java/ieven/server/webapp/service/tenpay/TenpayShopOrders.java

@@ -0,0 +1,125 @@
+package ieven.server.webapp.service.tenpay;
+
+import com.mongodb.client.MongoCursor;
+import ieven.server.webapp.domain.data.DataMap;
+import ieven.server.webapp.domain.data.Fields;
+import ieven.server.webapp.domain.file.FileService;
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+@Slf4j
+public class TenpayShopOrders extends Ops implements Runnable {
+
+    List<Fields> originFields;
+    String modelId;
+    MongoTemplate mongoTemplate;
+    FileService fileService;
+
+    CountDownLatch latch;
+
+    public TenpayShopOrders(
+            List<Fields> originFields,
+            String modelId,
+            MongoTemplate mongoTemplate,
+            FileService fileService,
+            CountDownLatch latch) {
+        this.originFields = originFields;
+        this.modelId = modelId;
+        this.mongoTemplate = mongoTemplate;
+        this.fileService = fileService;
+        this.latch = latch;
+    }
+
+    @Override
+    public void run() {
+        log.info("财付通-商户订单明细开始");
+        List<String> headers9 = TenpayHeaders.getHeaders(9);
+        List<String> headers10 = TenpayHeaders.getHeaders(10);
+        List<Fields> matched = matchHeaders(originFields, headers10);
+        String newFileId = "";
+        if (CollectionUtils.isNotEmpty(matched)) {
+            newFileId = createLogicAndDeleteOld("财付通-商户订单", modelId, headers9, mongoTemplate, fileService);
+            for (Fields fields : matched) {
+                String fileId = fields.getFileId();
+                MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
+                Document originDoc;
+                List<DataMap> needToSave = new ArrayList<>(1000);
+                while (cursor.hasNext()) {
+                    originDoc = cursor.next();
+                    // 拷贝到新的
+                    DataMap newDoc = initWithOrigin(originDoc, newFileId);
+                    deleteKey(newDoc, "FILEID");
+                    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);
+                        needToSave.clear();
+                    }
+                }
+                if (CollectionUtils.isNotEmpty(needToSave)) {
+                    saveLines(needToSave, mongoTemplate);
+                }
+            }
+        }
+
+        matched = matchHeaders(originFields, headers9);
+
+        // 以下为处理另一种格式的财付通数据
+        if (CollectionUtils.isNotEmpty(matched)) {
+            if (StringUtils.isBlank(newFileId)) {
+                newFileId = createLogicAndDeleteOld("财付通-商户订单", modelId, headers9, mongoTemplate, fileService);
+            }
+            for (Fields fields : matched) {
+                String fileId = fields.getFileId();
+                MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
+                Document originDoc;
+                List<DataMap> needToSave = new ArrayList<>(1000);
+                while (cursor.hasNext()) {
+                    originDoc = cursor.next();
+                    // 拷贝到新的
+                    DataMap newDoc = initWithOrigin(originDoc, newFileId);
+                    deleteKey(newDoc, "FILEID");
+                    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);
+                        needToSave.clear();
+                    }
+                }
+                if (CollectionUtils.isNotEmpty(needToSave)) {
+                    saveLines(needToSave, mongoTemplate);
+                }
+            }
+            // 以下为处理另一种格式的财付通数据
+        }
+        latch.countDown();
+        log.info("财付通-商户订单明细开始");
+    }
+}

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

@@ -52,8 +52,9 @@ public class TenpayTrades extends Ops implements Runnable {
 
         String dateFileId = getFileId("财付通-订单明细2", modelId, mongoTemplate);
         String dateFileIdnew = getFileId("财付通-订单明细1", modelId, mongoTemplate);
+        String dateFileIdshop = getFileId("财付通-商户订单", modelId, mongoTemplate);
         // 遍历登录日志全表
-        if (StringUtils.isNotBlank(dateFileId) || StringUtils.isNotBlank(dateFileIdnew)) {
+        if (StringUtils.isNotBlank(dateFileId) || StringUtils.isNotBlank(dateFileIdnew)|| StringUtils.isNotBlank(dateFileIdshop)) {
             antiSecurityFileId = createLogicAndDeleteOld("财付通-交易明细", modelId, TenpayHeaders.getHeaders(2), mongoTemplate, fileService);
 
         }
@@ -182,7 +183,6 @@ public class TenpayTrades extends Ops implements Runnable {
             }
         }
 
-        // 遍历登录日志全表
         if (StringUtils.isNotBlank(dateFileIdnew)) {
             MongoCursor<Document> cursor = getCursor(dateFileIdnew, mongoTemplate);
             Document origin;
@@ -292,6 +292,101 @@ public class TenpayTrades extends Ops implements Runnable {
                 saveLines(needToSave, mongoTemplate);
             }
         }
+
+        //商户订单
+        if (StringUtils.isNotBlank(dateFileIdshop)) {
+            MongoCursor<Document> cursor = getCursor(dateFileIdshop, mongoTemplate);
+            Document origin;
+            List<DataMap> needToSave = new ArrayList<>(1000);
+            String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
+            Map<String, List<DataMap>> userMap = new HashMap<>();
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                DataMap dataMap = new DataMap();
+                dataMap.put("fileId", antiSecurityFileId);
+                String userId = origin.getString("商户ID").replace("[", "").replace("]", "");
+                String dsUserId = origin.getString("对手方ID").replace("[", "").replace("]", "");
+                dataMap.put("用户ID", userId);
+                String lognumber = origin.getString("交易单号");
+                if (StringUtils.isBlank(lognumber)) {
+                    continue;
+                }
+                dataMap.put("交易主体户名", origin.getString("用户侧账户名称"));
+                dataMap.put("交易主体账号", userId);
+                dataMap.put("交易主体银行卡号", origin.getString("用户银行卡号"));
+                dataMap.put("交易主体银行名称", origin.getString("用户侧银行名称"));
+                dataMap.put("交易对手户名", origin.getString("对手侧账户名称"));
+                dataMap.put("交易对手银行卡号", origin.getString("对手方银行卡号"));
+                dataMap.put("交易对手银行名称", origin.getString("对手侧银行名称"));
+                dataMap.put("交易单号", lognumber.replace("[", "").replace("]", ""));
+                dataMap.put("借贷类型", origin.getString("借贷类型"));
+
+                dataMap.put("交易对手账号", dsUserId);
+                dataMap.put("交易时间", origin.getString("交易时间"));
+                String string5 = origin.getString("交易金额(分)");
+                if (!NumberUtil.isNumber(string5)) {
+                    continue;
+                }
+                dataMap.put("交易金额(元)", NumberUtil.roundStr(NumberUtil.div(string5 == null ? "0" : string5, "100").doubleValue(), 2));
+                String string6 = origin.getString("账户余额(分)");
+                if (!NumberUtil.isNumber(string6)) {
+                    continue;
+                }
+                dataMap.put("账户余额(元)", NumberUtil.roundStr(NumberUtil.div(string6 == null ? "0" : string6, "100").doubleValue(), 2));
+                dataMap.put("银行类型", origin.getString("交易业务类型"));
+                dataMap.put("交易类型", origin.getString("交易用途类型"));
+                dataMap.put("交易说明", origin.getString("备注"));
+                dataMap.put("网银联单号1", "");
+                dataMap.put("网银联单号2", "");
+                dataMap.put("交易主体第三方账号名", origin.getString("第三方账户名称"));
+                dataMap.put("对手第三方账号名", "");
+
+                if (PublicStatic.checkStr(String.valueOf(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);
+                        } else {
+                            //财付通-注册信息
+                            //去用户注册中进行数据补全
+                            List<DataMap> dataMaps = userMap.get(account);
+                            if (CollectionUtils.isEmpty(dataMaps)) {
+                                dataMaps = this.mongoTemplate.find((new Query(
+                                        Criteria.where("fileId")
+                                                .is(dateFileId2)
+                                                .and("账号")
+                                                .is(account))), DataMap.class);
+                                userMap.put(account, dataMaps);
+                            }
+
+                            if (CollectionUtils.isNotEmpty(dataMaps)) {
+                                dataMap.put("交易主体户名", dataMaps.get(0).get("注册姓名"));
+                            }
+                        }
+                    }
+                }
+                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();
+                }
+            }
+            if (CollectionUtils.isNotEmpty(needToSave)) {
+                saveLines(needToSave, mongoTemplate);
+            }
+        }
         this.latch.countDown();
         log.info("财付通-交易明细结束");
     }

+ 9 - 0
src/main/java/ieven/server/webapp/util/SpreadsheetVersion.java

@@ -0,0 +1,9 @@
+package ieven.server.webapp.util;
+
+/**
+ * @author hankunkun
+ * @version 1.0
+ * @date 2024/12/4 20:50
+ */
+public enum SpreadsheetVersion {
+}

+ 12 - 5
src/main/java/ieven/server/webapp/util/excel/PublicStatic.java

@@ -455,15 +455,22 @@ public class PublicStatic {
     }
 
     public static String removeStr(String str) {
-        if (StringUtils.isBlank(str) || "null".equals(str) || "-".equals("str")) {
+        if (StringUtils.isBlank(str) || "null".equals(str) || "-".equals(str)) {
             return "";
         }
         return str;
     }
 
+    public static String checkStrJe(String str) {
+        if (StringUtils.isBlank(str) || "null".equals(str) || "-".equals(str)||"-".equals(str)) {
+            return "0.00";
+        }
+        return str;
+    }
+
     public static List<String> noQueryData = Lists.newArrayList("公司", "慈善", "红十字", "店", "工作室", "商行", "中心", "经营部", "水果行", "餐厅", "超市", "市场", "商贸", "西饼屋", "科技", "酒楼", "停车场", "ETC", "etc", "服务", "批发", "渔场", "浴场", "设计", "物业", "咨询", "批发", "合作社", "工厂", "鞋厂", "动物园", "植物园", "土黑猪", "猫狗", "学校", "学院", "大学", "棋牌", "娱乐", "袜厂", "制品厂", "加油站", "体育馆", "研究所", "保健院", "龙虾", "羊蝎子", "足道", "公安局", "税务局", "法院", "菜馆", "棋牌", "水产行", "海鲜行", "公司", "服饰", "服装", "基金", "宠物", "车行", "保险", "理财", "支付宝", "财付通", "apple", "烟酒", "经营者",
             "装配厂", "商户", "null", "借呗", "花呗", "网商银行", "LIMITED", "INC.", "幼儿园", "备用金", "淘宝现金红包", "基金蚂蚁", "耐克", "航空", "滴滴出行", "果格", "拉扎斯", "网络科技", "字节跳动", "Incorporated", "Limited", "道达尔", "欧莱雅", "星巴克", "咖啡", "实业", "百胜餐饮", "优酷", "爱奇艺", "挚享科技", "云账户", "吱信", "广场", "中国", "移动", "联通", "电信", "门市", "经营", "工作", "教育", "财政", "税务", "公安", "Inc.", "LTD", "Ltd", "协会", "天猫", "经销", "管理", "交通", "百货", "个体", "食品", "旅行", "携程", "同程", "淘宝", "科技珠宝", "农场", "公证", "包装", "到家", "京东", "委员", "管委会", "B.V.", "财付通", "微商", "支付",
-            "美团", "饿了么", "运营", "中学", "小学", "ETC", "etc", "银行", "长盛基金管理有限公司");
+            "美团", "饿了么", "运营", "中学", "小学", "ETC", "etc", "银行", "长盛基金管理有限公司", "联合社","中间账户");
 
     public static List<Criteria> getQuery() {
         List<Criteria> dataList = new ArrayList<>();
@@ -475,9 +482,9 @@ public class PublicStatic {
                 newCri.regex(compile);
                 dataList.add(newCri);
             }
-            Criteria newFile = new Criteria(s);
-            newFile.ne(null).ne("");
-            dataList.add(newFile);
+            /*Criteria newFile = new Criteria(s);
+            //newFile.ne(null).ne("");
+            dataList.add(newFile);*/
         }
         return dataList;
     }

+ 3 - 4
src/main/resources/application.properties

@@ -37,9 +37,8 @@ headers.scale-analysis-output=\u652F\u4ED8\u5B9D\u7528\u6237ID,\u652F\u4ED8\u5B9
 headers.transfer-analysis-output=\u652F\u4ED8\u5B9D\u7528\u6237ID,\u652F\u4ED8\u5B9D\u6237\u540D,\u8F6C\u8D26\u603B\u989D,\u8F6C\u8D26\u6536\u5165,\u8F6C\u8D26\u652F\u51FA,\u8F6C\u6536\u7B14\u6570,\u8F6C\u652F\u7B14\u6570,\u603B\u7B14\u6570
 headers.end-analysis-output=\u5BF9\u624B\u652F\u4ED8\u5B9D\u7528\u6237ID,\u5BF9\u624B\u652F\u4ED8\u5B9D\u6237\u540D,\u4EA4\u6613\u603B\u989D,\u4E3B\u7528\u6237ID\u6536\u5165\u91D1\u989D,\u4E3B\u7528\u6237ID\u652F\u51FA\u91D1\u989D,\u4E3B\u7528\u6237ID\u6536\u5165\u7B14\u6570,\u4E3B\u7528\u6237ID\u652F\u51FA\u7B14\u6570,\u603B\u7B14\u6570,\u5171\u540C\u4E3B\u7528\u6237ID\u6570,\u5171\u540C\u4E3B\u7528\u6237ID\u6C47\u603B
 headers.delivery-analysis-output=\u6536\u8D27\u4EBA\u5730\u5740,\u4EA4\u6613\u91D1\u989D,\u4EA4\u6613\u6B21\u6570,\u4E70\u5BB6\u7528\u6237ID\u6570,\u4E70\u5BB6\u7528\u6237ID\u6C47\u603B
-headers.ip-analysis-output=IP\u5730\u5740,\u767B\u5F55\u65F6\u95F4\u6BB5,\u767B\u5F55\u6B21\u6570,\u652F\u4ED8\u5B9D\u7528\u6237ID\u6570,\u652F\u4ED8\u5B9D\u7528\u6237ID\u6C47\u603B
-headers.anti-security-trade-output=\u652F\u4ED8\u8BA2\u5355\u53F7,\u4EA4\u6613\u6D41\u6C34\u53F7,\u4EA4\u6613\u4E3B\u4F53\u8D26\u53F7,\u4EA4\u6613\u4E3B\u4F53\u94F6\u884C\u5361\u53F7,\u4EA4\u6613\u4E3B\u4F53\u94F6\u884C\u540D\u79F0,\u4EA4\u6613\u4E3B\u4F53\u6237\u540D,\u4EA4\u6613\u7C7B\u578B,\u652F\u4ED8\u7C7B\u578B,\u4EA4\u6613\u4E3B\u4F53\u7684\u51FA\u5165\u8D26\u6807\u8BC6,\u4EA4\u6613\u65F6\u95F4,\
-  \u5E01\u79CD,\u4EA4\u6613\u91D1\u989D,\u4EA4\u6613\u4F59\u989D,\u4EA4\u6613\u5BF9\u624B\u8D26\u53F7,\u4EA4\u6613\u5BF9\u624B\u94F6\u884C\u5361\u53F7,\u4EA4\u6613\u5BF9\u624B\u94F6\u884C\u540D\u79F0,\u4EA4\u6613\u5BF9\u624B\u6237\u540D,\u6D88\u8D39POS\u673A\u7F16\u53F7,\u4EA4\u6613\u8BBE\u5907\u7C7B\u578B,\u4EA4\u6613\u652F\u4ED8\u8BBE\u5907IP,MAC\u5730\u5740,\u4EA4\u6613\u5730\u70B9\u7ECF\u5EA6,\u4EA4\u6613\u5730\u70B9\u7EAC\u5EA6,\u5907\u6CE8
+headers.ip-analysis-output=\u0049\u0050\u5730\u5740\u002c\u767b\u5f55\u65f6\u95f4\u6bb5\u002c\u767b\u5f55\u6b21\u6570\u002c\u652f\u4ed8\u5b9d\u7528\u6237\u0049\u0044\u6570\u002c\u652f\u4ed8\u5b9d\u7528\u6237\u0049\u0044\u6c47\u603b
+headers.anti-security-trade-output=\u652f\u4ed8\u8ba2\u5355\u53f7\u002c\u4ea4\u6613\u6d41\u6c34\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u6237\u540d\u002c\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u5361\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u540d\u79f0\u002c\u4ea4\u6613\u7c7b\u578b\u002c\u652f\u4ed8\u7c7b\u578b\u002c\u4ea4\u6613\u4e3b\u4f53\u7684\u51fa\u5165\u8d26\u6807\u8bc6\u002c\u4ea4\u6613\u65f6\u95f4\u002c\u5e01\u79cd\u002c\u4ea4\u6613\u91d1\u989d\u002c\u4ea4\u6613\u4f59\u989d\u002c\u4ea4\u6613\u5bf9\u624b\u8d26\u53f7\u002c\u4ea4\u6613\u5bf9\u624b\u6237\u540d\u002c\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u5361\u53f7\u002c\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u540d\u79f0\u002c\u6d88\u8d39\u0050\u004f\u0053\u673a\u7f16\u53f7\u002c\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b\u002c\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907\u0049\u0050\u002c\u004d\u0041\u0043\u5730\u5740\u002c\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6\u002c\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6\u002c\u5907\u6ce8\u000a
 headers.anti-security-trade-scale-analysis-output=\u4EA4\u6613\u4E3B\u4F53\u8D26\u53F7,\u4EA4\u6613\u4E3B\u4F53\u6237\u540D,\u4EA4\u6613\u603B\u989D,\u6536\u5165\u91D1\u989D,\u652F\u51FA\u91D1\u989D,\u6536\u5165\u7B14\u6570,\u652F\u51FA\u7B14\u6570,\u603B\u7B14\u6570
 headers.anti-security-trade-end-analysis-output=\u4EA4\u6613\u5BF9\u624B\u8D26\u53F7,\u4EA4\u6613\u5BF9\u624B\u6237\u540D,\u4EA4\u6613\u603B\u989D,\u4EA4\u6613\u4E3B\u4F53\u6536\u5165\u91D1\u989D,\u4EA4\u6613\u4E3B\u4F53\u652F\u51FA\u91D1\u989D,\u603B\u7B14\u6570,\u4EA4\u6613\u4E3B\u4F53\u6536\u5165\u7B14\u6570,\u4EA4\u6613\u4E3B\u4F53\u652F\u51FA\u7B14\u6570,\u5171\u540C\u4EA4\u6613\u4E3B\u4F53\u6570,\u5171\u540C\u4EA4\u6613\u4E3B\u4F53\u8D26\u53F7\u6C47\u603B
 headers.ordered-names=\u53CD\u8BC8\u6570\u636E-\u8BA2\u5355\u660E\u7EC6,\u6CBB\u5B89\u6570\u636E-\u8BA2\u5355\u660E\u7EC6,\u53CD\u8BC8\u6CBB\u5B89-\u4EA4\u6613\u660E\u7EC6,\u53CD\u8BC8\u6CBB\u5B89-\u8D26\u6237\u900F\u89C6,\u53CD\u8BC8\u6CBB\u5B89-\u5BF9\u624B\u900F\u89C6,\
@@ -50,7 +49,7 @@ headers.static-user-output=\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7,\u4ea4\u6613\u4e
 headers.economic-order=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u652f\u4ed8\u673a\u6784\u5185\u90e8\u8ba2\u5355\u53f7,\u4ed8\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u6807\u5fd7,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u540d\u79f0,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u5907\u6ce8
 headers.economic-order-output=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u652f\u4ed8\u673a\u6784\u5185\u90e8\u8ba2\u5355\u53f7,\u4ed8\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u6807\u5fd7,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u540d\u79f0,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u5907\u6ce8
 headers.static-user-all-output=\u8bc1\u4ef6\u53f7,\u8d26\u6237\u540d\u79f0,\u8d26\u53f7
-headers.user-account-output=\u652f\u4ed8\u8ba2\u5355\u53f7,\u4ea4\u6613\u6d41\u6c34\u53f7,\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u540d\u79f0,\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7,\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u4e3b\u4f53\u6237\u540d,\u4ea4\u6613\u7c7b\u578b,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u5e01\u79cd,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u4ea4\u6613\u5bf9\u624b\u8d26\u53f7,\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u540d\u79f0,\u4ea4\u6613\u5bf9\u624b\u6237\u540d,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b,\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907IP,MAC\u5730\u5740,\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6,\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6,\u6d88\u8d39\u540d\u79f0,\u4ea4\u6613\u6765\u6e90\u5730,\u4ea4\u6613\u72b6\u6001,\u5907\u6ce8
+headers.user-account-output=\u652f\u4ed8\u8ba2\u5355\u53f7\u002c\u4ea4\u6613\u6d41\u6c34\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u6237\u540d\u002c\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u5361\u53f7\u002c\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u540d\u79f0\u002c\u4ea4\u6613\u7c7b\u578b\u002c\u652f\u4ed8\u7c7b\u578b\u002c\u501f\u8d37\u7c7b\u578b\u002c\u4ea4\u6613\u65f6\u95f4\u002c\u5e01\u79cd\u002c\u4ea4\u6613\u91d1\u989d\u002c\u4ea4\u6613\u4f59\u989d\u002c\u4ea4\u6613\u5bf9\u624b\u8d26\u53f7\u002c\u4ea4\u6613\u5bf9\u624b\u6237\u540d\u002c\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u5361\u53f7\u002c\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u540d\u79f0\u002c\u6d88\u8d39\u0050\u004f\u0053\u673a\u7f16\u53f7\u002c\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b\u002c\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907\u0049\u0050\u002c\u004d\u0041\u0043\u5730\u5740\u002c\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6\u002c\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6\u002c\u6d88\u8d39\u540d\u79f0\u002c\u4ea4\u6613\u6765\u6e90\u5730\u002c\u4ea4\u6613\u72b6\u6001\u002c\u5907\u6ce8
 headers.black-order=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u4ea4\u6613\u6d41\u6c34\u53f7,\u4ed8\u6b3e\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u94f6\u884c\u5361\u94f6\u884c\u540d\u79f0,\u4ed8\u6b3e\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u94f6\u884c\u5361\u94f6\u884c\u540d\u79f0,\u6536\u6b3e\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u4ea4\u6613\u4e3b\u4f53\u7684\u51fa\u5165\u8d26\u6807\u8bc6,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b,\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907IP,MAC\u5730\u5740,\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6,\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u6536\u6b3e\u5546\u6237\u540d\u79f0,\u5907\u6ce8
 headers.black-order-output=\u67e5\u8be2\u8d26\u53f7,\u4ea4\u6613\u6d41\u6c34\u53f7,\u4ed8\u6b3e\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u94f6\u884c\u5361\u94f6\u884c\u540d\u79f0,\u4ed8\u6b3e\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u94f6\u884c\u5361\u94f6\u884c\u540d\u79f0,\u6536\u6b3e\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u4ea4\u6613\u4e3b\u4f53\u7684\u51fa\u5165\u8d26\u6807\u8bc6,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b,\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907IP,MAC\u5730\u5740,\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6,\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u6536\u6b3e\u5546\u6237\u540d\u79f0,\u5907\u6ce8
 headers.anti-cheat-two=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u652f\u4ed8\u673a\u6784\u5185\u90e8\u8ba2\u5355\u53f7,\u4ed8\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u6807\u5fd7,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u540d\u79f0,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u5907\u6ce8,\u8bbe\u5907\u7c7b\u578b,\u8bbe\u5907IP,IP\u5f52\u5c5e\u5730,MAC\u5730\u5740,\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6,\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6

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

@@ -1,8 +1,8 @@
-<!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.b456dd765f35856ac930a90e5d5d2d6e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.a44cbd1a1a622780ed2b.js></script><script type=text/javascript src=/static/js/vendor.4a30d08b867d4749cfcc.js></script><script type=text/javascript src=/static/js/app.97898cd44b90c755cf43.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.b456dd765f35856ac930a90e5d5d2d6e.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.4bc99859f4c9e5417bbb.js></script><script type=text/javascript src=/static/js/vendor.4a30d08b867d4749cfcc.js></script><script type=text/javascript src=/static/js/app.e904dc68d4c75696cbd0.js></script></body></html>
 <!-- 
- PROJECT_NAME: 三方支付数据分析;
- BUILD_TIME:Mon, 30 Sep 2024 01:05:26 GMT; 
- GIT_BRANCH:master; 
- GIT_COMMIT:7f2c2db41db75e75d12664e194337049b68ca56f; 
- TICK:3.2.0; 
+ PROJECT_NAME: 追迹者-第三方支付数据分析;
+ BUILD_TIME:Fri, 06 Dec 2024 00:18:19 GMT; 
+ GIT_BRANCH:release-3.2.0-241012-base; 
+ GIT_COMMIT:342b1f497cba84a042bf043341566a55e363867c; 
+ TICK:3.3.0; 
  -->

文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/css/app.210ef67e8053cd8b79be4dda146c81de.css


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/css/app.b456dd765f35856ac930a90e5d5d2d6e.css


二進制
src/main/resources/static/static/img/WechatIMG5377.0744abf.png


二進制
src/main/resources/static/static/img/第三方支付数据分析.2bbf410.png


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/1.33a275a6eb59212ae3a1.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/1.ae78cdc309b39ffef27d.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/2.3a01fde1d7de5d5a06ff.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/2.98fb3d13dd04a517e204.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/3.06fe544040aa0b217262.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/3.5c7d7e854b299287aa82.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/4.2571522439317ff25e62.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/4.89e4bcfaae26ae920991.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/5.79038595bf0c643c0c37.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/5.88474330e20ec52b2c88.js


+ 0 - 1
src/main/resources/static/static/js/6.0241be8ac660362730fd.js

@@ -1 +0,0 @@
-webpackJsonp([6],{FNfY:function(n,t,d){"use strict";function a(n){d("PwL9")}Object.defineProperty(t,"__esModule",{value:!0});var e={mounted:function(){console.log("数据分析系统")}},p=function(){var n=this,t=n.$createElement,d=n._self._c||t;return d("div",{staticClass:"container-404"},[d("div",{staticClass:"wrap404"},[d("h1",{staticClass:"title"},[n._v("页面不存在")]),n._v(" "),d("router-link",{attrs:{to:"/"}},[d("span",{staticClass:"link"},[n._v("首 页")])]),n._v(" "),d("h1",{staticClass:"title404"},[n._v("404")])],1)])},i=[],o={render:p,staticRenderFns:i},x=o,r=d("VU/8"),s=a,l=r(e,x,!1,s,"data-v-d7d35d7a",null);t.default=l.exports},PwL9:function(n,t,d){var a=d("X6vJ");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);d("rjj0")("5f0c9d8a",a,!0,{})},X6vJ:function(n,t,d){t=n.exports=d("FZ+f")(!1),t.push([n.i,"\n.container-404[data-v-d7d35d7a] {\n    text-align: center;\n    width: 100%;\n    padding: 50px 30px;\n}\n.wrap404[data-v-d7d35d7a] {\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-d7d35d7a] {\n    text-shadow: 5px 1px 6px rgb(241, 232, 222);\n    margin-top: 40px;\n    color: lightblue;\n}\n.wrap404 .link[data-v-d7d35d7a] {\n    text-shadow: 5px 1px 6px green;\n    text-decoration: underline;\n    margin-top: 20px;\n}\n.wrap404 .title404[data-v-d7d35d7a] {\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",""])}});

文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/6.eedbbe55278fd36cf8c6.js


+ 1 - 0
src/main/resources/static/static/js/7.83ecdc9548c3706f90ec.js

@@ -0,0 +1 @@
+webpackJsonp([7],{"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}});

文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/7.8a8cb80660f8592ace0c.js


+ 1 - 0
src/main/resources/static/static/js/8.1cfc86658a36840181e1.js

@@ -0,0 +1 @@
+webpackJsonp([8],{"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,{})}});

+ 0 - 1
src/main/resources/static/static/js/8.9f1727fb7c525797e8fc.js

@@ -1 +0,0 @@
-webpackJsonp([8],{Q7uY:function(n,t,e){var o=e("zpR3");"string"==typeof o&&(o=[[n.i,o,""]]),o.locals&&(n.exports=o.locals);e("rjj0")("73d53f74",o,!0,{})},oYzN:function(n,t,e){"use strict";function o(n){e("Q7uY")}Object.defineProperty(t,"__esModule",{value:!0});var r={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=o,f=s(r,u,!1,l,null,null);t.default=f.exports},zpR3: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",""])}});

文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/app.252166ed3d117834cf08.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/app.915e8cf5d8433b50898a.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/app.e904dc68d4c75696cbd0.js


+ 1 - 1
src/main/resources/static/static/js/manifest.3a715ccc0cbcfe344fe3.js → src/main/resources/static/static/js/manifest.4bc99859f4c9e5417bbb.js

@@ -1 +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,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={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 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:"19963eec668c4d51f579",1:"33a275a6eb59212ae3a1",2:"3a01fde1d7de5d5a06ff",3:"5c7d7e854b299287aa82",4:"89e4bcfaae26ae920991",5:"88474330e20ec52b2c88",6:"0241be8ac660362730fd",7:"8a8cb80660f8592ace0c",8:"9f1727fb7c525797e8fc"}[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}}([]);
+!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:"72c0f1a4a3db5cd2a74a",1:"ae78cdc309b39ffef27d",2:"98fb3d13dd04a517e204",3:"06fe544040aa0b217262",4:"2571522439317ff25e62",5:"79038595bf0c643c0c37",6:"eedbbe55278fd36cf8c6",7:"83ecdc9548c3706f90ec",8:"1cfc86658a36840181e1"}[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/vendor-async.19963eec668c4d51f579.js

@@ -1 +0,0 @@
-webpackJsonp([0],{"6CJJ":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-3b23f15b] {\n    padding: 5px;\n    text-align: center;\n}\n.casepage[data-v-3b23f15b] {\n    background-color: #032d58;\n}\n",""])},cMGX:function(n,e,t){"use strict";function a(n){t("qPfT")}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=[],g={render:o,staticRenderFns:p},u=g,c=t("VU/8"),l=a,d=c(s,u,!1,l,"data-v-3b23f15b",null);e.a=d.exports},qPfT:function(n,e,t){var a=t("6CJJ");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);t("rjj0")("35845ed2",a,!0,{})}});

+ 1 - 0
src/main/resources/static/static/js/vendor-async.72c0f1a4a3db5cd2a74a.js

@@ -0,0 +1 @@
+webpackJsonp([0],{"2sTg":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-b81ceb6e] {\n    padding: 5px;\n    text-align: center;\n}\n.casepage[data-v-b81ceb6e] {\n    background-color: #032d58;\n}\n",""])},"3T2T":function(n,e,t){var a=t("2sTg");"string"==typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);t("rjj0")("9363d9ba",a,!0,{})},cMGX:function(n,e,t){"use strict";function a(n){t("3T2T")}var i=t("Dd8w"),s=t.n(i),r={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=s()({},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=s()({},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=[],g={render:o,staticRenderFns:p},c=g,u=t("VU/8"),l=a,d=u(r,c,!1,l,"data-v-b81ceb6e",null);e.a=d.exports}});

文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/vendor.4a30d08b867d4749cfcc.js


文件差異過大導致無法顯示
+ 0 - 0
src/main/resources/static/static/js/vendor.c436d94f503c6278dee7.js


部分文件因文件數量過多而無法顯示