소스 검색

fix:修复基金净值缺失明细表-净值未缺失时,认为缺失了全部净值的问题

mozuwen 4 달 전
부모
커밋
e773a453dd
1개의 변경된 파일12개의 추가작업 그리고 5개의 파일을 삭제
  1. 12 5
      service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavService.java

+ 12 - 5
service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavService.java

@@ -66,17 +66,17 @@ public class FundNavService {
         log.info("查询基金规模数据");
         if (CollUtil.isNotEmpty(assetDOList)) {
             fundIdAssetMap = assetDOList.stream().collect(Collectors.groupingBy(AssetDO::getFundId));
-            log.info("fundIdAssetMap:{}",fundIdAssetMap);
+            log.info("fundIdAssetMap:{}", fundIdAssetMap);
         }
         Map<String, List<NavDO>> fundIdNavMap = navDOList.stream().collect(Collectors.groupingBy(NavDO::getFundId));
         for (Map.Entry<String, List<NavDO>> fundIdNavEntry : fundIdNavMap.entrySet()) {
             String fundId = fundIdNavEntry.getKey();
-            log.info("组装基金净值明细数据 -> 基金id:{}",fundId);
+            log.info("组装基金净值明细数据 -> 基金id:{}", fundId);
             List<NavDO> fundNavDoList = fundIdNavEntry.getValue();
             List<AssetDO> fundAssetDoList = fundIdAssetMap.get(fundId);
             FundAndCompanyInfoDO fundInfoDO = fundIdCompanyNameMap.get(fundId);
             List<FundNavDataDTO> fundNavDataDTOList = buildFundNavDataDTO(fundInfoDO, fundNavDoList, fundAssetDoList);
-            log.info("基金净值明细数据:{}",fundNavDataDTOList);
+            log.info("基金净值明细数据:{}", fundNavDataDTOList);
             navDataDTOList.addAll(fundNavDataDTOList);
         }
         return navDataDTOList;
@@ -96,17 +96,19 @@ public class FundNavService {
         if (CollUtil.isEmpty(fundInfoCompanyNameList)) {
             return navDeletionDTOList;
         }
-        // 得到存在基金完整的基金id
+        // 全部基金id
         List<String> allFundIdList = navMapper.getAllFundId();
-        // 得到基金净值缺失的基金Id
+        // 存在净值缺失的基金Id
         List<String> deletionFundIdList = getDeletionFundId(fundInfoCompanyNameList, fundIdDeletionInfoMap);
         List<String> notDeletionFundIdList = allFundIdList.stream().filter(e -> !deletionFundIdList.contains(e)).toList();
+        log.info("不缺失净值的基金id:{}", notDeletionFundIdList);
 
         // 获取大赛开赛时间
         String competitionStartTime = DateUtil.format(fundInfoMapper.queryCompetitionStartTime(competitionId), DateConst.YYYY_MM_DD);
 
         // 过滤掉净值没有缺失的基金Id
         fundInfoCompanyNameList = fundInfoCompanyNameList.stream().filter(e -> !notDeletionFundIdList.contains(e.getFundId())).toList();
+
         for (FundAndCompanyInfoDO fundAndCompanyInfoDO : fundInfoCompanyNameList) {
             String fundId = fundAndCompanyInfoDO.getFundId();
             String inceptionDate = DateUtil.format(fundAndCompanyInfoDO.getInceptionDate(), DateConst.YYYY_MM_DD);
@@ -115,10 +117,15 @@ public class FundNavService {
             List<FundDeletionInfoDO> fundDeletionInfoDOList = fundIdDeletionInfoMap.get(fundId);
             if (CollUtil.isNotEmpty(fundDeletionInfoDOList)) {
                 fundDeletionInfoDOList = fundDeletionInfoDOList.stream().filter(e -> e.getDeletionDate().compareTo(date) >= 0).toList();
+                if (CollUtil.isEmpty(fundDeletionInfoDOList)) {
+                    continue;
+                }
             }
+            log.info("基金id:{},缺失的净值数据:{}", fundId, fundDeletionInfoDOList);
             // 获取净值日期所在年和所在周
             Map<String, TradeDateDTO> tradeDateDoMap = getYearAndWeekOfDate(date, endDate);
             List<FundNavDeletionDTO> fundNavDataDTOList = buildFundNavDeletionDTO(fundAndCompanyInfoDO, fundDeletionInfoDOList, tradeDateDoMap);
+            log.info("基金id:{},缺失的净值数据fundNavDataDTOList:{}", fundId, fundNavDataDTOList);
             navDeletionDTOList.addAll(fundNavDataDTOList);
         }
         return navDeletionDTOList;