|
@@ -293,80 +293,80 @@ public class EmailParseService {
|
|
|
dto.setEmailType(emailType);
|
|
|
}
|
|
|
|
|
|
- for (EmailZipFileDTO dto : dtos) {
|
|
|
- String filename = dto.getFilename();
|
|
|
+// for (EmailZipFileDTO dto : dtos) {
|
|
|
+// String filename = dto.getFilename();
|
|
|
+// Integer emailType = dto.getEmailType();
|
|
|
+// ReportType reportType = ReportParseUtils.matchReportType(emailType, filename);
|
|
|
+// String reportDate = ReportParseUtils.matchReportDate(reportType, filename);
|
|
|
+// System.out.println(filename + ",emailType=" + emailType + ",reportType=" + reportType + ",reportDate=" + reportDate);
|
|
|
+// }
|
|
|
+
|
|
|
+ // 数据库已存在的数据过滤
|
|
|
+ Iterator<EmailZipFileDTO> iterator = dtos.iterator();
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ EmailZipFileDTO dto = iterator.next();
|
|
|
Integer emailType = dto.getEmailType();
|
|
|
- ReportType reportType = ReportParseUtils.matchReportType(emailType, filename);
|
|
|
- String reportDate = ReportParseUtils.matchReportDate(reportType, filename);
|
|
|
- System.out.println(filename + ",emailType=" + emailType + ",reportType=" + reportType + ",reportDate=" + reportDate);
|
|
|
+ String filename = dto.getFilename();
|
|
|
+ int count = 0;
|
|
|
+ if (Objects.equals(emailType, EmailTypeConst.REPORT_LETTER_EMAIL_TYPE)) {
|
|
|
+ // 确认单
|
|
|
+ count = this.emailFileInfoMapper.getLetterFilenameSuccessCount(emailTitle, filename);
|
|
|
+ } else if (Objects.equals(emailType, EmailTypeConst.REPORT_EMAIL_TYPE)) {
|
|
|
+ // 定期报告
|
|
|
+ count = this.emailFileInfoMapper.getAmacFilenameSuccessCount(emailTitle, filename);
|
|
|
+ } else if (Objects.equals(emailType, EmailTypeConst.REPORT_WEEKLY_TYPE)) {
|
|
|
+ // 管理人周报
|
|
|
+ count = this.emailFileInfoMapper.getWeeklyFilenameSuccessCount(emailTitle, filename);
|
|
|
+ } else if (Objects.equals(emailType, EmailTypeConst.REPORT_OTHER_TYPE)) {
|
|
|
+ // 其他报告
|
|
|
+ count = this.emailFileInfoMapper.getOtherFilenameSuccessCount(emailTitle, filename);
|
|
|
+ } else {
|
|
|
+ log.info("邮件{} 类型{} 不支持解析。", emailTitle, emailType);
|
|
|
+ iterator.remove();
|
|
|
+ }
|
|
|
+ if (count > 0) {
|
|
|
+ iterator.remove();
|
|
|
+ log.info("邮件{} 附件{} 已存在解析成功的记录,不用重新解析。", emailTitle, filename);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isEmpty(dtos)) {
|
|
|
+ log.info("邮件{} 所有文件都已经解析成功过,不能重复解析了", emailTitle);
|
|
|
+ continue;
|
|
|
}
|
|
|
|
|
|
-// // 数据库已存在的数据过滤
|
|
|
-// Iterator<EmailZipFileDTO> iterator = dtos.iterator();
|
|
|
-// while (iterator.hasNext()) {
|
|
|
-// EmailZipFileDTO dto = iterator.next();
|
|
|
-// Integer emailType = dto.getEmailType();
|
|
|
-// String filename = dto.getFilename();
|
|
|
-// int count = 0;
|
|
|
-// if (Objects.equals(emailType, EmailTypeConst.REPORT_LETTER_EMAIL_TYPE)) {
|
|
|
-// // 确认单
|
|
|
-// count = this.emailFileInfoMapper.getLetterFilenameSuccessCount(emailTitle, filename);
|
|
|
-// } else if (Objects.equals(emailType, EmailTypeConst.REPORT_EMAIL_TYPE)) {
|
|
|
-// // 定期报告
|
|
|
-// count = this.emailFileInfoMapper.getAmacFilenameSuccessCount(emailTitle, filename);
|
|
|
-// } else if (Objects.equals(emailType, EmailTypeConst.REPORT_WEEKLY_TYPE)) {
|
|
|
-// // 管理人周报
|
|
|
-// count = this.emailFileInfoMapper.getWeeklyFilenameSuccessCount(emailTitle, filename);
|
|
|
-// } else if (Objects.equals(emailType, EmailTypeConst.REPORT_OTHER_TYPE)) {
|
|
|
-// // 其他报告
|
|
|
-// count = this.emailFileInfoMapper.getOtherFilenameSuccessCount(emailTitle, filename);
|
|
|
-// } else {
|
|
|
-// log.info("邮件{} 类型{} 不支持解析。", emailTitle, emailType);
|
|
|
-// iterator.remove();
|
|
|
-// }
|
|
|
-// if (count > 0) {
|
|
|
-// iterator.remove();
|
|
|
-// log.info("邮件{} 附件{} 已存在解析成功的记录,不用重新解析。", emailTitle, filename);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// if (CollUtil.isEmpty(dtos)) {
|
|
|
-// log.info("邮件{} 所有文件都已经解析成功过,不能重复解析了", emailTitle);
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-//
|
|
|
-// Integer emailId = emailDto.getEmailId();
|
|
|
-// EmailParseInfoDO emailParseInfoDO = this.buildEmailParseInfo(emailId, emailAddress, emailDto);
|
|
|
-// emailParseInfoDO.setEmailKey(emailKey);
|
|
|
-// emailId = this.saveEmailParseInfo(emailParseInfoDO);
|
|
|
-// if (emailId == null) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// for (EmailZipFileDTO zipFile : dtos) {
|
|
|
-// EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile.getFilename(), zipFile.getFilepath());
|
|
|
-// // 解析并保存报告
|
|
|
-// ParseResult<ReportData> parseResult = this.parseReportAndHandleResult(emailTitle, emailFile, zipFile);
|
|
|
-// dataList.add(parseResult);
|
|
|
-// }
|
|
|
-//
|
|
|
-// String failReason = null;
|
|
|
-// int emailParseStatus = EmailParseStatusConst.SUCCESS;
|
|
|
-// // 报告邮件有一条失败就表示整个邮件解析失败
|
|
|
-// if (CollUtil.isNotEmpty(dataList)) {
|
|
|
-// // ai解析结果
|
|
|
-// List<ReportData> aiParaseList = dataList.stream().map(ParseResult::getData)
|
|
|
-// .filter(Objects::nonNull).filter(e -> Objects.equals(true, e.getAiParse())).toList();
|
|
|
-// if (CollUtil.isNotEmpty(aiParaseList)) {
|
|
|
-// for (ReportData data : aiParaseList) {
|
|
|
-// this.emailFileInfoMapper.updateAiParseByFileId(data.getBaseInfo().getFileId(), data.getAiParse(), data.getAiFileId());
|
|
|
-// }
|
|
|
-// }
|
|
|
-// long failNum = dataList.stream().filter(e -> !Objects.equals(EmailParseStatusConst.SUCCESS, e.getStatus())).count();
|
|
|
-// if (failNum > 0) {
|
|
|
-// emailParseStatus = EmailParseStatusConst.FAIL;
|
|
|
-// failReason = dataList.stream().map(ParseResult::getMsg).collect(Collectors.joining(";"));
|
|
|
-// }
|
|
|
-// }
|
|
|
-// emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
|
|
|
+ Integer emailId = emailDto.getEmailId();
|
|
|
+ EmailParseInfoDO emailParseInfoDO = this.buildEmailParseInfo(emailId, emailAddress, emailDto);
|
|
|
+ emailParseInfoDO.setEmailKey(emailKey);
|
|
|
+ emailId = this.saveEmailParseInfo(emailParseInfoDO);
|
|
|
+ if (emailId == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (EmailZipFileDTO zipFile : dtos) {
|
|
|
+ EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile.getFilename(), zipFile.getFilepath());
|
|
|
+ // 解析并保存报告
|
|
|
+ ParseResult<ReportData> parseResult = this.parseReportAndHandleResult(emailTitle, emailFile, zipFile);
|
|
|
+ dataList.add(parseResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ String failReason = null;
|
|
|
+ int emailParseStatus = EmailParseStatusConst.SUCCESS;
|
|
|
+ // 报告邮件有一条失败就表示整个邮件解析失败
|
|
|
+ if (CollUtil.isNotEmpty(dataList)) {
|
|
|
+ // ai解析结果
|
|
|
+ List<ReportData> aiParaseList = dataList.stream().map(ParseResult::getData)
|
|
|
+ .filter(Objects::nonNull).filter(e -> Objects.equals(true, e.getAiParse())).toList();
|
|
|
+ if (CollUtil.isNotEmpty(aiParaseList)) {
|
|
|
+ for (ReportData data : aiParaseList) {
|
|
|
+ this.emailFileInfoMapper.updateAiParseByFileId(data.getBaseInfo().getFileId(), data.getAiParse(), data.getAiFileId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long failNum = dataList.stream().filter(e -> !Objects.equals(EmailParseStatusConst.SUCCESS, e.getStatus())).count();
|
|
|
+ if (failNum > 0) {
|
|
|
+ emailParseStatus = EmailParseStatusConst.FAIL;
|
|
|
+ failReason = dataList.stream().map(ParseResult::getMsg).collect(Collectors.joining(";"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
|
|
|
}
|
|
|
}
|
|
|
|