Ver Fonte

fix:报告日期解析出来先转换为统一格式

wangzaijun há 1 mês atrás
pai
commit
4a90bdc0dd

+ 3 - 1
mo-daq/src/main/java/com/smppw/modaq/application/components/report/parser/AbstractReportParser.java

@@ -12,6 +12,7 @@ import com.smppw.modaq.common.exception.ReportParseException;
 import com.smppw.modaq.domain.dto.report.*;
 import com.smppw.modaq.domain.entity.EmailFieldMappingDO;
 import com.smppw.modaq.domain.mapper.EmailFieldMappingMapper;
+import com.smppw.modaq.infrastructure.util.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -169,7 +170,8 @@ public abstract class AbstractReportParser<T extends ReportData> implements Repo
         ReportBaseInfoDTO reportInfo = new ReportBaseInfoDTO(fileId);
         reportInfo.setReportName(reportName);
         reportInfo.setReportType(params.getReportType().name());
-        reportInfo.setReportDate(ReportParseUtils.matchReportDate(params.getReportType(), reportName));
+        String reportDate = ReportParseUtils.matchReportDate(params.getReportType(), reportName);
+        reportInfo.setReportDate(DateUtil.toDate(reportDate));
         return reportInfo;
     }
 }

+ 0 - 26
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/BaseReportDTO.java

@@ -1,10 +1,7 @@
 package com.smppw.modaq.domain.dto.report;
 
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.smppw.modaq.common.conts.Constants;
-import com.smppw.modaq.common.conts.DateConst;
 import com.smppw.modaq.domain.entity.report.BaseReportDO;
 import lombok.Getter;
 import lombok.Setter;
@@ -49,29 +46,6 @@ public abstract class BaseReportDTO<T extends BaseReportDO> implements Serializa
         return "fileId=" + fileId;
     }
 
-    /**
-     * 字符串转日期类型
-     *
-     * @param input 待转换的字符串
-     * @return /
-     */
-    protected Date toDate(String input) {
-        if (StrUtil.isBlank(input)) {
-            return null;
-        }
-        try {
-            // 日期格式化,支持格式如下:yyyy年MM月dd日、yyyy-MM-dd、yyyy/MM/dd、yyyy_MM_dd和yyyyMMdd
-            return DateUtil.parse(input.trim(),
-                    DatePattern.CHINESE_DATE_PATTERN,
-                    DatePattern.NORM_DATE_PATTERN,
-                    "yyyy/MM/dd",
-                    "yyyy_MM_dd",
-                    DateConst.YYYYMMDD);
-        } catch (Exception ignored) {
-        }
-        return null;
-    }
-
     protected BigDecimal toBigDecimal(String input) {
         return this.toBigDecimal(input, null);
     }

+ 6 - 3
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/ReportBaseInfoDTO.java

@@ -1,9 +1,12 @@
 package com.smppw.modaq.domain.dto.report;
 
+import cn.hutool.core.date.DateUtil;
 import com.smppw.modaq.domain.entity.report.ReportBaseInfoDO;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * @author wangzaijun
  * @date 2024/9/26 16:44
@@ -15,7 +18,7 @@ public class ReportBaseInfoDTO extends BaseReportDTO<ReportBaseInfoDO> {
     /**
      * 报告日期
      */
-    private String reportDate;
+    private Date reportDate;
     /**
      * 报告名称
      */
@@ -45,7 +48,7 @@ public class ReportBaseInfoDTO extends BaseReportDTO<ReportBaseInfoDO> {
     public ReportBaseInfoDO toEntity() {
         ReportBaseInfoDO entity = new ReportBaseInfoDO();
         entity.setFileId(this.getFileId());
-        entity.setReportDate(this.toDate(this.reportDate));
+        entity.setReportDate(this.reportDate);
         entity.setReportName(this.reportName);
         entity.setReportType(this.reportType);
         entity.setWithContacts(this.withContacts);
@@ -57,7 +60,7 @@ public class ReportBaseInfoDTO extends BaseReportDTO<ReportBaseInfoDO> {
     public String toString() {
         return "{" +
                 super.toString() +
-                ", reportDate='" + reportDate + '\'' +
+                ", reportDate='" + (reportDate == null ? null : DateUtil.formatDate(reportDate)) + '\'' +
                 ", reportName='" + reportName + '\'' +
                 ", reportType='" + reportType + '\'' +
                 ", withContacts=" + withContacts +

+ 3 - 2
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/ReportFundInfoDTO.java

@@ -1,6 +1,7 @@
 package com.smppw.modaq.domain.dto.report;
 
 import com.smppw.modaq.domain.entity.report.ReportFundInfoDO;
+import com.smppw.modaq.infrastructure.util.DateUtil;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -116,7 +117,7 @@ public class ReportFundInfoDTO extends BaseReportDTO<ReportFundInfoDO> {
         entity.setFundManager(this.fundManager);
         entity.setFundName(this.fundName);
         entity.setFundStrategyDescription(this.fundStrategyDescription);
-        entity.setInceptionDate(this.toDate(this.inceptionDate));
+        entity.setInceptionDate(DateUtil.toDate(this.inceptionDate));
         entity.setIndustryTrend(this.industryTrend);
         entity.setInvestmentObjective(this.investmentObjective);
         entity.setLeverage(this.toBigDecimal(this.leverage));
@@ -125,7 +126,7 @@ public class ReportFundInfoDTO extends BaseReportDTO<ReportFundInfoDO> {
         entity.setRegisterNumber(this.registerNumber);
         entity.setRiskReturnDesc(this.riskReturnDesc);
         entity.setSecondaryBenchmark(this.secondaryBenchmark);
-        entity.setDueDate(this.toDate(this.dueDate));
+        entity.setDueDate(DateUtil.toDate(this.dueDate));
         entity.setReviewed(Objects.equals("是", this.isReviewed) ? 1 : 0);
         this.initEntity(entity);
         return entity;

+ 6 - 5
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/ReportFundTransactionDTO.java

@@ -1,6 +1,7 @@
 package com.smppw.modaq.domain.dto.report;
 
 import com.smppw.modaq.domain.entity.report.ReportFundTransactionDO;
+import com.smppw.modaq.infrastructure.util.DateUtil;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -248,8 +249,8 @@ public class ReportFundTransactionDTO extends BaseReportDTO<ReportFundTransactio
         entity.setTransactionType(transactionType);
         entity.setBusinessReason(businessReason);
         entity.setStatus(status);
-        entity.setHoldingDate(this.toDate(holdingDate));
-        entity.setApplyDate(this.toDate(applyDate));
+        entity.setHoldingDate(DateUtil.toDate(holdingDate));
+        entity.setApplyDate(DateUtil.toDate(applyDate));
         entity.setApplyAmount(this.toBigDecimal(applyAmount));
         entity.setApplyShare(this.toBigDecimal(applyShare));
         entity.setAmount(this.toBigDecimal(amount, BigDecimal.ZERO));
@@ -265,7 +266,7 @@ public class ReportFundTransactionDTO extends BaseReportDTO<ReportFundTransactio
         entity.setLargeRedemptionType(largeRedemptionType);
         entity.setRewardMark(rewardMark);
         entity.setHoldingDays(holdingDays);
-        entity.setShareRegistryDate(this.toDate(shareRegistryDate));
+        entity.setShareRegistryDate(DateUtil.toDate(shareRegistryDate));
         // --- 以下是费用
         entity.setFee(this.toBigDecimal(fee));
         entity.setInterest(this.toBigDecimal(interest));
@@ -277,8 +278,8 @@ public class ReportFundTransactionDTO extends BaseReportDTO<ReportFundTransactio
         entity.setPerformanceFeeDiscounts(this.toBigDecimal(performanceFeeDiscounts));
         // --- 以下是分红
         entity.setDividendType(dividendType);
-        entity.setDividendRegistryDate(this.toDate(dividendRegistryDate));
-        entity.setDividendPaymentDate(this.toDate(dividendPaymentDate));
+        entity.setDividendRegistryDate(DateUtil.toDate(dividendRegistryDate));
+        entity.setDividendPaymentDate(DateUtil.toDate(dividendPaymentDate));
         entity.setBaseShareDividend(this.toBigDecimal(baseShareDividend));
         entity.setDividendMode(dividendMode);
         entity.setUnitDividend(this.toBigDecimal(unitDividend));

+ 2 - 1
mo-daq/src/main/java/com/smppw/modaq/domain/dto/report/ReportNetReportDTO.java

@@ -1,6 +1,7 @@
 package com.smppw.modaq.domain.dto.report;
 
 import com.smppw.modaq.domain.entity.report.ReportNetReportDO;
+import com.smppw.modaq.infrastructure.util.DateUtil;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -50,7 +51,7 @@ public class ReportNetReportDTO extends BaseReportLevelDTO<ReportNetReportDO> {
         ReportNetReportDO entity = new ReportNetReportDO();
         entity.setFileId(this.getFileId());
         entity.setLevel(this.getLevel());
-        entity.setValuationDate(this.toDate(this.valuationDate));
+        entity.setValuationDate(DateUtil.toDate(this.valuationDate));
         entity.setCumulativeNav(this.toBigDecimal(this.cumulativeNavWithdrawal));
         entity.setEndTotalShares(this.toBigDecimal(this.assetShare));
         entity.setFundAssetSize(this.toBigDecimal(this.assetNet));

+ 34 - 0
mo-daq/src/main/java/com/smppw/modaq/infrastructure/util/DateUtil.java

@@ -0,0 +1,34 @@
+package com.smppw.modaq.infrastructure.util;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.util.StrUtil;
+import com.smppw.modaq.common.conts.DateConst;
+
+import java.util.Date;
+
+public class DateUtil {
+    /**
+     * 字符串转日期类型
+     *
+     * @param input 待转换的字符串
+     * @return /
+     */
+    public static Date toDate(String input) {
+        if (StrUtil.isBlank(input)) {
+            return null;
+        }
+        // 把字符串中的日期分隔符去掉,包括前后和中间
+        input = input.replaceAll("-_/", "");
+        try {
+            // 日期格式化,支持格式如下:yyyy年MM月dd日、yyyy-MM-dd、yyyy/MM/dd、yyyy_MM_dd和yyyyMMdd
+            return cn.hutool.core.date.DateUtil.parse(input.trim(),
+                    DatePattern.CHINESE_DATE_PATTERN,
+                    DateConst.YYYYMMDD,
+                    DatePattern.NORM_DATE_PATTERN,
+                    "yyyy/MM/dd",
+                    "yyyy_MM_dd");
+        } catch (Exception ignored) {
+        }
+        return null;
+    }
+}