Browse Source

2025.02.24 邮件自动提醒优化

java8
yuejiayang 11 months ago
parent
commit
fb6648c8e3
  1. 218
      src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java

218
src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java

@ -857,146 +857,69 @@ public class EamProjectServiceImpl implements EamProjectService {
**/
@Override
public void sendEmail() throws MessagingException, UnsupportedEncodingException {
// 创建数组用于存储定时任务所有待发送邮件的数据
List<ProofDocumentData> allUserSendEmailList;
// 调用存储过程拿到所有需要自动发送邮件通知的数据
allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2");
// 创建数组用于存储单个用户的所有待发送邮件的数据
List<ProofDocumentData> oneUserSendEmailList = null;
// 创建变量用于存储上一个用户名
// 从存储过程获取所有待发送邮件数据
List<ProofDocumentData> allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2");
List<ProofDocumentData> oneUserSendEmailList = new ArrayList<>();
String previousUsername = null;
//如果是周五
if (LocalDate.now().getDayOfWeek().equals(DayOfWeek.FRIDAY)) {
// 遍历allUserSendEmailList将相同用户名的数据放到oneUserSendEmailList数组中
DayOfWeek today = LocalDate.now().getDayOfWeek();
if (today.equals(DayOfWeek.FRIDAY)) {
for (ProofDocumentData data : allUserSendEmailList) {
if (data.getUsername() != null && !data.getUsername().equals("")) {
if (data.getUsername() != null && !data.getUsername().isEmpty()) {
if (!data.getUsername().equals(previousUsername)) {
// 如果oneUserSendEmailList不为空说明上一个用户的数据已经遍历完毕需要发送邮件
if (oneUserSendEmailList != null && !oneUserSendEmailList.isEmpty() && oneUserSendEmailList.get(0).getEmail() != null && !oneUserSendEmailList.get(0).getEmail().equals("")) {
// 调用发送邮件方法
if (!oneUserSendEmailList.isEmpty() && isValidEmail(oneUserSendEmailList.get(0))) {
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList);
} else {
// 如果oneUserSendEmailList为空说明是第一次遍历需要初始化
oneUserSendEmailList = new ArrayList<>();
}
// 如果当前用户名与上一个用户名不同需要重新给previousUsername赋值同时清空oneUserSendEmailList数组重新添加新的username的数据
previousUsername = data.getUsername();
oneUserSendEmailList.clear();
oneUserSendEmailList.add(data);
} else {
// 如果当前用户名与上一个用户名相同直接添加到oneUserSendEmailList数组中
oneUserSendEmailList.add(data);
}
}
}
// 遍历完毕后需要判断oneUserSendEmailList是否为空如果不为空说明最后一个用户的数据还未发送邮件
if (oneUserSendEmailList != null && oneUserSendEmailList.get(0).getEmail() != null && !oneUserSendEmailList.get(0).getEmail().equals("")) {
// 调用发送邮件方法
if (!oneUserSendEmailList.isEmpty() && isValidEmail(oneUserSendEmailList.get(0))) {
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList);
}
}
// 如果是周一到周四
if (LocalDate.now().getDayOfWeek().equals(DayOfWeek.MONDAY) || LocalDate.now().getDayOfWeek().equals(DayOfWeek.TUESDAY) || LocalDate.now().getDayOfWeek().equals(DayOfWeek.WEDNESDAY) || LocalDate.now().getDayOfWeek().equals(DayOfWeek.THURSDAY)) {
// 周一到周四处理逻辑
if (today.equals(DayOfWeek.MONDAY) || today.equals(DayOfWeek.TUESDAY) ||
today.equals(DayOfWeek.WEDNESDAY) || today.equals(DayOfWeek.THURSDAY)) {
for (ProofDocumentData data : allUserSendEmailList) {
// 拿到allUserSendEmailList中emailInfoType=1并且dueData还有2天以及超过dueData的数据
if (data.getEmailInfoType() == 1 || data.getEmailInfoType() == 2) {
if (data.getDueDate().getTime() - new Date().getTime() <= 2 * 24 * 60 * 60 * 1000 || data.getDueDate().getTime() - new Date().getTime() >= 0) {
if (data.getUsername() != null && !data.getUsername().equals("")) {
if (!data.getUsername().equals(previousUsername)) {
// 如果oneUserSendEmailList不为空说明上一个用户的数据已经遍历完毕需要发送邮件
if (oneUserSendEmailList != null && !oneUserSendEmailList.isEmpty() && oneUserSendEmailList.get(0).getEmail() != null && !oneUserSendEmailList.get(0).getEmail().equals("")) {
// 调用发送邮件方法
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList);
} else {
// 如果oneUserSendEmailList为空说明是第一次遍历需要初始化
oneUserSendEmailList = new ArrayList<>();
}
// 如果当前用户名与上一个用户名不同需要重新给previousUsername赋值同时清空oneUserSendEmailList数组重新添加新的username的数据
previousUsername = data.getUsername();
oneUserSendEmailList.clear();
oneUserSendEmailList.add(data);
} else {
// 如果当前用户名与上一个用户名相同直接添加到oneUserSendEmailList数组中
oneUserSendEmailList.add(data);
}
// 使用 || 保持原来的判断逻辑
if ((data.getEmailInfoType() == 1 || data.getEmailInfoType() == 2)
&& data.getDueDate() != null
&& (data.getDueDate().getTime() - new Date().getTime() <= 2 * 24 * 60 * 60 * 1000
|| data.getDueDate().getTime() - new Date().getTime() >= 0)
&& data.getUsername() != null && !data.getUsername().isEmpty()) {
if (!data.getUsername().equals(previousUsername)) {
if (!oneUserSendEmailList.isEmpty() && isValidEmail(oneUserSendEmailList.get(0))) {
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList);
} else {
oneUserSendEmailList = new ArrayList<>();
}
previousUsername = data.getUsername();
oneUserSendEmailList.clear();
oneUserSendEmailList.add(data);
} else {
oneUserSendEmailList.add(data);
}
}
}
// 遍历完毕后需要判断oneUserSendEmailList是否为空如果不为空说明最后一个用户的数据还未发送邮件
if (oneUserSendEmailList != null && oneUserSendEmailList.get(0).getEmail() != null && !oneUserSendEmailList.get(0).getEmail().equals("")) {
// 调用发送邮件方法
if (!oneUserSendEmailList.isEmpty() && isValidEmail(oneUserSendEmailList.get(0))) {
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList);
}
}
// if (data.getProofingId() == -1){
// massProductionDocumentUserSendEmailList.add(data);
// } else if (data.getProofingId() == 0) {
// confirmUserSendEmailList.add(data);
// } else {
// if (data.getUploadedFlag().equals("N")){
// proofingDocumentUserSendEmailList.add(data);
// } else {
// proofingUserSendEmailList.add(data);
// }
// }
// EamProjectPartInfoData eamProjectPartInfoData = new EamProjectPartInfoData();
// eamProjectPartInfoData.setUserName("admin");
// eamProjectPartInfoData.setPage(1);
// eamProjectPartInfoData.setLimit(-1);
// PageUtils pageUtils = this.eamProjectPartSearch(eamProjectPartInfoData);
// List<EamProjectPartInfoData> list = (List<EamProjectPartInfoData>) pageUtils.getList();
// // 遍历list的projectId给Map
// for (EamProjectPartInfoData data : list) {
// if (data.getStatus().equals("进行中")) {
// ProofDocumentData proofDocumentData = new ProofDocumentData();
// proofDocumentData.setSite(data.getSite());
// proofDocumentData.setProjectId(data.getProjectId());
// proofDocumentData.setProjectPartId(data.getProjectPartId());
// proofDocumentData.setProofingId(-999);
// proofDocumentData.setPage(1);
// proofDocumentData.setLimit(-1);
// // 查询所有文档
// List<ProofDocumentData> allDocumentlist = this.searchProjectAllDocumentTask(proofDocumentData);
// // 遍历所有文档判断是否有未确认的文档
// for (ProofDocumentData allDocumentData : allDocumentlist) {
// allDocumentData.setProjectPartId(data.getProjectPartId());
// if (allDocumentData.getUploadedFlag().equals("N")) {
// // 发送邮件
// this.warnSendMailHandle(allDocumentData);
// }
// }
// ProofingInformationData proofingInformationData = new ProofingInformationData();
// proofingInformationData.setSite(data.getSite());
// proofingInformationData.setProjectId(data.getProjectId());
// proofingInformationData.setProjectPartId(data.getProjectPartId());
// proofingInformationData.setPage(1);
// proofingInformationData.setLimit(-1);
// PageUtils proofingInfoPageUtils = proofingInformationService.proofingInformationSearch(proofingInformationData);
// List<ProofingInformationData> proofingInfoList = (List<ProofingInformationData>) proofingInfoPageUtils.getList();
// if (proofingInfoList != null && !proofingInfoList.isEmpty()) {
// // 遍历打样单判断是否有打样单需要提醒
// for (ProofingInformationData proofingInfo : proofingInfoList) {
// Date requiredDeliveryDate = proofingInfo.getRequiredDeliveryDate();
// Date now = new Date();
// // 判断requiredDeliveryDate - now.getTime()是否<=2天
// if (requiredDeliveryDate.getTime() - now.getTime() <= 2 * 24 * 60 * 60 * 1000) {
// // 发送邮件
// this.proofingSendMailHandle(proofingInfo);
// }
// }
// }
// }
// }
}
}
private boolean isValidEmail(ProofDocumentData data) {
return data.getEmail() != null && !data.getEmail().isEmpty();
}
/**
* @Description 发送邮件给单个用户发送邮件内容为该用户的所有待处理数据 每个用户的邮件内容不同数据中部分信息的不同都有不同的排列方式所以需要单独处理
@ -1339,75 +1262,4 @@ public class EamProjectServiceImpl implements EamProjectService {
mailRecord.setRecipient(emailAddress.get(0).getEmail());
qcMapper.saveSendMailRecord(mailRecord);
}
// private void proofingSendMailHandle(ProofingInformationData proofingInfo) throws MessagingException, UnsupportedEncodingException {
// long l = proofingInfo.getRequiredDeliveryDate().getTime() - new Date().getTime();
// double days = (double)l / 86400000;// 1000 * 60 * 60 * 24 = 86400000 = 1天
// int day;
// if (days > 1 && days <= 2) {
// day = 2;
// } else if (days > 0 && days <= 1) {
// day = 1;
// } else {
// day =(int) (l / 86400000);
// }
// EamProjectPartInfoData emailAddress = EamProjectMapper.queryEmailByCreateUser(proofingInfo);
// if (emailAddress != null) {
// StringBuilder s = new StringBuilder();
// s.append("<ol>");
// if (day < 0){
// s.append("<li>项目编码:").append(proofingInfo.getProjectNo() + "<br></br>");
// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单已超过预计完成日期" + Math.abs(day) + "天,请尽快完成!</li>");
// }else if (day == 0) {
// s.append("<li>项目编码:").append(proofingInfo.getProjectNo() + "<br></br>");
// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单已到预计完成日期,请尽快完成!</li>");
// }
// else {
// s.append("<li>项目编码:").append(proofingInfo.getProjectNo() + "<br></br>");
// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单距离预计完成日期还有" + day + "天").append(" 请及时完成!</li>");
// }
// s.append("</ol>");
// //设置邮件内容
// String text = "<!DOCTYPE>" +
// "<div>" +
// s +
// "</div>";
// //发送邮件
// JavaMailSenderImpl sender = new JavaMailSenderImpl();
// MailSendAddressData mailSendData = qcMapper.getSendMailFromAddress();
// sender.setHost(mailSendData.getHost());
// sender.setPort(mailSendData.getPort());
// sender.setUsername(mailSendData.getUsername());
// sender.setPassword(mailSendData.getPassword());
// sender.setDefaultEncoding("Utf-8");
// Properties p = new Properties();
// p.setProperty("mail.smtp.timeout", mailSendData.getTimeout());
// p.setProperty("mail.smtp.auth", "false");
// p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// sender.setJavaMailProperties(p);
// MimeMessage mimeMessage = sender.createMimeMessage();
// // 设置utf-8或GBK编码否则邮件会有乱码
// MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
// messageHelper.setFrom(mailSendData.getEmailForm(), mailSendData.getPersonal());
// messageHelper.setTo(emailAddress.getEmail());
// messageHelper.setSubject("有打样单需尽快完成!"); //标题
// messageHelper.setText(text, true);
// sender.send(mimeMessage);
// logger.info("打样单判断预计完成日期邮件已发送!收件箱地址:" + emailAddress.getEmail());
//
// // 保存邮件记录
// SendMailRecord mailRecord = new SendMailRecord();
// mailRecord.setSite(proofingInfo.getSite());
// mailRecord.setBuNo(proofingInfo.getBuNo());
// mailRecord.setDocumentNo(proofingInfo.getProjectNo());
// mailRecord.setSender("admin");
// mailRecord.setRecipient(emailAddress.getEmail());
// qcMapper.saveSendMailRecord(mailRecord);
// }
// }
//
// public List<ProofDocumentData> searchProjectAllDocumentTask(ProofDocumentData data) {
// // 调用Mapper接口方法执行存储过程
// return EamProjectMapper.searchProjectAllDocumentTask(data.getSite(), data.getProjectId(), data.getProjectPartId(), data.getProofingId());
// }
}
Loading…
Cancel
Save