tom.xu@informa.com 2 éve
szülő
commit
14fad13701

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

@@ -24,6 +24,13 @@ public class MongoExcelService {
     this.fileId = fileId;
   }
 
+  public void insertRest() {
+    if (dataList.size() > 0) {
+      mongoTemplate.insert(dataList, collectionData);
+      dataList.clear();
+    }
+  }
+
   public void getRows(int sheetIndex, int curRow, List<String> valueList) {
     if (sheetIndex == 0
         && curRow == 0
@@ -95,11 +102,4 @@ public class MongoExcelService {
       }
     }
   }
-
-  public void insertRest() {
-    if (dataList.size() > 0) {
-      mongoTemplate.insert(dataList, collectionData);
-      dataList.clear();
-    }
-  }
 }

+ 32 - 26
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_ACCOUNT.java

@@ -7,6 +7,7 @@ import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
 import ieven.server.webapp.util.Common;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -15,6 +16,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ALIPAY_GENERATED_ACCOUNT extends Ops implements Runnable {
   List<Fields> originFields;
   String modelId;
@@ -50,33 +52,37 @@ public class ALIPAY_GENERATED_ACCOUNT extends Ops implements Runnable {
     List<DataMap> needToSave = new ArrayList<>(1000);
     while (cursor.hasNext()) {
       // 写法1(建议)
-      originDoc = cursor.next();
-      DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
-      String v1 = Ops.getString(originDoc, origin, "用户信息");
-      List<String> v1List = Ops.extract_1(v1);
-      Ops.setString(
-          newDoc, AlipayHeaders.ACCOUNT_1, output, v1List.size() >= 1 ? v1List.get(0) : "");
-      Ops.setString(
-          newDoc, AlipayHeaders.ACCOUNT_2, output, v1List.size() >= 2 ? v1List.get(1) : "");
-      String v3 = Ops.getString(originDoc, origin, "交易对方信息");
-      List<String> v3List = Ops.extract_1(v3);
-      if (v3List.size() > 1) {
-        Ops.setString(newDoc, AlipayHeaders.ACCOUNT_3, output, v3List.get(0));
-        Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, v3List.get(1));
-      } else if (v3List.size() == 1) {
-        String v = v3List.get(0);
-        // 包含数字代表是对手ID,否则就是对手户名
-        if (Common.HasDigit(v)) {
-          Ops.setString(newDoc, AlipayHeaders.ACCOUNT_3, output, v);
-        } else {
-          Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, v);
+      try {
+        originDoc = cursor.next();
+        DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+        String v1 = Ops.getString(originDoc, origin, "用户信息");
+        List<String> v1List = Ops.extract_1(v1);
+        Ops.setString(
+            newDoc, AlipayHeaders.ACCOUNT_1, output, v1List.size() >= 1 ? v1List.get(0) : "");
+        Ops.setString(
+            newDoc, AlipayHeaders.ACCOUNT_2, output, v1List.size() >= 2 ? v1List.get(1) : "");
+        String v3 = Ops.getString(originDoc, origin, "交易对方信息");
+        List<String> v3List = Ops.extract_1(v3);
+        if (v3List.size() > 1) {
+          Ops.setString(newDoc, AlipayHeaders.ACCOUNT_3, output, v3List.get(0));
+          Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, v3List.get(1));
+        } else if (v3List.size() == 1) {
+          String v = v3List.get(0);
+          // 包含数字代表是对手ID,否则就是对手户名
+          if (Common.HasDigit(v)) {
+            Ops.setString(newDoc, AlipayHeaders.ACCOUNT_3, output, v);
+          } else {
+            Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, v);
+          }
         }
-      }
-      replaceKey(newDoc, "金额", "交易金额");
-      needToSave.add(newDoc);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+        replaceKey(newDoc, "金额", "交易金额");
+        needToSave.add(newDoc);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
+      } catch (Exception ex) {
+        log.error(ex.getMessage(), ex);
       }
     }
     if (CollectionUtils.isNotEmpty(needToSave)) {

+ 20 - 13
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_LOGIN.java

@@ -7,6 +7,7 @@ import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
 import ieven.server.webapp.util.DataUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -16,6 +17,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ALIPAY_GENERATED_LOGIN extends Ops implements Runnable {
 
   List<Fields> originFields;
@@ -53,19 +55,24 @@ public class ALIPAY_GENERATED_LOGIN extends Ops implements Runnable {
     List<DataMap> needToSave = new ArrayList<>(1000);
     while (cursor.hasNext()) {
       // 写法1(建议)
-      originDoc = cursor.next();
-      DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
-      // 绑定银行卡字段
-      String aO1 = inputReversed.get("操作发生时间");
-      String vO1 = originDoc.getString(aO1);
-      newDoc.put(
-          outputReversed.getOrDefault(AlipayHeaders.LOGIN_1, "-1"), DataUtils.getDateFront(vO1));
-      newDoc.put(
-          outputReversed.getOrDefault(AlipayHeaders.LOGIN_2, "-1"), DataUtils.getDateEnd(vO1));
-      needToSave.add(newDoc);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      try {
+
+        originDoc = cursor.next();
+        DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+        // 绑定银行卡字段
+        String aO1 = inputReversed.get("操作发生时间");
+        String vO1 = originDoc.getString(aO1);
+        newDoc.put(
+            outputReversed.getOrDefault(AlipayHeaders.LOGIN_1, "-1"), DataUtils.getDateFront(vO1));
+        newDoc.put(
+            outputReversed.getOrDefault(AlipayHeaders.LOGIN_2, "-1"), DataUtils.getDateEnd(vO1));
+        needToSave.add(newDoc);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
+      } catch (Exception ex) {
+        log.error(ex.getMessage(), ex);
       }
     }
     if (CollectionUtils.isNotEmpty(needToSave)) {

+ 23 - 17
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRADE.java

@@ -6,6 +6,7 @@ import ieven.server.webapp.domain.alipay.AlipayType;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -14,6 +15,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
   List<Fields> originFields;
   String modelId;
@@ -50,23 +52,27 @@ public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
     List<DataMap> needToSave = new ArrayList<>(1000);
     while (cursor.hasNext()) {
       // 写法1(建议)
-      originDoc = cursor.next();
-      DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
-      // 绑定银行卡字段
-      String v1 = Ops.getString(originDoc, origin, "买家信息");
-      List<String> sp1 = Ops.extract_1(v1);
-      Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
-      Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
-      Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
-      String v2 = Ops.getString(originDoc, origin, "卖家信息");
-      List<String> sp2 = Ops.extract_1(v2);
-      Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
-      Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
-      Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
-      needToSave.add(newDoc);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      try {
+        originDoc = cursor.next();
+        DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+        // 绑定银行卡字段
+        String v1 = Ops.getString(originDoc, origin, "买家信息");
+        List<String> sp1 = Ops.extract_1(v1);
+        Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
+        Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
+        Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
+        String v2 = Ops.getString(originDoc, origin, "卖家信息");
+        List<String> sp2 = Ops.extract_1(v2);
+        Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
+        Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
+        Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
+        needToSave.add(newDoc);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
+      } catch (Exception ex) {
+        log.error(ex.getMessage(), ex);
       }
     }
     if (CollectionUtils.isNotEmpty(needToSave)) {

+ 15 - 9
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRANSFER.java

@@ -5,6 +5,7 @@ import ieven.server.webapp.domain.alipay.AlipayType;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -13,6 +14,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ALIPAY_GENERATED_TRANSFER extends Ops implements Runnable {
   List<Fields> originFields;
   String modelId;
@@ -49,15 +51,19 @@ public class ALIPAY_GENERATED_TRANSFER extends Ops implements Runnable {
     List<DataMap> needToSave = new ArrayList<>(1000);
     while (cursor.hasNext()) {
       // 写法1(建议)
-      originDoc = cursor.next();
-      DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
-      replaceKey(newDoc, "收款方支付宝账号", "收款方支付宝用户ID");
-      replaceKey(newDoc, "付款方支付宝账号", "付款方支付宝用户ID");
-      // 绑定银行卡字段
-      needToSave.add(newDoc);
-      if (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+      try {
+        originDoc = cursor.next();
+        DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+        replaceKey(newDoc, "收款方支付宝账号", "收款方支付宝用户ID");
+        replaceKey(newDoc, "付款方支付宝账号", "付款方支付宝用户ID");
+        // 绑定银行卡字段
+        needToSave.add(newDoc);
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
+      } catch (Exception exception) {
+        log.error(exception.getMessage(), exception);
       }
     }
     if (CollectionUtils.isNotEmpty(needToSave)) {

+ 24 - 19
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER.java

@@ -76,27 +76,32 @@ public class ALIPAY_ORIGIN_REGISTER extends Ops implements Runnable {
     List<DataMap> needToSave = new ArrayList<>(1000);
     while (cursor.hasNext()) {
       // 写法1(建议)
-      originDoc = cursor.next();
-      DataMap newDoc = initWithOrigin(originDoc, outputFileId);
-      // 绑定银行卡字段
-      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);
+      try {
+
+        originDoc = cursor.next();
+        DataMap newDoc = initWithOrigin(originDoc, outputFileId);
+        // 绑定银行卡字段
+        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 (needToSave.size() >= 1000) {
-        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-        needToSave.clear();
+        if (needToSave.size() >= 1000) {
+          saveLines(new ArrayList<>(needToSave), mongoTemplate);
+          needToSave.clear();
+        }
+      } catch (Exception exception) {
+        log.error(exception.getMessage(), exception);
       }
     }
     if (CollectionUtils.isNotEmpty(needToSave)) {

+ 69 - 62
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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -17,6 +18,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
 
   String modelId;
@@ -63,72 +65,77 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
       Map<String, Set<String>> idToNames = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String alipayId = origin.getString("交易对手账号");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("交易对手账号", alipayId);
-          dataMap.put("交易对手户名", "");
-          dataMap.put("交易总额", new BigDecimal("0.00"));
-          dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
-          dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
-          dataMap.put("交易主体收入笔数", 0);
-          dataMap.put("交易主体支出笔数", 0);
-          dataMap.put("总笔数", 0);
-          dataMap.put("共同交易主体数", 0);
-          dataMap.put("共同交易主体账号汇总", "");
-          idToData.put(alipayId, dataMap);
-        }
-        String alipayUsername = origin.getString("交易对手户名");
-        if (StringUtils.isNotBlank(alipayUsername)
-            && !"_".equals(alipayUsername)
-            && !"-".equals(alipayUsername)) {
-          if (idToNames.containsKey(alipayId)) {
-            Set<String> names = idToNames.get(alipayId);
-            names.add(alipayUsername);
+        try {
+
+          origin = cursor.next();
+          String alipayId = origin.getString("交易对手账号");
+          DataMap dataMap;
+          if (alipayIds.contains(alipayId)) {
+            dataMap = idToData.get(alipayId);
           } else {
-            Set<String> names = new HashSet<>();
-            names.add(alipayUsername);
-            idToNames.put(alipayId, names);
+            alipayIds.add(alipayId);
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("交易对手账号", alipayId);
+            dataMap.put("交易对手户名", "");
+            dataMap.put("交易总额", new BigDecimal("0.00"));
+            dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
+            dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
+            dataMap.put("交易主体收入笔数", 0);
+            dataMap.put("交易主体支出笔数", 0);
+            dataMap.put("总笔数", 0);
+            dataMap.put("共同交易主体数", 0);
+            dataMap.put("共同交易主体账号汇总", "");
+            idToData.put(alipayId, dataMap);
           }
-        }
-        String flag = "交易主体的出入账标识";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("交易金额");
-        if ("入账".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("交易主体收入金额", oMoney);
-          int oCount = (int) dataMap.get("交易主体收入笔数");
-          oCount++;
-          dataMap.put("交易主体收入笔数", oCount);
-        } else if ("出账".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+          String alipayUsername = origin.getString("交易对手户名");
+          if (StringUtils.isNotBlank(alipayUsername)
+              && !"_".equals(alipayUsername)
+              && !"-".equals(alipayUsername)) {
+            if (idToNames.containsKey(alipayId)) {
+              Set<String> names = idToNames.get(alipayId);
+              names.add(alipayUsername);
+            } else {
+              Set<String> names = new HashSet<>();
+              names.add(alipayUsername);
+              idToNames.put(alipayId, names);
+            }
+          }
+          String flag = "交易主体的出入账标识";
+          String flagValue = origin.getString(flag);
+          String money = (String) origin.get("交易金额");
+          if ("入账".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("交易主体收入金额", oMoney);
+            int oCount = (int) dataMap.get("交易主体收入笔数");
+            oCount++;
+            dataMap.put("交易主体收入笔数", oCount);
+          } else if ("出账".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("交易主体支出金额", oMoney);
+            int oCount = (int) dataMap.get("交易主体支出笔数");
+            oCount++;
+            dataMap.put("交易主体支出笔数", oCount);
+          }
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
           oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("交易主体支出金额", oMoney);
-          int oCount = (int) dataMap.get("交易主体支出笔数");
+          dataMap.put("交易额", oMoney);
+          int oCount = (int) dataMap.get("笔数");
           oCount++;
-          dataMap.put("交易主体支出笔数", oCount);
-        }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
-        String mainId = (String) origin.get("交易主体账号");
-        if (idToMainIds.containsKey(alipayId)) {
-          Set<String> mainIds = idToMainIds.get(alipayId);
-          mainIds.add(mainId);
-        } else {
-          Set<String> mainIds = new HashSet<>();
-          mainIds.add(mainId);
-          idToMainIds.put(alipayId, mainIds);
+          dataMap.put("总笔数", oCount);
+          String mainId = (String) origin.get("交易主体账号");
+          if (idToMainIds.containsKey(alipayId)) {
+            Set<String> mainIds = idToMainIds.get(alipayId);
+            mainIds.add(mainId);
+          } else {
+            Set<String> mainIds = new HashSet<>();
+            mainIds.add(mainId);
+            idToMainIds.put(alipayId, mainIds);
+          }
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {

+ 56 - 49
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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -17,6 +18,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class AntiSecurityTradeScaleAnalysis extends Ops implements Runnable {
   String modelId;
   MongoTemplate mongoTemplate;
@@ -61,60 +63,65 @@ public class AntiSecurityTradeScaleAnalysis extends Ops implements Runnable {
       Map<String, Set<String>> idToNames = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String alipayId = origin.getString("交易主体账号");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("交易主体账号", alipayId);
-          dataMap.put("交易主体户名", "");
-          dataMap.put("交易总额", new BigDecimal("0.00"));
-          dataMap.put("收入金额", new BigDecimal("0.00"));
-          dataMap.put("支出金额", new BigDecimal("0.00"));
-          dataMap.put("收入笔数", 0);
-          dataMap.put("支出笔数", 0);
-          dataMap.put("总笔数", 0);
-          idToData.put(alipayId, dataMap);
-        }
-        String alipayUsername = origin.getString("交易主体户名");
-        if (StringUtils.isNotBlank(alipayUsername)) {
-          Set<String> namesSet;
-          if (idToNames.containsKey(alipayId)) {
-            namesSet = idToNames.get(alipayId);
+        try {
+
+          origin = cursor.next();
+          String alipayId = origin.getString("交易主体账号");
+          DataMap dataMap;
+          if (alipayIds.contains(alipayId)) {
+            dataMap = idToData.get(alipayId);
           } else {
-            namesSet = new HashSet<>();
-            idToNames.put(alipayId, namesSet);
+            alipayIds.add(alipayId);
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("交易主体账号", alipayId);
+            dataMap.put("交易主体户名", "");
+            dataMap.put("交易总额", new BigDecimal("0.00"));
+            dataMap.put("收入金额", new BigDecimal("0.00"));
+            dataMap.put("支出金额", new BigDecimal("0.00"));
+            dataMap.put("收入笔数", 0);
+            dataMap.put("支出笔数", 0);
+            dataMap.put("总笔数", 0);
+            idToData.put(alipayId, dataMap);
           }
-          namesSet.add(alipayUsername);
-        }
-        String flag = "交易主体的出入账标识";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("交易金额");
-        if ("入账".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("收入金额", oMoney);
-          int oCount = (int) dataMap.get("收入笔数");
-          oCount++;
-          dataMap.put("收入笔数", oCount);
-        } else if ("出账".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+          String alipayUsername = origin.getString("交易主体户名");
+          if (StringUtils.isNotBlank(alipayUsername)) {
+            Set<String> namesSet;
+            if (idToNames.containsKey(alipayId)) {
+              namesSet = idToNames.get(alipayId);
+            } else {
+              namesSet = new HashSet<>();
+              idToNames.put(alipayId, namesSet);
+            }
+            namesSet.add(alipayUsername);
+          }
+          String flag = "交易主体的出入账标识";
+          String flagValue = origin.getString(flag);
+          String money = (String) origin.get("交易金额");
+          if ("入账".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("收入金额", oMoney);
+            int oCount = (int) dataMap.get("收入笔数");
+            oCount++;
+            dataMap.put("收入笔数", oCount);
+          } else if ("出账".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("支出金额", oMoney);
+            int oCount = (int) dataMap.get("支出笔数");
+            oCount++;
+            dataMap.put("支出笔数", oCount);
+          }
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
           oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("支出金额", oMoney);
-          int oCount = (int) dataMap.get("支出笔数");
+          dataMap.put("交易总额", oMoney);
+          int oCount = (int) dataMap.get("笔数");
           oCount++;
-          dataMap.put("支出笔数", oCount);
+          dataMap.put("总笔数", oCount);
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {
         for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {

+ 40 - 33
src/main/java/ieven/server/webapp/service/alipay/DeliveryAnalysis.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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class DeliveryAnalysis extends Ops implements Runnable {
 
   private HeaderProperties headerProperties;
@@ -63,39 +65,44 @@ public class DeliveryAnalysis extends Ops implements Runnable {
       Map<String, Set<String>> idToBuyerIds = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String groupId = origin.getString("收货人地址");
-        if (StringUtils.isBlank(groupId)) {
-          continue;
-        }
-        DataMap dataMap;
-        if (idToData.containsKey(groupId)) {
-          dataMap = idToData.get(groupId);
-        } else {
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("收货人地址", groupId);
-          dataMap.put("交易金额", new BigDecimal("0.00"));
-          dataMap.put("交易次数", 0);
-          dataMap.put("买家用户ID数", 0);
-          dataMap.put("买家用户ID汇总", "");
-          idToData.put(groupId, dataMap);
-        }
-        String money = (String) origin.get("交易金额(元)");
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易金额", oMoney);
-        int oCount = (int) dataMap.get("交易次数");
-        oCount++;
-        dataMap.put("交易次数", oCount);
-        String buyerId = origin.getString("买家用户ID");
-        if (idToBuyerIds.containsKey(groupId)) {
-          Set<String> buyerIdSet = idToBuyerIds.get(groupId);
-          buyerIdSet.add(buyerId);
-        } else {
-          Set<String> buyerIdSet = new HashSet<>();
-          buyerIdSet.add(buyerId);
-          idToBuyerIds.put(groupId, buyerIdSet);
+        try {
+
+          origin = cursor.next();
+          String groupId = origin.getString("收货人地址");
+          if (StringUtils.isBlank(groupId)) {
+            continue;
+          }
+          DataMap dataMap;
+          if (idToData.containsKey(groupId)) {
+            dataMap = idToData.get(groupId);
+          } else {
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("收货人地址", groupId);
+            dataMap.put("交易金额", new BigDecimal("0.00"));
+            dataMap.put("交易次数", 0);
+            dataMap.put("买家用户ID数", 0);
+            dataMap.put("买家用户ID汇总", "");
+            idToData.put(groupId, dataMap);
+          }
+          String money = (String) origin.get("交易金额(元)");
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("交易金额", oMoney);
+          int oCount = (int) dataMap.get("交易次数");
+          oCount++;
+          dataMap.put("交易次数", oCount);
+          String buyerId = origin.getString("买家用户ID");
+          if (idToBuyerIds.containsKey(groupId)) {
+            Set<String> buyerIdSet = idToBuyerIds.get(groupId);
+            buyerIdSet.add(buyerId);
+          } else {
+            Set<String> buyerIdSet = new HashSet<>();
+            buyerIdSet.add(buyerId);
+            idToBuyerIds.put(groupId, buyerIdSet);
+          }
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {

+ 70 - 62
src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class EndAnalysis extends Ops implements Runnable {
 
   private HeaderProperties headerProperties;
@@ -65,72 +67,78 @@ public class EndAnalysis extends Ops implements Runnable {
       Map<String, Set<String>> idToNames = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String alipayId = origin.getString("对手支付宝用户ID");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("对手支付宝用户ID", alipayId);
-          dataMap.put("对手支付宝户名", "");
-          dataMap.put("交易总额", new BigDecimal("0.00"));
-          dataMap.put("主用户ID收入金额", new BigDecimal("0.00"));
-          dataMap.put("主用户ID支出金额", new BigDecimal("0.00"));
-          dataMap.put("主用户ID收入笔数", 0);
-          dataMap.put("主用户ID支出笔数", 0);
-          dataMap.put("总笔数", 0);
-          dataMap.put("共同主用户ID数", 0);
-          dataMap.put("共同主用户ID汇总", "");
-          idToData.put(alipayId, dataMap);
-        }
-        String alipayUsername = origin.getString("对手支付宝户名");
-        if (StringUtils.isNotBlank(alipayUsername)
-            && !"_".equals(alipayUsername)
-            && !"-".equals(alipayUsername)) {
-          if (idToNames.containsKey(alipayId)) {
-            Set<String> names = idToNames.get(alipayId);
-            names.add(alipayUsername);
+
+        try {
+
+          origin = cursor.next();
+          String alipayId = origin.getString("对手支付宝用户ID");
+          DataMap dataMap;
+          if (alipayIds.contains(alipayId)) {
+            dataMap = idToData.get(alipayId);
           } else {
-            Set<String> names = new HashSet<>();
-            names.add(alipayUsername);
-            idToNames.put(alipayId, names);
+            alipayIds.add(alipayId);
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("对手支付宝用户ID", alipayId);
+            dataMap.put("对手支付宝户名", "");
+            dataMap.put("交易总额", new BigDecimal("0.00"));
+            dataMap.put("主用户ID收入金额", new BigDecimal("0.00"));
+            dataMap.put("主用户ID支出金额", new BigDecimal("0.00"));
+            dataMap.put("主用户ID收入笔数", 0);
+            dataMap.put("主用户ID支出笔数", 0);
+            dataMap.put("总笔数", 0);
+            dataMap.put("共同主用户ID数", 0);
+            dataMap.put("共同主用户ID汇总", "");
+            idToData.put(alipayId, dataMap);
           }
-        }
-        String flag = "收/支";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
-        if ("收入".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("主用户ID收入金额", oMoney);
-          int oCount = (int) dataMap.get("主用户ID收入笔数");
-          oCount++;
-          dataMap.put("主用户ID收入笔数", oCount);
-        } else if ("支出".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID支出金额");
+          String alipayUsername = origin.getString("对手支付宝户名");
+          if (StringUtils.isNotBlank(alipayUsername)
+              && !"_".equals(alipayUsername)
+              && !"-".equals(alipayUsername)) {
+            if (idToNames.containsKey(alipayId)) {
+              Set<String> names = idToNames.get(alipayId);
+              names.add(alipayUsername);
+            } else {
+              Set<String> names = new HashSet<>();
+              names.add(alipayUsername);
+              idToNames.put(alipayId, names);
+            }
+          }
+          String flag = "收/支";
+          String flagValue = origin.getString(flag);
+          String money = (String) origin.get("金额(元)");
+          if ("收入".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("主用户ID收入金额", oMoney);
+            int oCount = (int) dataMap.get("主用户ID收入笔数");
+            oCount++;
+            dataMap.put("主用户ID收入笔数", oCount);
+          } else if ("支出".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID支出金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("主用户ID支出金额", oMoney);
+            int oCount = (int) dataMap.get("主用户ID支出笔数");
+            oCount++;
+            dataMap.put("主用户ID支出笔数", oCount);
+          }
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
           oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("主用户ID支出金额", oMoney);
-          int oCount = (int) dataMap.get("主用户ID支出笔数");
+          dataMap.put("交易总额", oMoney);
+          int oCount = (int) dataMap.get("笔数");
           oCount++;
-          dataMap.put("主用户ID支出笔数", oCount);
-        }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
-        String mainId = (String) origin.get("支付宝用户ID");
-        if (idToMainIds.containsKey(alipayId)) {
-          Set<String> mainIds = idToMainIds.get(alipayId);
-          mainIds.add(mainId);
-        } else {
-          Set<String> mainIds = new HashSet<>();
-          mainIds.add(mainId);
-          idToMainIds.put(alipayId, mainIds);
+          dataMap.put("总笔数", oCount);
+          String mainId = (String) origin.get("支付宝用户ID");
+          if (idToMainIds.containsKey(alipayId)) {
+            Set<String> mainIds = idToMainIds.get(alipayId);
+            mainIds.add(mainId);
+          } else {
+            Set<String> mainIds = new HashSet<>();
+            mainIds.add(mainId);
+            idToMainIds.put(alipayId, mainIds);
+          }
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {

+ 48 - 41
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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class ScaleAnalysis extends Ops implements Runnable {
 
   private HeaderProperties headerProperties;
@@ -63,50 +65,55 @@ public class ScaleAnalysis extends Ops implements Runnable {
       Map<String, DataMap> idToData = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String alipayId = origin.getString("支付宝用户ID");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          String alipayUsername = origin.getString("支付宝户名");
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("支付宝用户ID", alipayId);
-          dataMap.put("支付宝户名", alipayUsername);
-          dataMap.put("交易总额", new BigDecimal("0.00"));
-          dataMap.put("收入金额", new BigDecimal("0.00"));
-          dataMap.put("支出金额", new BigDecimal("0.00"));
-          dataMap.put("收入笔数", 0);
-          dataMap.put("支出笔数", 0);
-          dataMap.put("总笔数", 0);
-          idToData.put(alipayId, dataMap);
-        }
-        String flag = "收/支";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
-        if ("收入".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("收入金额", oMoney);
-          int oCount = (int) dataMap.get("收入笔数");
-          oCount++;
-          dataMap.put("收入笔数", oCount);
-        } else if ("支出".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+        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("支出笔数");
+          dataMap.put("交易总额", oMoney);
+          int oCount = (int) dataMap.get("笔数");
           oCount++;
-          dataMap.put("支出笔数", oCount);
+          dataMap.put("总笔数", oCount);
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {
         for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {

+ 52 - 45
src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.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 lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 
+@Slf4j
 public class TransferAnalysis extends Ops implements Runnable {
 
   private HeaderProperties headerProperties;
@@ -62,54 +64,59 @@ public class TransferAnalysis extends Ops implements Runnable {
       Map<String, DataMap> idToData = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String transferFlag = origin.getString("消费名称");
-        if (!transferFlag.equals("转账")) {
-          continue;
-        }
-        String alipayId = origin.getString("支付宝用户ID");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          String alipayUsername = origin.getString("支付宝户名");
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("支付宝用户ID", alipayId);
-          dataMap.put("支付宝户名", alipayUsername);
-          dataMap.put("转账总额", new BigDecimal("0.00"));
-          dataMap.put("转账收入", new BigDecimal("0.00"));
-          dataMap.put("转账支出", new BigDecimal("0.00"));
-          dataMap.put("转收笔数", 0);
-          dataMap.put("转支笔数", 0);
-          dataMap.put("总笔数", 0);
-          idToData.put(alipayId, dataMap);
-        }
-        String flag = "收/支";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
-        if ("收入".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("转账收入");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("转账收入", oMoney);
-          int oCount = (int) dataMap.get("转收笔数");
-          oCount++;
-          dataMap.put("转收笔数", oCount);
-        } else if ("支出".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("转账支出");
+        try {
+
+          origin = cursor.next();
+          String transferFlag = origin.getString("消费名称");
+          if (!transferFlag.equals("转账")) {
+            continue;
+          }
+          String alipayId = origin.getString("支付宝用户ID");
+          DataMap dataMap;
+          if (alipayIds.contains(alipayId)) {
+            dataMap = idToData.get(alipayId);
+          } else {
+            alipayIds.add(alipayId);
+            String alipayUsername = origin.getString("支付宝户名");
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("支付宝用户ID", alipayId);
+            dataMap.put("支付宝户名", alipayUsername);
+            dataMap.put("转账总额", new BigDecimal("0.00"));
+            dataMap.put("转账收入", new BigDecimal("0.00"));
+            dataMap.put("转账支出", new BigDecimal("0.00"));
+            dataMap.put("转收笔数", 0);
+            dataMap.put("转支笔数", 0);
+            dataMap.put("总笔数", 0);
+            idToData.put(alipayId, dataMap);
+          }
+          String flag = "收/支";
+          String flagValue = origin.getString(flag);
+          String money = (String) origin.get("金额(元)");
+          if ("收入".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("转账收入");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("转账收入", oMoney);
+            int oCount = (int) dataMap.get("转收笔数");
+            oCount++;
+            dataMap.put("转收笔数", oCount);
+          } else if ("支出".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("转账支出");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("转账支出", oMoney);
+            int oCount = (int) dataMap.get("转支笔数");
+            oCount++;
+            dataMap.put("转支笔数", oCount);
+          }
+          BigDecimal oMoney = (BigDecimal) dataMap.get("转账总额");
           oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("转账支出", oMoney);
-          int oCount = (int) dataMap.get("转支笔数");
+          dataMap.put("转账总额", oMoney);
+          int oCount = (int) dataMap.get("笔数");
           oCount++;
-          dataMap.put("转支笔数", oCount);
+          dataMap.put("总笔数", oCount);
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("转账总额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("转账总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {
         for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {

+ 70 - 65
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesEndAnalysis.java

@@ -65,75 +65,80 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
     Map<String, Set<String>> idToNames = new HashMap<>();
     Document origin;
     while (cursor.hasNext()) {
-      origin = cursor.next();
-      String alipayId = origin.getString("交易对手账号");
-      DataMap dataMap;
-      if (alipayIds.contains(alipayId)) {
-        dataMap = idToData.get(alipayId);
-      } else {
-        alipayIds.add(alipayId);
-        dataMap = new DataMap();
-        dataMap.put("fileId", newFileId);
-        dataMap.put("交易对手账号", alipayId);
-        dataMap.put("交易对手户名", "");
-        dataMap.put("交易总额", new BigDecimal("0.00"));
-        dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
-        dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
-        dataMap.put("交易主体收入笔数", 0);
-        dataMap.put("交易主体支出笔数", 0);
-        dataMap.put("总笔数", 0);
-        dataMap.put("共同交易主体数", 0);
-        dataMap.put("共同交易主体账号汇总", "");
-        idToData.put(alipayId, dataMap);
-      }
-      String alipayUsername = origin.getString("交易对手户名");
-      if (StringUtils.isNotBlank(alipayUsername)
-          && !"_".equals(alipayUsername)
-          && !"-".equals(alipayUsername)) {
-        if (idToNames.containsKey(alipayId)) {
-          Set<String> names = idToNames.get(alipayId);
-          names.add(alipayUsername);
+      try {
+
+        origin = cursor.next();
+        String alipayId = origin.getString("交易对手账号");
+        DataMap dataMap;
+        if (alipayIds.contains(alipayId)) {
+          dataMap = idToData.get(alipayId);
         } else {
-          Set<String> names = new HashSet<>();
-          names.add(alipayUsername);
-          idToNames.put(alipayId, names);
+          alipayIds.add(alipayId);
+          dataMap = new DataMap();
+          dataMap.put("fileId", newFileId);
+          dataMap.put("交易对手账号", alipayId);
+          dataMap.put("交易对手户名", "");
+          dataMap.put("交易总额", new BigDecimal("0.00"));
+          dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
+          dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
+          dataMap.put("交易主体收入笔数", 0);
+          dataMap.put("交易主体支出笔数", 0);
+          dataMap.put("总笔数", 0);
+          dataMap.put("共同交易主体数", 0);
+          dataMap.put("共同交易主体账号汇总", "");
+          idToData.put(alipayId, dataMap);
         }
-      }
-      String flag = "借贷类型";
-      String flagValue = origin.getString(flag);
-      String money = (String) origin.get("交易金额(元)");
-      if (StringUtils.isBlank(money)) {
-        money = "0";
-      }
-      if ("入".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易主体收入金额", oMoney);
-        int oCount = (int) dataMap.get("交易主体收入笔数");
-        oCount++;
-        dataMap.put("交易主体收入笔数", oCount);
-      } else if ("出".equals(flagValue)) {
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+        String alipayUsername = origin.getString("交易对手户名");
+        if (StringUtils.isNotBlank(alipayUsername)
+            && !"_".equals(alipayUsername)
+            && !"-".equals(alipayUsername)) {
+          if (idToNames.containsKey(alipayId)) {
+            Set<String> names = idToNames.get(alipayId);
+            names.add(alipayUsername);
+          } else {
+            Set<String> names = new HashSet<>();
+            names.add(alipayUsername);
+            idToNames.put(alipayId, names);
+          }
+        }
+        String flag = "借贷类型";
+        String flagValue = origin.getString(flag);
+        String money = (String) origin.get("交易金额(元)");
+        if (StringUtils.isBlank(money)) {
+          money = "0";
+        }
+        if ("入".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("交易主体收入金额", oMoney);
+          int oCount = (int) dataMap.get("交易主体收入笔数");
+          oCount++;
+          dataMap.put("交易主体收入笔数", oCount);
+        } else if ("出".equals(flagValue)) {
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
+          oMoney = oMoney.add(new BigDecimal(money));
+          dataMap.put("交易主体支出金额", oMoney);
+          int oCount = (int) dataMap.get("交易主体支出笔数");
+          oCount++;
+          dataMap.put("交易主体支出笔数", oCount);
+        }
+        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
         oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易主体支出金额", oMoney);
-        int oCount = (int) dataMap.get("交易主体支出笔数");
+        dataMap.put("交易额", oMoney);
+        int oCount = (int) dataMap.get("笔数");
         oCount++;
-        dataMap.put("交易主体支出笔数", oCount);
-      }
-      BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-      oMoney = oMoney.add(new BigDecimal(money));
-      dataMap.put("交易总额", oMoney);
-      int oCount = (int) dataMap.get("总笔数");
-      oCount++;
-      dataMap.put("总笔数", oCount);
-      String mainId = (String) origin.get("交易主体账号");
-      if (idToMainIds.containsKey(alipayId)) {
-        Set<String> mainIds = idToMainIds.get(alipayId);
-        mainIds.add(mainId);
-      } else {
-        Set<String> mainIds = new HashSet<>();
-        mainIds.add(mainId);
-        idToMainIds.put(alipayId, mainIds);
+        dataMap.put("总笔数", oCount);
+        String mainId = (String) origin.get("交易主体账号");
+        if (idToMainIds.containsKey(alipayId)) {
+          Set<String> mainIds = idToMainIds.get(alipayId);
+          mainIds.add(mainId);
+        } else {
+          Set<String> mainIds = new HashSet<>();
+          mainIds.add(mainId);
+          idToMainIds.put(alipayId, mainIds);
+        }
+      } catch (Exception exception) {
+        log.error(exception.getMessage(), exception);
       }
     }
     if (CollectionUtils.isNotEmpty(idToData.values())) {

+ 57 - 52
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesScaleAnalysis.java

@@ -63,63 +63,68 @@ public class TenpayTradesScaleAnalysis extends Ops implements Runnable {
       Map<String, Set<String>> idToNames = new HashMap<>();
       Document origin;
       while (cursor.hasNext()) {
-        origin = cursor.next();
-        String alipayId = origin.getString("交易主体账号");
-        DataMap dataMap;
-        if (alipayIds.contains(alipayId)) {
-          dataMap = idToData.get(alipayId);
-        } else {
-          alipayIds.add(alipayId);
-          dataMap = new DataMap();
-          dataMap.put("fileId", newFileId);
-          dataMap.put("交易主体账号", alipayId);
-          dataMap.put("交易主体户名", "");
-          dataMap.put("交易总额", new BigDecimal("0.00"));
-          dataMap.put("收入金额", new BigDecimal("0.00"));
-          dataMap.put("支出金额", new BigDecimal("0.00"));
-          dataMap.put("收入笔数", 0);
-          dataMap.put("支出笔数", 0);
-          dataMap.put("总笔数", 0);
-          idToData.put(alipayId, dataMap);
-        }
-        String alipayUsername = origin.getString("交易主体户名");
-        if (StringUtils.isNotBlank(alipayUsername)) {
-          Set<String> namesSet;
-          if (idToNames.containsKey(alipayId)) {
-            namesSet = idToNames.get(alipayId);
+        try {
+
+          origin = cursor.next();
+          String alipayId = origin.getString("交易主体账号");
+          DataMap dataMap;
+          if (alipayIds.contains(alipayId)) {
+            dataMap = idToData.get(alipayId);
           } else {
-            namesSet = new HashSet<>();
-            idToNames.put(alipayId, namesSet);
+            alipayIds.add(alipayId);
+            dataMap = new DataMap();
+            dataMap.put("fileId", newFileId);
+            dataMap.put("交易主体账号", alipayId);
+            dataMap.put("交易主体户名", "");
+            dataMap.put("交易总额", new BigDecimal("0.00"));
+            dataMap.put("收入金额", new BigDecimal("0.00"));
+            dataMap.put("支出金额", new BigDecimal("0.00"));
+            dataMap.put("收入笔数", 0);
+            dataMap.put("支出笔数", 0);
+            dataMap.put("总笔数", 0);
+            idToData.put(alipayId, dataMap);
+          }
+          String alipayUsername = origin.getString("交易主体户名");
+          if (StringUtils.isNotBlank(alipayUsername)) {
+            Set<String> namesSet;
+            if (idToNames.containsKey(alipayId)) {
+              namesSet = idToNames.get(alipayId);
+            } else {
+              namesSet = new HashSet<>();
+              idToNames.put(alipayId, namesSet);
+            }
+            namesSet.add(alipayUsername);
+          }
+          String flag = "借贷类型";
+          String flagValue = origin.getString(flag);
+          String money = (String) origin.get("交易金额(元)");
+          if ("入".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("收入金额", oMoney);
+            int oCount = (int) dataMap.get("收入笔数");
+            oCount++;
+            dataMap.put("收入笔数", oCount);
+          } else if ("出".equals(flagValue)) {
+            BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
+            oMoney = oMoney.add(new BigDecimal(money));
+            dataMap.put("支出金额", oMoney);
+            int oCount = (int) dataMap.get("支出笔数");
+            oCount++;
+            dataMap.put("支出笔数", oCount);
+          }
+          BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
+          if (oMoney == null) {
+            oMoney = new BigDecimal(0);
           }
-          namesSet.add(alipayUsername);
-        }
-        String flag = "借贷类型";
-        String flagValue = origin.getString(flag);
-        String money = (String) origin.get("交易金额(元)");
-        if ("入".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
-          oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("收入金额", oMoney);
-          int oCount = (int) dataMap.get("收入笔数");
-          oCount++;
-          dataMap.put("收入笔数", oCount);
-        } else if ("出".equals(flagValue)) {
-          BigDecimal oMoney = (BigDecimal) dataMap.get("支出金额");
           oMoney = oMoney.add(new BigDecimal(money));
-          dataMap.put("支出金额", oMoney);
-          int oCount = (int) dataMap.get("支出笔数");
+          dataMap.put("交易总额", oMoney);
+          int oCount = (int) dataMap.get("总笔数");
           oCount++;
-          dataMap.put("支出笔数", oCount);
-        }
-        BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
-        if (oMoney == null) {
-          oMoney = new BigDecimal(0);
+          dataMap.put("总笔数", oCount);
+        } catch (Exception exception) {
+          log.error(exception.getMessage(), exception);
         }
-        oMoney = oMoney.add(new BigDecimal(money));
-        dataMap.put("交易总额", oMoney);
-        int oCount = (int) dataMap.get("总笔数");
-        oCount++;
-        dataMap.put("总笔数", oCount);
       }
       if (CollectionUtils.isNotEmpty(idToData.values())) {
         for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {