Explorar el Código

feat:邮件解析-处理估值表解析时未匹配基金的情况

mozuwen hace 7 meses
padre
commit
15f2709d6d

+ 2 - 2
service-base/src/main/java/com/simuwang/base/pojo/valuation/AssetsValuationDetails.java

@@ -135,7 +135,7 @@ public class AssetsValuationDetails {
 		this.type = type;
 	}
 
-	public double getTotalMarketValue() {
+	public Double getTotalMarketValue() {
 		return totalMarketValue;
 	}
 
@@ -143,7 +143,7 @@ public class AssetsValuationDetails {
 		this.totalMarketValue = totalMarketValue;
 	}
 
-	public double getNetAssetsValue() {
+	public Double getNetAssetsValue() {
 		return netAssetsValue;
 	}
 

+ 1 - 0
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -359,6 +359,7 @@ public class EmailParseService {
         if (CollUtil.isEmpty(fundNavDTO.getFundIdList())) {
             List<String> fundIdList = fundService.getFundIdByNamesAndCode(fundNavDTO.getFundName(), fundNavDTO.getRegisterNumber());
             if (CollUtil.isEmpty(fundIdList)) {
+                // todo 写到别名表fund_alias
                 fundNavDTO.setParseStatus(NavParseStatusConst.NOT_MATCH);
                 return;
             }

+ 2 - 1
service-daq/src/main/java/com/simuwang/daq/service/ValuationEmailParser.java

@@ -53,7 +53,8 @@ public class ValuationEmailParser extends AbstractEmailParser {
         List<ValuationNeedParseParam> valuationNeedParseParams = buildValuationNeedParseParam(emailContentInfoDTO);
         List<AssetsValuationResult.Record> recordList = valuationParseService.parseValuationExcel(valuationNeedParseParams);
         if (CollUtil.isNotEmpty(recordList)) {
-            List<AssetsValuationResult.Record> parseSucessList = recordList.stream().filter(e -> e.getSuccess() == 1).collect(Collectors.toList());
+            List<AssetsValuationResult.Record> parseSucessList = recordList.stream()
+                    .filter(e -> e.getSuccess() == 1 || (StrUtil.isNotBlank(e.getMsg()) && "未匹配基金".equals(e.getMsg()))).collect(Collectors.toList());
             EmailFundNavDTO fundNavDTO = convertToFundNavDTO(parseSucessList);
             Optional.ofNullable(fundNavDTO).ifPresent(emailFundNavDTOList::add);
         }

+ 14 - 6
service-daq/src/main/java/com/simuwang/daq/service/ValuationParseService.java

@@ -92,10 +92,19 @@ public class ValuationParseService {
                             List<FundInfoDO> fundInfoDOList = fundService.getFundInfoByNamesAndCode(parseValuationInfo.getFundName(), parseValuationInfo.getRegisterNumber());
                             log.info("表格:{}, 匹配上的基金:{}", valuationNeedParseParam.getOriginFileName(), fundInfoDOList);
                             if (CollUtil.isEmpty(fundInfoDOList)) {
+                                // 未匹配基金的情况 -> 不保存估值表信息
+                                record.setNav(String.valueOf(details.getNav()));
+                                record.setCumulativeNavWithdrawal(String.valueOf(details.getCumulativeNav()));
+                                record.setExcelName(valuationNeedParseParam.getOriginFileName());
+                                record.setDate(details.getValuationDate());
                                 record.setExcelName(valuationNeedParseParam.getOriginFileName());
                                 record.setMsg("未匹配基金");
                                 record.setDate(details.getValuationDate());
                                 record.setSuccess(0);
+                                BigDecimal assetNet = details.getNetAssetsValue() != null ? BigDecimal.valueOf(details.getNetAssetsValue()) : null;
+                                BigDecimal assetShare = details.getTotalMarketValue() != null ? BigDecimal.valueOf(details.getTotalMarketValue()) : null;
+                                record.setAssetNet(assetNet != null ? String.valueOf(assetNet) : null);
+                                record.setAssetShare(assetShare != null ? String.valueOf(assetShare) : null);
                                 records.add(record);
                             } else {
                                 for (FundInfoDO fundInfoDO : fundInfoDOList) {
@@ -112,7 +121,7 @@ public class ValuationParseService {
                                     List<AssetsValuationInfo> data = excelInfo.getData();
                                     if (CollUtil.isNotEmpty(data)) {
                                         ValuationTableDO tableInfo = new ValuationTableDO();
-                                        Integer valuationId = trans2UserValuationDoAndWrite(details, 0, fundId, tableInfo, valuationNeedParseParam);
+                                        Integer valuationId = trans2UserValuationDoAndWrite(details, fundId, tableInfo, valuationNeedParseParam);
                                         singleFundRecord.setValuationId(valuationId);
                                         Future<ValuationResult> future = executor.submit(() -> {
                                             ValuationResult valuationResult = new ValuationResult();
@@ -147,7 +156,7 @@ public class ValuationParseService {
                         List<AssetsValuationInfo> data = excelInfo.getData();
                         if (CollectionUtil.isNotEmpty(data)) {
                             ValuationTableDO tableInfo = new ValuationTableDO();
-                            Integer valuationId = trans2UserValuationDoAndWrite(details, 0, fundId, tableInfo, valuationNeedParseParam);
+                            Integer valuationId = trans2UserValuationDoAndWrite(details, fundId, tableInfo, valuationNeedParseParam);
                             record.setValuationId(valuationId);
                             Future<ValuationResult> future = executor.submit(() -> {
                                 long startTime = System.currentTimeMillis();
@@ -447,8 +456,7 @@ public class ValuationParseService {
         }
     }
 
-    public Integer trans2UserValuationDoAndWrite(AssetsValuationDetails details, Integer userId, String fundId,
-                                                 ValuationTableDO tableInfo, ValuationNeedParseParam valuationNeedParseParam) {
+    public Integer trans2UserValuationDoAndWrite(AssetsValuationDetails details, String fundId, ValuationTableDO tableInfo, ValuationNeedParseParam valuationNeedParseParam) {
         valuationTableMapper.unValid(fundId, details.getValuationDate());
         tableInfo.setFundId(fundId);
         tableInfo.setValuationDate(DateUtil.StringToDate(details.getValuationDate()));
@@ -456,8 +464,8 @@ public class ValuationParseService {
         tableInfo.setIsvalid(1);
         tableInfo.setCreateTime(DateTime.now());
         tableInfo.setUpdateTime(DateTime.now());
-        tableInfo.setCreatorId(userId);
-        tableInfo.setUpdaterId(userId);
+        tableInfo.setCreatorId(0);
+        tableInfo.setUpdaterId(0);
         tableInfo.setTotalMarketValue(BigDecimalUtils.toBigDecimal(details.getTotalMarketValue()));
         tableInfo.setNetAssetsValue(BigDecimalUtils.toBigDecimal(details.getNetAssetsValue()));
         tableInfo.setIncrement(BigDecimalUtils.toBigDecimal(details.getIncrement()));