Explorar o código

fix:邮件解析-修复已绑定基金的别名还重复写入别名管理表的问题

mozuwen hai 7 meses
pai
achega
e67971efc5

+ 9 - 5
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -424,18 +424,22 @@ public class EmailParseService {
             fundAliasDOList = fundAliasMapper.queryFundIdByName(fundName);
         }
 
-        // 说明未匹配基金已写入别名表
+        // 未匹配基金已写入别名表
         if (CollUtil.isEmpty(fundIdList) && CollUtil.isNotEmpty(fundAliasDOList)) {
             return;
         }
-
+        // 未匹配基金且未写入别名表
+        if (CollUtil.isEmpty(fundIdList) && CollUtil.isEmpty(fundAliasDOList)) {
+            fundAliasMapper.batchInsert(ListUtil.toList(buildFundAliasDO(fundName, registerNumber, null)));
+            log.info("写入别名表 -> 基金名称:{},备案编码:{},基金id:{}", fundName, registerNumber, fundIdList);
+            return;
+        }
+        // 匹配上基金 -> 需要判断此时基金id是否已经在别名管理表
         if (CollUtil.isNotEmpty(fundAliasDOList)) {
             List<String> collect = fundAliasDOList.stream().filter(Objects::nonNull).map(FundAliasDO::getTargetFundId).filter(Objects::nonNull).distinct().toList();
             fundIdList = fundIdList.stream().filter(e -> !collect.contains(e)).toList();
         }
-
-        List<FundAliasDO> fundAliasDOS = CollUtil.isEmpty(fundIdList) ? ListUtil.toList(buildFundAliasDO(fundName, registerNumber, null))
-                : fundIdList.stream().map(e -> buildFundAliasDO(fundName, registerNumber, e)).toList();
+        List<FundAliasDO> fundAliasDOS = CollUtil.isNotEmpty(fundIdList) ? fundIdList.stream().map(e -> buildFundAliasDO(fundName, registerNumber, e)).toList() : null;
         if (CollUtil.isNotEmpty(fundAliasDOS)) {
             fundAliasMapper.batchInsert(fundAliasDOS);
             log.info("写入别名表 -> 基金名称:{},备案编码:{},基金id:{}", fundName, registerNumber, fundIdList);