Forráskód Böngészése

feat:数据缺失计算,周频日期不一致问题修复

chenjianhua 1 hónapja
szülő
commit
4dfc4eedd7

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

@@ -345,8 +345,13 @@ public class DeletionServiceImpl implements DeletionService {
             Map<String,List<AssetDO>> navListMap = assetDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getPriceDate(),DateUtils.YYYY_MM_DD)));
             TreeMap<Integer,List<AssetDO>> weekNavListMap = new TreeMap<>();
             //按周数整合
+            Map<String,Integer> tradeDateMap = new HashMap<>();
+            tradeDateDOList.forEach(tradeDateDO -> tradeDateMap.put(DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD),tradeDateDO.getYearWeek()));
             for(String priceDate : navListMap.keySet()){
-                Integer weekOfYear = Integer.parseInt(priceDate.substring(0,4)+DateUtil.weekOfYear(DateUtils.parse(priceDate,DateUtils.YYYY_MM_DD)));
+                Integer weekOfYear = tradeDateMap.get(priceDate);
+                if(weekOfYear == null){
+                    continue;
+                }
                 if(weekNavListMap.containsKey(weekOfYear)){
                     List<AssetDO> assetDOS = weekNavListMap.get(weekOfYear);
                     assetDOS.addAll(navListMap.get(priceDate));
@@ -528,8 +533,13 @@ public class DeletionServiceImpl implements DeletionService {
             Map<String,List<NavDO>> navListMap = navDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getPriceDate(),DateUtils.YYYY_MM_DD)));
             TreeMap<Integer,List<NavDO>> weekNavListMap = new TreeMap<>();
             //按周数整合
+            Map<String,Integer> tradeDateMap = new HashMap<>();
+            tradeDateDOList.forEach(tradeDateDO -> tradeDateMap.put(DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD),tradeDateDO.getYearWeek()));
             for(String priceDate : navListMap.keySet()){
-                Integer weekOfYear = Integer.parseInt(priceDate.substring(0,4)+DateUtil.weekOfYear(DateUtils.parse(priceDate,DateUtils.YYYY_MM_DD)));;
+                Integer weekOfYear = tradeDateMap.get(priceDate);
+                if(weekOfYear == null){
+                    continue;
+                }
                 if(weekNavListMap.containsKey(weekOfYear)){
                     List<NavDO> navDOS = weekNavListMap.get(weekOfYear);
                     navDOS.addAll(navListMap.get(priceDate));
@@ -709,8 +719,13 @@ public class DeletionServiceImpl implements DeletionService {
             Map<String,List<FundPositionDetailDO>> valuationListMap = fundPositionDetailDOList.stream().collect(Collectors.groupingBy(e -> DateUtils.format(e.getValuationDate(),DateUtils.YYYY_MM_DD)));
             TreeMap<Integer,List<FundPositionDetailDO>> weekNavListMap = new TreeMap<>();
             //按周数整合
+            Map<String,Integer> tradeDateMap = new HashMap<>();
+            tradeDateDOList.forEach(tradeDateDO -> tradeDateMap.put(DateUtils.format(tradeDateDO.getTradeDate(),DateUtils.YYYY_MM_DD),tradeDateDO.getYearWeek()));
             for(String priceDate : valuationListMap.keySet()){
-                Integer weekOfYear = Integer.parseInt(priceDate.substring(0,4)+DateUtil.weekOfYear(DateUtils.parse(priceDate,DateUtils.YYYY_MM_DD)));;
+                Integer weekOfYear = tradeDateMap.get(priceDate);
+                if(weekOfYear == null){
+                    continue;
+                }
                 if(weekNavListMap.containsKey(weekOfYear)){
                     List<FundPositionDetailDO> valuationDOS = weekNavListMap.get(weekOfYear);
                     valuationDOS.addAll(valuationListMap.get(priceDate));