Parcourir la source

feat:方正证券基金净值衍生指标及排名结果明细表

mozuwen il y a 5 mois
Parent
commit
0185b516b7
16 fichiers modifiés avec 382 ajouts et 24 suppressions
  1. 10 0
      service-base/src/main/java/com/simuwang/base/config/CompetitionConfig.java
  2. 13 0
      service-base/src/main/java/com/simuwang/base/mapper/RzFzzq2ResultMapper.java
  3. 1 1
      service-base/src/main/java/com/simuwang/base/mapper/RzZhzq2ResultMapper.java
  4. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/dto/CompetitionBaseResultDTO.java
  5. 225 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/competition/FzzqCompetitionResultDTO.java
  6. 2 2
      service-base/src/main/java/com/simuwang/base/pojo/dto/ZhzqCompetitionResultDTO.java
  7. 35 0
      service-base/src/main/resources/mapper/FzZhzq2ResultMapper.xml
  8. 2 2
      service-base/src/main/resources/mapper/RzZhzq2ResultMapper.xml
  9. 2 1
      service-deploy/src/main/resources/application.yml
  10. 2 2
      service-manage/src/main/java/com/simuwang/manage/service/competition/AbstractCompetitionResult.java
  11. 5 5
      service-manage/src/main/java/com/simuwang/manage/service/competition/CompetitionFactory.java
  12. 1 1
      service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavService.java
  13. 3 3
      service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavServiceImpl.java
  14. 73 0
      service-manage/src/main/java/com/simuwang/manage/service/competition/FzzqCompetitionResultServiceService.java
  15. 4 4
      service-manage/src/main/java/com/simuwang/manage/service/competition/ZhzqCompetitionResult.java
  16. 3 2
      service-manage/src/main/java/com/simuwang/manage/task/CompetitionTask.java

+ 10 - 0
service-base/src/main/java/com/simuwang/base/config/CompetitionConfig.java

@@ -9,6 +9,8 @@ public class CompetitionConfig {
 
     private Integer id;
 
+    private String name;
+
     private Integer method;
 
     private String  directory;
@@ -21,6 +23,14 @@ public class CompetitionConfig {
         this.id = id;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public Integer getMethod() {
         return method;
     }

+ 13 - 0
service-base/src/main/java/com/simuwang/base/mapper/RzFzzq2ResultMapper.java

@@ -0,0 +1,13 @@
+package com.simuwang.base.mapper;
+
+import com.simuwang.base.pojo.dto.competition.FzzqCompetitionResultDTO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface RzFzzq2ResultMapper {
+
+    List<FzzqCompetitionResultDTO> getResult();
+
+}

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

@@ -1,6 +1,6 @@
 package com.simuwang.base.mapper;
 
-import com.simuwang.base.pojo.dto.ZhzqCompetitionResultDTO;
+import com.simuwang.base.pojo.dto.competition.ZhzqCompetitionResultDTO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/dto/CompetitionBaseResultDTO.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.pojo.dto;
+package com.simuwang.base.pojo.dto.competition;
 
 import lombok.Data;
 

+ 225 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/competition/FzzqCompetitionResultDTO.java

@@ -0,0 +1,225 @@
+package com.simuwang.base.pojo.dto.competition;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadFontStyle;
+import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author mozuwen
+ * @date 2024-11-06
+ * @description 方正证券大赛排名榜单模板
+ */
+@Data
+@HeadFontStyle(fontHeightInPoints = 10)
+@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
+public class FzzqCompetitionResultDTO extends CompetitionBaseResultDTO {
+
+    /**
+     * 策略
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "策略")
+    private String strategyName;
+
+    /**
+     * 排名
+     */
+    @ColumnWidth(10)
+    @ExcelProperty(value = "排名")
+    private Integer rank;
+
+    /**
+     * 策略(该字段不在输出表格内)
+     */
+    @ExcelIgnore
+    private Integer strategy;
+
+    /**
+     * 产品ID
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "产品ID")
+    private String fundId;
+
+    /**
+     * 产品备案编码
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "产品备案编码")
+    private String registerNumber;
+
+    /**
+     * 产品全称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "产品全称")
+    private String fundName;
+
+    /**
+     * 产品简称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "产品简称")
+    private String fundShortName;
+
+    /**
+     * 公司ID
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "公司ID")
+    private String companyId;
+
+    /**
+     * 公司备案编码
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "公司备案编码")
+    private String companyRegisterNumber;
+
+    /**
+     * 公司全称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "公司全称")
+    private String companyName;
+
+    /**
+     * 公司简称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "公司简称")
+    private String companyShortName;
+
+    /**
+     * 期初净值日期
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "期初净值日期")
+    private String startPriceDate;
+
+    /**
+     * 期初净值
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "期初净值")
+    private String startCumulativeNavWithdrawal;
+
+    /**
+     * 期末净值日期
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "期末净值日期")
+    private String endPriceDate;
+
+    /**
+     * 期末净值
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "期末净值")
+    private String endCumulativeNavWithdrawal;
+
+    /**
+     * 综合得分
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "综合得分")
+    private BigDecimal score;
+
+    /**
+     * 收益率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("收益率")
+    private BigDecimal ret;
+
+    /**
+     * 最大回撤
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("最大回撤")
+    private BigDecimal maxdown;
+
+    /**
+     * 夏普比率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("夏普比率")
+    private BigDecimal sharpeRatio;
+
+    /**
+     * 卡玛比率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("卡玛比率")
+    private BigDecimal calmarRatio;
+
+    /**
+     * 周胜率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("周胜率")
+    private BigDecimal winrate;
+
+    /**
+     * 信息比率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("信息比率")
+    private BigDecimal infoRatio;
+
+    /**
+     * 索提诺比率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("索提诺比率")
+    private BigDecimal sortinoRatio;
+
+    /**
+     * 产品规模
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("产品规模")
+    private BigDecimal productScale;
+
+    /**
+     * 超额收益
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("超额收益")
+    private BigDecimal excessRet;
+
+    /**
+     * 超额回撤
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("超额回撤")
+    private BigDecimal excessMaxdown;
+
+    /**
+     * 超额周胜率
+     */
+    @ColumnWidth(15)
+    @ExcelProperty("超额周胜率")
+    private BigDecimal excessWinrate;
+
+    /**
+     * 是否在方正证券开户
+     */
+    @ColumnWidth(25)
+    @ExcelProperty(value = "是否在方正证券开户")
+    private String isOpenAccount;
+
+    /**
+     * 是否在方正中期期货开户
+     */
+    @ColumnWidth(25)
+    @ExcelProperty(value = "是否在方正中期期货开户")
+    private String isOpenAccount2;
+
+}

+ 2 - 2
service-base/src/main/java/com/simuwang/base/pojo/dto/ZhzqCompetitionResultDTO.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.pojo.dto;
+package com.simuwang.base.pojo.dto.competition;
 
 
 import com.alibaba.excel.annotation.ExcelIgnore;
@@ -19,7 +19,7 @@ import java.math.BigDecimal;
 @Data
 @HeadFontStyle(fontHeightInPoints = 10)
 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
-public class ZhzqCompetitionResultDTO extends CompetitionBaseResultDTO{
+public class ZhzqCompetitionResultDTO extends CompetitionBaseResultDTO {
 
     /**
      * 策略

+ 35 - 0
service-base/src/main/resources/mapper/FzZhzq2ResultMapper.xml

@@ -0,0 +1,35 @@
+<?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.simuwang.base.mapper.RzFzzq2ResultMapper">
+    <select id="getResult" resultType="com.simuwang.base.pojo.dto.competition.FzzqCompetitionResultDTO">
+        select strategy                  as strategy,
+               fund_id                   as fundId,
+               product_register_number   as registerNumber,
+               fund_name                 as fundName,
+               fund_short_name           as fundShortName,
+               company_id                as companyId,
+               register_number           as companyRegisterNumber,
+               company_name              as companyName,
+               company_short_name        as companyShortName,
+               pre_price_date            as startPriceDate,
+               pre_cumulative_nav        as startCumulativeNavWithdrawal,
+               price_date                as endPriceDate,
+               cumulative_nav_withdrawal as endCumulativeNavWithdrawal,
+               score                     as score,
+               product_scale             as productScale,
+               ret,
+               maxdown,
+               winrate,
+               calmarratio               as calmarRatio,
+               sortinoratio              as sortinoRatio,
+               sharperatio               as sharpeRatio,
+               info_ratio                as infoRatio,
+               excess_ret                as excessRet,
+               excess_maxdown            as excessMaxdown,
+               excess_winrate            as excessWinrate,
+               CASE WHEN is_open_account = 1 THEN '是' ELSE '否' END AS isOpenAccount,
+               CASE WHEN is_open_account2 = 1 THEN '是' ELSE '否' END AS isOpenAccount2
+        from rz_fzzq2_res
+        WHERE isvalid = 1
+    </select>
+</mapper>

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

@@ -1,7 +1,7 @@
 <?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.simuwang.base.mapper.RzZhzq2ResultMapper">
-    <select id="getResult" resultType="com.simuwang.base.pojo.dto.ZhzqCompetitionResultDTO">
+    <select id="getResult" resultType="com.simuwang.base.pojo.dto.competition.ZhzqCompetitionResultDTO">
         select strategy                  as strategy,
                fund_id                   as fundId,
                product_register_number   as registerNumber,
@@ -21,7 +21,7 @@
                maxdown,
                calmarratio               as calmarRatio,
                sharperatio               as sharpeRatio,
-               info_ratio                as infoRation,
+               info_ratio                as infoRatio,
                excess_ret                as excessRet,
                excess_maxdown            as excessMaxdown,
                excess_calmarratio        as excessCalmarratio,

+ 2 - 1
service-deploy/src/main/resources/application.yml

@@ -62,7 +62,8 @@ email:
 
 competition:
   # 大赛id
-  id: 49
+  id: 48
+  name: 方正证券_方华杯私募成长计划(第三届)
   # 输出方式:1-邮箱,2-指定目录.默认1
   method: 1
   # 输出目录(仅当 method 为 2 时有效)

+ 2 - 2
service-manage/src/main/java/com/simuwang/manage/service/competition/AbstractCompetitionResult.java

@@ -1,11 +1,11 @@
 package com.simuwang.manage.service.competition;
 
 import cn.hutool.core.collection.CollUtil;
-import com.simuwang.base.pojo.dto.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
 
 import java.util.List;
 
-public abstract class AbstractCompetitionResult {
+public abstract class AbstractCompetitionResultService {
 
     public boolean isSupport(Integer competitionId){
         return false;

+ 5 - 5
service-manage/src/main/java/com/simuwang/manage/service/competition/CompetitionFactory.java

@@ -8,15 +8,15 @@ import java.util.Map;
 @Component
 public class CompetitionFactory {
 
-    private final Map<String, AbstractCompetitionResult> COMPETITION_RESULT_MAP = MapUtil.newHashMap();
+    private final Map<String, AbstractCompetitionResultService> COMPETITION_RESULT_MAP = MapUtil.newHashMap();
 
-    public CompetitionFactory(Map<String, AbstractCompetitionResult> resultMap) {
+    public CompetitionFactory(Map<String, AbstractCompetitionResultService> resultMap) {
         COMPETITION_RESULT_MAP.putAll(resultMap);
     }
 
-    public AbstractCompetitionResult getInstance(Integer competitionId) {
-        for (Map.Entry<String, AbstractCompetitionResult> competitionResultEntry : COMPETITION_RESULT_MAP.entrySet()) {
-            AbstractCompetitionResult competitionResult = competitionResultEntry.getValue();
+    public AbstractCompetitionResultService getInstance(Integer competitionId) {
+        for (Map.Entry<String, AbstractCompetitionResultService> competitionResultEntry : COMPETITION_RESULT_MAP.entrySet()) {
+            AbstractCompetitionResultService competitionResult = competitionResultEntry.getValue();
             if (competitionResult.isSupport(competitionId)) {
                 return competitionResult;
             }

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

@@ -1,6 +1,6 @@
 package com.simuwang.manage.service.competition;
 
-import com.simuwang.base.pojo.dto.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
 import com.simuwang.base.pojo.dto.FundNavDataDTO;
 import com.simuwang.base.pojo.dto.FundNavDeletionDTO;
 

+ 3 - 3
service-manage/src/main/java/com/simuwang/manage/service/competition/FundNavServiceImpl.java

@@ -7,10 +7,10 @@ import cn.hutool.core.map.MapUtil;
 import com.simuwang.base.common.conts.DateConst;
 import com.simuwang.base.mapper.*;
 import com.simuwang.base.pojo.dos.*;
-import com.simuwang.base.pojo.dto.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
 import com.simuwang.base.pojo.dto.FundNavDataDTO;
 import com.simuwang.base.pojo.dto.FundNavDeletionDTO;
-import com.simuwang.base.pojo.dto.ZhzqCompetitionResultDTO;
+import com.simuwang.base.pojo.dto.competition.ZhzqCompetitionResultDTO;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -100,7 +100,7 @@ public class FundNavServiceImpl implements FundNavService {
     @Override
     public List<? extends CompetitionBaseResultDTO> getCompetitionResult(Integer competitionId) {
         List<ZhzqCompetitionResultDTO> dataList = CollUtil.newArrayList();
-        AbstractCompetitionResult competitionResult = competitionFactory.getInstance(competitionId);
+        AbstractCompetitionResultService competitionResult = competitionFactory.getInstance(competitionId);
         if (competitionResult == null) {
             return dataList;
         }

+ 73 - 0
service-manage/src/main/java/com/simuwang/manage/service/competition/FzzqCompetitionResultServiceService.java

@@ -0,0 +1,73 @@
+package com.simuwang.manage.service.competition;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
+import com.simuwang.base.mapper.RzFzzq2ResultMapper;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.FzzqCompetitionResultDTO;
+import org.springframework.stereotype.Service;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class FzzqCompetitionResultServiceService extends AbstractCompetitionResultService {
+
+    private static final Map<Integer, String> STRATEGY_ID_NAME_MAP = MapUtil.newHashMap();
+
+    static {
+        STRATEGY_ID_NAME_MAP.put(1, "主观多头策略");
+        STRATEGY_ID_NAME_MAP.put(2, "量化多头策略");
+        STRATEGY_ID_NAME_MAP.put(3, "相对价值策略");
+        STRATEGY_ID_NAME_MAP.put(4, "CTA策略");
+        STRATEGY_ID_NAME_MAP.put(5, "复合策略");
+    }
+
+    private final RzFzzq2ResultMapper fzzq2ResultMapper;
+
+    public FzzqCompetitionResultServiceService(RzFzzq2ResultMapper fzzq2ResultMapper) {
+        this.fzzq2ResultMapper = fzzq2ResultMapper;
+    }
+
+    @Override
+    public boolean isSupport(Integer competitionId) {
+        return competitionId != null && competitionId == 48;
+    }
+
+    @Override
+    protected List<? extends CompetitionBaseResultDTO> getCompetitionResult() {
+        List<FzzqCompetitionResultDTO> competitionResultDTOList = fzzq2ResultMapper.getResult();
+        if (CollUtil.isEmpty(competitionResultDTOList)) {
+            return CollUtil.newArrayList();
+        }
+        // 策略名称和排名
+        Map<Integer, List<FzzqCompetitionResultDTO>> strategyResultDTOList = competitionResultDTOList.stream().collect(Collectors.groupingBy(FzzqCompetitionResultDTO::getStrategy));
+        for (Map.Entry<Integer, List<FzzqCompetitionResultDTO>> resultEntry : strategyResultDTOList.entrySet()) {
+            Integer strategy = resultEntry.getKey();
+            String strategyName = STRATEGY_ID_NAME_MAP.get(strategy);
+            List<FzzqCompetitionResultDTO> resultDTOList = resultEntry.getValue();
+
+            // 按照分数降序排序
+            resultDTOList.sort(Comparator.comparing(FzzqCompetitionResultDTO::getScore, Comparator.nullsFirst(Comparator.naturalOrder())).reversed());
+            // 计算排名并设置
+            int rank = 1;
+            for (int i = 0; i < resultDTOList.size(); i++) {
+                FzzqCompetitionResultDTO dto = resultDTOList.get(i);
+                dto.setStrategyName(strategyName);
+                if (dto.getScore() != null) {
+                    dto.setRank(rank);
+                    rank = i + 1;
+                } else {
+                    // 没有分数的基金排名为:999999
+                    dto.setRank(999999);
+                }
+            }
+        }
+        // 策略分组和排名降序输出
+        return competitionResultDTOList.stream()
+                .sorted(Comparator.comparing(FzzqCompetitionResultDTO::getStrategyName).reversed().thenComparing(FzzqCompetitionResultDTO::getRank))
+                .collect(Collectors.toList());
+    }
+}

+ 4 - 4
service-manage/src/main/java/com/simuwang/manage/service/competition/ZhzqCompetitionResult.java

@@ -7,8 +7,8 @@ import cn.hutool.core.util.StrUtil;
 import com.simuwang.base.mapper.CompanyInformationMapper;
 import com.simuwang.base.mapper.RzZhzq2ResultMapper;
 import com.simuwang.base.pojo.dos.CompanyInformationDO;
-import com.simuwang.base.pojo.dto.CompetitionBaseResultDTO;
-import com.simuwang.base.pojo.dto.ZhzqCompetitionResultDTO;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.ZhzqCompetitionResultDTO;
 import org.springframework.stereotype.Service;
 
 import java.util.Comparator;
@@ -17,7 +17,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
-public class ZhzqCompetitionResult extends AbstractCompetitionResult {
+public class ZhzqCompetitionResultServiceService extends AbstractCompetitionResultService {
 
     private static final String GROWTH_PARTNERSHIP_GROUP = "成长伙伴组";
 
@@ -39,7 +39,7 @@ public class ZhzqCompetitionResult extends AbstractCompetitionResult {
 
     private final CompanyInformationMapper companyInformationMapper;
 
-    public ZhzqCompetitionResult(RzZhzq2ResultMapper zhzqResultMapper, CompanyInformationMapper companyInformationMapper) {
+    public ZhzqCompetitionResultServiceService(RzZhzq2ResultMapper zhzqResultMapper, CompanyInformationMapper companyInformationMapper) {
         this.zhzqResultMapper = zhzqResultMapper;
         this.companyInformationMapper = companyInformationMapper;
     }

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

@@ -7,7 +7,7 @@ import com.alibaba.excel.EasyExcel;
 import com.simuwang.base.common.conts.DateConst;
 import com.simuwang.base.common.util.EmailUtil;
 import com.simuwang.base.config.CompetitionConfig;
-import com.simuwang.base.pojo.dto.CompetitionBaseResultDTO;
+import com.simuwang.base.pojo.dto.competition.CompetitionBaseResultDTO;
 import com.simuwang.base.pojo.dto.FundNavDataDTO;
 import com.simuwang.base.pojo.dto.FundNavDeletionDTO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
@@ -98,12 +98,13 @@ public class CompetitionTask {
    // @Scheduled(cron = "0/10 * * * * ?")
     public void competitionResultTask() {
         Integer competitionId = competitionConfig.getId();
+        String competitionName = competitionConfig.getName();
         List<? extends CompetitionBaseResultDTO> competitionResultDTOList = fundNavService.getCompetitionResult(competitionId);
         if (CollUtil.isEmpty(competitionResultDTOList)) {
             return;
         }
         Class<? extends CompetitionBaseResultDTO> aClass = competitionResultDTOList.get(0).getClass();
-        String filePath = competitionConfig.getDirectory() + "基金净值衍生指标及排名结果明细_" + DateUtil.format(new Date(), DateConst.YYYYMMDD) + ".xlsx";
+        String filePath = competitionConfig.getDirectory() + competitionName+ "_基金净值衍生指标及排名结果明细_" + DateUtil.format(new Date(), DateConst.YYYYMMDD) + ".xlsx";
         EasyExcel.write(filePath, aClass)
                 .sheet("基金净值衍生指标及排名结果明细")
                 .doWrite(competitionResultDTOList);