|
@@ -144,8 +144,8 @@ public class EmailParseService {
|
|
emailTypes = ListUtil.of(EmailTypeConst.REPORT_LETTER_EMAIL_TYPE);
|
|
emailTypes = ListUtil.of(EmailTypeConst.REPORT_LETTER_EMAIL_TYPE);
|
|
}
|
|
}
|
|
if (log.isInfoEnabled()) {
|
|
if (log.isInfoEnabled()) {
|
|
- log.info("开始邮件解析 -> 邮箱信息:{},开始时间:{},结束时间:{}", mailboxInfoDTO, DateUtil.format(startDate,
|
|
|
|
- DateConst.YYYY_MM_DD_HH_MM_SS), DateUtil.format(endDate, DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
|
|
|
|
+ log.info("开始邮件解析 -> 邮箱信息:{},开始时间:{},结束时间:{}", mailboxInfoDTO,
|
|
|
|
+ DateUtil.formatDateTime(startDate), DateUtil.formatDateTime(endDate));
|
|
}
|
|
}
|
|
Map<String, List<EmailContentInfoDTO>> emailContentMap;
|
|
Map<String, List<EmailContentInfoDTO>> emailContentMap;
|
|
try {
|
|
try {
|
|
@@ -156,21 +156,21 @@ public class EmailParseService {
|
|
}
|
|
}
|
|
if (MapUtil.isEmpty(emailContentMap)) {
|
|
if (MapUtil.isEmpty(emailContentMap)) {
|
|
log.warn("未采集到邮件 -> 邮箱配置信息:{},开始时间:{},结束时间:{}", mailboxInfoDTO,
|
|
log.warn("未采集到邮件 -> 邮箱配置信息:{},开始时间:{},结束时间:{}", mailboxInfoDTO,
|
|
- DateUtil.format(startDate, DateConst.YYYY_MM_DD_HH_MM_SS), DateUtil.format(endDate, DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
|
|
|
|
+ DateUtil.formatDateTime(startDate), DateUtil.formatDateTime(endDate));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
for (Map.Entry<String, List<EmailContentInfoDTO>> emailEntry : emailContentMap.entrySet()) {
|
|
for (Map.Entry<String, List<EmailContentInfoDTO>> emailEntry : emailContentMap.entrySet()) {
|
|
- List<EmailContentInfoDTO> emailContentInfoDTOList = emailEntry.getValue();
|
|
|
|
- if (CollUtil.isEmpty(emailContentInfoDTOList)) {
|
|
|
|
|
|
+ List<EmailContentInfoDTO> dtoList = emailEntry.getValue();
|
|
|
|
+ if (CollUtil.isEmpty(dtoList)) {
|
|
log.warn("未采集到正文或附件");
|
|
log.warn("未采集到正文或附件");
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- EmailContentInfoDTO dto = emailContentInfoDTOList.get(0);
|
|
|
|
|
|
+ EmailContentInfoDTO dto = dtoList.get(0);
|
|
String emailTitle = dto.getEmailTitle();
|
|
String emailTitle = dto.getEmailTitle();
|
|
if (log.isInfoEnabled()) {
|
|
if (log.isInfoEnabled()) {
|
|
log.info("开始解析邮件数据 -> 邮件主题:{},邮件日期:{}", emailTitle, dto.getEmailDate());
|
|
log.info("开始解析邮件数据 -> 邮件主题:{},邮件日期:{}", emailTitle, dto.getEmailDate());
|
|
}
|
|
}
|
|
- Long totalSize = emailContentInfoDTOList.stream().map(EmailContentInfoDTO::getFileSize).reduce(0L, Long::sum);
|
|
|
|
|
|
+ Long totalSize = dtoList.stream().map(EmailContentInfoDTO::getFileSize).reduce(0L, Long::sum);
|
|
String errMsg = null;
|
|
String errMsg = null;
|
|
int status = 1;
|
|
int status = 1;
|
|
List<EmailZipFileDTO> emailFileList = ListUtil.list(false);
|
|
List<EmailZipFileDTO> emailFileList = ListUtil.list(false);
|
|
@@ -179,7 +179,7 @@ public class EmailParseService {
|
|
status = 0;
|
|
status = 0;
|
|
errMsg = "邮件中存在超大附件,需要手动处理该邮件";
|
|
errMsg = "邮件中存在超大附件,需要手动处理该邮件";
|
|
} else {
|
|
} else {
|
|
- for (EmailContentInfoDTO emailDto : emailContentInfoDTOList) {
|
|
|
|
|
|
+ for (EmailContentInfoDTO emailDto : dtoList) {
|
|
// 正文不用解压附件
|
|
// 正文不用解压附件
|
|
if (emailDto.getFileName() != null && emailDto.getFileName().endsWith(Constants.FILE_HTML)) {
|
|
if (emailDto.getFileName() != null && emailDto.getFileName().endsWith(Constants.FILE_HTML)) {
|
|
continue;
|
|
continue;
|
|
@@ -229,7 +229,7 @@ public class EmailParseService {
|
|
// 保存相关信息 -> 邮件信息表,邮件文件表,邮件净值表,邮件规模表,基金净值表
|
|
// 保存相关信息 -> 邮件信息表,邮件文件表,邮件净值表,邮件规模表,基金净值表
|
|
this.saveRelatedTable(emailId, emailInfo);
|
|
this.saveRelatedTable(emailId, emailInfo);
|
|
log.info("结束邮件解析 -> 邮箱信息:{},开始时间:{},结束时间:{}", emailEntry.getValue(),
|
|
log.info("结束邮件解析 -> 邮箱信息:{},开始时间:{},结束时间:{}", emailEntry.getValue(),
|
|
- DateUtil.format(startDate, DateConst.YYYY_MM_DD_HH_MM_SS), DateUtil.format(endDate, DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
|
|
|
|
+ DateUtil.formatDateTime(startDate), DateUtil.formatDateTime(endDate));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -395,7 +395,9 @@ public class EmailParseService {
|
|
return resultList;
|
|
return resultList;
|
|
}
|
|
}
|
|
|
|
|
|
- private void parseAndUpdateResult(Integer emailId, EmailInfoDTO emailInfo, List<ParseResult<ReportData>> dataList) {
|
|
|
|
|
|
+ private void parseAndUpdateResult(Integer emailId,
|
|
|
|
+ EmailInfoDTO emailInfo,
|
|
|
|
+ List<ParseResult<ReportData>> dataList) {
|
|
this.parseResults(emailInfo, dataList);
|
|
this.parseResults(emailInfo, dataList);
|
|
String failReason = null;
|
|
String failReason = null;
|
|
int emailParseStatus = EmailParseStatusConst.SUCCESS;
|
|
int emailParseStatus = EmailParseStatusConst.SUCCESS;
|
|
@@ -491,7 +493,7 @@ public class EmailParseService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (CollUtil.isEmpty(dtos)) {
|
|
if (CollUtil.isEmpty(dtos)) {
|
|
- log.info("邮件{} 所有文件都已经解析成功过,不能重复解析了", emailTitle);
|
|
|
|
|
|
+ log.info("邮件{} 经校验没有需要解析的报告文件。", emailTitle);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (log.isInfoEnabled()) {
|
|
if (log.isInfoEnabled()) {
|
|
@@ -508,6 +510,7 @@ public class EmailParseService {
|
|
private void parseResults(EmailInfoDTO emailInfo,
|
|
private void parseResults(EmailInfoDTO emailInfo,
|
|
List<ParseResult<ReportData>> resultList) {
|
|
List<ParseResult<ReportData>> resultList) {
|
|
String emailTitle = emailInfo.getEmailTitle();
|
|
String emailTitle = emailInfo.getEmailTitle();
|
|
|
|
+ // 拷贝一个新的集合,方便操作不影响原集合
|
|
List<EmailZipFileDTO> dtos = ListUtil.toList(emailInfo.getEmailFileList());
|
|
List<EmailZipFileDTO> dtos = ListUtil.toList(emailInfo.getEmailFileList());
|
|
if (CollUtil.isEmpty(dtos)) {
|
|
if (CollUtil.isEmpty(dtos)) {
|
|
return;
|
|
return;
|
|
@@ -977,6 +980,7 @@ public class EmailParseService {
|
|
emailParseInfoDO.setEmailDate(DateUtil.parse(emailInfo.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
emailParseInfoDO.setEmailDate(DateUtil.parse(emailInfo.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS));
|
|
emailParseInfoDO.setParseDate(new Date());
|
|
emailParseInfoDO.setParseDate(new Date());
|
|
emailParseInfoDO.setEmailTitle(emailInfo.getEmailTitle());
|
|
emailParseInfoDO.setEmailTitle(emailInfo.getEmailTitle());
|
|
|
|
+ emailParseInfoDO.setEmailContent(emailInfo.getEmailContent());
|
|
emailParseInfoDO.setParseStatus(EmailParseStatusConst.SUCCESS);
|
|
emailParseInfoDO.setParseStatus(EmailParseStatusConst.SUCCESS);
|
|
emailParseInfoDO.setAttrSize(totalSize);
|
|
emailParseInfoDO.setAttrSize(totalSize);
|
|
emailParseInfoDO.setIsvalid(1);
|
|
emailParseInfoDO.setIsvalid(1);
|
|
@@ -1198,7 +1202,7 @@ public class EmailParseService {
|
|
if (log.isDebugEnabled()) {
|
|
if (log.isDebugEnabled()) {
|
|
log.debug("邮件{} 获取的正文不做解析,内容是 {}", subject, bodyPartContent);
|
|
log.debug("邮件{} 获取的正文不做解析,内容是 {}", subject, bodyPartContent);
|
|
}
|
|
}
|
|
- if (StrUtil.startWithIgnoreCase(bodyPart.getContentType(), MediaType.TEXT_PLAIN_VALUE)) {
|
|
|
|
|
|
+ if (StrUtil.startWithIgnoreCase(bodyPart.getContentType(), MediaType.TEXT_HTML_VALUE)) {
|
|
contents[0] = bodyPartContent.toString();
|
|
contents[0] = bodyPartContent.toString();
|
|
}
|
|
}
|
|
continue;
|
|
continue;
|