소스 검색

fix: 处理邮件标题为空导致的空指针异常

chenjianhua 2 달 전
부모
커밋
e7ea33c563
1개의 변경된 파일30개의 추가작업 그리고 26개의 파일을 삭제
  1. 30 26
      service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

+ 30 - 26
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -189,34 +189,38 @@ public class EmailParseService {
         // python 报告解析接口结果
         List<ParseResult<ReportData>> dataList = ListUtil.list(false);
         for (Map.Entry<EmailContentInfoDTO, List<EmailFundNavDTO>> fileNameNavEntry : fileNameNavMap.entrySet()) {
-            // 保存邮件文件表
-            EmailContentInfoDTO emailContentInfoDTO = fileNameNavEntry.getKey();
-            String fileName = emailContentInfoDTO.getFileName();
-            if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType) && fileName.endsWith(".html")) {
-                continue;
-            }
-            Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
+            try{
+                // 保存邮件文件表
+                EmailContentInfoDTO emailContentInfoDTO = fileNameNavEntry.getKey();
+                String fileName = emailContentInfoDTO.getFileName();
+                if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType) && fileName.endsWith(".html")) {
+                    continue;
+                }
+                Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
 
-            List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
-            if (CollUtil.isNotEmpty(fundNavDTOList)) {
-                // 过滤出解析成功的数据
-                fundNavDTOList = fundNavDTOList.stream().filter(e -> e != null && StrUtil.isBlank(e.getFailReason())).toList();
-            }
-            if (CollUtil.isEmpty(fundNavDTOList) && !Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)) {
-                continue;
-            }
-            if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)) {
-                // 解析结果(可以从python获取或者自行解析)并保存报告
-                ParseResult<ReportData> parseResult = this.parseReportAndHandleResult(fileId, emailContentInfoDTO);
-                dataList.add(parseResult);
-            }
-            for (EmailFundNavDTO fundNavDTO : fundNavDTOList) {
-                // 设置净值数据的解析状态
-                setNavParseStatus(fundNavDTO, emailTitle);
+                List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
+                if (CollUtil.isNotEmpty(fundNavDTOList)) {
+                    // 过滤出解析成功的数据
+                    fundNavDTOList = fundNavDTOList.stream().filter(e -> e != null && StrUtil.isBlank(e.getFailReason())).toList();
+                }
+                if (CollUtil.isEmpty(fundNavDTOList) && !Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)) {
+                    continue;
+                }
+                if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)) {
+                    // 解析结果(可以从python获取或者自行解析)并保存报告
+                    ParseResult<ReportData> parseResult = this.parseReportAndHandleResult(fileId, emailContentInfoDTO);
+                    dataList.add(parseResult);
+                }
+                for (EmailFundNavDTO fundNavDTO : fundNavDTOList) {
+                    // 设置净值数据的解析状态
+                    setNavParseStatus(fundNavDTO, emailTitle);
+                }
+                // 保存净值表和规模表
+                saveNavAndAssetNet(fileId, fundNavDTOList, parseDate);
+                saveValuationInfo(fileId, fundNavDTOList);
+            }catch (Exception e) {
+                log.error(e.getMessage(), e);
             }
-            // 保存净值表和规模表
-            saveNavAndAssetNet(fileId, fundNavDTOList, parseDate);
-            saveValuationInfo(fileId, fundNavDTOList);
         }
 
         // 更新邮件解析结果 -> 当【净值日期】和【备案编码/基金名称】能正常解读,即识别为【成功】