|
@@ -186,6 +186,10 @@ public class EmailParseService {
|
|
Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
|
|
Integer fileId = saveEmailFileInfo(emailId, emailContentInfoDTO.getFileId(), fileName, emailContentInfoDTO.getFilePath(), parseDate);
|
|
|
|
|
|
List<EmailFundNavDTO> fundNavDTOList = fileNameNavEntry.getValue();
|
|
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)) {
|
|
if (CollUtil.isEmpty(fundNavDTOList) && !Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -206,14 +210,20 @@ public class EmailParseService {
|
|
}
|
|
}
|
|
|
|
|
|
// 更新邮件解析结果 -> 当【净值日期】和【备案编码/基金名称】能正常解读,即识别为【成功】
|
|
// 更新邮件解析结果 -> 当【净值日期】和【备案编码/基金名称】能正常解读,即识别为【成功】
|
|
- long successNavCount = fileNameNavMap.values().stream().flatMap(List::stream).filter(Objects::nonNull).count();
|
|
|
|
|
|
+ long successNavCount = fileNameNavMap.values().stream().flatMap(List::stream).filter(e -> e != null && StrUtil.isBlank(e.getFailReason())).count();
|
|
emailParseStatus = successNavCount >= 1 ? EmailParseStatusConst.SUCCESS : EmailParseStatusConst.FAIL;
|
|
emailParseStatus = successNavCount >= 1 ? EmailParseStatusConst.SUCCESS : EmailParseStatusConst.FAIL;
|
|
// 报告邮件有一条成功就表示整体成功
|
|
// 报告邮件有一条成功就表示整体成功
|
|
if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType) && CollUtil.isNotEmpty(dataList)) {
|
|
if (Objects.equals(EmailTypeConst.REPORT_EMAIL_TYPE, emailType) && CollUtil.isNotEmpty(dataList)) {
|
|
long count = dataList.size();
|
|
long count = dataList.size();
|
|
emailParseStatus = count >= 1 ? EmailParseStatusConst.SUCCESS : EmailParseStatusConst.FAIL;
|
|
emailParseStatus = count >= 1 ? EmailParseStatusConst.SUCCESS : EmailParseStatusConst.FAIL;
|
|
}
|
|
}
|
|
- emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus);
|
|
|
|
|
|
+ String failReason = null;
|
|
|
|
+ if (emailParseStatus == EmailParseStatusConst.FAIL) {
|
|
|
|
+ // 邮件解析失败时 -> 保存失败原因
|
|
|
|
+ failReason = fileNameNavMap.values().stream().flatMap(List::stream).
|
|
|
|
+ map(EmailFundNavDTO::getFailReason).distinct().collect(Collectors.joining("/"));
|
|
|
|
+ }
|
|
|
|
+ emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
|
|
}
|
|
}
|
|
|
|
|
|
private void saveValuationInfo(Integer fileId, List<EmailFundNavDTO> fundNavDTOList) {
|
|
private void saveValuationInfo(Integer fileId, List<EmailFundNavDTO> fundNavDTOList) {
|
|
@@ -730,7 +740,7 @@ public class EmailParseService {
|
|
}
|
|
}
|
|
|
|
|
|
public Map<String, List<String>> getEmailFieldMapping() {
|
|
public Map<String, List<String>> getEmailFieldMapping() {
|
|
- List<EmailFieldMappingDO> emailFieldMappingDOList = emailFieldMapper.getEmailFieldMapping();
|
|
|
|
|
|
+ List<EmailFieldMappingDO> emailFieldMappingDOList = emailFieldMapper.getEmailFieldMapping(1);
|
|
return emailFieldMappingDOList.stream()
|
|
return emailFieldMappingDOList.stream()
|
|
.collect(Collectors.toMap(EmailFieldMappingDO::getCode, v -> Arrays.stream(v.getName().split(",")).toList()));
|
|
.collect(Collectors.toMap(EmailFieldMappingDO::getCode, v -> Arrays.stream(v.getName().split(",")).toList()));
|
|
}
|
|
}
|