Jelajahi Sumber

fix:数据详情优化查询

chenjianhua 1 bulan lalu
induk
melakukan
be511f6f69

+ 2 - 0
service-base/src/main/java/com/simuwang/base/mapper/FundInfoMapper.java

@@ -51,4 +51,6 @@ public interface FundInfoMapper {
     FundInfoDO searchFundDetail(@Param("fundId")String fundId);
 
     Long countFundTotal();
+
+    List<FundInformationDO> searchFundInfoListByFundIdList(@Param("fundIdList")List<String> fundIdList);
 }

+ 0 - 4
service-base/src/main/resources/mapper/EmailFundNavMapper.xml

@@ -55,8 +55,6 @@
             nav.file_id,
             nav.fund_id,
             nav.fund_name,
-            info.fund_id as target_fund_id,
-            info.fund_name as target_fund_name,
             nav.register_number,
             nav.price_date,
             nav.nav,
@@ -71,8 +69,6 @@
                 on nav.file_id = file.id
             join PPW_EMAIL.email_parse_info parse
                 on file.email_id = parse.id
-            left join PPW_EMAIL.pvn_fund_info info
-                on nav.fund_id=info.fund_id and info.isvalid=1
         WHERE nav.isvalid = 1  and file.isvalid=1 and parse.isvalid=1
         <if test="fundName != null and fundName !=''">
             and (nav.fund_name like concat('%',#{fundName},'%') or nav.register_number like concat('%',#{fundName},'%'))

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

@@ -259,4 +259,11 @@
     <select id="countFundTotal" resultType="java.lang.Long">
         select count(1) from PPW_EMAIL.pvn_fund_info where isvalid=1
     </select>
+    <select id="searchFundInfoListByFundIdList"  resultMap="BaseResultMap">
+        select info.fund_id,info.fund_name from PPW_EMAIL.pvn_fund_info info where isvalid=1
+        and info.fund_id in
+        <foreach collection="fundIdList" index="index" item="fundId" separator="," open="(" close=")">
+            #{fundId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -659,6 +659,7 @@ public class EmailParseService {
                 if(nav == null || cumulativeNavWithdrawal == null){
                     isStored=0;
                     emailFundNavDO.setFundId(null);
+                    fundNavDTO.setParseStatus(NavParseStatusConst.NAV_DEFICIENCY);
                 }
                 emailFundNavDO.setFileId(fileId);
                 emailFundNavDO.setIsStored(isStored);

+ 2 - 0
service-manage/src/main/java/com/simuwang/manage/service/FundInformationService.java

@@ -23,4 +23,6 @@ public interface FundInformationService {
     MybatisPage<FundInformationVO> searchFundInfoList(FundInfoPageQuery fundInfoPageQuery);
 
     ResultVo<FundInfoVO> searchFundDetail(String fundId);
+
+    Map<String, String> getFundIdNameByFundIdList(List<String> fundIdList);
 }

+ 6 - 2
service-manage/src/main/java/com/simuwang/manage/service/impl/DeletionServiceImpl.java

@@ -185,6 +185,11 @@ public class DeletionServiceImpl implements DeletionService {
             String lastDeletionDate = deletionInfoMapper.getLastDeletionDate(fundId,deletionType);
             DeletionTypeStatisticsDO deletionTypeStatisticsDO = new DeletionTypeStatisticsDO();
             deletionTypeStatisticsDO.setFundId(fundId);
+            deletionTypeStatisticsDO.setIsvalid(1);
+            deletionTypeStatisticsDO.setCreateTime(new Date());
+            deletionTypeStatisticsDO.setCreatorId(999999);
+            deletionTypeStatisticsDO.setUpdaterId(999999);
+            deletionTypeStatisticsDO.setUpdateTime(new Date());
             deletionTypeStatisticsDO.setLastDeletionDate(lastDeletionDate);
             deletionTypeStatisticsDO.setDeletionType(Integer.valueOf(deletionType));
             deletionTypeStatisticsDO.setDeletionNum(deletionNum);
@@ -194,9 +199,8 @@ public class DeletionServiceImpl implements DeletionService {
                 deletionTypeStatisticsDO.setId(oldDeletionTypeStatisticsDO.getId());
                 deletionTypeStatisticsDO.setUpdateTime(new Date());
             }
-            deletionTypeStatisticsDOList.add(deletionTypeStatisticsDO);
+            deletionTypeStatisticsMapper.insertOrUpdate(deletionTypeStatisticsDO);
         }
-        deletionTypeStatisticsMapper.insertOrUpdate(deletionTypeStatisticsDOList);
     }
 
     @Override

+ 11 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/FundInformationServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -58,4 +59,14 @@ public class FundInformationServiceImpl implements FundInformationService {
         FundInfoVO fundInfoVO = fundInfoDO.toVO();
         return ResultVo.ok(fundInfoVO);
     }
+
+    @Override
+    public Map<String, String> getFundIdNameByFundIdList(List<String> fundIdList) {
+        Map<String, String> map = new HashMap<>();
+        List<FundInformationDO> result = fundInfoMapper.searchFundInfoListByFundIdList(fundIdList);
+        for (FundInformationDO fundInformationDO : result) {
+            map.put(fundInformationDO.getFundId(), fundInformationDO.getFundShortName());
+        }
+        return map;
+    }
 }

+ 16 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/ParseEmailDetailServiceImpl.java

@@ -7,6 +7,7 @@ import com.simuwang.base.mapper.*;
 import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.query.ParseDetailPageQuery;
 import com.simuwang.base.pojo.vo.*;
+import com.simuwang.manage.service.FundInformationService;
 import com.simuwang.manage.service.ParseEmailDetailService;
 import com.smppw.utils.DateUtil;
 import org.checkerframework.checker.units.qual.A;
@@ -14,7 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -32,12 +35,25 @@ public class ParseEmailDetailServiceImpl implements ParseEmailDetailService {
     @Autowired
     private EmailFundAssetMapper emailFundAssetMapper;
 
+    @Autowired
+    private FundInformationService fundInformationService;
+
     @Override
     public MybatisPage<EmailFundNavVO> searchNavDetail(ParseDetailPageQuery parseDetailPageQuery) {
         if(StringUtil.isNotEmpty(parseDetailPageQuery.getUpdateEndDate())){
             parseDetailPageQuery.setUpdateEndDate(DateUtil.getAroundDate(DateUtils.parse(parseDetailPageQuery.getUpdateEndDate(),DateUtils.YYYY_MM_DD),1));
         }
         List<EmailFundNavDO> dataList = emailFundNavMapper.searchNavDetail(parseDetailPageQuery);
+        List<String> fundIdList = dataList.stream().filter(e -> StringUtil.isNotEmpty(e.getFundId())).map(e -> e.getFundId()).collect(Collectors.toList());
+        if(!fundIdList.isEmpty()){
+            Map<String,String> fundIdNameMap = fundInformationService.getFundIdNameByFundIdList(fundIdList);
+            for (EmailFundNavDO emailFundNavDO : dataList) {
+                if(StringUtil.isNotEmpty(emailFundNavDO.getFundId())){
+                    emailFundNavDO.setTargetFundId(emailFundNavDO.getFundId());
+                    emailFundNavDO.setTargetFundName(fundIdNameMap.get(emailFundNavDO.getFundId()));
+                }
+            }
+        }
         List<EmailFundNavVO> voList = dataList.stream().map(EmailFundNavDO::toVo).collect(Collectors.toList());
         long total = emailFundNavMapper.countNavDetail(parseDetailPageQuery);
         return MybatisPage.of(total,voList);