浏览代码

fix: 数据缺失计算修复

chenjianhua 7 月之前
父节点
当前提交
7ad740c05e

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

@@ -52,8 +52,11 @@
         </if>
     </update>
     <delete id="deleteDeletionRemark">
-        update PPW_EMAIL.deletion_info  set isvalid=0,updatetime=sysdate() where isvalid=1 and fundId=#{fundId} and deletion_type=#{deletionType}
-        and deletion_date=#{tradeDate}
+        update PPW_EMAIL.deletion_info  set isvalid=0,updatetime=sysdate() where isvalid=1 and fund_id=#{fundId} and deletion_type=#{deletionType}
+        <if test="tradeDate != null and tradeDate !=''">
+            and deletion_date=#{tradeDate}
+        </if>
+
     </delete>
     <select id="searchDeletionList" resultMap="BaseResultMap"
             parameterType="com.simuwang.base.pojo.dto.query.DeletionPageQuery">

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

@@ -162,6 +162,8 @@ public class DeletionServiceImpl implements DeletionService {
         if(navDOList.size() < 1){
             return;
         }
+        //将现有数据无效掉
+        deletionInfoMapper.deleteDeletionRemark(fundId,DeletionType.DISTRIBUTION_DELETION.getCode(),null);
         //查询是否存在拆分
         List<DistributionDO> distributionDOS = distributionMapper.getDistributionByFundId(fundId, DistributeType.DIVIDENDS_SPLIT);
         if(distributionDOS.size() > 0){
@@ -241,9 +243,9 @@ public class DeletionServiceImpl implements DeletionService {
             for(Integer weekOfYear : tradeListMap.keySet()){
                 List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
                 if(weekNavListMap.containsKey(weekOfYear)){
-                    for(AssetDO assetDO : assetDOS){
-                        String tradeDate = DateUtils.format(assetDO.getPriceDate(),DateUtils.YYYY_MM_DD);
-                        deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
+                    for(TradeDateDO tradeDateDO : tradeListMap.get(weekOfYear)){
+                        String tradeDate = DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD);
+                        deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
                     }
                     continue;
                 }else{
@@ -299,9 +301,9 @@ public class DeletionServiceImpl implements DeletionService {
                 }
                 List<AssetDO> assetDOS = monthNavListMap.get(yearMonth);
                 if(monthNavListMap.containsKey(yearMonth)){
-                    for(AssetDO assetDO : assetDOS){
-                        String tradeDate = DateUtils.format(assetDO.getPriceDate(),DateUtils.YYYY_MM_DD);
-                        deletionInfoMapper.updateRemark(fundId,DeletionType.ASSET_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
+                    for(TradeDateDO tradeDateDO : tradeListMap.get(yearMonth)){
+                        String tradeDate = DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD);
+                        deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
                     }
                     continue;
                 }else{
@@ -367,8 +369,8 @@ public class DeletionServiceImpl implements DeletionService {
             for(Integer weekOfYear : tradeListMap.keySet()){
                 List<NavDO> navDOS = weekNavListMap.get(weekOfYear);
                 if(weekNavListMap.containsKey(weekOfYear)){
-                    for(NavDO navDO : navDOS){
-                        String tradeDate = DateUtils.format(navDO.getPriceDate(),DateUtils.YYYY_MM_DD);
+                    for(TradeDateDO tradeDateDO : tradeListMap.get(weekOfYear)){
+                        String tradeDate = DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD);
                         deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
                     }
                     continue;
@@ -424,8 +426,8 @@ public class DeletionServiceImpl implements DeletionService {
                 }
                 List<NavDO> navDOS = monthNavListMap.get(yearMonth);
                 if(monthNavListMap.containsKey(yearMonth)){
-                    for(NavDO navDO : navDOS){
-                        String tradeDate = DateUtils.format(navDO.getPriceDate(),DateUtils.YYYY_MM_DD);
+                    for(TradeDateDO tradeDateDO : tradeListMap.get(yearMonth)){
+                        String tradeDate = DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD);
                         deletionInfoMapper.updateRemark(fundId,DeletionType.NAV_DELETION.getCode(),tradeDate,DeletionType.NO_DELETION.getInfo(),null);
                     }
                     continue;

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

@@ -33,13 +33,10 @@ public class FundDeletionTask {
     private NavMapper navMapper;
     @Autowired
     private DeletionService deletionService;
-    @Scheduled(cron = "0 0 5,12,19 * * ?")
+    @Scheduled(cron = "0 0 5,18,19 * * ?")
     public void computeDeletion(){
         List<String> fundIdList = navMapper.getAllFundId();
         for(String fundId : fundIdList){
-//            if(!fundId.contains("HF00002FDW")){
-//               continue;
-//            }
             DeletionDownParam deletionDownParam = new DeletionDownParam();
             deletionDownParam.setFundId(fundId);
             deletionService.computeDeletion(deletionDownParam);