瀏覽代碼

feat:基金缺失明细结果改成如果基金成立日期小于大赛开始日期 -> 取大赛开始日期,否则取基金成立日期

mozuwen 5 月之前
父節點
當前提交
d8b6c7b053

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

@@ -8,6 +8,7 @@ import com.simuwang.base.pojo.dto.query.FundInputPageQuery;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -55,4 +56,5 @@ public interface FundInfoMapper {
 
     List<FundAndCompanyInfoDO> queryFundAndTrustByFundId(@Param("competitionId")Integer competitionId);
 
+    Date queryCompetitionStartTime(@Param("competitionId")Integer competitionId);
 }

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/FundAndCompanyInfoDO.java

@@ -26,4 +26,8 @@ public class FundAndCompanyInfoDO {
      * 参赛日期
      */
     private Date entryDate;
+    /**
+     * 成立日期
+     */
+    private Date inceptionDate;
 }

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

@@ -245,7 +245,8 @@
                t2.product_tactics as strategyId,
                t2.open_account as isOpenAccount,
                t2.open_account2 as isOpenAccount2,
-               t2.createtime as entryDate
+               t2.createtime as entryDate,
+               t.inception_date as inceptionDate
         from pvn_fund_info t
                  left join pvn_company_info t1 on t1.isvalid = 1 and t1.company_id = t.trust_id
         join rc_competition_apply t2 on t.fund_id = t2.product_code and t2.isvalid = 1
@@ -253,4 +254,10 @@
            and t2.competition_id = #{competitionId}
     </select>
 
+    <select id="queryCompetitionStartTime" resultType="java.util.Date">
+        select start_time
+        from rc_competition_information
+        where isvalid = 1
+          and id = #{competitionId}
+    </select>
 </mapper>

+ 9 - 6
service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavService.java

@@ -93,19 +93,22 @@ public class FundNavService {
         List<String> deletionFundIdList = getDeletionFundId(fundInfoCompanyNameList, fundIdDeletionInfoMap);
         List<String> notDeletionFundIdList = allFundIdList.stream().filter(e -> !deletionFundIdList.contains(e)).toList();
 
+        // 获取大赛开赛时间
+        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 entryDate = DateUtil.format(fundAndCompanyInfoDO.getEntryDate(), DateConst.YYYY_MM_DD);
-            // 获取净值日期所在年和所在周
-            Map<String, TradeDateDTO> tradeDateDoMap = getYearAndWeekOfDate(entryDate, endDate);
-
+            String inceptionDate = DateUtil.format(fundAndCompanyInfoDO.getInceptionDate(), DateConst.YYYY_MM_DD);
+            // 如果基金成立日期小于大赛开始日期 -> 取大赛开始日期,否则取基金成立日期
+            String date = inceptionDate.compareTo(competitionStartTime) <= 0 ? competitionStartTime : inceptionDate;
             List<FundDeletionInfoDO> fundDeletionInfoDOList = fundIdDeletionInfoMap.get(fundId);
             if (CollUtil.isNotEmpty(fundDeletionInfoDOList)) {
-                fundDeletionInfoDOList = fundDeletionInfoDOList.stream().filter(e -> e.getDeletionDate().compareTo(entryDate) >= 0).toList();
+                fundDeletionInfoDOList = fundDeletionInfoDOList.stream().filter(e -> e.getDeletionDate().compareTo(date) >= 0).toList();
             }
-
+            // 获取净值日期所在年和所在周
+            Map<String, TradeDateDTO> tradeDateDoMap = getYearAndWeekOfDate(date, endDate);
             List<FundNavDeletionDTO> fundNavDataDTOList = buildFundNavDeletionDTO(fundAndCompanyInfoDO, fundDeletionInfoDOList, tradeDateDoMap);
             navDeletionDTOList.addAll(fundNavDataDTOList);
         }

+ 1 - 1
service-manage/src/main/java/com/simuwang/manage/task/CompetitionTask.java

@@ -167,7 +167,7 @@ public class CompetitionTask {
         String endDate = DateUtil.format(new Date(), DateConst.YYYY_MM_DD);
         // 输出榜单之前 -> 执行净值缺失检测(确保净值不全的基金不参与榜单)
         if (isComputeDeletion) {
-            fundDeletionTask.computeDeletion();
+            // fundDeletionTask.computeDeletion();
         }
         List<FundNavDeletionDTO> navDeletionDTOList = fundNavService.getFundNavDeletion(competitionId, endDate);
         if (CollUtil.isEmpty(navDeletionDTOList)) {