diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java index 7ef22ec4..98348fc9 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java +++ b/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 allUserSendEmailList; - // 调用存储过程拿到所有需要自动发送邮件通知的数据 - allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2"); - // 创建数组用于存储单个用户的所有待发送邮件的数据 - List oneUserSendEmailList = null; - // 创建变量用于存储上一个用户名 + // 从存储过程获取所有待发送邮件数据 + List allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2"); + List 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 list = (List) 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 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 proofingInfoList = (List) 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("
    "); -// if (day < 0){ -// s.append("
  1. 项目编码:").append(proofingInfo.getProjectNo() + "

    "); -// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单已超过预计完成日期" + Math.abs(day) + "天,请尽快完成!
  2. "); -// }else if (day == 0) { -// s.append("
  3. 项目编码:").append(proofingInfo.getProjectNo() + "

    "); -// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单已到预计完成日期,请尽快完成!
  4. "); -// } -// else { -// s.append("
  5. 项目编码:").append(proofingInfo.getProjectNo() + "

    "); -// s.append("项目料号:").append(proofingInfo.getTestPartNo()).append(" 料号描述:").append(proofingInfo.getPartDesc()).append("下打样单号为:").append(proofingInfo.getProofingNo()).append(" 的打样单距离预计完成日期还有" + day + "天").append(" 请及时完成!
  6. "); -// } -// s.append("
"); -// //设置邮件内容 -// String text = "" + -// "
" + -// s + -// "
"; -// //发送邮件 -// 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 searchProjectAllDocumentTask(ProofDocumentData data) { -// // 调用Mapper接口方法执行存储过程 -// return EamProjectMapper.searchProjectAllDocumentTask(data.getSite(), data.getProjectId(), data.getProjectPartId(), data.getProofingId()); -// } }