|
@@ -2,6 +2,7 @@ package com.smppw.modaq.domain.service;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
@@ -18,7 +19,6 @@ import com.smppw.modaq.application.components.report.writer.ReportWriter;
|
|
|
import com.smppw.modaq.application.components.report.writer.ReportWriterFactory;
|
|
|
import com.smppw.modaq.application.util.EmailUtil;
|
|
|
import com.smppw.modaq.common.conts.Constants;
|
|
|
-import com.smppw.modaq.common.conts.DateConst;
|
|
|
import com.smppw.modaq.common.conts.EmailParseStatusConst;
|
|
|
import com.smppw.modaq.common.conts.EmailTypeConst;
|
|
|
import com.smppw.modaq.common.enums.ReportMonthlyType;
|
|
@@ -380,7 +380,11 @@ public class EmailParseService {
|
|
|
}
|
|
|
// 重新判断类型
|
|
|
this.recheckEmailType(emailTitle, dtos);
|
|
|
+ // 解析数据和报告列表构建
|
|
|
EmailInfoDTO emailInfo = new EmailInfoDTO(emailTitle, dtos);
|
|
|
+ if (StrUtil.isNotBlank(params.getContent())) {
|
|
|
+ emailInfo.setEmailContent(params.getContent());
|
|
|
+ }
|
|
|
Long totalSize = dtos.stream().map(EmailZipFileDTO::getFileSize).reduce(0L, Long::sum);
|
|
|
EmailParseInfoDO emailDo = this.buildEmailParseInfo("upload", emailInfo, totalSize);
|
|
|
Integer emailId = this.saveEmailParseInfo(emailDo);
|
|
@@ -451,6 +455,8 @@ public class EmailParseService {
|
|
|
* @param dtos 邮件信息(包含所有解压后的文件)
|
|
|
*/
|
|
|
private void checkEmailFileInfo(String emailTitle, List<EmailZipFileDTO> dtos) {
|
|
|
+ // 删除前置处理失败的文件
|
|
|
+ dtos.removeIf(e -> !Objects.equals(1, e.getParseStatus()));
|
|
|
// 如果压缩包里面既有pdf又有其他格式的文件,说明其他格式的文件是不需要解析的
|
|
|
List<String> exts = dtos.stream().map(EmailZipFileDTO::getExtName).distinct().toList();
|
|
|
if (exts.contains(Constants.FILE_PDF) && exts.size() > 1) {
|
|
@@ -469,7 +475,7 @@ public class EmailParseService {
|
|
|
// 不支持的类型
|
|
|
Integer type = dto.getEmailType();
|
|
|
if (!EmailTypeConst.SUPPORT_EMAIL_TYPES.contains(type)) {
|
|
|
- log.info("邮件{} 类型{} 不支持解析。", emailTitle, type);
|
|
|
+ log.warn("邮件{} 报告{} 的类型是{} 不支持解析。", emailTitle, filename, type);
|
|
|
removeIterator.remove();
|
|
|
}
|
|
|
}
|
|
@@ -864,7 +870,7 @@ public class EmailParseService {
|
|
|
*
|
|
|
* @param fileId 文件ID
|
|
|
* @param reportType 报告类型
|
|
|
- * @param reportName 报告名称
|
|
|
+ * @param reportName 报告名称
|
|
|
* @return /
|
|
|
*/
|
|
|
private ReportData buildNvlReportData(Integer fileId, ReportType reportType, String reportName) {
|
|
@@ -989,7 +995,7 @@ public class EmailParseService {
|
|
|
emailParseInfoDO.setId(null);
|
|
|
emailParseInfoDO.setSenderEmail(emailInfo.getSenderEmail());
|
|
|
emailParseInfoDO.setEmail(emailAddress);
|
|
|
- emailParseInfoDO.setEmailDate(DateUtil.parse(emailInfo.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
|
+ emailParseInfoDO.setEmailDate(DateUtil.parseDateTime(emailInfo.getEmailDate()));
|
|
|
emailParseInfoDO.setParseDate(new Date());
|
|
|
emailParseInfoDO.setEmailTitle(emailInfo.getEmailTitle());
|
|
|
emailParseInfoDO.setEmailContent(emailInfo.getEmailContent());
|
|
@@ -1074,7 +1080,7 @@ public class EmailParseService {
|
|
|
}
|
|
|
try {
|
|
|
Date emailDate = message.getSentDate();
|
|
|
- String emailDateStr = DateUtil.format(emailDate, DateConst.YYYY_MM_DD_HH_MM_SS);
|
|
|
+ String emailDateStr = DateUtil.formatDateTime(emailDate);
|
|
|
if (log.isInfoEnabled()) {
|
|
|
log.info("{} 邮件{} 数据获取中,邮件时间:{}", folderName, emailTitle, emailDateStr);
|
|
|
}
|
|
@@ -1190,16 +1196,16 @@ public class EmailParseService {
|
|
|
emailContentInfoDTO.setFilePath(saveFile.getAbsolutePath());
|
|
|
emailContentInfoDTO.setEmailAddress(account);
|
|
|
emailContentInfoDTO.setEmailTitle(subject);
|
|
|
- emailContentInfoDTO.setEmailDate(DateUtil.format(sendDate, DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
|
+ emailContentInfoDTO.setEmailDate(DateUtil.formatDateTime(sendDate));
|
|
|
emailContentInfoDTOList.add(emailContentInfoDTO);
|
|
|
}
|
|
|
|
|
|
public File generateSavePath(String account, Date sendDate, String fileName) {
|
|
|
- String emailDateStr = DateUtil.format(sendDate, DateConst.YYYYMMDD);
|
|
|
+ String emailDateStr = DateUtil.formatDate(sendDate);
|
|
|
String filePath = this.path + File.separator + account + File.separator +
|
|
|
emailDateStr + File.separator + "original" + File.separator;
|
|
|
// 压缩包重名时的后面的压缩包会覆盖前面压缩包的问题(不考虑普通文件)
|
|
|
- String emailDate = DateUtil.format(sendDate, DateConst.YYYYMMDDHHMMSS24);
|
|
|
+ String emailDate = DateUtil.format(sendDate, DatePattern.PURE_DATETIME_PATTERN);
|
|
|
String realName = ArchiveUtil.isArchive(fileName) ? emailDate + fileName : fileName;
|
|
|
return FileUtil.file(filePath + realName);
|
|
|
}
|