|
@@ -188,12 +188,12 @@ public class EmailParseService {
|
|
|
emailFileList.addAll(this.parseZipEmail(emailDto));
|
|
|
} catch (IOException e) {
|
|
|
log.error("邮件{} 压缩包解压失败:{}", emailTitle, ExceptionUtil.stacktraceToString(e));
|
|
|
- status = 0;
|
|
|
- errMsg = "压缩包解压失败";
|
|
|
+ EmailZipFileDTO zipFileDTO = new EmailZipFileDTO(emailTitle, emailDto);
|
|
|
+ zipFileDTO.setParseStatus(0);
|
|
|
+ zipFileDTO.setFailReason("压缩包解压失败");
|
|
|
+ emailFileList.add(zipFileDTO);
|
|
|
} catch (Exception e) {
|
|
|
log.error("邮件{} 堆栈信息:{}", emailTitle, ExceptionUtil.stacktraceToString(e));
|
|
|
- status = 0;
|
|
|
- errMsg = "内部错误";
|
|
|
}
|
|
|
}
|
|
|
// 重新判断类型
|
|
@@ -222,7 +222,11 @@ public class EmailParseService {
|
|
|
Integer emailId = this.saveEmailParseInfo(emailDo);
|
|
|
// 保存附件(解压后的)
|
|
|
for (EmailZipFileDTO zipFile : emailFileList) {
|
|
|
- EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile.getFilename(), zipFile.getFilepath());
|
|
|
+ EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile);
|
|
|
+ if (!Objects.equals(1, zipFile.getParseStatus()) || StrUtil.isNotBlank(zipFile.getFailReason())) {
|
|
|
+ emailFile.setParseStatus(zipFile.getParseStatus());
|
|
|
+ emailFile.setFailReason(zipFile.getFailReason());
|
|
|
+ }
|
|
|
zipFile.setFileId(emailFile.getId());
|
|
|
}
|
|
|
if (CollUtil.isNotEmpty(emailFileList)) {
|
|
@@ -355,22 +359,23 @@ public class EmailParseService {
|
|
|
* @return /
|
|
|
*/
|
|
|
public List<UploadReportResult> uploadReportResults(UploadReportParams params) {
|
|
|
- List<ParseResult<ReportData>> dataList = ListUtil.list(false);
|
|
|
String emailTitle = params.getTitle();
|
|
|
List<UploadReportParams.ReportInfo> reportInfos = params.getReportInfos();
|
|
|
List<EmailZipFileDTO> dtos = ListUtil.list(false);
|
|
|
for (UploadReportParams.ReportInfo e : reportInfos) {
|
|
|
+ EmailZipFileDTO zipFileDTO = new EmailZipFileDTO(emailTitle, e);
|
|
|
String reportPath = e.getReportPath();
|
|
|
if (ArchiveUtil.isArchive(reportPath)) {
|
|
|
try {
|
|
|
this.handleCompressedFiles(emailTitle, reportPath, e.getReportType(), dtos);
|
|
|
} catch (Exception ex) {
|
|
|
log.warn("报告{} 压缩包解压失败:{}", reportPath, ExceptionUtil.stacktraceToString(ex));
|
|
|
- ReportData reportData = new ReportData.DefaultReportData();
|
|
|
- dataList.add(new ParseResult<>(ReportParseStatus.ARCHIVE_FAIL, reportData));
|
|
|
+ zipFileDTO.setParseStatus(0);
|
|
|
+ zipFileDTO.setFailReason("压缩包解压失败");
|
|
|
+ dtos.add(zipFileDTO);
|
|
|
}
|
|
|
} else {
|
|
|
- dtos.add(new EmailZipFileDTO(emailTitle, e));
|
|
|
+ dtos.add(zipFileDTO);
|
|
|
}
|
|
|
}
|
|
|
// 重新判断类型
|
|
@@ -380,10 +385,11 @@ public class EmailParseService {
|
|
|
EmailParseInfoDO emailDo = this.buildEmailParseInfo("upload", emailInfo, totalSize);
|
|
|
Integer emailId = this.saveEmailParseInfo(emailDo);
|
|
|
for (EmailZipFileDTO zipFile : dtos) {
|
|
|
- EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile.getFilename(), zipFile.getFilepath());
|
|
|
+ EmailFileInfoDO emailFile = this.saveEmailFileInfo(emailId, zipFile);
|
|
|
zipFile.setFileId(emailFile.getId());
|
|
|
}
|
|
|
// 解析并处理解析结果
|
|
|
+ List<ParseResult<ReportData>> dataList = ListUtil.list(false);
|
|
|
this.parseAndUpdateResult(emailId, emailInfo, dataList);
|
|
|
// 解析结果转换
|
|
|
List<UploadReportResult> resultList = ListUtil.list(false);
|
|
@@ -422,7 +428,8 @@ public class EmailParseService {
|
|
|
*/
|
|
|
private void recheckEmailType(String emailTitle, List<EmailZipFileDTO> dtos) {
|
|
|
for (EmailZipFileDTO emailFile : dtos) {
|
|
|
- if (EmailTypeConst.SUPPORT_NO_OTHER_TYPES.contains(emailFile.getEmailType())) {
|
|
|
+ if (EmailTypeConst.SUPPORT_NO_OTHER_TYPES.contains(emailFile.getEmailType())
|
|
|
+ || !Objects.equals(1, emailFile.getParseStatus())) {
|
|
|
continue;
|
|
|
}
|
|
|
Integer type = EmailUtil.getEmailTypeBySubject(emailTitle + emailFile.getFilename());
|
|
@@ -913,9 +920,14 @@ public class EmailParseService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private EmailFileInfoDO saveEmailFileInfo(Integer emailId, String fileName, String filePath) {
|
|
|
- EmailFileInfoDO emailFileInfoDO = buildEmailFileInfoDO(emailId, fileName, filePath);
|
|
|
-// emailFileInfoDO.setAiFileId(null);
|
|
|
+ private EmailFileInfoDO saveEmailFileInfo(Integer emailId, EmailZipFileDTO zipFile) {
|
|
|
+ String filename = zipFile.getFilename();
|
|
|
+ String filepath = zipFile.getFilepath();
|
|
|
+ EmailFileInfoDO emailFileInfoDO = this.buildEmailFileInfoDO(emailId, filename, filepath);
|
|
|
+ if (!Objects.equals(1, zipFile.getParseStatus()) || StrUtil.isNotBlank(zipFile.getFailReason())) {
|
|
|
+ emailFileInfoDO.setParseStatus(zipFile.getParseStatus());
|
|
|
+ emailFileInfoDO.setFailReason(zipFile.getFailReason());
|
|
|
+ }
|
|
|
if (emailFileInfoDO.getId() != null) {
|
|
|
this.emailFileInfoMapper.updateTimeById(emailFileInfoDO.getId(), new Date());
|
|
|
return emailFileInfoDO;
|
|
@@ -923,8 +935,8 @@ public class EmailParseService {
|
|
|
|
|
|
LambdaQueryWrapper<EmailFileInfoDO> wrapper = Wrappers.lambdaQuery(EmailFileInfoDO.class)
|
|
|
.eq(EmailFileInfoDO::getEmailId, emailId)
|
|
|
- .eq(EmailFileInfoDO::getFileName, fileName)
|
|
|
- .eq(EmailFileInfoDO::getFilePath, filePath);
|
|
|
+ .eq(EmailFileInfoDO::getFileName, filename)
|
|
|
+ .eq(EmailFileInfoDO::getFilePath, filepath);
|
|
|
List<EmailFileInfoDO> tempList = this.emailFileInfoMapper.selectList(wrapper);
|
|
|
if (CollUtil.isNotEmpty(tempList)) {
|
|
|
return tempList.get(0);
|