Browse Source

feat(1): 第三方数据需要处理的特例

洪海涛 5 months ago
parent
commit
9916930c0c

+ 122 - 2
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade3.java

@@ -197,7 +197,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             }else {
                 dataMap.put("交易主体户名", PublicStatic.specialFormatStr(String.valueOf(dataMap.get("交易主体户名"))));
             }
-
+            /*交易主体账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                Object accountObj = dataMap.get("交易主体账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易主体账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             String value = String.valueOf(dataMap.get("交易对手户名"));
             if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
                 String account = (String) dataMap.getOrDefault("交易对手账号", "");
@@ -213,6 +224,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
             }
+            /*交易对手账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+                Object accountObj = dataMap.get("交易对手账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易对手账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             needToSave.add(dataMap);
             if (needToSave.size() >= 1000) {
                 saveLines(new ArrayList<>(needToSave), mongoTemplate);
@@ -295,6 +318,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
             }
+            /*交易主体账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                Object accountObj = dataMap.get("交易主体账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易主体账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             String value = String.valueOf(dataMap.get("交易对手户名"));
             if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
                 String account = (String) dataMap.getOrDefault("交易对手账号", "");
@@ -310,6 +345,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
             }
+            /*交易对手账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+                Object accountObj = dataMap.get("交易对手账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易对手账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             needToSave.add(dataMap);
             if (needToSave.size() >= 1000) {
                 saveLines(new ArrayList<>(needToSave), mongoTemplate);
@@ -389,6 +436,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
             }
+            /*交易主体账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                Object accountObj = dataMap.get("交易主体账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易主体账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             String value = String.valueOf(dataMap.get("交易对手户名"));
             if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
                 String account = (String) dataMap.getOrDefault("交易对手账号", "");
@@ -404,7 +463,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
             }
-
+            /*交易对手账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+                Object accountObj = dataMap.get("交易对手账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易对手账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             needToSave.add(dataMap);
             if (needToSave.size() >= 1000) {
                 saveLines(new ArrayList<>(needToSave), mongoTemplate);
@@ -508,6 +578,19 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
                 dataMap.put("交易主体户名", PublicStatic.specialFormatStr(String.valueOf(dataMap.get("交易主体户名"))));
             }
 
+            /*交易主体账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                Object accountObj = dataMap.get("交易主体账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易主体账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
+
             String value = String.valueOf(dataMap.get("交易对手户名"));
             if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
                 String account = (String) dataMap.getOrDefault("交易对手账号", "");
@@ -523,6 +606,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
             }
+            /*交易对手账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+                Object accountObj = dataMap.get("交易对手账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易对手账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             needToSave.add(dataMap);
             if (needToSave.size() >= 1000) {
                 saveLines(new ArrayList<>(needToSave), mongoTemplate);
@@ -602,6 +697,18 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
             } else {
                 dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
             }
+            /*交易主体账号*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                Object accountObj = dataMap.get("交易主体账号");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易主体账号", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
             String value = String.valueOf(dataMap.get("交易对手户名"));
             if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
                 String account = (String) dataMap.getOrDefault("交易对手账号", "");
@@ -618,6 +725,19 @@ public class AntiSecurityTrade3 extends Ops implements Runnable {
                 dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
             }
 
+            /*交易对手户名*/
+            if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手户名")))) {
+                Object accountObj = dataMap.get("交易对手户名");
+                if (accountObj != null) {
+                    String account = accountObj.toString();
+                    if (PublicStatic.checkStr(account)) {
+                        String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                        dataMap.put("交易对手户名", formattedAccount);
+                        needToSave.add(dataMap);
+                    }
+                }
+            }
+
             needToSave.add(dataMap);
             if (needToSave.size() >= 1000) {
                 saveLines(new ArrayList<>(needToSave), mongoTemplate);

+ 28 - 2
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade4.java

@@ -6,6 +6,8 @@ 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.DataUtils;
+import ieven.server.webapp.util.excel.PublicStatic;
+
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
@@ -105,20 +107,44 @@ public class AntiSecurityTrade4 extends Ops implements Runnable {
           } else {
             String newName = accountToName.getOrDefault(account, "");
             if (StringUtils.isNotBlank(newName)) {
-              dataMap.put("交易主体户名", newName);
+              dataMap.put("交易主体户名", PublicStatic.specialFormatStr(newName));
             }
           }
         }
+        /*交易主体账号*/
+        if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+            Object accountObj = dataMap.get("交易主体账号");
+            if (accountObj != null) {
+                String account = accountObj.toString();
+                if (PublicStatic.checkStr(account)) {
+                    String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                    dataMap.put("交易主体账号", formattedAccount);
+                    needToSave.add(dataMap);
+                }
+            }
+        }
         if ("".equals((String) dataMap.get("交易对手户名"))) {
           String account = (String) dataMap.getOrDefault("交易对手账号", "");
           if (StringUtils.isBlank(account) || "-".equals(account)) {
           } else {
             String newName = accountToName.getOrDefault(account, "");
             if (StringUtils.isNotBlank(newName)) {
-              dataMap.put("交易对手户名", newName);
+              dataMap.put("交易对手户名", PublicStatic.specialFormatStr(newName));
             }
           }
         }
+        /*交易对手账号*/
+        if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+          Object accountObj = dataMap.get("交易对手账号");
+          if (accountObj != null) {
+              String account = accountObj.toString();
+              if (PublicStatic.checkStr(account)) {
+                  String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                  dataMap.put("交易对手账号", formattedAccount);
+                  needToSave.add(dataMap);
+              }
+          }
+        }
         needToSave.add(dataMap);
         if (needToSave.size() >= 1000) {
           saveLines(new ArrayList<>(needToSave), mongoTemplate);

+ 27 - 2
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTrade5.java

@@ -7,6 +7,7 @@ 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 ieven.server.webapp.util.excel.PublicStatic;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.bson.Document;
@@ -77,7 +78,7 @@ public class AntiSecurityTrade5 extends Ops implements Runnable {
                         dataMap.put("交易对手银行卡号", originDoc.getString("付款方银行卡号"));
                         dataMap.put("交易主体银行名称", originDoc.getString("收款方银行卡所属行"));
                         dataMap.put("交易主体银行卡号", originDoc.getString("收款方银行卡号"));
-                        dataMap.put("交易主体户名", originDoc.getString("收款方的商户名称"));
+                        dataMap.put("交易主体户名", PublicStatic.specialFormatStr(originDoc.getString("收款方的商户名称")));
                     }
                     if (f1.equals("借")) {
                         dataMap.put("交易主体银行名称", originDoc.getString("付款方银行卡所属行"));
@@ -85,7 +86,31 @@ public class AntiSecurityTrade5 extends Ops implements Runnable {
                         dataMap.put("交易对手账号", originDoc.getString("收款方支付帐号"));
                         dataMap.put("交易对手银行名称", originDoc.getString("收款方银行卡所属行"));
                         dataMap.put("交易对手银行卡号", originDoc.getString("收款方银行卡号"));
-                        dataMap.put("交易对手户名", originDoc.getString("收款方的商户名称"));
+                        dataMap.put("交易对手户名", PublicStatic.specialFormatStr(originDoc.getString("收款方的商户名称")));
+                    }
+                    /*交易对手账号*/
+                    if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易主体账号")))) {
+                        Object accountObj = dataMap.get("交易主体账号");
+                        if (accountObj != null) {
+                            String account = accountObj.toString();
+                            if (PublicStatic.checkStr(account)) {
+                                String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                                dataMap.put("交易主体账号", formattedAccount);
+                                needToSave.add(dataMap);
+                            }
+                        }
+                    }
+                    /*交易对手账号*/
+                    if (PublicStatic.checkStr(String.valueOf(dataMap.get("交易对手账号")))) {
+                        Object accountObj = dataMap.get("交易对手账号");
+                        if (accountObj != null) {
+                            String account = accountObj.toString();
+                            if (PublicStatic.checkStr(account)) {
+                                String formattedAccount = PublicStatic.formatTransactionPartyName(account);
+                                dataMap.put("交易对手账号", formattedAccount);
+                                needToSave.add(dataMap);
+                            }
+                        }
                     }
                     needToSave.add(dataMap);
                     if (needToSave.size() >= 1000) {

+ 52 - 2
src/main/java/ieven/server/webapp/util/excel/PublicStatic.java

@@ -299,17 +299,65 @@ public class PublicStatic {
         // 全角转半角
         String result = "";
         if (StringUtils.isNotBlank(s) && !"null".equals(s)) {
-            result = s;
+            // 使用正则表达式提取括号内的内容 2044250843395121(京东白条小荷包(省钱小组))
+            java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+\\((.+?)\\)");
+            java.util.regex.Matcher matcher = pattern.matcher(s);
+            if (matcher.find()) {
+                String extracted = matcher.group(1);
+                // 去除括号和空格
+                extracted = extracted.replaceAll("[()]", "").replaceAll("\\s+", "");
+                result = extracted;
+            } else {
+                result = s;
+            }
+
+            // 预编译所有正则表达式模式并按优先级排序
+            final Pattern[] patterns = {
+                    Pattern.compile("经营者_(.+)\\(\\d+\\)"),          // v1
+                    Pattern.compile("(.+)\\(\\d+\\)"),          // v2
+                    Pattern.compile("(.+)\\(.+@.+\\)"),          // v3
+            };
+            final int[] groups = {1, 1, 1};
+            for (int i = 0; i < patterns.length; i++) {
+                Matcher matcher2 = patterns[i].matcher(result);
+                if (matcher2.find()) {
+                    return matcher2.group(groups[i]);
+                }
+            }
             result = result.replace("-", "-");
             result = result.replace("/", "/");
             result = result.replace("(", "(");
             result = result.replace(")", ")");
-            result = result.replaceAll("(", "").replaceAll(")", "").replaceAll("个人", "").
+            result = result.replaceAll("商户_", "").replaceAll("小微商户", "").replaceAll("经营者_", "").replaceAll("(", "").replaceAll(")", "").replaceAll("个人", "").
                     replaceAll("-", "").replaceAll("个体工商户", "").replaceAll("商户", "");
         }
         return result;
     }
 
+    public static String formatTransactionPartyName(String account) {
+         // 预编译所有正则表达式模式并按优先级排序
+        final Pattern[] patterns = {
+            Pattern.compile("经营者_.+\\((\\d+)\\)"),          // v1
+            Pattern.compile("商户_(.+)"),                     // v2
+            Pattern.compile("小微商户(.+)"),                   // v3
+            Pattern.compile("(\\(\\))?\\(\\)\\((.+)\\)"),     // v4
+            Pattern.compile(".+\\((\\d+)\\)"),                // v5
+            Pattern.compile(".+\\((\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+))\\)"), // v6
+            Pattern.compile(".+\\((.*@.*)\\)"), // v61
+            Pattern.compile("(.+)\\((.*)?\\((.*)?\\)\\)")     // v7
+        };
+        final int[] groups = {1, 1, 1, 2, 1, 1, 1, 1};
+        String result = account;
+        for (int i = 0; i < patterns.length; i++) {
+            Matcher matcher = patterns[i].matcher(result);
+            if (matcher.find()) {
+                return matcher.group(groups[i]);
+            }
+        }
+        // 统一处理特殊字符替换
+        return result.replaceAll("[-_()()]", "");
+    }
+
     /**
      * 包含数字
      *
@@ -491,5 +539,7 @@ public class PublicStatic {
         return dataList;
     }
 
+//    交易主体账号
+
 
 }