Explorar o código

fix:邮件解析-修复重复数据写入别名管理表的问题

mozuwen hai 7 meses
pai
achega
5dddc093eb

+ 2 - 2
service-base/src/main/resources/mapper/FundAliasMapper.xml

@@ -37,14 +37,14 @@
         select target_fund_id, target_fund_name, target_register_number
         from PPW_EMAIL.fund_alias
         where isvalid = 1
-          and source_fund_name = #{fundName}
+          and source_fund_name = #{fundName} and source_register_number is null
     </select>
 
     <select id="queryFundByRegisterNumber" resultMap="BaseResultMap">
         select target_fund_id, target_fund_name, target_register_number
         from PPW_EMAIL.fund_alias
         where isvalid = 1
-          and source_register_number = #{registerNumber}
+          and source_register_number = #{registerNumber} and source_fund_name is null
     </select>
 
     <select id="searchFundAlias" resultMap="BaseResultMap"

+ 2 - 2
service-base/src/main/resources/mapper/FundInfoMapper.xml

@@ -92,7 +92,7 @@
                register_number as registerNumber
         from PPW_EMAIL.pvn_fund_info
         where isvalid = 1
-          and fund_name = #{fundName}
+          and fund_name = #{fundName} and register_number is null
     </select>
 
     <select id="queryFundByRegisterNumber" resultType="com.simuwang.base.pojo.dos.FundInfoDO">
@@ -101,7 +101,7 @@
                register_number as registerNumber
         from PPW_EMAIL.pvn_fund_info
         where isvalid = 1
-          and register_number = #{registerNumber}
+          and register_number = #{registerNumber} and fund_name is null
     </select>
     <select id="countFundInfoByKeyword" resultType="java.lang.Long"
             parameterType="com.simuwang.base.pojo.dto.query.FundInputPageQuery">

+ 10 - 1
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -389,7 +389,16 @@ public class EmailParseService {
     }
 
     private void saveFundAlias(String fundName, String registerNumber) {
-        List<FundAliasDO> fundAliasDOList = fundAliasMapper.queryFundByNameAndRegisterNumber(fundName, registerNumber);
+        List<FundAliasDO> fundAliasDOList = CollUtil.newArrayList();
+        if (StrUtil.isNotBlank(fundName) && StrUtil.isNotBlank(registerNumber)) {
+            fundAliasDOList = fundAliasMapper.queryFundByNameAndRegisterNumber(fundName, registerNumber);
+        }
+        if (StrUtil.isBlank(fundName) && StrUtil.isNotBlank(registerNumber)) {
+            fundAliasDOList = fundAliasMapper.queryFundByRegisterNumber(registerNumber);
+        }
+        if (StrUtil.isNotBlank(fundName) && StrUtil.isBlank(registerNumber)) {
+            fundAliasDOList = fundAliasMapper.queryFundByName(fundName);
+        }
         if (CollUtil.isNotEmpty(fundAliasDOList)) {
             return;
         }

+ 2 - 2
service-daq/src/main/java/com/simuwang/daq/service/FundService.java

@@ -53,7 +53,7 @@ public class FundService {
             return fundAliasDOList.stream().map(this::convertToFundInfoDO).filter(Objects::nonNull).collect(Collectors.toList());
         }
         // 2.基金名称匹配
-        if (StrUtil.isNotBlank(fundName)) {
+        if (StrUtil.isNotBlank(fundName) && StrUtil.isBlank(registerNumber)) {
             List<FundInfoDO> fundInfos = fundInfoMapper.queryFundByName(fundName);
             if (CollUtil.isNotEmpty(fundInfos)) {
                 return fundInfos;
@@ -64,7 +64,7 @@ public class FundService {
             }
         }
         // 3.备案编码匹配
-        if (StrUtil.isNotBlank(fundName)) {
+        if (StrUtil.isBlank(fundName) && StrUtil.isNotBlank(registerNumber)) {
             List<FundInfoDO> fundInfos = fundInfoMapper.queryFundByRegisterNumber(registerNumber);
             if (CollUtil.isNotEmpty(fundInfos)) {
                 return fundInfos;