1
0
Переглянути джерело

fix: 缺失计算调整,增加备注修改

chenjianhua 7 місяців тому
батько
коміт
8a37124b5c

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/enums/DeletionType.java

@@ -10,7 +10,7 @@ import java.util.stream.Stream;
  */
 public enum DeletionType {
     //单位分红/拆分比例
-    NAV_DELETION(1, "净值缺失"), ASSET_DELETION(2, "规模缺失"), DISTRIBUTION_DELETION(3, "分红缺失");
+    NAV_DELETION(1, "净值缺失"), ASSET_DELETION(2, "规模缺失"), DISTRIBUTION_DELETION(3, "分红缺失"), NO_DELETION(4, "已补充");
 
     private final Integer code;
     private final String info;

+ 1 - 1
service-base/src/main/java/com/simuwang/base/mapper/DeletionInfoMapper.java

@@ -32,7 +32,7 @@ public interface DeletionInfoMapper {
 
     void batchUpdate(@Param("itemDoList") List<FundDeletionInfoVO> fundDeletionInfoVOList);
 
-    void updateRemark(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType, @Param("remark")String remark);
+    void updateRemark(@Param("fundId") String fundId, @Param("deletionType") Integer deletionType,@Param("deletionDate") String deletionDate, @Param("remark")String remark);
 
     List<FundDeletionInfoDO> selectFundDeletionInfoVOList(@Param("fundIdList") List<String> fundIdList);
 

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionRemarkVO.java

@@ -16,7 +16,7 @@ public class FundDeletionRemarkVO {
     /**
      * (基金ID-缺失类型)列表
      */
-    private List<FundDeletionTypeVO> FundDeletionTypeList;
+    private List<FundDeletionTypeVO> fundDeletionTypeList;
     /**
      * 备注
      */

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/FundDeletionTypeVO.java

@@ -18,4 +18,8 @@ public class FundDeletionTypeVO {
      * 缺失类型
      */
     private Integer deletionType;
+    /**
+     * 缺失日期
+     */
+    private String deletionDate;
 }

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

@@ -38,7 +38,7 @@
         </foreach>
     </update>
     <update id="updateRemark">
-        update PPW_EMAIL.deletion_info set remark=#{remark} where fund_id=#{fundId} and deletion_type=#{deletionType} and isvalid=1
+        update PPW_EMAIL.deletion_info set remark=#{remark} where fund_id=#{fundId} and deletion_type=#{deletionType} and deletion_date = #{deletionDate} and isvalid=1
     </update>
     <select id="searchDeletionList" resultMap="BaseResultMap"
             parameterType="com.simuwang.base.pojo.dto.query.DeletionPageQuery">

+ 1 - 0
service-base/src/main/resources/mapper/NavMapper.xml

@@ -89,6 +89,7 @@
         from PPW_EMAIL.nav
         where isvalid = 1
           and fund_id = #{fundId}
+        order by price_date
     </select>
 
 

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

@@ -67,7 +67,7 @@ public class DeletionServiceImpl implements DeletionService {
     public void saveBatchDeletionRemark(FundDeletionRemarkVO fundDeletionRemarkVO) {
         String remark = fundDeletionRemarkVO.getRemark();
         for(FundDeletionTypeVO remarkVO : fundDeletionRemarkVO.getFundDeletionTypeList()){
-            deletionInfoMapper.updateRemark(remarkVO.getFundId(),remarkVO.getDeletionType(),remark);
+            deletionInfoMapper.updateRemark(remarkVO.getFundId(),remarkVO.getDeletionType(),remarkVO.getDeletionDate(),remark);
         }
     }
 

+ 22 - 3
service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java

@@ -62,15 +62,21 @@ public class FundDeletionTask {
             List<TradeDateDO> tradeDateDOList = tradeDateMapper.selectTradeDate(inceptionDate,today);
             navDeletion(fundId,navDOList,tradeDateDOList,fundReportFrequencyDO);
             assetDeletion(fundId,assetDOList,tradeDateDOList,fundReportFrequencyDO);
+            distributionDeletion(fundId,navDOList);
         }
     }
 
+    private void distributionDeletion(String fundId, List<NavDO> navDOList) {
+
+    }
+
     private void assetDeletion(String fundId, List<AssetDO> assetDOList, List<TradeDateDO> tradeDateDOList, FundReportFrequencyDO fundReportFrequencyDO) {
         if(Frequency.DAY == Frequency.getFrequencyByCode(fundReportFrequencyDO.getAssetFrequency())){
             Map<String,List<AssetDO>> navListMap = assetDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getPriceDate(),DateUtils.YYYY_MM_DD)));
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getTradeDate(),DateUtils.YYYY_MM_DD)));
             for(String tradeDate : tradeListMap.keySet()){
                 if(navListMap.containsKey(tradeDate)){
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //写入缺失信息表
@@ -84,9 +90,9 @@ public class FundDeletionTask {
             for(String priceDate : navListMap.keySet()){
                 Integer weekOfYear = DateUtil.weekOfYear(DateUtils.parse(priceDate,DateUtils.YYYY_MM_DD));
                 if(weekNavListMap.containsKey(weekOfYear)){
-                    List<AssetDO> navDOS = weekNavListMap.get(weekOfYear);
-                    navDOS.addAll(navListMap.get(priceDate));
-                    weekNavListMap.put(weekOfYear,navDOS);
+                    List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
+                    assetDOS.addAll(navListMap.get(priceDate));
+                    weekNavListMap.put(weekOfYear,assetDOS);
                 }else{
                     List<AssetDO> navDOS = new ArrayList<>();
                     navDOS.addAll(navListMap.get(priceDate));
@@ -96,6 +102,9 @@ public class FundDeletionTask {
             Map<Integer,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getWeekOfYear()));
             for(Integer weekOfYear : tradeListMap.keySet()){
                 if(weekNavListMap.containsKey(weekOfYear)){
+                    List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
+                    String tradeDate = DateUtils.format(assetDOS.get(assetDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -127,6 +136,9 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getYearmonth()));
             for(String yearMonth : tradeListMap.keySet()){
                 if(monthNavListMap.containsKey(yearMonth)){
+                    List<AssetDO> assetDOS = monthNavListMap.get(yearMonth);
+                    String tradeDate = DateUtils.format(assetDOS.get(assetDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -148,6 +160,7 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getTradeDate(),DateUtils.YYYY_MM_DD)));
             for(String tradeDate : tradeListMap.keySet()){
                 if(navListMap.containsKey(tradeDate)){
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //写入缺失信息表
@@ -173,6 +186,9 @@ public class FundDeletionTask {
             Map<Integer,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getWeekOfYear()));
             for(Integer weekOfYear : tradeListMap.keySet()){
                 if(weekNavListMap.containsKey(weekOfYear)){
+                    List<NavDO> navDOS = weekNavListMap.get(weekOfYear);
+                    String tradeDate = DateUtils.format(navDOS.get(navDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期
@@ -204,6 +220,9 @@ public class FundDeletionTask {
             Map<String,List<TradeDateDO>> tradeListMap = tradeDateDOList.stream().collect(Collectors.groupingBy(e -> e.getYearmonth()));
             for(String yearMonth : tradeListMap.keySet()){
                 if(monthNavListMap.containsKey(yearMonth)){
+                    List<NavDO> navDOS = monthNavListMap.get(yearMonth);
+                    String tradeDate = DateUtils.format(navDOS.get(navDOS.size()-1).getPriceDate(),DateUtils.YYYY_MM_DD);
+                    deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo());
                     continue;
                 }
                 //不包含的话,默认取每周的最后一个交易日作为周净值日期