|
|
|
@ -47,6 +47,8 @@ import java.sql.Connection; |
|
|
|
import java.sql.DriverManager; |
|
|
|
import java.sql.SQLException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.time.DayOfWeek; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -845,17 +847,14 @@ public class EamProjectServiceImpl implements EamProjectService { |
|
|
|
public void sendEmail() throws MessagingException, UnsupportedEncodingException { |
|
|
|
// 创建数组用于存储定时任务所有待发送邮件的数据 |
|
|
|
List<ProofDocumentData> allUserSendEmailList; |
|
|
|
// 调用存储过程拿到所有需要自动发送邮件通知的数据 |
|
|
|
allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2"); |
|
|
|
// 创建数组用于存储单个用户的所有待发送邮件的数据 |
|
|
|
List<ProofDocumentData> oneUserSendEmailList = null; |
|
|
|
// List<ProofDocumentData> proofingDocumentUserSendEmailList = null; |
|
|
|
// List<ProofDocumentData> massProductionDocumentUserSendEmailList = null; |
|
|
|
// List<ProofingInformationData> proofingUserSendEmailList = null; |
|
|
|
// List<EamProjectPartInfoData> confirmUserSendEmailList = null; |
|
|
|
// 创建变量用于存储上一个用户名 |
|
|
|
String previousUsername = null; |
|
|
|
// 调用存储过程拿到所有需要自动发送邮件通知的数据 |
|
|
|
allUserSendEmailList = EamProjectMapper.getAutoSendMailAddress("2"); |
|
|
|
|
|
|
|
//如果是周五 |
|
|
|
if (LocalDate.now().getDayOfWeek().equals(DayOfWeek.FRIDAY)) { |
|
|
|
// 遍历allUserSendEmailList,将相同用户名的数据放到oneUserSendEmailList数组中 |
|
|
|
for (ProofDocumentData data : allUserSendEmailList) { |
|
|
|
if (data.getUsername() != null && !data.getUsername().equals("")) { |
|
|
|
@ -886,7 +885,44 @@ public class EamProjectServiceImpl implements EamProjectService { |
|
|
|
// 调用发送邮件方法 |
|
|
|
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)) { |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 遍历完毕后,需要判断oneUserSendEmailList是否为空,如果不为空,说明最后一个用户的数据还未发送邮件 |
|
|
|
if (oneUserSendEmailList != null && oneUserSendEmailList.get(0).getEmail() != null && !oneUserSendEmailList.get(0).getEmail().equals("")) { |
|
|
|
// 调用发送邮件方法 |
|
|
|
this.sendAutoMailToOnlyUserHandle(oneUserSendEmailList); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (data.getProofingId() == -1){ |
|
|
|
// massProductionDocumentUserSendEmailList.add(data); |
|
|
|
// } else if (data.getProofingId() == 0) { |
|
|
|
|