zelong.shao

task|预警邮件提醒

Showing 19 changed files with 554 additions and 39 deletions
......@@ -29,13 +29,15 @@ public interface ParamConfigConstants {
String PUSH_IMP001_RETRY_NUMBER = "push_imp001_retry_number";
//推送进口文件定时任务处理数量
String PUSH_CON_NUMBER = "push_con_number";
//通知发件人定时任务处理数量
String NOTIFICATION_SENDER_NUMBER = "notification_sender_number";
//通知发件人邮件定时任务处理数量
String NOTIFICATION_SENDER_EMAIL_NUMBER = "notification_sender_email_number";
//邮件发送进口文件时间间隔key
String PUSH_CON_EMAIL_INTERVAL = "push_con_email_interval";
//通知发件人时间间隔
String NOTIFICATION_SENDER_EMAIL_INTERVAL = "notification_sender_email_interval";
//预警邮件任务时间间隔
String SEND_FAIL_ALERT_INTERVAL = "send_fail_alert_interval";
//错误邮件预警任务显示运单数量
String FAILED_EMAIL_CON_NUMBER = "failed_email_con_number";
}
}
......
package com.fedex.connect.common.dependencies.enums.biz;
import java.util.Arrays;
import java.util.List;
/**
* @Author mt
* @Description 邮件推送类型
* @Date 2024/11/19
*/
public enum EmailTypeEnum {
PUSH_CON_FILE("emailType_01","pushConFile","推送预清关文件"),
PUSH_CON_FILE("emailType_01","Push Pre-Customs Clearance Files","推送预清关文件"),
NOTIFICATION_SENDER("emailType_02","notificationSender","提醒发件人"),
SEND_FAILED_EMAIL("emailType_03","sendFailedEmail","错误邮件预警"),
;
......@@ -21,6 +25,21 @@ public enum EmailTypeEnum {
this.msg = msg;
}
// 获取所有需要错误预警的code
public static List<String> getFailedAlertCodes() {
return Arrays.asList(PUSH_CON_FILE.getCode(),NOTIFICATION_SENDER.getCode());
}
// 获取 enMsg 根据 code
public static String getEnMsgByCode(String code) {
for (EmailTypeEnum emailType : EmailTypeEnum.values()) {
if (emailType.code.equals(code)) {
return emailType.enMsg;
}
}
return null; // 如果找不到对应的 code,返回 null
}
public String getCode() {
return code;
}
......
......@@ -13,7 +13,13 @@ public class ClearanceEmailTemplate implements EmailTemplate {
public String getTitle(Object ... arguments) {
return MessageFormat.format(CLEARANCE_TITLE.TITLE,arguments);
}
/**
* 邮件说明
*/
@Override
public String getDescription(Object... arguments) {
return null;
}
/**
* 模板内容
*/
......
......@@ -3,4 +3,5 @@ package com.fedex.connect.common.dependencies.template.clearanceEmail;
public interface EmailTemplate {
String getTitle(Object ... arguments);
String getBody(Object ... arguments);
String getDescription(Object... arguments);
}
......
package com.fedex.connect.common.dependencies.template.clearanceEmail;
import org.springframework.stereotype.Component;
import java.text.MessageFormat;
@Component
public class SendFailedEmailTemplate implements EmailTemplate {
/**
* 模板标题格式化返回内容
*/
@Override
public String getTitle(Object ... arguments) {
return MessageFormat.format(FAILED_EMAIL_TITLE.TITLE,arguments);
}
/**
* 模板内容
*/
@Override
public String getBody(Object ... arguments) {
return FAILED_EMAIL_BODY.TABLE;
}
/**
* 邮件说明
*/
@Override
public String getDescription(Object... arguments) {
return MessageFormat.format(FAILED_EMAIL_BODY.DESCRIPTION,arguments);
}
interface FAILED_EMAIL_TITLE{
String TITLE = "失败预警";
}
interface FAILED_EMAIL_BODY{
String DESCRIPTION = "<p>1.【文件推送】任务,系统启动后每{0}分钟轮巡一次。</p>\n" +
" <p>2.【推送预清关文件】任务,系统启动后每{1}分钟轮巡一次。</p>\n" +
" <p>3.【提醒发件人】任务,系统启动后每{2}分钟轮巡一次。</p>\n" +
" <p>备注:邮件发送机制:</p>\n" +
" <p>该预警邮件任务,系统启动后每{3}分钟执行一次,当日上述3个定时任务,有任何一个任务的最终判定为失败的记录数量大于{4},则自动发送邮件通知FedEX IT,每个接口显示最新{5}条失败运单号、当日调用总次数、当日调用失败总次数。</p>\n" +
" <p style=\"font-size:10px;\">(注:所有任务相关的数字均可以在系统配置界面调整)</p>";
String TABLE = "<table style=\"width: 100%;table-layout: fixed;padding: 20px;width: 100%;border-collapse: collapse;\">\n" +
"<tr>\n" +
"<td style=\"border: 0px;text-align: left;padding: 8px;\">\n" +
"<div style=\"margin: auto;padding: 20px;\">\n" +
"<h2 style=\"text-align: center;\">接口调用失败详情</h2>\n" +
"<table style=\"width: 100%;border-collapse: collapse;\">\n" +
"<tr>\n" +
"<th style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;background-color: #593BB7;color: white;\">任务名称</th>\n" +
"<th style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;background-color: #593BB7;color: white;\">失败的运单号</th>\n" +
"<th style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;background-color: #593BB7;color: white;\">总数</th>\n" +
"<th style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;background-color: #593BB7;color: white;\">失败数量</th>\n" +
"</tr>\n" +
"{0}\n" +
"</table>\n" +
"<div style=\"color:#808080;font-style:Arial;font-size:14px;margin: auto;margin-bottom: 5px;\">\n" +
"{1}\n" +
"</div>\n" +
"</div>\n" +
"</td>\n" +
"</tr>\n" +
"</table>";
}
}
package com.fedex.connect.task.data.dto;
import lombok.Data;
import java.util.List;
/**
* @Author Szl
* @Description 类说明 发送预警邮件dto
* @Date 2024/11/21
*/
@Data
public class SendFailedEmailDto {
private String typeCode;
private long statusCodeCount;
private List<String> bizCodes;
private long totalCount;
public SendFailedEmailDto(String typeCode, long statusCodeCount, List<String> latestBizCodes, long totalCount) {
this.typeCode = typeCode;
this.statusCodeCount = statusCodeCount;
this.bizCodes = latestBizCodes;
this.totalCount = totalCount;
}
}
......@@ -3,25 +3,55 @@ package com.fedex.connect.task.job;
import com.fedex.connect.common.dependencies.contants.ParamConfigConstants;
import com.fedex.connect.task.annotation.ProcessingInterval;
import com.fedex.connect.task.service.biz.IDuplicateConsignmentEmailService;
import com.fedex.connect.task.service.biz.IPushConsignmentFileService;
import com.fedex.connect.task.service.sys.ISendFailedEmailAlertService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @Author Szl
* @Description 类说明 发邮件通知到该运单所属用户,告知运单已被其他用户创建上传
* @Date 2024/11/20
*/
@Component
public class DuplicateConsignmentEmailJob {
public class EmailJob {
@Autowired
private IDuplicateConsignmentEmailService duplicateConsignmentEmailService;
@Autowired
private IPushConsignmentFileService pushConsignmentFileService;
@Autowired
private ISendFailedEmailAlertService sendWarningEmail;
/**
* @Author Szl
* @Description 功能说明 提醒发件人
* @Date 2024/11/21
* @param
* @return void
*/
@ProcessingInterval(paramCode = ParamConfigConstants.TASK_PARAM_KEYS.NOTIFICATION_SENDER_EMAIL_INTERVAL)
@Scheduled(cron = "${export.task.allocation.sendOb}")
public void pushConsignmentFileTask() {
public void notificationSenderTask() {
duplicateConsignmentEmailService.duplicateConsignmentEmail();
}
/**
* @Author Szl
* @Description 功能说明 推送清关文件
* @Date 2024/11/21
* @param
* @return void
*/
@ProcessingInterval(paramCode = ParamConfigConstants.TASK_PARAM_KEYS.PUSH_CON_EMAIL_INTERVAL)
@Scheduled(cron = "${export.task.allocation.sendOb}")
public void pushConsignmentFileTask() {
pushConsignmentFileService.pushConsignmentFileTask();
}
/**
* 发送失败邮件提醒
*/
@ProcessingInterval(paramCode = ParamConfigConstants.TASK_PARAM_KEYS.SEND_FAIL_ALERT_INTERVAL)
@Scheduled(cron = "${export.task.allocation.warningEmail}")
public void sendingFailedEmailAlert() {
sendWarningEmail.sendFailedEmail();
}
}
......
package com.fedex.connect.task.job;
import com.fedex.connect.common.dependencies.contants.ParamConfigConstants;
import com.fedex.connect.task.annotation.ProcessingInterval;
import com.fedex.connect.task.service.biz.IPushConsignmentFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @Author Szl
* @Description 类说明 异步任务发送邮件到预清关组
* @Date 2024/11/7
*/
@Component
public class PushConsignmentFileEmailJob {
@Autowired
private IPushConsignmentFileService pushConsignmentFileService;
@ProcessingInterval(paramCode = ParamConfigConstants.TASK_PARAM_KEYS.PUSH_CON_EMAIL_INTERVAL)
@Scheduled(cron = "${export.task.allocation.sendOb}")
public void pushConsignmentFileTask() {
pushConsignmentFileService.pushConsignmentFileTask();
}
}
......@@ -36,5 +36,7 @@ public class AbstractDaoRepository {
@Autowired
protected ParamConfigMapper paramConfigMapper;
@Autowired
protected ParamConfigExtMapper paramConfigExtMapper;
@Autowired
protected ConsignmentMapper consignmentMapper;
}
\ No newline at end of file
......
......@@ -4,6 +4,7 @@ import com.fedex.connect.common.model.biz.Email;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
......@@ -13,4 +14,12 @@ public interface EmailExtMapper {
@Delete("DELETE FROM T_BIZ_EMAIL WHERE ID = #{id}")
void deleteById(@Param("id") Long id);
@Select("<script>" +
"SELECT * " +
"FROM T_BIZ_EMAIL " +
"WHERE MODIFY_TIME &gt;= #{modifyTime}" +
"</script>")
List<Email> findEmailsByModifyTime(@Param("modifyTime") String modifyTime);
}
......
......@@ -25,4 +25,11 @@ public interface PushObMapperExt {
"AND TRUNC(CREATE_TIME) = TRUNC(TO_DATE(#{date,jdbcType=VARCHAR}, 'YYYY-MM-DD'))" +
"</script>")
Integer findErrPushForEmail(@Param("pushNum") Long pushNum, @Param("statusCode") String statusCode, @Param("date") String date);
@Select("<script>" +
"SELECT * " +
"FROM T_BIZ_EMAIL " +
"WHERE MODIFY_TIME &gt;= #{modifyTime}" +
"</script>")
List<PushOb> findPushObByModifyTime(@Param("modifyTime") String modifyTime);
}
\ No newline at end of file
......
......@@ -10,4 +10,6 @@ public interface IEmailRepository {
void deleteById(Long id);
void saveOrUpdate(Email entity);
List<Email> findEmailsByModifyTime(String modifyTime);
}
......
package com.fedex.connect.task.repository.repo.biz;
import com.fedex.connect.common.model.biz.PushOb;
import java.util.List;
public interface IPushObRepository {
......@@ -45,4 +46,6 @@ public interface IPushObRepository {
List<PushOb> findErrPushOb(Long pushNum,String statusCode,Long rownum);
Integer findErrPushForEmail(Long pushNum,String statusCode,String date);
List<PushOb> findPushObByModifyTime(String modifyTime);
}
......
......@@ -34,4 +34,9 @@ public class EmailRepositoryImpl extends AbstractDaoRepository implements IEmail
}
}
@Override
public List<Email> findEmailsByModifyTime(String modifyTime) {
return emailExtMapper.findEmailsByModifyTime(modifyTime);
}
}
......
......@@ -62,4 +62,9 @@ public class PushObRepositoryImpl extends AbstractDaoRepository implements IPush
public Integer findErrPushForEmail(Long pushNum, String statusCode, String date) {
return pushObMapperExt.findErrPushForEmail(pushNum,statusCode,date);
}
@Override
public List<PushOb> findPushObByModifyTime(String modifyTime) {
return pushObMapperExt.findPushObByModifyTime(modifyTime);
}
}
......
......@@ -37,7 +37,7 @@ public class DuplicateConsignmentEmailServiceImpl extends BaseService implements
/**
* 查询邮件发送日志表中状态为待推送且类型为“提醒发件人”的数据
*/
List<Email> emails = iEmailExtRepository.findEmailsByDic(cacheSystem.getDicEmailType(EmailTypeEnum.NOTIFICATION_SENDER.getEnMsg()).getCode(),
List<Email> emails = iEmailExtRepository.findEmailsByDic(cacheSystem.getDicEmailType(EmailTypeEnum.NOTIFICATION_SENDER.getCode()).getCode(),
cacheSystem.getDicEmailStatus(EmailStatusEnum.PENDING.getEnMsg()).getCode(), ParamConfigConstants.TASK_PARAM_KEYS.NOTIFICATION_SENDER_EMAIL_NUMBER);
/**
* 发送邮件
......
package com.fedex.connect.task.service.sys;
public interface ISendFailedEmailAlertService {
void sendFailedEmail();
}
package com.fedex.connect.task.service.sys.impl;
import com.fedex.connect.common.dependencies.util.DateUtil;
import com.fedex.connect.common.model.biz.Email;
import com.fedex.connect.common.model.biz.PushOb;
import com.fedex.connect.common.model.sys.ParamConfig;
import com.fedex.connect.task.data.dto.MailConfigDto;
import com.fedex.connect.task.data.dto.SendFailedEmailDto;
import com.fedex.connect.task.service.base.BaseService;
import com.fedex.connect.task.service.sys.ISendFailedEmailAlertService;
import com.fedex.connect.task.utils.sys.EmailUtil;
import com.fedex.connect.task.utils.sys.SendFailedEmailUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
public class SendFailedEmailAlertServiceImpl extends BaseService implements ISendFailedEmailAlertService {
@Autowired
private SendFailedEmailUtil sendFailedEmailUtil;
@Autowired
private EmailUtil emailUtil;
/**
* @Author Szl
* @Description 功能说明 推送错误预警邮件
* @Date 2024/11/21
* @param
* @return void
*/
@Override
public void sendFailedEmail() {
/**
* 获取配置信息
*/
Map<String, ParamConfig> paramConfigMap = sendFailedEmailUtil.getParam();
/**
* 查询需要发送邮件的记录
*/
String date = DateUtil.format(new Date());
List<Email> emails = sendFailedEmailUtil.getEmails(date);
/**
* 查询推送文件集合
*/
List<PushOb> obs= sendFailedEmailUtil.getOb(date);
/**
* 处理邮件集合,过滤需要发送邮件的数据
*/
List<SendFailedEmailDto> sendFailedEmailDto = sendFailedEmailUtil.createSendFailedEmailDto(emails,obs,paramConfigMap);
/**
* 构建邮件内容
*/
String emailBody = sendFailedEmailUtil.createEmailBody(sendFailedEmailDto,paramConfigMap);
/**
* 构建发送邮件dto
*/
MailConfigDto mailConfigDto = sendFailedEmailUtil.createMailConfigDto(emailBody);
/**
* 发送邮件
*/
boolean result = emailUtil.sendMail(mailConfigDto);
try {
/**
* 保存邮件记录
*/
sendFailedEmailUtil.saveEmail(result,mailConfigDto);
}catch (Exception e){
log.error("保存邮件记录失败",e);
}
}
}
package com.fedex.connect.task.utils.sys;
import com.fedex.connect.common.dependencies.contants.DigitConstants;
import com.fedex.connect.common.dependencies.contants.ParamConfigConstants;
import com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum;
import com.fedex.connect.common.dependencies.enums.biz.EmailTypeEnum;
import com.fedex.connect.common.dependencies.enums.biz.PushObStatusEnum;
import com.fedex.connect.common.dependencies.template.clearanceEmail.SendFailedEmailTemplate;
import com.fedex.connect.common.dependencies.util.AssignmentFieldUtils;
import com.fedex.connect.common.model.biz.Email;
import com.fedex.connect.common.model.biz.PushOb;
import com.fedex.connect.common.model.log.EmailHistory;
import com.fedex.connect.common.model.sys.ParamConfig;
import com.fedex.connect.task.data.dto.MailConfigDto;
import com.fedex.connect.task.data.dto.SendFailedEmailDto;
import com.fedex.connect.task.repository.repo.biz.IEmailRepository;
import com.fedex.connect.task.repository.repo.biz.IPushObRepository;
import com.fedex.connect.task.repository.repo.log.IEmailHistoryRepository;
import com.fedex.connect.task.repository.repo.sys.IParamConfigRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class SendFailedEmailUtil {
@Autowired
private IEmailRepository emailRepository;
@Autowired
private SendFailedEmailTemplate sendFailedEmailTemplate;
@Autowired
protected IParamConfigRepository paramConfigRepository;
@Autowired
protected IEmailHistoryRepository emailHistoryRepository;
@Autowired
protected IPushObRepository pushObRepository;
/**
* @Author Szl
* @Description 功能说明 查询当日Email
* @Date 2024/11/21
* @param
* @return java.util.List<com.fedex.connect.common.model.biz.Email>
*/
public List<Email> getEmails(String date){
return emailRepository.findEmailsByModifyTime(date);
}
/**
* 查询当日ob记录
* @param date
* @return
*/
public List<PushOb> getOb(String date){
return pushObRepository.findPushObByModifyTime(date);
}
/**
* @Author Szl
* @Description 功能说明 统计每种类型的邮件总数与错误总数
* @Date 2024/11/21
* @param emails
* @return java.util.List<com.fedex.connect.task.data.dto.SendFailedEmailDto>
*/
public List<SendFailedEmailDto> createSendFailedEmailDto(List<Email> emails,List<PushOb> obs,Map<String, ParamConfig> paramConfig){
List<SendFailedEmailDto> emailDto = this.getEmailDto(emails,paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.FAILED_EMAIL_CON_NUMBER).getValue());
if (!CollectionUtils.isEmpty(obs)){
SendFailedEmailDto obDto = this.getObDto(obs,paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.FAILED_EMAIL_CON_NUMBER).getValue());
emailDto.add(obDto);
}
return emailDto;
}
private SendFailedEmailDto getObDto(List<PushOb> obs,String size){
// 获取总数
long totalCount = obs.size();
// 获取 STATUS_CODE 为 pushObStatus_03 的数量
long statusCodeCount = obs.stream()
.filter(pushOb -> PushObStatusEnum.PUSH_FAILED.getCode().equals(pushOb.getStatusCode()))
.count();
// 获取前 10 条 CONSIGNMENT_CODE
List<String> latestConsignmentCodes = obs.stream()
.sorted(Comparator.comparing(PushOb::getModifyTime).reversed()) // 按 MODIFY_TIME 降序排序
.limit(Long.parseLong(size)) // 取前 10 条
.map(PushOb::getConsignmentCode) // 获取 CONSIGNMENT_CODE
.collect(Collectors.toList());
return new SendFailedEmailDto("ob",statusCodeCount,latestConsignmentCodes,totalCount);
}
/**
* @Author Szl
* @Description 功能说明 获取Email的失败数量dto
* @Date 2024/11/21
* @param emails
* @return java.util.List<com.fedex.connect.task.data.dto.SendFailedEmailDto>
*/
private List<SendFailedEmailDto> getEmailDto(List<Email> emails,String size){
// 定义所有可能的 TYPE_CODE
List<String> allTypeCodes = EmailTypeEnum.getFailedAlertCodes();
// 按 TYPE_CODE 分组
Map<String, List<Email>> groupedEmails = emails.stream()
.collect(Collectors.groupingBy(Email::getTypeCode));
// 处理每个 TYPE_CODE
List<SendFailedEmailDto> results = allTypeCodes.stream()
.map(typeCode -> {
List<Email> emailList = groupedEmails.getOrDefault(typeCode, Collections.emptyList());
// 1. 统计 STATUS_CODE 为 FAILED 的数量
long statusCodeCount = emailList.stream()
.filter(email -> EmailStatusEnum.FAILED.getCode().equals(email.getStatusCode()))
.count();
// 2. 获取 MODIFY_TIME 最晚的 10 个 BIZ_CODE
List<String> latestBizCodes = emailList.stream()
.sorted(Comparator.comparing(Email::getModifyTime).reversed())
.limit(Long.parseLong(size))
.map(Email::getBizCode)
.collect(Collectors.toList());
// 3. 统计 TYPE_CODE 的总数量
long totalCount = emailList.size();
return new SendFailedEmailDto(typeCode, statusCodeCount, latestBizCodes, totalCount);
})
.collect(Collectors.toList());
return results;
}
/**
* @Author Szl
* @Description 功能说明 构建邮件内容
* @Date 2024/11/21
* @param sendFailedEmailDto
* @return java.lang.String
*/
public String createEmailBody(List<SendFailedEmailDto> sendFailedEmailDto,Map<String, ParamConfig> paramConfig){
/**
* 邮件内容
*/
StringBuilder tableRows = new StringBuilder();
this.getTableRows(sendFailedEmailDto, tableRows);
/**
* 邮件备注
*/
StringBuffer remarks = new StringBuffer();
this.buildBottom(remarks,paramConfig);
/**
* 添加模板
*/
String body = sendFailedEmailTemplate.getBody(tableRows, remarks);
return body;
}
/**
* @Author Szl
* @Description 功能说明 构造表格行内容
* @Date 2024/11/21
* @param sendFailedEmailDto
* @param tableRows
* @return java.lang.StringBuilder
*/
private StringBuilder getTableRows(List<SendFailedEmailDto> sendFailedEmailDto,StringBuilder tableRows){
for (SendFailedEmailDto failedEmailDto : sendFailedEmailDto) {
tableRows.append("<tr>" +
"<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+EmailTypeEnum.getEnMsgByCode(failedEmailDto.getTypeCode())+"</td>" +
"<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getBizCodes() +"</td>" +
"<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getTotalCount() +"</td>" +
"<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getStatusCodeCount() +"</td>" +
"</tr>");
}
return tableRows;
}
/**
* @Author Szl
* @Description 功能说明 构建底部备注
* @Date 2024/11/21
* @param remarks
* @return void
*/
private void buildBottom(StringBuffer remarks,Map<String, ParamConfig> paramConfig){
remarks.append(sendFailedEmailTemplate.getDescription(
paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.PUSH_IMP001_INTERVAL).getValue(),
paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.PUSH_CON_EMAIL_INTERVAL).getValue(),
paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.NOTIFICATION_SENDER_EMAIL_INTERVAL).getValue(),
paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.SEND_FAIL_ALERT_INTERVAL).getValue(),
5,
paramConfig.get(ParamConfigConstants.TASK_PARAM_KEYS.FAILED_EMAIL_CON_NUMBER).getValue())
);
}
/**
* @Author Szl
* @Description 功能说明 构建邮件DTO
* @Date 2024/11/21
* @param body
* @return com.fedex.connect.task.data.dto.MailConfigDto
*/
public MailConfigDto createMailConfigDto(String body){
MailConfigDto mailConfigDto = new MailConfigDto();
mailConfigDto.setHost("");
mailConfigDto.setPort("");
mailConfigDto.setAuth("");
//设置代理
mailConfigDto.setProxyStartFlag("");
mailConfigDto.setProxyHost("");
mailConfigDto.setProxyPort("");
//发件人
mailConfigDto.setFrom("");
//发件人密码
mailConfigDto.setPassword("");
//ce接收人
mailConfigDto.setTo("");
//设置邮件标题
mailConfigDto.setSubject("");
//设置邮件内容
mailConfigDto.setContent(body);
return mailConfigDto;
}
/**
* @Author Szl
* @Description 功能说明 保存邮件记录
* @Date 2024/11/21
* @param result
* @param mailConfigDto
* @return void
*/
public void saveEmail(boolean result,MailConfigDto mailConfigDto) throws Exception{
EmailHistory email = new EmailHistory();
email.setToAddress(mailConfigDto.getTo());
email.setCcAddress(mailConfigDto.getCc());
email.setSubject(mailConfigDto.getSubject());
email.setBody(mailConfigDto.getContent());
email.setTypeCode(EmailTypeEnum.SEND_FAILED_EMAIL.getCode());
email.setTypeName(EmailTypeEnum.SEND_FAILED_EMAIL.getMsg());
if (result){
email.setStatusCode(EmailStatusEnum.SUCCESS.getCode());
email.setStatusName(EmailStatusEnum.SUCCESS.getMsg());
}else {
email.setStatusCode(EmailStatusEnum.FAILED.getCode());
email.setStatusName(EmailStatusEnum.FAILED.getMsg());
}
email.setSendNum(DigitConstants.DIGIT_ONE_LONG);
email.setSendTime(new Date());
AssignmentFieldUtils.assignmentTableBaseField(email);
emailHistoryRepository.saveOrUpdate(email);
}
/**
* 获取配置信息
* @return
*/
public Map<String, ParamConfig> getParam(){
/**
* 获取任务间隔信息
*/
return paramConfigRepository.findValueByCodes(ParamConfigConstants.TASK_PARAM_KEYS.PUSH_IMP001_INTERVAL,
ParamConfigConstants.TASK_PARAM_KEYS.PUSH_CON_EMAIL_INTERVAL,
ParamConfigConstants.TASK_PARAM_KEYS.NOTIFICATION_SENDER_EMAIL_INTERVAL,
ParamConfigConstants.TASK_PARAM_KEYS.SEND_FAIL_ALERT_INTERVAL,
ParamConfigConstants.TASK_PARAM_KEYS.FAILED_EMAIL_CON_NUMBER);
}
}