|
|
|
@ -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()); |
|
|
|
// } |
|
|
|
} |