فهرست منبع

所有接口自测通过

wangzaijun 1 سال پیش
والد
کامیت
edc5863383
43فایلهای تغییر یافته به همراه475 افزوده شده و 1167 حذف شده
  1. 10 3
      readme.md
  2. 11 2
      src/main/java/com/smppw/analysis/application/dto/performance/CorrelationReq.java
  3. 2 1
      src/main/java/com/smppw/analysis/application/service/info/GlobalService.java
  4. 1 1
      src/main/java/com/smppw/analysis/application/service/performance/FundPerformanceService.java
  5. 2 1
      src/main/java/com/smppw/analysis/domain/dao/info/FundInfoDao.java
  6. 1 1
      src/main/java/com/smppw/analysis/domain/dao/info/InfoDao.java
  7. 18 17
      src/main/java/com/smppw/analysis/domain/dao/nav/AbstractNavDao.java
  8. 24 126
      src/main/java/com/smppw/analysis/domain/dao/nav/CompanyNavDao.java
  9. 24 126
      src/main/java/com/smppw/analysis/domain/dao/nav/ManagerNavDao.java
  10. 2 58
      src/main/java/com/smppw/analysis/domain/dao/nav/MarketIndexDao.java
  11. 32 5
      src/main/java/com/smppw/analysis/domain/dao/nav/NavDao.java
  12. 1 1
      src/main/java/com/smppw/analysis/domain/dao/nav/NavFactory.java
  13. 4 80
      src/main/java/com/smppw/analysis/domain/dao/nav/PrivatelyOfferedFundNavDao.java
  14. 2 65
      src/main/java/com/smppw/analysis/domain/dao/nav/PubliclyOfferedFundNavDao.java
  15. 2 57
      src/main/java/com/smppw/analysis/domain/dao/nav/RiskOfFreeNavDao.java
  16. 5 57
      src/main/java/com/smppw/analysis/domain/dao/nav/RongzhiIndexNavDao.java
  17. 1 17
      src/main/java/com/smppw/analysis/domain/dataobject/info/BaseInfoDO.java
  18. 0 5
      src/main/java/com/smppw/analysis/domain/dataobject/info/FundInfoDO.java
  19. 1 79
      src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyFittedCurveDo.java
  20. 3 79
      src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyFittedCurveWeeklyDo.java
  21. 89 0
      src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyNavDO.java
  22. 1 74
      src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerFittedCurveDo.java
  23. 3 74
      src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerFittedCurveWeeklyDo.java
  24. 84 0
      src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerNavDO.java
  25. 3 3
      src/main/java/com/smppw/analysis/domain/dto/performance/WinVO.java
  26. 0 1
      src/main/java/com/smppw/analysis/domain/manager/info/handler/PrivatelyFundHeadInfo.java
  27. 3 3
      src/main/java/com/smppw/analysis/domain/manager/performance/handler/CorrelationHandler.java
  28. 1 1
      src/main/java/com/smppw/analysis/domain/manager/performance/handler/TrendHandler.java
  29. 3 4
      src/main/java/com/smppw/analysis/domain/manager/performance/handler/WinHandler.java
  30. 2 0
      src/main/java/com/smppw/analysis/domain/mapper/core/DepositNavMapper.java
  31. 1 0
      src/main/java/com/smppw/analysis/domain/mapper/core/IndexesRzIndexMapper.java
  32. 1 0
      src/main/java/com/smppw/analysis/domain/mapper/core/MarketIndexesMapper.java
  33. 1 1
      src/main/java/com/smppw/analysis/domain/mapper/core/NavMapper.java
  34. 1 1
      src/main/java/com/smppw/analysis/domain/mapper/core/PublicNavMapper.java
  35. 2 4
      src/main/java/com/smppw/analysis/domain/service/impl/BaseInfoServiceImpl.java
  36. 29 213
      src/main/java/com/smppw/analysis/domain/service/impl/NavServiceImpl.java
  37. 12 6
      src/main/resources/application.yaml
  38. 16 0
      src/main/resources/mapping/core/DepositNavMapper.xml
  39. 16 0
      src/main/resources/mapping/core/IndexesRzIndexMapper.xml
  40. 16 0
      src/main/resources/mapping/core/MarketIndexesMapper.xml
  41. 31 0
      src/main/resources/mapping/core/MonetaryFundProfitMapper.xml
  42. 8 1
      src/main/resources/mapping/core/NavMapper.xml
  43. 6 0
      src/main/resources/mapping/core/PublicNavMapper.xml

+ 10 - 3
readme.md

@@ -1,7 +1,6 @@
 # 数据分析-详情页通用服务 (开发前必读)
 springboot3+redis+mybatis的一个标的详情页通用服务
 
-**所有来到这里的标的都是有效的!!!**
 
 ### 项目背景与目标
 > 本项目是一个使标的(基金、机构、经理、指数、组合)详情页最大化通用的项目,尽最大可能做到详情页所有组件接口不依赖
@@ -53,7 +52,6 @@ springboot3+redis+mybatis的一个标的详情页通用服务
     |   |   |   |-- future
     |   |   |   |-- stock
     |   |   |   |-- synthesize
-    |   |   |-- persistence     -- 数据库持久化层mapper
     |   |-- service             -- 领域层service,直接操作dao或mapper的数据库服务
     |       |-- impl
     |-- infrastructure          -- 基础设施层
@@ -85,7 +83,16 @@ springboot3+redis+mybatis的一个标的详情页通用服务
 </servers>
 ```
 
+### TODO
+- [ ] 1、基本信息缓存、净值缓存
+- [ ] 2、所有标的基本信息获取逻辑重构
+- [ ] 3、统一返回和异常处理
+- [ ] 4、完善的日志记录
+- [ ] 5、接口参数签名校验
+- [ ] 6、接口文档
+- [ ] 7、风格评测接口重构
 
-##### 问题
+
+### 问题
 1、需要预刷新的数据(交易日、无风险利率)如何处理?
 在本服务提供job刷新到缓存

+ 11 - 2
src/main/java/com/smppw/analysis/application/dto/performance/CorrelationReq.java

@@ -6,12 +6,21 @@ import com.smppw.analysis.domain.dto.performance.CorrelationParams;
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * @author wangzaijun
+ * @date 2023/8/12 13:33
+ * @description 相关性分析接口请求参数
+ */
 @Setter
 @Getter
 public class CorrelationReq extends BasePerformanceReq<CorrelationParams> {
-    // 滚动窗口
+    /**
+     * 滚动窗口
+     */
     private Integer rollingWindow;
-    // 步长
+    /**
+     * 步长
+     */
     private Integer step;
 
     @Override

+ 2 - 1
src/main/java/com/smppw/analysis/application/service/info/GlobalService.java

@@ -92,7 +92,8 @@ public class GlobalService {
     public HeadIndicatorVO headIndicator(HeadIndicatorReq req) {
         IndicatorParams params = req.convert();
         Performance<IndicatorParams, Map<String, Object>> instance = this.performanceFactory.getInstance(PerformanceConstants.INDICATOR);
-        Map<String, Object> dataset = instance.execute(params);
+        Map<String, Object> data = instance.execute(params);
+        Map<String, Object> dataset = MapUtil.get(data, "dataset", Map.class);
         Map<String, Object> indicatorMap = MapUtil.get(dataset, req.getSecId(), Map.class);
         HeadIndicatorVO vo = new HeadIndicatorVO();
         vo.setAnnualReturn(MapUtil.getStr(indicatorMap, Indicator.AnnualReturn.name()));

+ 1 - 1
src/main/java/com/smppw/analysis/application/service/performance/FundPerformanceService.java

@@ -50,7 +50,7 @@ public class FundPerformanceService {
 
     public Map<String, Object> revenue(RevenueReq req) {
         RevenueParams params = req.convert();
-        Performance<RevenueParams, Map<String, Object>> instance = this.factory.getInstance(CORRELATION);
+        Performance<RevenueParams, Map<String, Object>> instance = this.factory.getInstance(REVENUE);
         return instance.execute(params);
     }
 

+ 2 - 1
src/main/java/com/smppw/analysis/domain/dao/info/FundInfoDao.java

@@ -1,5 +1,6 @@
 package com.smppw.analysis.domain.dao.info;
 
+import cn.hutool.core.collection.ListUtil;
 import com.smppw.analysis.domain.dataobject.info.FundInfoDO;
 import org.springframework.stereotype.Component;
 
@@ -9,6 +10,6 @@ import java.util.List;
 public class FundInfoDao extends AbstractInfoDao<FundInfoDO>{
     @Override
     public List<FundInfoDO> list(List<String> secIds) {
-        return null;
+        return ListUtil.empty();
     }
 }

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/info/InfoDao.java

@@ -7,7 +7,7 @@ import java.util.List;
 /**
  * @author wangzaijun
  * @date 2023/8/11 18:52
- * @description 基本信息业务逻辑处理
+ * @description 基本信息业务逻辑处理,参考净值的(也考虑缓存)
  */
 public interface InfoDao<R extends BaseInfoDO> {
     /**

+ 18 - 17
src/main/java/com/smppw/analysis/domain/dao/nav/AbstractNavDao.java

@@ -1,14 +1,11 @@
 package com.smppw.analysis.domain.dao.nav;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import com.smppw.analysis.domain.dataobject.nav.BaseNavDO;
-import com.smppw.common.pojo.IStrategy;
 import com.smppw.common.pojo.dto.NavDto;
-import com.smppw.common.pojo.enums.CurveType;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.common.pojo.enums.RaiseType;
-import com.smppw.common.pojo.enums.strategy.Strategy;
 
 import java.util.Comparator;
 import java.util.List;
@@ -18,22 +15,23 @@ import java.util.stream.Collectors;
 /**
  * @author wangzaijun
  * @date 2023/8/11 10:23
- * @description 抽象的净值查询接口
+ * @description 抽象的净值查询接口,目前不加缓存(考虑在什么位置加缓存,以什么结构存储)
  */
 public abstract class AbstractNavDao<NAV extends BaseNavDO> implements NavDao {
     @Override
-    public Map<String, List<NavDto>> getNav(List<String> secIds, RaiseType raiseType, IStrategy strategy, Map<String, Frequency> secFrequencyMap) {
+    public Map<String, List<NavDto>> getNav(List<String> secIds, String startDate, String endDate,
+                                            Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
         if (CollUtil.isEmpty(secIds)) {
             return MapUtil.empty();
         }
-        if (raiseType == null) {
-            raiseType = RaiseType.Private;
+        // 去重并保证顺序
+        List<String> refIds = ListUtil.list(true);
+        for (String secId : secIds) {
+            if (!refIds.contains(secId)) {
+                refIds.add(secId);
+            }
         }
-        if (strategy == null) {
-            strategy = Strategy.All;
-        }
-        CurveType curveType = CurveType.getCurveType(raiseType, strategy);
-        List<NAV> navList = this.listSecNav(secIds, curveType.getId(), strategy.getStrategyId(), secFrequencyMap);
+        List<NAV> navList = this.listSecNav(refIds, startDate, endDate, curveTypeId, strategyId, secFrequencyMap);
         return this.convertToMap(navList);
     }
 
@@ -41,12 +39,15 @@ public abstract class AbstractNavDao<NAV extends BaseNavDO> implements NavDao {
      * 获取多个标的的净值序列
      *
      * @param secIds          标的id集合
-     * @param curveTypeId     策略曲线id(非基金标的)
-     * @param strategyId      策略id(非基金标的)
-     * @param secFrequencyMap 标的频率(非基金标的)
+     * @param startDate       开始日期
+     * @param endDate         结束日期
+     * @param curveTypeId     策略曲线id(机构或经理)
+     * @param strategyId      策略id(机构或经理)
+     * @param secFrequencyMap 标的频率(机构或经理)
      * @return /
      */
-    protected abstract List<NAV> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap);
+    protected abstract List<NAV> listSecNav(List<String> secIds, String startDate, String endDate,
+                                            Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap);
 
     /**
      * 多标的净值序列分组

+ 24 - 126
src/main/java/com/smppw/analysis/domain/dao/nav/CompanyNavDao.java

@@ -1,62 +1,47 @@
 package com.smppw.analysis.domain.dao.nav;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import com.smppw.analysis.domain.dataobject.nav.CompanyFittedCurveDo;
 import com.smppw.analysis.domain.dataobject.nav.CompanyFittedCurveWeeklyDo;
+import com.smppw.analysis.domain.dataobject.nav.CompanyNavDO;
 import com.smppw.analysis.domain.mapper.core.CompanyFittedCurveMapper;
 import com.smppw.analysis.domain.mapper.core.CompanyFittedCurveWeeklyMapper;
 import com.smppw.common.cache.CaffeineLocalCache;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Component(NavConstants.COMPANY_NAV)
-public class CompanyNavDao extends AbstractNavDao<CompanyFittedCurveDo> {
-    @Autowired
-    private CompanyFittedCurveMapper companyFittedCurveMapper;
-    @Autowired
-    private CompanyFittedCurveWeeklyMapper companyFittedCurveWeeklyMapper;
+public class CompanyNavDao extends AbstractNavDao<CompanyNavDO> {
+    private final CompanyFittedCurveMapper mapper;
+    private final CompanyFittedCurveWeeklyMapper weeklyMapper;
 
-    @Override
-    protected List<CompanyFittedCurveDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        // todo 关注周频和月频的区别
-        return null;
+    public CompanyNavDao(CompanyFittedCurveMapper mapper, CompanyFittedCurveWeeklyMapper weeklyMapper) {
+        this.mapper = mapper;
+        this.weeklyMapper = weeklyMapper;
     }
 
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> companyIdList, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap, boolean needUpdateAndCreateTime) {
-
-        List<String> monthSecIdList = new ArrayList<>();
-        List<String> weekSecIdList = new ArrayList<>();
-        for (String companyId : companyIdList) {
-            Frequency frequency = secFrequencyMap.get(companyId);
-            if (Frequency.Weekly == frequency) {
-                weekSecIdList.add(companyId);
-            } else {
-                monthSecIdList.add(companyId);
-            }
-        }
-
-        Map<String, List<NavDto>> secNavDtoMap = new HashMap<>();
-
+    @Override
+    protected List<CompanyNavDO> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        Map<Boolean, List<String>> monthWeekMap = secIds.stream().collect(Collectors.groupingBy(e -> Frequency.Weekly == secFrequencyMap.get(e)));
+        List<String> monthSecIdList = monthWeekMap.getOrDefault(Boolean.FALSE, ListUtil.empty());
+        List<String> weekSecIdList = monthWeekMap.getOrDefault(Boolean.TRUE, ListUtil.empty());
+        List<CompanyNavDO> resultList = ListUtil.list(true);
         if (monthSecIdList.size() > 0) {
             String startDateMonth = null;
             if (StringUtils.isNotEmpty(startDate) && startDate.length() >= 7) {
                 startDateMonth = startDate.substring(0, 7);
             }
-            List<CompanyFittedCurveDo> navDoList = companyFittedCurveMapper.listNavByTimeInterval(monthSecIdList, startDateMonth, endDate, curveTypeId, strategyId, needUpdateAndCreateTime);
-            Map<String, List<NavDto>> secMonthNavDtoMap = monthNavDoListToNavDtoMap(navDoList);
-            secNavDtoMap.putAll(secMonthNavDtoMap);
+            List<CompanyFittedCurveDo> tempList = this.mapper.listNavByTimeInterval(monthSecIdList, startDateMonth, endDate, curveTypeId, strategyId, false);
+            if (CollUtil.isNotEmpty(tempList)) {
+                resultList.addAll(tempList);
+            }
         }
-
         if (weekSecIdList.size() > 0) {
             String startYearWeek = null;
             String endYearWeek = null;
@@ -66,98 +51,11 @@ public class CompanyNavDao extends AbstractNavDao<CompanyFittedCurveDo> {
             if (StringUtils.isNotEmpty(endDate)) {
                 endYearWeek = CaffeineLocalCache.getYearWeekByDate(endDate);
             }
-
-            List<CompanyFittedCurveWeeklyDo> navDoList = companyFittedCurveWeeklyMapper.listNavByTimeInterval(weekSecIdList, startYearWeek, endYearWeek, curveTypeId, strategyId, needUpdateAndCreateTime);
-            Map<String, List<NavDto>> secWeekNavDtoMap = weekNavDoListToNavDtoMap(navDoList);
-            secNavDtoMap.putAll(secWeekNavDtoMap);
-        }
-
-        return secNavDtoMap;
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    private Map<String, List<NavDto>> monthNavDoListToNavDtoMap(List<CompanyFittedCurveDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (CompanyFittedCurveDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getCompanyId());
-            if (navDo.getEndDate() == null) {
-                continue;
+            List<CompanyFittedCurveWeeklyDo> tempList = this.weeklyMapper.listNavByTimeInterval(weekSecIdList, startYearWeek, endYearWeek, curveTypeId, strategyId, false);
+            if (CollUtil.isNotEmpty(tempList)) {
+                resultList.addAll(tempList);
             }
-            navDto.setPriceDate(navDo.getEndDate());
-            navDto.setOriginalNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNav());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getCompanyId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getCompanyId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getCompanyId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    private Map<String, List<NavDto>> weekNavDoListToNavDtoMap(List<CompanyFittedCurveWeeklyDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
         }
-
-        for (CompanyFittedCurveWeeklyDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getCompanyId());
-            String priceDate = CaffeineLocalCache.getLastTradeDateByYearWeek(navDo.getYearWeek());
-            if (StringUtils.isEmpty(priceDate)) {
-                continue;
-            }
-            navDto.setPriceDate(priceDate);
-            navDto.setOriginalNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNav());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getCompanyId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getCompanyId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getCompanyId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
+        return resultList;
     }
-
 }

+ 24 - 126
src/main/java/com/smppw/analysis/domain/dao/nav/ManagerNavDao.java

@@ -1,63 +1,47 @@
 package com.smppw.analysis.domain.dao.nav;
 
-
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import com.smppw.analysis.domain.dataobject.nav.FundManagerFittedCurveDo;
 import com.smppw.analysis.domain.dataobject.nav.FundManagerFittedCurveWeeklyDo;
+import com.smppw.analysis.domain.dataobject.nav.FundManagerNavDO;
 import com.smppw.analysis.domain.mapper.core.FundManagerFittedCurveMapper;
 import com.smppw.analysis.domain.mapper.core.FundManagerFittedCurveWeeklyMapper;
 import com.smppw.common.cache.CaffeineLocalCache;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Component(NavConstants.MANAGER_NAV)
-public class ManagerNavDao extends AbstractNavDao<FundManagerFittedCurveDo> {
-    @Autowired
-    private FundManagerFittedCurveMapper fundManagerFittedCurveSlave1Mapper;
-    @Autowired
-    private FundManagerFittedCurveWeeklyMapper fundManagerFittedCurveWeeklySlave1Mapper;
+public class ManagerNavDao extends AbstractNavDao<FundManagerNavDO> {
+    private final FundManagerFittedCurveMapper mapper;
+    private final FundManagerFittedCurveWeeklyMapper weeklyMapper;
 
-    @Override
-    protected List<FundManagerFittedCurveDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        // todo 关注周频和月频
-        return null;
+    public ManagerNavDao(FundManagerFittedCurveMapper mapper, FundManagerFittedCurveWeeklyMapper weeklyMapper) {
+        this.mapper = mapper;
+        this.weeklyMapper = weeklyMapper;
     }
 
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> companyIdList, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap, boolean needUpdateAndCreateTime) {
-
-        List<String> monthSecIdList = new ArrayList<>();
-        List<String> weekSecIdList = new ArrayList<>();
-        for (String companyId : companyIdList) {
-            Frequency frequency = secFrequencyMap.get(companyId);
-            if (Frequency.Weekly == frequency) {
-                weekSecIdList.add(companyId);
-            } else {
-                monthSecIdList.add(companyId);
-            }
-        }
-
-        Map<String, List<NavDto>> secNavDtoMap = new HashMap<>();
-
+    @Override
+    protected List<FundManagerNavDO> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        Map<Boolean, List<String>> monthWeekMap = secIds.stream().collect(Collectors.groupingBy(e -> Frequency.Weekly == secFrequencyMap.get(e)));
+        List<String> monthSecIdList = monthWeekMap.getOrDefault(Boolean.FALSE, ListUtil.empty());
+        List<String> weekSecIdList = monthWeekMap.getOrDefault(Boolean.TRUE, ListUtil.empty());
+        List<FundManagerNavDO> resultList = ListUtil.list(true);
         if (monthSecIdList.size() > 0) {
             String startDateMonth = null;
             if (StringUtils.isNotEmpty(startDate) && startDate.length() >= 7) {
                 startDateMonth = startDate.substring(0, 7);
             }
-            List<FundManagerFittedCurveDo> navDoList = fundManagerFittedCurveSlave1Mapper.listNavByTimeInterval(monthSecIdList, startDateMonth, endDate, curveTypeId, strategyId, needUpdateAndCreateTime);
-            Map<String, List<NavDto>> secMonthNavDtoMap = monthNavDoListToNavDtoMap(navDoList);
-            secNavDtoMap.putAll(secMonthNavDtoMap);
+            List<FundManagerFittedCurveDo> tempList = this.mapper.listNavByTimeInterval(monthSecIdList, startDateMonth, endDate, curveTypeId, strategyId, false);
+            if (CollUtil.isNotEmpty(tempList)) {
+                resultList.addAll(tempList);
+            }
         }
-
         if (weekSecIdList.size() > 0) {
             String startYearWeek = null;
             String endYearWeek = null;
@@ -67,97 +51,11 @@ public class ManagerNavDao extends AbstractNavDao<FundManagerFittedCurveDo> {
             if (StringUtils.isNotEmpty(endDate)) {
                 endYearWeek = CaffeineLocalCache.getYearWeekByDate(endDate);
             }
-            List<FundManagerFittedCurveWeeklyDo> navDoList = fundManagerFittedCurveWeeklySlave1Mapper.listNavByTimeInterval(weekSecIdList, startYearWeek, endYearWeek, curveTypeId, strategyId, needUpdateAndCreateTime);
-            Map<String, List<NavDto>> secWeekNavDtoMap = weekNavDoListToNavDtoMap(navDoList);
-            secNavDtoMap.putAll(secWeekNavDtoMap);
-        }
-
-        return secNavDtoMap;
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    private Map<String, List<NavDto>> monthNavDoListToNavDtoMap(List<FundManagerFittedCurveDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (FundManagerFittedCurveDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getFundManagerId());
-            if (navDo.getEndDate() == null) {
-                continue;
+            List<FundManagerFittedCurveWeeklyDo> tempList = this.weeklyMapper.listNavByTimeInterval(weekSecIdList, startYearWeek, endYearWeek, curveTypeId, strategyId, false);
+            if (CollUtil.isNotEmpty(tempList)) {
+                resultList.addAll(tempList);
             }
-            navDto.setPriceDate(navDo.getEndDate());
-            navDto.setOriginalNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNav());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getFundManagerId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getFundManagerId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getFundManagerId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    private Map<String, List<NavDto>> weekNavDoListToNavDtoMap(List<FundManagerFittedCurveWeeklyDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
         }
-
-        for (FundManagerFittedCurveWeeklyDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getFundManagerId());
-            String priceDate = CaffeineLocalCache.getLastTradeDateByYearWeek(navDo.getYearWeek());
-            if (StringUtils.isEmpty(priceDate)) {
-                continue;
-            }
-            navDto.setPriceDate(priceDate);
-            navDto.setOriginalNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNav());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getFundManagerId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getFundManagerId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getFundManagerId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
+        return resultList;
     }
-
 }

+ 2 - 58
src/main/java/com/smppw/analysis/domain/dao/nav/MarketIndexDao.java

@@ -2,14 +2,9 @@ package com.smppw.analysis.domain.dao.nav;
 
 import com.smppw.analysis.domain.dataobject.nav.MarketIndexesDo;
 import com.smppw.analysis.domain.mapper.core.MarketIndexesMapper;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -22,58 +17,7 @@ public class MarketIndexDao extends AbstractNavDao<MarketIndexesDo> {
     }
 
     @Override
-    protected List<MarketIndexesDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        // todo
-        return null;
+    protected List<MarketIndexesDo> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        return this.marketIndexesMapper.listNav(secIds, startDate, endDate);
     }
-
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> indexIdList, String startDate, String endDate, boolean needUpdateAndCreateTime) {
-        List<MarketIndexesDo> navDoList = marketIndexesMapper.listNavByTimeInterval(indexIdList, startDate, endDate, needUpdateAndCreateTime);
-        return navDoListToNavDtoMap(navDoList);
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    @Deprecated
-    private Map<String, List<NavDto>> navDoListToNavDtoMap(List<MarketIndexesDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (MarketIndexesDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getIndexId());
-            if (navDo.getPriceDate() == null || navDo.getClose() == null) {
-                continue;
-            }
-            navDto.setPriceDate(DateUtil.DateToString(navDo.getPriceDate(), DateConst.YYYY_MM_DD));
-            navDto.setOriginalNav(navDo.getClose());
-            navDto.setCumulativeNav(navDo.getClose());
-            navDto.setCumulativeNavWithdrawal(navDo.getClose());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD_HH_MM_SS));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getIndexId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getIndexId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getIndexId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
 }

+ 32 - 5
src/main/java/com/smppw/analysis/domain/dao/nav/NavDao.java

@@ -3,6 +3,7 @@ package com.smppw.analysis.domain.dao.nav;
 import cn.hutool.core.map.MapUtil;
 import com.smppw.common.pojo.IStrategy;
 import com.smppw.common.pojo.dto.NavDto;
+import com.smppw.common.pojo.enums.CurveType;
 import com.smppw.common.pojo.enums.Frequency;
 import com.smppw.common.pojo.enums.RaiseType;
 import com.smppw.common.pojo.enums.strategy.Strategy;
@@ -30,11 +31,13 @@ public interface NavDao {
     /**
      * 获取标的净值 (基金),全部取出来,不要时间段
      *
-     * @param secIds 标的id集合
+     * @param secIds    标的id集合
+     * @param startDate 开始日期
+     * @param endDate   结束日期
      * @return /
      */
-    default Map<String, List<NavDto>> getNav(List<String> secIds) {
-        return this.getNav(secIds, RaiseType.Both, Strategy.All, MapUtil.empty());
+    default Map<String, List<NavDto>> getNav(List<String> secIds, String startDate, String endDate) {
+        return this.getNav(secIds, startDate, endDate, RaiseType.Both, Strategy.All, MapUtil.empty());
     }
 
     /**
@@ -48,7 +51,7 @@ public interface NavDao {
      */
     default Map<String, NavDto> getLastNav(List<String> secIds, RaiseType raiseType, IStrategy strategy, Map<String, Frequency> secFrequencyMap) {
         Map<String, NavDto> result = MapUtil.newHashMap(false);
-        Map<String, List<NavDto>> navMap = this.getNav(secIds, raiseType, strategy, secFrequencyMap);
+        Map<String, List<NavDto>> navMap = this.getNav(secIds, null, null, raiseType, strategy, secFrequencyMap);
         navMap.forEach((k, v) -> {
             NavDto navDto = v.stream().max(Comparator.comparing(NavDto::getPriceDate)).orElse(new NavDto());
             result.put(k, navDto);
@@ -60,10 +63,34 @@ public interface NavDao {
      * 获取标的净值,全部取出来,不要时间段
      *
      * @param secIds          标的id集合
+     * @param startDate       开始日期
+     * @param endDate         结束日期
      * @param raiseType       募集类型,公司或机构生效
      * @param strategy        策略,公司或机构生效
      * @param secFrequencyMap 标的净值频率,公司或机构生效
      * @return /
      */
-    Map<String, List<NavDto>> getNav(List<String> secIds, RaiseType raiseType, IStrategy strategy, Map<String, Frequency> secFrequencyMap);
+    default Map<String, List<NavDto>> getNav(List<String> secIds, String startDate, String endDate, RaiseType raiseType, IStrategy strategy, Map<String, Frequency> secFrequencyMap) {
+        if (raiseType == null) {
+            raiseType = RaiseType.Private;
+        }
+        if (strategy == null) {
+            strategy = Strategy.All;
+        }
+        CurveType curveType = CurveType.getCurveType(raiseType, strategy);
+        return this.getNav(secIds, startDate, endDate, curveType.getId(), strategy.getStrategyId(), secFrequencyMap);
+    }
+
+    /**
+     * 获取标的净值,全部取出来,不要时间段
+     *
+     * @param secIds          标的id集合
+     * @param startDate       开始日期
+     * @param endDate         结束日期
+     * @param curveTypeId     策略曲线,公司或机构生效
+     * @param strategyId      策略,公司或机构生效
+     * @param secFrequencyMap 标的净值频率,公司或机构生效
+     * @return /
+     */
+    Map<String, List<NavDto>> getNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap);
 }

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/nav/NavFactory.java

@@ -8,7 +8,7 @@ import java.util.Map;
 
 @Component
 public class NavFactory {
-    private static final NavDao DEFAULT = (secIds, raiseType, strategy, secFrequencyMap) -> MapUtil.empty();
+    private static final NavDao DEFAULT = (secIds, startDate, endDate, raiseType, strategy, secFrequencyMap) -> MapUtil.empty();
     private static final Map<String, String> SEC_NAV_MAP = MapUtil.newHashMap(16);
     private static final Map<String, NavDao> NAV_MAP = MapUtil.newHashMap(16);
 

+ 4 - 80
src/main/java/com/smppw/analysis/domain/dao/nav/PrivatelyOfferedFundNavDao.java

@@ -2,15 +2,11 @@ package com.smppw.analysis.domain.dao.nav;
 
 import com.smppw.analysis.domain.dataobject.nav.NavDo;
 import com.smppw.analysis.domain.mapper.core.NavMapper;
-import com.smppw.analysis.infrastructure.consts.NavConst;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.common.pojo.enums.NavType;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.List;
+import java.util.Map;
 
 @Component(NavConstants.PRIVATELY_FUND_NAV)
 public class PrivatelyOfferedFundNavDao extends AbstractNavDao<NavDo> {
@@ -21,79 +17,7 @@ public class PrivatelyOfferedFundNavDao extends AbstractNavDao<NavDo> {
     }
 
     @Override
-    protected List<NavDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        return this.navMapper.listNav(secIds);
+    protected List<NavDo> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        return this.navMapper.listNav(secIds, startDate, endDate);
     }
-
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> fundIdList, String startDate, String endDate, NavType navType, boolean needUpdateAndCreateTime) {
-        String navFieldSql = "";
-        List<NavDo> navDoList = null;
-        if (NavType.CumulativeNav == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_SQL_FIELD;
-        } else if (NavType.OriginalNav == navType) {
-            navFieldSql = NavConst.NAV_SQL_FIELD;
-        } else if (NavType.WithdrawalNav == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_WITHDRAWAL_SQL_FIELD;
-        } else if (NavType.All == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_SQL_FIELD + "," + NavConst.NAV_SQL_FIELD + "," + NavConst.CUMULATIVE_NAV_WITHDRAWAL_SQL_FIELD;
-        }
-        navDoList = navMapper.listNavByTimeInterval(fundIdList, startDate, endDate, navFieldSql, needUpdateAndCreateTime);
-        Map<String, List<NavDto>> fundIdNavDtoListMap = navDoListToNavDtoMap(navDoList);
-        return fundIdNavDtoListMap;
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    @Deprecated
-    private Map<String, List<NavDto>> navDoListToNavDtoMap(List<NavDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (NavDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getFundId());
-            if (navDo.getPriceDate() == null) {
-                continue;
-            }
-            navDto.setPriceDate(DateUtil.DateToString(navDo.getPriceDate(), DateConst.YYYY_MM_DD));
-            navDto.setOriginalNav(navDo.getNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNavWithdrawal());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD_HH_MM_SS));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getFundId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getFundId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getFundId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
-    /**
-     * 获取基金净值更新时间 大于 传入的开始时间的基金id
-     *
-     * @param startTime 开始时间
-     * @return 基金id列表
-     */
-    public List<NavDo> selectFundIdByStartTime(Date startTime) {
-        return navMapper.selectFundIdByStartTime(startTime);
-    }
-
 }

+ 2 - 65
src/main/java/com/smppw/analysis/domain/dao/nav/PubliclyOfferedFundNavDao.java

@@ -2,16 +2,9 @@ package com.smppw.analysis.domain.dao.nav;
 
 import com.smppw.analysis.domain.dataobject.nav.PublicNavDo;
 import com.smppw.analysis.domain.mapper.core.PublicNavMapper;
-import com.smppw.analysis.infrastructure.consts.NavConst;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.common.pojo.enums.NavType;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -23,64 +16,8 @@ public class PubliclyOfferedFundNavDao extends AbstractNavDao<PublicNavDo> {
         this.publicNavMapper = publicNavMapper;
     }
 
-    @Deprecated
-    public static Map<String, List<NavDto>> convertToMap(List<PublicNavDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (PublicNavDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getFundId());
-            if (navDo.getPriceDate() == null) {
-                continue;
-            }
-            navDto.setPriceDate(DateUtil.DateToString(navDo.getPriceDate(), DateConst.YYYY_MM_DD));
-            navDto.setOriginalNav(navDo.getNav());
-            navDto.setCumulativeNav(navDo.getCumulativeNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getCumulativeNavWithdrawal());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD_HH_MM_SS));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getFundId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getFundId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getFundId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
     @Override
-    protected List<PublicNavDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        return this.publicNavMapper.listNav(secIds);
-    }
-
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> fundIdList, String startDate, String endDate, NavType navType, boolean needUpdateAndCreateTime) {
-        String navFieldSql = "";
-        List<PublicNavDo> navDoList = null;
-        if (NavType.CumulativeNav == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_SQL_FIELD;
-        } else if (NavType.OriginalNav == navType) {
-            navFieldSql = NavConst.NAV_SQL_FIELD;
-        } else if (NavType.WithdrawalNav == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_WITHDRAWAL_SQL_FIELD;
-        } else if (NavType.All == navType) {
-            navFieldSql = NavConst.CUMULATIVE_NAV_SQL_FIELD + "," + NavConst.NAV_SQL_FIELD + "," + NavConst.CUMULATIVE_NAV_WITHDRAWAL_SQL_FIELD;
-        }
-        navDoList = publicNavMapper.listNavByTimeInterval(fundIdList, startDate, endDate, navFieldSql, needUpdateAndCreateTime);
-        Map<String, List<NavDto>> fundIdNavDtoListMap = convertToMap(navDoList);
-        return fundIdNavDtoListMap;
+    protected List<PublicNavDo> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        return this.publicNavMapper.listNav(secIds, startDate, endDate);
     }
-
 }

+ 2 - 57
src/main/java/com/smppw/analysis/domain/dao/nav/RiskOfFreeNavDao.java

@@ -2,14 +2,9 @@ package com.smppw.analysis.domain.dao.nav;
 
 import com.smppw.analysis.domain.dataobject.nav.DepositNavDo;
 import com.smppw.analysis.domain.mapper.core.DepositNavMapper;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -21,58 +16,8 @@ public class RiskOfFreeNavDao extends AbstractNavDao<DepositNavDo> {
         this.depositNavMasterMapper = depositNavMasterMapper;
     }
 
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> indexIdList, String startDate, String endDate, boolean needUpdateAndCreateTime) {
-        List<DepositNavDo> navDoList = depositNavMasterMapper.listNavByTimeInterval(indexIdList, startDate, endDate, needUpdateAndCreateTime);
-        return navDoListToNavDtoMap(navDoList);
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    @Deprecated
-    private Map<String, List<NavDto>> navDoListToNavDtoMap(List<DepositNavDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (DepositNavDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getFundId());
-            if (navDo.getPriceDate() == null) {
-                continue;
-            }
-            navDto.setPriceDate(DateUtil.DateToString(navDo.getPriceDate(), DateConst.YYYY_MM_DD));
-            navDto.setOriginalNav(navDo.getNav());
-            navDto.setCumulativeNav(navDo.getNav());
-            navDto.setCumulativeNavWithdrawal(navDo.getNav());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getFundId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getFundId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getFundId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
     @Override
-    protected List<DepositNavDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        // todo
-        return null;
+    protected List<DepositNavDo> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        return this.depositNavMasterMapper.listNav(secIds, startDate, endDate);
     }
 }

+ 5 - 57
src/main/java/com/smppw/analysis/domain/dao/nav/RongzhiIndexNavDao.java

@@ -2,13 +2,12 @@ package com.smppw.analysis.domain.dao.nav;
 
 import com.smppw.analysis.domain.dataobject.nav.IndexesRzIndexDo;
 import com.smppw.analysis.domain.mapper.core.IndexesRzIndexMapper;
-import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.constants.DateConst;
-import com.smppw.utils.DateUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Component(NavConstants.PPW_INDEX_NAV)
 public class RongzhiIndexNavDao extends AbstractNavDao<IndexesRzIndexDo> {
@@ -19,9 +18,8 @@ public class RongzhiIndexNavDao extends AbstractNavDao<IndexesRzIndexDo> {
     }
 
     @Override
-    protected List<IndexesRzIndexDo> listSecNav(List<String> secIds, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
-        // todo
-        return null;
+    protected List<IndexesRzIndexDo> listSecNav(List<String> secIds, String startDate, String endDate, Integer curveTypeId, Integer strategyId, Map<String, Frequency> secFrequencyMap) {
+        return this.indexesRzIndexMapper.listNav(secIds, startDate, endDate);
     }
 
     /**
@@ -33,54 +31,4 @@ public class RongzhiIndexNavDao extends AbstractNavDao<IndexesRzIndexDo> {
         Integer exist = this.indexesRzIndexMapper.isExist(indexId);
         return Objects.equals(1, exist);
     }
-
-    @Deprecated
-    public Map<String, List<NavDto>> getNav(List<String> indexIdList, String startDate, String endDate, boolean needUpdateAndCreateTime) {
-        List<IndexesRzIndexDo> navDoList = indexesRzIndexMapper.listNavByTimeInterval(indexIdList, startDate, endDate, needUpdateAndCreateTime);
-        return navDoListToNavDtoMap(navDoList);
-    }
-
-    /**
-     * 领域对象集合转为数据传输对象集合
-     *
-     * @param navDoList 领域对象集合
-     * @return 数据传输对象集合  key-基金ID  value-数据传输对象集合
-     */
-    @Deprecated
-    private Map<String, List<NavDto>> navDoListToNavDtoMap(List<IndexesRzIndexDo> navDoList) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = new HashMap<>();
-
-        if (navDoList == null) {
-            return fundIdNavDtoListMap;
-        }
-
-        for (IndexesRzIndexDo navDo : navDoList) {
-            NavDto navDto = new NavDto();
-            navDto.setFundId(navDo.getIndexId());
-            if (navDo.getEndDate() == null) {
-                continue;
-            }
-            navDto.setPriceDate(DateUtil.DateToString(navDo.getEndDate(), DateConst.YYYY_MM_DD));
-            navDto.setOriginalNav(navDo.getIndexValue());
-            navDto.setCumulativeNav(navDo.getIndexValue());
-            navDto.setCumulativeNavWithdrawal(navDo.getIndexValue());
-            if (navDo.getUpdatetime() != null) {
-                navDto.setUpdatetime(DateUtil.DateToString(navDo.getUpdatetime(), DateConst.YYYY_MM_DD_HH_MM_SS));
-            }
-            if (navDo.getCreatetime() != null) {
-                navDto.setCreatetime(DateUtil.DateToString(navDo.getCreatetime(), DateConst.YYYY_MM_DD));
-            }
-
-            if (fundIdNavDtoListMap.containsKey(navDo.getIndexId())) {
-                List<NavDto> navDtoList = fundIdNavDtoListMap.get(navDo.getIndexId());
-                navDtoList.add(navDto);
-            } else {
-                List<NavDto> navDtoList = new ArrayList<>();
-                navDtoList.add(navDto);
-                fundIdNavDtoListMap.put(navDo.getIndexId(), navDtoList);
-            }
-        }
-        return fundIdNavDtoListMap;
-    }
-
 }

+ 1 - 17
src/main/java/com/smppw/analysis/domain/dataobject/info/BaseInfoDO.java

@@ -1,7 +1,5 @@
 package com.smppw.analysis.domain.dataobject.info;
 
-import java.util.Date;
-
 /**
  * @author wangzaijun
  * @date 2023/8/11 14:52
@@ -16,23 +14,9 @@ public abstract class BaseInfoDO {
     public abstract String getRefId();
 
     /**
-     * 标的
+     * 标的
      *
      * @return /
      */
     public abstract String getRefName();
-
-    /**
-     * 标的简称
-     *
-     * @return /
-     */
-    public abstract String getRefShortName();
-
-    /**
-     * 标的成立日
-     *
-     * @return /
-     */
-    public abstract Date getInceptionDate();
 }

+ 0 - 5
src/main/java/com/smppw/analysis/domain/dataobject/info/FundInfoDO.java

@@ -84,9 +84,4 @@ public class FundInfoDO extends BaseInfoDO {
     public String getRefName() {
         return fundName;
     }
-
-    @Override
-    public String getRefShortName() {
-        return fundShortName;
-    }
 }

+ 1 - 79
src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyFittedCurveDo.java

@@ -3,97 +3,19 @@ package com.smppw.analysis.domain.dataobject.nav;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 /**
  * 投顾产品拟合净值信息
  */
 @Setter
 @Getter
-public class CompanyFittedCurveDo extends BaseNavDO {
-    /**
-     * ID自增
-     */
-    private Integer id;
-
-    /**
-     * 公司id
-     */
-    private String companyId;
-
-    /**
-     * 募集类型:1-私募 2-公募
-     */
-    private Byte raiseType;
-
-    /**
-     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
-     */
-    private Integer curveType;
-
-    /**
-     * 策略id
-     */
-    private Integer strategy;
-
+public class CompanyFittedCurveDo extends CompanyNavDO {
     /**
      * 拟合后月份
      */
     private String endDate;
 
-    /**
-     * 拟合净值
-     */
-    private BigDecimal cumulativeNav;
-
-    /**
-     * 本次入选的基金数量
-     */
-    private Integer fundNum;
-
-    /**
-     * 创建者Id,默认第一次创建者名称,创建后不变更
-     */
-    private Integer creatorid;
-
-    /**
-     * 创建时间,默认第一次创建的getdate()时间
-     */
-    private Date createtime;
-
-    /**
-     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
-     */
-    private Integer updaterid;
-
-    /**
-     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
-     */
-    private Date updatetime;
-
-    /**
-     * 记录的有效性;1-有效;0-无效;
-     */
-    private Integer isvalid;
-
     @Override
     public String getNavDate() {
         return this.endDate;
     }
-
-    @Override
-    public String getRefId() {
-        return this.getCompanyId();
-    }
-
-    @Override
-    public BigDecimal getNav() {
-        return cumulativeNav;
-    }
-
-    @Override
-    public BigDecimal getCumulativeNavWithdrawal() {
-        return cumulativeNav;
-    }
 }

+ 3 - 79
src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyFittedCurveWeeklyDo.java

@@ -1,10 +1,9 @@
 package com.smppw.analysis.domain.dataobject.nav;
 
-import cn.hutool.core.date.DateUtil;
+import com.smppw.common.cache.CaffeineLocalCache;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -12,32 +11,7 @@ import java.util.Date;
  */
 @Setter
 @Getter
-public class CompanyFittedCurveWeeklyDo extends BaseNavDO {
-    /**
-     * ID自增
-     */
-    private Integer id;
-
-    /**
-     * 公司id
-     */
-    private String companyId;
-
-    /**
-     * 募集类型:1-私募 2-公募
-     */
-    private Byte raiseType;
-
-    /**
-     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
-     */
-    private Integer curveType;
-
-    /**
-     * 策略id
-     */
-    private Integer strategy;
-
+public class CompanyFittedCurveWeeklyDo extends CompanyNavDO {
     /**
      * 拟合后净值年周
      */
@@ -58,58 +32,8 @@ public class CompanyFittedCurveWeeklyDo extends BaseNavDO {
      */
     private Date priceDate;
 
-    /**
-     * 拟合净值
-     */
-    private BigDecimal cumulativeNav;
-
-    /**
-     * 本次入选的基金数量
-     */
-    private Integer fundNum;
-
-    /**
-     * 创建者Id,默认第一次创建者名称,创建后不变更
-     */
-    private Integer creatorid;
-
-    /**
-     * 创建时间,默认第一次创建的getdate()时间
-     */
-    private Date createtime;
-
-    /**
-     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
-     */
-    private Integer updaterid;
-
-    /**
-     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
-     */
-    private Date updatetime;
-
-    /**
-     * 记录的有效性;1-有效;0-无效;
-     */
-    private Integer isvalid;
-
     @Override
     public String getNavDate() {
-        return DateUtil.formatDate(this.priceDate);
-    }
-
-    @Override
-    public String getRefId() {
-        return this.companyId;
-    }
-
-    @Override
-    public BigDecimal getNav() {
-        return cumulativeNav;
-    }
-
-    @Override
-    public BigDecimal getCumulativeNavWithdrawal() {
-        return cumulativeNav;
+        return CaffeineLocalCache.getLastTradeDateByYearWeek(this.getYearWeek());
     }
 }

+ 89 - 0
src/main/java/com/smppw/analysis/domain/dataobject/nav/CompanyNavDO.java

@@ -0,0 +1,89 @@
+package com.smppw.analysis.domain.dataobject.nav;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 投顾产品拟合净值信息
+ */
+@Setter
+@Getter
+public abstract class CompanyNavDO extends BaseNavDO {
+    /**
+     * ID自增
+     */
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    private String companyId;
+
+    /**
+     * 募集类型:1-私募 2-公募
+     */
+    private Byte raiseType;
+
+    /**
+     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
+     */
+    private Integer curveType;
+
+    /**
+     * 策略id
+     */
+    private Integer strategy;
+
+    /**
+     * 拟合净值
+     */
+    private BigDecimal cumulativeNav;
+
+    /**
+     * 本次入选的基金数量
+     */
+    private Integer fundNum;
+
+    /**
+     * 创建者Id,默认第一次创建者名称,创建后不变更
+     */
+    private Integer creatorid;
+
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    private Date createtime;
+
+    /**
+     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    private Integer updaterid;
+
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    private Date updatetime;
+
+    /**
+     * 记录的有效性;1-有效;0-无效;
+     */
+    private Integer isvalid;
+
+    @Override
+    public String getRefId() {
+        return this.getCompanyId();
+    }
+
+    @Override
+    public BigDecimal getNav() {
+        return cumulativeNav;
+    }
+
+    @Override
+    public BigDecimal getCumulativeNavWithdrawal() {
+        return cumulativeNav;
+    }
+}

+ 1 - 74
src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerFittedCurveDo.java

@@ -3,92 +3,19 @@ package com.smppw.analysis.domain.dataobject.nav;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 /**
  * 基金经理产品拟合净值信息
  */
 @Setter
 @Getter
-public class FundManagerFittedCurveDo extends BaseNavDO {
-    /**
-     * ID自增
-     */
-    private Integer id;
-
-    /**
-     * 基金经理id
-     */
-    private String fundManagerId;
-
-    /**
-     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
-     */
-    private Integer curveType;
-
-    /**
-     * 策略id
-     */
-    private Integer strategy;
-
+public class FundManagerFittedCurveDo extends FundManagerNavDO {
     /**
      * 拟合后净值月份
      */
     private String endDate;
 
-    /**
-     * 拟合净值
-     */
-    private BigDecimal cumulativeNav;
-
-    /**
-     * 入选基金数量
-     */
-    private Integer fundNum;
-
-    /**
-     * 创建者Id,默认第一次创建者名称,创建后不变更
-     */
-    private Integer creatorid;
-
-    /**
-     * 创建时间,默认第一次创建的getdate()时间
-     */
-    private Date createtime;
-
-    /**
-     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
-     */
-    private Integer updaterid;
-
-    /**
-     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
-     */
-    private Date updatetime;
-
-    /**
-     * 记录的有效性;1-有效;0-无效;
-     */
-    private Integer isvalid;
-
     @Override
     public String getNavDate() {
         return this.endDate;
     }
-
-    @Override
-    public String getRefId() {
-        return this.fundManagerId;
-    }
-
-    @Override
-    public BigDecimal getNav() {
-        return cumulativeNav;
-    }
-
-    @Override
-    public BigDecimal getCumulativeNavWithdrawal() {
-        return cumulativeNav;
-    }
 }

+ 3 - 74
src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerFittedCurveWeeklyDo.java

@@ -1,10 +1,9 @@
 package com.smppw.analysis.domain.dataobject.nav;
 
-import cn.hutool.core.date.DateUtil;
+import com.smppw.common.cache.CaffeineLocalCache;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -12,27 +11,7 @@ import java.util.Date;
  */
 @Setter
 @Getter
-public class FundManagerFittedCurveWeeklyDo extends BaseNavDO {
-    /**
-     * ID自增
-     */
-    private Integer id;
-
-    /**
-     * 基金经理id
-     */
-    private String fundManagerId;
-
-    /**
-     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
-     */
-    private Integer curveType;
-
-    /**
-     * 策略id
-     */
-    private Integer strategy;
-
+public class FundManagerFittedCurveWeeklyDo extends FundManagerNavDO {
     /**
      * 拟合后净值年周
      */
@@ -53,58 +32,8 @@ public class FundManagerFittedCurveWeeklyDo extends BaseNavDO {
      */
     private Date priceDate;
 
-    /**
-     * 拟合净值
-     */
-    private BigDecimal cumulativeNav;
-
-    /**
-     * 入选基金数量
-     */
-    private Integer fundNum;
-
-    /**
-     * 创建者Id,默认第一次创建者名称,创建后不变更
-     */
-    private Integer creatorid;
-
-    /**
-     * 创建时间,默认第一次创建的getdate()时间
-     */
-    private Date createtime;
-
-    /**
-     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
-     */
-    private Integer updaterid;
-
-    /**
-     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
-     */
-    private Date updatetime;
-
-    /**
-     * 记录的有效性;1-有效;0-无效;
-     */
-    private Integer isvalid;
-
     @Override
     public String getNavDate() {
-        return DateUtil.formatDate(this.priceDate);
-    }
-
-    @Override
-    public String getRefId() {
-        return this.fundManagerId;
-    }
-
-    @Override
-    public BigDecimal getNav() {
-        return this.cumulativeNav;
-    }
-
-    @Override
-    public BigDecimal getCumulativeNavWithdrawal() {
-        return cumulativeNav;
+        return CaffeineLocalCache.getLastTradeDateByYearWeek(this.getYearWeek());
     }
 }

+ 84 - 0
src/main/java/com/smppw/analysis/domain/dataobject/nav/FundManagerNavDO.java

@@ -0,0 +1,84 @@
+package com.smppw.analysis.domain.dataobject.nav;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 基金经理产品拟合净值信息
+ */
+@Setter
+@Getter
+public abstract class FundManagerNavDO extends BaseNavDO {
+    /**
+     * ID自增
+     */
+    private Integer id;
+
+    /**
+     * 基金经理id
+     */
+    private String fundManagerId;
+
+    /**
+     * 拟合类型 1-私募综合曲线 2-私募分策略曲线 3-私募权益类曲线 4-公募综合曲线 5-公募分策略曲线 6-公募权益类曲线
+     */
+    private Integer curveType;
+
+    /**
+     * 策略id
+     */
+    private Integer strategy;
+
+    /**
+     * 拟合净值
+     */
+    private BigDecimal cumulativeNav;
+
+    /**
+     * 入选基金数量
+     */
+    private Integer fundNum;
+
+    /**
+     * 创建者Id,默认第一次创建者名称,创建后不变更
+     */
+    private Integer creatorid;
+
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    private Date createtime;
+
+    /**
+     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    private Integer updaterid;
+
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    private Date updatetime;
+
+    /**
+     * 记录的有效性;1-有效;0-无效;
+     */
+    private Integer isvalid;
+
+    @Override
+    public String getRefId() {
+        return this.fundManagerId;
+    }
+
+    @Override
+    public BigDecimal getNav() {
+        return cumulativeNav;
+    }
+
+    @Override
+    public BigDecimal getCumulativeNavWithdrawal() {
+        return cumulativeNav;
+    }
+}

+ 3 - 3
src/main/java/com/smppw/analysis/domain/dto/performance/WinVO.java

@@ -30,9 +30,9 @@ public class WinVO {
          * 胜率
          */
         private String winRate;
-        private String meanRet;
-        private String benchmarkMeanRet;
-        private String excessMeanRet;
+        private Double meanRet;
+        private Double benchmarkMeanRet;
+        private Double excessMeanRet;
         /**
          * 跑赢次数
          */

+ 0 - 1
src/main/java/com/smppw/analysis/domain/manager/info/handler/PrivatelyFundHeadInfo.java

@@ -34,7 +34,6 @@ public class PrivatelyFundHeadInfo extends AbstractFundHeadInfo<PrivatelyFundHea
             result.setThirdStrategy(secNameMap.get(fundInfo.getThirdStrategy().toString()));
             result.setThirdStrategyId(fundInfo.getThirdStrategy());
         }
-        result.setFundScale(null);
         return result;
     }
 }

+ 3 - 3
src/main/java/com/smppw/analysis/domain/manager/performance/handler/CorrelationHandler.java

@@ -42,11 +42,11 @@ public class CorrelationHandler extends AbstractSingleSecPerformance<Correlation
         String startDate = params.getStartDate();
         String endDate = params.getEndDate();
         List<String> refIds = params.getRefIds();
-        String fundId = refIds.get(0);
-        Map<String, List<DateValue>> allNavMap = this.navService.getSecIdDateValueNavListMapByDb(refIds,
+        List<String> secIds = this.getSecIdsByParams(params);
+        String fundId = params.getRefIds().get(0);
+        Map<String, List<DateValue>> allNavMap = this.navService.getSecIdDateValueNavListMapByDb(secIds,
                 params.getStartDate(), params.getEndDate(), Visibility.Both, params.getNavType());
         List<IndicatorCalcTimeRangeDto> secTimeRanges = IndicatorService.getInstance().getSecTimeRange(fundId, params.getFrequency(), allNavMap);
-        List<String> secIds = this.getSecIdsByParams(params);
         List<String> indexIds = CollectionUtil.subtractToList(secIds, refIds);
         List<DateRange> dateRangeList = new RollingSpliter(startDate, endDate, params.getRollingWindow(), params.getRollingWindow(),
                 false, Frequency.Monthly).split();

+ 1 - 1
src/main/java/com/smppw/analysis/domain/manager/performance/handler/TrendHandler.java

@@ -72,7 +72,7 @@ public class TrendHandler extends AbstractSingleSecPerformance<TrendParams, Map<
             }
         }
         Map<String, String> productNameMapping = this.baseInfoService.querySecName(secIds);
-        Map<String, List<Map<String, Object>>> dataset = MapUtil.<String, List<Map<String, Object>>>builder().putAll(dataListMap).build();
+        Map<String, List<Map<String, Object>>> dataset = MapUtil.<String, List<Map<String, Object>>>builder().putAll(dataListMap).putAll(indexDataListMap).build();
         Map<String, Object> extInfos = MapUtil.<String, Object>builder().put("endDate", params.getEndDate()).put("startDate", params.getStartDate()).build();
         for (String refId : refIds) {
             Map<TrendType, List<Double>> trendTypeListMap = trendListMap.getOrDefault(refId, MapUtil.empty());

+ 3 - 4
src/main/java/com/smppw/analysis/domain/manager/performance/handler/WinHandler.java

@@ -2,7 +2,6 @@ package com.smppw.analysis.domain.manager.performance.handler;
 
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.StrUtil;
 import com.smppw.analysis.domain.dto.performance.WinParams;
 import com.smppw.analysis.domain.dto.performance.WinVO;
 import com.smppw.analysis.domain.manager.performance.AbstractSingleSecPerformance;
@@ -148,9 +147,9 @@ public class WinHandler extends AbstractSingleSecPerformance<WinParams, WinVO> {
                 .totalItem(String.valueOf(totalItem))
                 .winItem(String.valueOf(winItem))
                 .lossItem(String.valueOf(lossItem))
-                .meanRet(StrUtil.toStringOrNull(meanFundRet))
-                .benchmarkMeanRet(StrUtil.toStringOrNull(meanBenchmarkRet))
-                .excessMeanRet(StrUtil.toStringOrNull(excessMeanRet))
+                .meanRet(meanFundRet)
+                .benchmarkMeanRet(meanBenchmarkRet)
+                .excessMeanRet(excessMeanRet)
                 .winRate(rate)
                 .build();
     }

+ 2 - 0
src/main/java/com/smppw/analysis/domain/mapper/core/DepositNavMapper.java

@@ -10,6 +10,8 @@ import java.util.List;
 public interface DepositNavMapper {
     List<String> listRiskOfFreeId();
 
+    List<DepositNavDo> listNav(@Param("indexIds") List<String> indexIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
+
     List<DepositNavDo> listNavByTimeInterval(@Param("indexIdList") List<String> indexIdList, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                              @Param("needUpdateAndCreateTime") boolean needUpdateAndCreateTime);
 }

+ 1 - 0
src/main/java/com/smppw/analysis/domain/mapper/core/IndexesRzIndexMapper.java

@@ -8,6 +8,7 @@ import java.util.List;
 
 @Repository
 public interface IndexesRzIndexMapper {
+    List<IndexesRzIndexDo> listNav(@Param("indexIds") List<String> indexIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<IndexesRzIndexDo> listNavByTimeInterval(@Param("indexIdList") List<String> indexIdList, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                                  @Param("needUpdateAndCreateTime") boolean needUpdateAndCreateTime);

+ 1 - 0
src/main/java/com/smppw/analysis/domain/mapper/core/MarketIndexesMapper.java

@@ -9,6 +9,7 @@ import java.util.List;
 
 @Repository
 public interface MarketIndexesMapper {
+    List<MarketIndexesDo> listNav(@Param("indexIds") List<String> indexIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<MarketIndexesDo> listNavByTimeInterval(@Param("indexIdList") List<String> indexIdList, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                                 @Param("needUpdateAndCreateTime") boolean needUpdateAndCreateTime);

+ 1 - 1
src/main/java/com/smppw/analysis/domain/mapper/core/NavMapper.java

@@ -9,7 +9,7 @@ import java.util.List;
 
 @Repository
 public interface NavMapper {
-    List<NavDo> listNav(@Param("fundIds") List<String> fundIds);
+    List<NavDo> listNav(@Param("fundIds") List<String> fundIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<NavDo> listNavByTimeInterval(@Param("fundIdList") List<String> fundIdList, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                       @Param("navFieldSql") String navFieldSql, @Param("needUpdateAndCreateTime") boolean needUpdateAndCreateTime);

+ 1 - 1
src/main/java/com/smppw/analysis/domain/mapper/core/PublicNavMapper.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 @Repository
 public interface PublicNavMapper {
-    List<PublicNavDo> listNav(@Param("fundIds") List<String> fundIds);
+    List<PublicNavDo> listNav(@Param("fundIds") List<String> fundIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<PublicNavDo> listNavByTimeInterval(@Param("fundIdList") List<String> fundIdList, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                             @Param("navFieldSql") String navFieldSql, @Param("needUpdateAndCreateTime") boolean needUpdateAndCreateTime);

+ 2 - 4
src/main/java/com/smppw/analysis/domain/service/impl/BaseInfoServiceImpl.java

@@ -152,12 +152,10 @@ public class BaseInfoServiceImpl implements BaseInfoService, ApplicationContextA
             if (riskOfFreeIdList != null && riskOfFreeIdList.contains(secId)) {
                 return SecType.RISK_OF_FREE;
             }
-            Boolean isExist = INDEX_EXIST.get(secId);
-            if (isExist == null) {
+            Boolean isExist = INDEX_EXIST.getOrDefault(secId, false);
+            if (!isExist) {
                 isExist = rongzhiIndexNavDao.isExist(secId);
                 INDEX_EXIST.put(secId, isExist);
-            }
-            if (isExist) {
                 return SecType.INDEX_FUND;
             } else {
                 return SecType.RONGZHI_INDEX;

+ 29 - 213
src/main/java/com/smppw/analysis/domain/service/impl/NavServiceImpl.java

@@ -1,6 +1,7 @@
 package com.smppw.analysis.domain.service.impl;
 
-import com.smppw.analysis.domain.dao.nav.*;
+import com.smppw.analysis.domain.dao.nav.NavConstants;
+import com.smppw.analysis.domain.dao.nav.NavFactory;
 import com.smppw.analysis.domain.service.BaseInfoService;
 import com.smppw.analysis.domain.service.NavService;
 import com.smppw.common.pojo.dto.DateValue;
@@ -10,160 +11,39 @@ import com.smppw.common.pojo.enums.NavType;
 import com.smppw.common.pojo.enums.Visibility;
 import com.smppw.constants.SecType;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Service
 @Slf4j
 public class NavServiceImpl implements NavService {
+    private final NavFactory navFactory;
+    private final BaseInfoService baseInfoService;
 
-    private static final Integer REDIS_PIPE_QUERY_SIZE = 50;
-    //    @Autowired
-//    private JedisDataUtil jedisData;
-//
-//    @Autowired
-//    private RedissonClient redissonClient;
-//
-    @Autowired
-    private BaseInfoService baseInfoService;
-    //
-//    @Autowired
-//    private FundInformationDao fundInformationDao;
-//
-//    @Autowired
-//    private CmAdvisoryPoolCurveInfoDao cmAdvisoryPoolCurveInfoDao;
-//
-    @Autowired
-    private PrivatelyOfferedFundNavDao privatelyOfferedFundNavDao;
-    @Autowired
-    private PubliclyOfferedFundNavDao publiclyOfferedFundNavDao;
-    //
-//    @Autowired
-//    private CombinationNavDao combinationNavDao;
-    //
-//    @Autowired
-//    private PrivateFundNavDao privateFundNavDao;
-//
-//    @Autowired
-//    private FactorNavDao factorNavDao;
-//
-    @Autowired
-    private MarketIndexDao marketIndexDao;
-    //
-//    @Autowired
-//    private UdfIndexNavDao udfIndexNavDao;
-//
-    @Autowired
-    private CompanyNavDao companyNavDao;
-
-    @Autowired
-    private ManagerNavDao managerNavDao;
-//
-//    @Autowired
-//    private CmAdvisoryPoolCurveWeeklyDao cmAdvisoryPoolCurveWeeklyDao;
-//
-//    @Autowired
-//    private ThirdIndexNavDao thirdIndexNavDao;
-    @Autowired
-    private RongzhiIndexNavDao rongzhiIndexNavDao;
-    //
-//    @Autowired
-//    private CmFittedAccruedCurveDao cmFittedAccruedCurveDao;
-//
-//    @Autowired
-//    private CmCombinationFundAccruedNavDao cmCombinationFundAccruedNavDao;
-//
-//    @Autowired
-//    private CmAccruedNavDao cmAccruedNavDao;
-    @Autowired
-    private RiskOfFreeNavDao riskOfFreeNavDao;
-
-    /**
-     * @param dateValueList 从小到大的净值序列
-     * @param date          日期
-     * @return 小于等于 date 的 日期最大的 日期
-     */
-    public static Integer getMostLeftLess(List<DateValue> dateValueList, String date) {
-        if (dateValueList == null || dateValueList.size() == 0) {
-            return -1;
-        }
-        int L = 0;
-        int R = dateValueList.size() - 1;
-        int ans = -1;
-        while (L <= R) {
-            int mid = (L + R) / 2;
-            if (dateValueList.get(mid) != null && dateValueList.get(mid).getDate().compareTo(date) <= 0) {
-                ans = mid;
-                L = mid + 1;
-            } else {
-                R = mid - 1;
-            }
-        }
-        return ans;
-    }
-
-    /**
-     * @param dateValueList 从小到大的净值序列
-     * @param date          日期
-     * @return 大于等于 date 的 日期最小的 日期
-     */
-    public static Integer getMostRightThan(List<DateValue> dateValueList, String date) {
-        if (dateValueList == null || Objects.requireNonNull(dateValueList).size() == 0) {
-            return -1;
-        } else if (dateValueList.get(dateValueList.size() - 1).getDate().compareTo(date) < 0) {
-            return dateValueList.size() - 1;
-        }
-        int low = 0;
-        int high = dateValueList.size() - 1;
-        while (low < high) {
-            //防止溢出
-            int mid = low + (high - low) / 2;
-            if (dateValueList.get(mid).getDate().compareTo(date) < 0) {
-                low = mid + 1;
-            } else {
-                high = mid;
-            }
-        }
-        return low;
+    public NavServiceImpl(NavFactory navFactory, BaseInfoService baseInfoService) {
+        this.navFactory = navFactory;
+        this.baseInfoService = baseInfoService;
     }
 
     @Override
     public Map<String, List<DateValue>> getSecIdDateValueNavListMapFromRedisAndDB(List<String> mainSecIdList, List<String> benchmarkIdList, List<String> indexList,
                                                                                   String startDate, String endDate, Integer curveTypeId, Integer strategyId, NavType navType,
                                                                                   Visibility visibility, Map<String, Frequency> secFrequencyMap) {
-
         //全部的标的集合
-        Map<String, Boolean> secIfExtractMap = new HashMap<>();
         List<String> secIds = new ArrayList<>();
         secIds.addAll(mainSecIdList);
         secIds.addAll(benchmarkIdList);
         secIds.addAll(indexList);
-//        if (extractNavServiceReq != null && extractNavServiceReq.isIfExtract()) {
-//            for (String mainSecId : mainSecIdList) {
-//                secIfExtractMap.put(mainSecId, true);
-//            }
-//        }
-
-//        List<String> dbSecIds = new ArrayList<>();
-//        Map<String, String> secKeyMap = new HashMap<>();
-
-        Map<String, List<DateValue>> allSecNavListMap = new HashMap<>();
-
-        //取DB
-        Map<String, List<DateValue>> secNavListMapDbData = getSecIdDateValueNavListMapByDb(secIds, startDate, endDate, curveTypeId, strategyId, visibility, navType, secFrequencyMap);
-        allSecNavListMap.putAll(secNavListMapDbData);
-
-        //将取DB的标的的净值存进redis
-//        cacheNavDataToRedis(dbSecIds, secKeyMap, curveTypeId, strategyId, visibility, navType, secFrequencyMap);
-
-        return allSecNavListMap;
+        return getSecIdDateValueNavListMapByDb(secIds, startDate, endDate, curveTypeId, strategyId, visibility, navType, secFrequencyMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getSecIdDateValueNavListMapByDb(List<String> allSecIdList, String startDate, String endDate,
-            Integer curveTypeId, Integer strategyId, Visibility visibility, NavType navType, Map<String, Frequency> secFrequencyMap) {
+                                                                        Integer curveTypeId, Integer strategyId, Visibility visibility, NavType navType, Map<String, Frequency> secFrequencyMap) {
 
         Map<String, List<DateValue>> allNavMap = new HashMap<>();
 
@@ -200,14 +80,14 @@ public class NavServiceImpl implements NavService {
 
         //10.机构拟合净值
         List<String> companyIdList = secIdTypeMap.get(SecType.COMPANY);
-        if(companyIdList != null && companyIdList.size() > 0){
+        if (companyIdList != null && companyIdList.size() > 0) {
             Map<String, List<DateValue>> companyIdNavMap = getCompanyNavMap(companyIdList, startDate, endDate, curveTypeId, strategyId, navType, secFrequencyMap);
             allNavMap.putAll(companyIdNavMap);
         }
 
         //11.经理拟合净值
         List<String> managerIdList = secIdTypeMap.get(SecType.MANAGER);
-        if(managerIdList != null && managerIdList.size() > 0){
+        if (managerIdList != null && managerIdList.size() > 0) {
             Map<String, List<DateValue>> managerIdNavMap = getManagerNavMap(managerIdList, startDate, endDate, curveTypeId, strategyId, navType, secFrequencyMap);
             allNavMap.putAll(managerIdNavMap);
         }
@@ -223,63 +103,50 @@ public class NavServiceImpl implements NavService {
     }
 
     private Map<String, List<DateValue>> getRiskOfFreeNavMap(List<String> riskOfFree, String startDate, String endDate, NavType navType) {
-        Map<String, List<NavDto>> riskOfFreeNavMap = riskOfFreeNavDao.getNav(riskOfFree, startDate, endDate, false);
+//        Map<String, List<NavDto>> riskOfFreeNavMap = riskOfFreeNavDao.getNav(riskOfFree, startDate, endDate, false);
+        Map<String, List<NavDto>> riskOfFreeNavMap = this.navFactory.getInstance(NavConstants.RISK_INDEX_NAV).getNav(riskOfFree, startDate, endDate);
         return SecNavDtoListMapToSecDateValueListMap(navType, riskOfFreeNavMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getManagerNavMap(List<String> managerIdList, String startDate, String endDate, Integer curveType, Integer strategy, NavType navType, Map<String, Frequency> secFrequencyMap) {
-        Map<String, List<NavDto>> managerIdNavDtoListMap = managerNavDao.getNav(managerIdList, startDate, endDate, curveType, strategy, secFrequencyMap, false);
+//        Map<String, List<NavDto>> managerIdNavDtoListMap = managerNavDao.getNav(managerIdList, startDate, endDate, curveType, strategy, secFrequencyMap, false);
+        Map<String, List<NavDto>> managerIdNavDtoListMap = this.navFactory.getInstance(NavConstants.MANAGER_NAV).getNav(managerIdList, startDate, endDate, curveType, strategy, secFrequencyMap);
         return SecNavDtoListMapToSecDateValueListMap(navType, managerIdNavDtoListMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getCompanyNavMap(List<String> companyIdList, String startDate, String endDate, Integer curveType, Integer strategy, NavType navType, Map<String, Frequency> secFrequencyMap) {
-        Map<String, List<NavDto>> companyIdNavDtoListMap = companyNavDao.getNav(companyIdList, startDate, endDate, curveType, strategy, secFrequencyMap, false);
+//        Map<String, List<NavDto>> companyIdNavDtoListMap = companyNavDao.getNav(companyIdList, startDate, endDate, curveType, strategy, secFrequencyMap, false);
+        Map<String, List<NavDto>> companyIdNavDtoListMap = this.navFactory.getInstance(NavConstants.COMPANY_NAV).getNav(companyIdList, startDate, endDate, curveType, strategy, secFrequencyMap);
         return SecNavDtoListMapToSecDateValueListMap(navType, companyIdNavDtoListMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getRongzhiIndexNavMap(List<String> rongzhiIndexIdList, String startDate, String endDate, NavType navType) {
-        Map<String, List<NavDto>> rongzhiIndexIdNavDtoListMap = rongzhiIndexNavDao.getNav(rongzhiIndexIdList, startDate, endDate, false);
+//        Map<String, List<NavDto>> rongzhiIndexIdNavDtoListMap = rongzhiIndexNavDao.getNav(rongzhiIndexIdList, startDate, endDate, false);
+        Map<String, List<NavDto>> rongzhiIndexIdNavDtoListMap = this.navFactory.getInstance(NavConstants.PPW_INDEX_NAV).getNav(rongzhiIndexIdList, startDate, endDate);
         return SecNavDtoListMapToSecDateValueListMap(navType, rongzhiIndexIdNavDtoListMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getMarketIndexNavMap(List<String> marketIndexIdList, String startDate, String endDate, NavType navType) {
-        Map<String, List<NavDto>> indexIdNavDtoListMap = marketIndexDao.getNav(marketIndexIdList, startDate, endDate, false);
+//        Map<String, List<NavDto>> indexIdNavDtoListMap = marketIndexDao.getNav(marketIndexIdList, startDate, endDate, false);
+        Map<String, List<NavDto>> indexIdNavDtoListMap = this.navFactory.getInstance(NavConstants.MARKET_INDEX_NAV).getNav(marketIndexIdList, startDate, endDate);
         return SecNavDtoListMapToSecDateValueListMap(navType, indexIdNavDtoListMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getPubliclyOfferedFundNavMap(List<String> fundIdList, String startDate, String endDate, NavType navType, Visibility visibility) {
-        Map<String, List<NavDto>> fundIdNavDtoListMap = publiclyOfferedFundNavDao.getNav(fundIdList, startDate, endDate, navType, false);
+//        Map<String, List<NavDto>> fundIdNavDtoListMap = publiclyOfferedFundNavDao.getNav(fundIdList, startDate, endDate, navType, false);
+        Map<String, List<NavDto>> fundIdNavDtoListMap = this.navFactory.getInstance(NavConstants.PUBLICLY_FUND_NAV).getNav(fundIdList, startDate, endDate);
         return SecNavDtoListMapToSecDateValueListMap(navType, fundIdNavDtoListMap);
     }
 
     @Override
     public Map<String, List<DateValue>> getPrivatelyOfferedFundNavMap(List<String> fundIdList, String startDate, String endDate, NavType navType, Visibility visibility) {
-
-        //不取费后净值的ID
-        List<String> notAccfilterFundIdList = new ArrayList<>();
-        //取费后净值的ID
-        List<String> accfilterFundIdList = new ArrayList<>();
-        Map<String, List<NavDto>> allFundIdNavDtoListMap = new HashMap<>();
-
-//        for (String fundId : fundIdList) {
-//            Boolean secIfExtract = secIfExtractMap.get(fundId);
-//            if (secIfExtract != null && secIfExtract) {
-//                accfilterFundIdList.add(fundId);
-//            } else {
-//                notAccfilterFundIdList.add(fundId);
-//            }
-//        }
-
-        //取非费后净值
-        Map<String, List<NavDto>> fundIdNavDtoListMap = privatelyOfferedFundNavDao.getNav(fundIdList, startDate, endDate, navType, false);
-        allFundIdNavDtoListMap.putAll(fundIdNavDtoListMap);
-
-        return SecNavDtoListMapToSecDateValueListMap(navType, allFundIdNavDtoListMap);
+        Map<String, List<NavDto>> fundIdNavDtoListMap = this.navFactory.getInstance(NavConstants.PRIVATELY_FUND_NAV).getNav(fundIdList, startDate, endDate);
+        return SecNavDtoListMapToSecDateValueListMap(navType, fundIdNavDtoListMap);
     }
 
     private Map<String, List<DateValue>> SecNavDtoListMapToSecDateValueListMap(NavType navType, Map<String, List<NavDto>> secIdNavDtoListMap) {
@@ -314,55 +181,4 @@ public class NavServiceImpl implements NavService {
         }
         return dateValueList;
     }
-
-//    private void cacheNavDataToRedis(List<String> dbSecIds, Map<String, String> secKeyMap, Integer curveType, Integer strategy, Visibility visibility, NavType navType, Map<String, Frequency> secFrequencyMap) {
-//
-////        if (extractNavServiceReq != null && extractNavServiceReq.isIfExtract()) {
-////            return;
-////        }
-//
-//        List<String> needCacheSecIdList = new ArrayList<>();
-//        for (String dbSecId : dbSecIds) {
-//            String key = secKeyMap.get(dbSecId);
-//            if (StringUtil.isNotEmpty(key)) {
-//                needCacheSecIdList.add(dbSecId);
-//            }
-//        }
-//
-//        if (dbSecIds.size() != 0) {
-//            taskExecutor.execute(()-> {
-//                // 确保取出全量数据DB数据
-//                Map<String, List<DateValue>> secNavListMapDbData = getSecIdDateValueNavListMapByDb(needCacheSecIdList, null, null, curveType, strategy, visibility, navType, secFrequencyMap, extractNavServiceReq, new HashMap<>());
-//                for (String needCacheSecId : needCacheSecIdList) {
-//
-//                    String secType = secTypeService.getFundType(needCacheSecId);
-//
-//                    String redisKey = secKeyMap.get(needCacheSecId);
-//                    List<DateValue> dateValueList = secNavListMapDbData.get(needCacheSecId);
-//                    Map<String, Double> dateNavMap = new HashMap<>();
-//                    for (DateValue dateValue : dateValueList) {
-//                        dateNavMap.put(dateValue.getDate(), dateValue.getValue());
-//                    }
-//
-//                    RLock lock = redissonClient.getLock(RedisUtils.getHashLockKey(needCacheSecId, redisKey));
-//                    try{
-//                        if (lock.tryLock(1,10, TimeUnit.SECONDS)) {
-//                            String dateNavMapJsonString = JSON.toJSONString(dateNavMap);
-//                            RMap<String, String> secMap = redissonClient.getMap(needCacheSecId);
-//                            secMap.put(redisKey, dateNavMapJsonString);
-//                            if (SecType.PRIVATE_FUND.equals(secType)) {
-//                                secMap.expire(15,TimeUnit.SECONDS);
-//                            }
-//                        } else {
-//                            log.error("redis write nav error, get lock failed.key: {}", redisKey);
-//                        }
-//                    }catch(Exception e){
-//                        log.error("redis write nav error: {}", e.getMessage(), e);
-//                    }finally{
-//                        lock.unlock();
-//                    }
-//                }
-//            });
-//        }
-//    }
 }

+ 12 - 6
src/main/resources/application.yaml

@@ -20,9 +20,12 @@ server:
 spring:
   datasource:
     core:
-      jdbc-url: jdbc:mysql://120.79.121.165:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
-      username: rz_new_data_channel_user
-      password: xVfuCKIP
+#      jdbc-url: jdbc:mysql://120.79.121.165:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+#      username: rz_new_data_channel_user
+#      password: xVfuCKIP
+      jdbc-url: jdbc:mysql://47.112.140.222:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+      username: rz_cm_master
+      password: TbLuENLK
       driver-class-name: com.mysql.cj.jdbc.Driver
       hikari:
         pool-name: hfdb_core
@@ -37,9 +40,12 @@ spring:
         # keepalive time
         keepalive-time: 60000
     mf:
-      jdbc-url: jdbc:mysql://120.79.121.165:3306/rz_mf_info?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
-      username: rz_new_data_channel_user
-      password: xVfuCKIP
+#      jdbc-url: jdbc:mysql://120.79.121.165:3306/rz_mf_info?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+#      username: rz_new_data_channel_user
+#      password: xVfuCKIP
+      jdbc-url: jdbc:mysql://47.112.140.222:3306/rz_mf_info?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+      username: rz_cm_master
+      password: TbLuENLK
       driver-class-name: com.mysql.cj.jdbc.Driver
       hikari:
         pool-name: mf_info

+ 16 - 0
src/main/resources/mapping/core/DepositNavMapper.xml

@@ -22,6 +22,22 @@
     select distinct fund_id from deposit_nav where isvalid = 1
   </select>
 
+  <select id="listNav" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"/>
+    from deposit_nav where isvalid = 1
+    <if test="startDate != null and startDate != ''">
+      AND price_date &gt;= #{startDate}
+    </if>
+    <if test="endDate != null and endDate != ''">
+      AND price_date &lt;= #{endDate}
+    </if>
+    AND fund_id in
+    <foreach collection="indexIds" item="indexId" index="index" open="(" separator="," close=")">
+      #{indexId}
+    </foreach>
+  </select>
+
   <select id="listNavByTimeInterval" resultMap="BaseResultMap">
     select fund_id, price_date, nav
     <if test="needUpdateAndCreateTime">

+ 16 - 0
src/main/resources/mapping/core/IndexesRzIndexMapper.xml

@@ -32,6 +32,22 @@
     creatorid, createtime, updaterid, updatetime, isvalid
   </sql>
 
+  <select id="listNav" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"/>
+    from indexes_rz_index where isvalid = 1
+    <if test="startDate != null and startDate != ''">
+      AND end_date &gt;= #{startDate}
+    </if>
+    <if test="endDate != null and endDate != ''">
+      AND end_date &lt;= #{endDate}
+    </if>
+    AND index_id in
+    <foreach collection="indexIds" item="indexId" index="index" open="(" separator="," close=")">
+      #{indexId}
+    </foreach>
+  </select>
+
   <select id="listNavByTimeInterval" resultMap="BaseResultMap">
     select index_id, end_date, index_value
     <if test="needUpdateAndCreateTime">

+ 16 - 0
src/main/resources/mapping/core/MarketIndexesMapper.xml

@@ -34,6 +34,22 @@
     creatorid, createtime, updaterid, updatetime, isvalid
   </sql>
 
+  <select id="listNav" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"/>
+    from market_indexes where isvalid = 1
+    <if test="startDate != null and startDate != ''">
+      AND price_date &gt;= #{startDate}
+    </if>
+    <if test="endDate != null and endDate != ''">
+      AND price_date &lt;= #{endDate}
+    </if>
+    AND index_id in
+    <foreach collection="indexIds" item="indexId" index="index" open="(" separator="," close=")">
+      #{indexId}
+    </foreach>
+  </select>
+
   <select id="listNavByTimeInterval" resultMap="BaseResultMap">
     select index_id, price_date, `close`
     <if test="needUpdateAndCreateTime">

+ 31 - 0
src/main/resources/mapping/core/MonetaryFundProfitMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.smppw.analysis.domain.mapper.core.MonetaryFundProfitMapper">
+    <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.MonetaryFundProfitDO">
+        <!--@mbg.generated-->
+        <!--@Table monetary_fund_profit-->
+        <id column="id" jdbcType="INTEGER" property="id" />
+        <result column="fund_id" jdbcType="VARCHAR" property="fundId" />
+        <result column="price_date" jdbcType="DATE" property="priceDate" />
+        <result column="profit_per_million" jdbcType="DECIMAL" property="profitPerMillion" />
+        <result column="profit_serven_day_annual" jdbcType="DECIMAL" property="profitServenDayAnnual" />
+        <result column="involved_days" jdbcType="INTEGER" property="involvedDays" />
+        <result column="isvalid" jdbcType="TINYINT" property="isvalid" />
+        <result column="creatorid" jdbcType="INTEGER" property="creatorid" />
+        <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+        <result column="updaterid" jdbcType="INTEGER" property="updaterid" />
+        <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id, fund_id, price_date, profit_per_million, profit_serven_day_annual, involved_days,
+        isvalid, creatorid, createtime, updaterid, updatetime
+    </sql>
+
+    <select id="queryByFundId" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from rz_hfdb_core.monetary_fund_profit
+        where fund_id = #{fundId} and isvalid = 1 order by price_date
+    </select>
+</mapper>

+ 8 - 1
src/main/resources/mapping/core/NavMapper.xml

@@ -27,7 +27,14 @@
   <select id="listNav" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
-    from nav where isvalid = 1 and fund_id in
+    from nav where isvalid = 1
+    <if test="startDate != null and startDate != ''">
+      AND price_date &gt;= #{startDate}
+    </if>
+    <if test="endDate != null and endDate != ''">
+      AND price_date &lt;= #{endDate}
+    </if>
+    and fund_id in
     <foreach collection="fundIds" item="fundId" index="index" open="(" separator="," close=")">
       #{fundId}
     </foreach>

+ 6 - 0
src/main/resources/mapping/core/PublicNavMapper.xml

@@ -28,6 +28,12 @@
     select
     <include refid="Base_Column_List"/>
     from public_nav where isvalid = 1
+    <if test="startDate != null and startDate != ''">
+      AND price_date &gt;= #{startDate}
+    </if>
+    <if test="endDate != null and endDate != ''">
+      AND price_date &lt;= #{endDate}
+    </if>
     AND fund_id in
     <foreach collection="fundIds" item="fundId" index="index" open="(" separator="," close=")">
       #{fundId}