|
@@ -20,6 +20,7 @@ import com.simuwang.base.pojo.dto.EmailContentInfoDTO;
|
|
import com.simuwang.base.pojo.dto.EmailFundNavDTO;
|
|
import com.simuwang.base.pojo.dto.EmailFundNavDTO;
|
|
import com.simuwang.base.pojo.dto.EmailInfoDTO;
|
|
import com.simuwang.base.pojo.dto.EmailInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
|
|
+import com.simuwang.base.pojo.vo.EmailVO;
|
|
import com.simuwang.shiro.utils.UserUtils;
|
|
import com.simuwang.shiro.utils.UserUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -211,6 +212,46 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void batchReparse(EmailVO emailVO) {
|
|
|
|
+ // 查询邮件信息
|
|
|
|
+ List<EmailParseInfoDO> emailParseInfoDOList = emailParseInfoMapper.queryByEmail(emailVO.getEmail());
|
|
|
|
+ for (EmailParseInfoDO emailParseInfoDO : emailParseInfoDOList) {
|
|
|
|
+ Integer emailId = emailParseInfoDO.getId();
|
|
|
|
+ List<EmailFileInfoDO> emailFileInfoDOList = emailFileInfoMapper.queryByEmailId(emailId);
|
|
|
|
+ if (CollUtil.isEmpty(emailFileInfoDOList)) {
|
|
|
|
+ log.info("该邮件不存在附件 -> 邮件id:{}", emailId);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ // 邮件字段识别映射表
|
|
|
|
+ Map<String, List<String>> emailFieldMap = emailParseService.getEmailFieldMapping();
|
|
|
|
+ // 邮件类型配置
|
|
|
|
+ Map<Integer, List<String>> emailTypeMap = emailParseService.getEmailType();
|
|
|
|
+
|
|
|
|
+ // 解析流程
|
|
|
|
+ List<EmailContentInfoDTO> emailContentInfoDTOList = buildEmailContentInfoDTO(emailId, emailParseInfoDO, emailFileInfoDOList, emailTypeMap);
|
|
|
|
+
|
|
|
|
+ List<EmailFundNavDTO> emailFundNavDTOList = CollUtil.newArrayList();
|
|
|
|
+ Map<EmailContentInfoDTO, List<EmailFundNavDTO>> fileNameNavMap = MapUtil.newHashMap();
|
|
|
|
+
|
|
|
|
+ //获取全部的托管邮箱信息
|
|
|
|
+ List<String> hostedEmailList = hostedEmailInfoMapper.getAllHostedEmail();
|
|
|
|
+ asyncExecutor.execute(() -> {
|
|
|
|
+ for (EmailContentInfoDTO emailContentInfoDTO : emailContentInfoDTOList) {
|
|
|
|
+ try {
|
|
|
|
+ List<EmailFundNavDTO> fundNavDTOList = emailParseService.parseEmail(emailContentInfoDTO, emailFieldMap);
|
|
|
|
+ fileNameNavMap.put(emailContentInfoDTO, fundNavDTOList);
|
|
|
|
+ emailFundNavDTOList.addAll(fundNavDTOList);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("重新解析邮件失败,邮件id:{},堆栈信息:{}", emailId, ExceptionUtil.stacktraceToString(e));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 保存相关信息 -> 邮件信息表,邮件文件表,邮件净值表,邮件规模表,基金净值表
|
|
|
|
+ emailParseService.saveRelatedTable(emailParseInfoDO.getEmail(), emailContentInfoDTOList, fileNameNavMap,hostedEmailList);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private EmailContentInfoDTO buildEmailContentInfoDTO(EmailInfoDTO emailInfoDTO) {
|
|
private EmailContentInfoDTO buildEmailContentInfoDTO(EmailInfoDTO emailInfoDTO) {
|
|
String emailDate = DateUtil.format(emailInfoDTO.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS);
|
|
String emailDate = DateUtil.format(emailInfoDTO.getEmailDate(), DateConst.YYYY_MM_DD_HH_MM_SS);
|
|
String parseDate = DateUtil.format(new Date(), DateConst.YYYY_MM_DD_HH_MM_SS);
|
|
String parseDate = DateUtil.format(new Date(), DateConst.YYYY_MM_DD_HH_MM_SS);
|