Ver Fonte

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

洪海涛 há 5 meses atrás
pai
commit
419285e263

+ 38 - 0
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeEndAnalysis.java

@@ -19,6 +19,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Slf4j
 public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
@@ -44,6 +46,7 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
 
     @Override
     public void run() {
+        log.info("反诈治安-对手透视开始");
         // 直接删除并创建表
         String newFileId = "";
         String dateFileId = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
@@ -105,6 +108,40 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
                             idToNames.put(alipayId, names);
                         }
                     }
+
+                    /*特殊格式处理*/
+                    Pattern pattern = Pattern.compile("([\\u4e00-\\u9fa5]+)\\((.*@.*)\\)");
+                    Pattern pattern2 = Pattern.compile("商户_([\\u4e00-\\u9fa5]+)\\((.+)\\)");
+                    Pattern pattern3 = Pattern.compile("([\\u4e00-\\u9fa5]+)\\(\\d+\\)");
+                    Matcher matcher = pattern.matcher(alipayId);
+                    Matcher matcher2 = pattern2.matcher(alipayId);
+                    Matcher matcher3 = pattern3.matcher(alipayId);
+                    if (matcher.find()) {
+                        // 提取名称部分(第一组)
+                        String name = matcher.group(1);
+                        // 提取 Email 地址部分(第二组)
+                        String email = matcher.group(2);
+                        // 更新数据映射
+                        dataMap.put("交易对手户名", name);
+                        dataMap.put("交易对手账号", email);
+                    } else if (matcher2.find()) {
+                        // 提取名称部分(第一组)
+                        String name = matcher2.group(1);
+                        // 提取 Email 地址部分(第二组)
+                        String email = matcher2.group(2);
+                        // 更新数据映射
+                        dataMap.put("交易对手户名", name);
+                        dataMap.put("交易对手账号", email);
+                    } else if (matcher3.find()) {
+                        // 提取名称部分(第一组)
+                        String name = matcher2.group(1);
+                        // 提取 Email 地址部分(第二组)
+                        String email = matcher2.group(2);
+                        // 更新数据映射
+                        dataMap.put("交易对手户名", name);
+                        dataMap.put("交易对手账号", email);
+                    }
+
                     String flag = "交易主体的出入账标识";
                     String flagValue = origin.getString(flag);
                     String money = PublicStatic.checkStrJe((String) origin.get("交易金额"));
@@ -184,6 +221,7 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
                 saveLines(idToData.values(), "共同交易主体数", mongoTemplate);
             }
         }
+        log.info("反诈治安-对手透视结束");
         this.latch.countDown();
     }
 }

+ 7 - 1
src/main/java/ieven/server/webapp/util/excel/PublicStatic.java

@@ -335,7 +335,13 @@ public class PublicStatic {
     }
 
     public static String formatTransactionPartyName(String account) {
-         // 预编译所有正则表达式模式并按优先级排序
+        if (account == null) {
+            return "";
+        }
+        if (account.isEmpty() || StringUtils.isBlank(account)) {
+            return "";
+        }
+        // 预编译所有正则表达式模式并按优先级排序
         final Pattern[] patterns = {
             Pattern.compile("经营者_.+\\((\\d+)\\)"),          // v1
             Pattern.compile("商户_(.+)"),                     // v2