Pārlūkot izejas kodu

feat:邮件解析-修改邮件解析失败的原因描述(估值表和净值文件)

mozuwen 6 mēneši atpakaļ
vecāks
revīzija
a32cbaacec

+ 5 - 5
service-base/src/main/java/com/simuwang/base/common/util/ValuationBusinessUtils.java

@@ -31,11 +31,11 @@ public class ValuationBusinessUtils {
 
     private static final String ERROR_MSG_NOT_EXCEL_FILE = "文件格式错误";
 
-    private static final String ERROR_MSG_NOT_MATCH_TEMPLATE = "估值表模板暂不支持,请联系管理员";
+    private static final String ERROR_MSG_NOT_MATCH_TEMPLATE = "估值表模板暂不支持";
 
     private static final String ERROR_MSG_NO_DATA = "无数据";
 
-    private static final String ERROR_MSG_NOT_NUMBER = "非数值数据,请检查模板是否匹配";
+    private static final String ERROR_MSG_NOT_NUMBER = "非数值数据";
 
     private static final String ERROR_MSG_NOT_MARKET_VALUE_OR_AMOUNT = "无市值列或者无数量列,无法导入";
 
@@ -97,7 +97,7 @@ public class ValuationBusinessUtils {
 
             // 未找到估值表标题
             if (StringUtils.isEmpty(header.getTitle())) {
-                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到估值表标题");
+                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到基金名称或备案编码");
                 error.setExcelName(valuationNeedParseParam.getOriginFileName());
                 preInfo.setError(error);
                 return preInfo;
@@ -111,14 +111,14 @@ public class ValuationBusinessUtils {
             }
             // 未找到有效净值
             if (header.getUnitNetValue() <= 0) {
-                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到有效净值");
+                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到单位净值或累计净值");
                 error.setExcelName(valuationNeedParseParam.getOriginFileName());
                 preInfo.setError(error);
                 return preInfo;
             }
 
             if (excelInfo.getHeaderRows() == 0 || excelInfo.getTitleRows() == 0) {
-                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到表头信息");
+                error = preInfo.new Error().setCellNum(0).setRowNum(0).setMsg(ERROR_MSG_NOT_MATCH_TEMPLATE + ":未找到表头字段行");
                 error.setExcelName(valuationNeedParseParam.getOriginFileName());
                 preInfo.setError(error);
                 return preInfo;

+ 4 - 3
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -186,7 +186,7 @@ public class EmailParseService {
             Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
 
             List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
-            if(CollUtil.isNotEmpty(fundNavDTOList)){
+            if (CollUtil.isNotEmpty(fundNavDTOList)) {
                 // 过滤出解析成功的数据
                 fundNavDTOList = fundNavDTOList.stream().filter(e -> e != null && StrUtil.isBlank(e.getFailReason())).toList();
             }
@@ -220,8 +220,9 @@ public class EmailParseService {
         String failReason = null;
         if (emailParseStatus == EmailParseStatusConst.FAIL) {
             // 邮件解析失败时 -> 保存失败原因
-            failReason = fileNameNavMap.values().stream().flatMap(List::stream).
-                    map(EmailFundNavDTO::getFailReason).distinct().collect(Collectors.joining("/"));
+            int hasPdfFile = emailContentInfoDTOList.stream().map(EmailContentInfoDTO::getFilePath).anyMatch(ExcelUtil::isPdf) ? 1 : 0;
+            List<EmailFundNavDTO> navDTOList = fileNameNavMap.values().stream().flatMap(List::stream).toList();
+            failReason = hasPdfFile == 1 && CollUtil.isEmpty(navDTOList) ? "无法从pdf文件中获取到数据" : navDTOList.stream().map(EmailFundNavDTO::getFailReason).distinct().collect(Collectors.joining("/"));
         }
         emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
     }