1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package pwc.taxtech.atms.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.nutz.lang.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pwc.taxtech.atms.common.CommonConstants;
import pwc.taxtech.atms.dao.MailQueueMapper;
import pwc.taxtech.atms.dpo.EnterpriseAccountSetOrgDto;
import pwc.taxtech.atms.dto.MailMto;
import pwc.taxtech.atms.entity.MailQueue;
import pwc.taxtech.atms.service.CommonService;
@Service
public class CommonServiceImpl implements CommonService {
private static final Logger logger = LoggerFactory.getLogger(CommonServiceImpl.class);
@Autowired
private MailQueueMapper mailQueueMapper;
@Override
public void sendMail(MailMto mailmto) {
logger.debug("enter sendMail");
mailmto.setFrom(CommonConstants.MailFrom);
doSendMail(mailmto);
}
private void doSendMail(MailMto mailmto) {
logger.debug("doSendMail start");
// @See below C# codes
// string sql = @"INSERT INTO [MailMaster].[dbo].[MAILQUEUE]
// ([APPCODE],[ORGANISATION],[SUBJECT],[SUBMITBY],[SUBMITDATE],[POSTEDFLAG],[SENDDATE],[IMMEDIATEFLAG],[MTO],[MFROM],[CC],[BCC],[CONTENT],[ENCODE],[REPLYTO])"
// + "VALUES
// ('Apex','PricewaterhouseCoopers',@Subject,'System',@Date,'N',@Date,'Y',@To,@From,@CC,@BCC,@Content,'UTF-8','')";
// SqlParameter[] param =
// {
// new SqlParameter("Subject", mail.Subject),
// new SqlParameter("Date", DateTime.Now),
// new SqlParameter("To", mail.To),
// new SqlParameter("From", mail.From),
// new SqlParameter("CC", mail.CC ?? String.Empty),
// new SqlParameter("BCC", mail.BCC ?? String.Empty),
// new SqlParameter("Content", mail.Content)
// };
MailQueue record = new MailQueue();
record.setAppcode("Apex");
record.setOrganisation("PricewaterhouseCoopers");
record.setSubject(mailmto.getSubject());
record.setSubmitby("System");
record.setSubmitdate(new Date());
record.setPostedflag("N");
record.setSenddate(new Date());
record.setImmediateflag("Y");
record.setMto(mailmto.getTo());
record.setMfrom(mailmto.getFrom());
record.setCc(Strings.sBlank(mailmto.getCc()));
record.setBcc(Strings.sBlank(mailmto.getBcc()));
record.setContent(mailmto.getContent());
record.setEncode("UTF-8");
record.setReplyto("");
mailQueueMapper.insert(record);
logger.debug("doSendMail end");
}
@Override
public boolean isOrganizationDateTimeOverlap(List<EnterpriseAccountSetOrgDto> list) {
for (int i = list.size() - 1; i >= 0; i--) {
list.get(i).setOverlapList(new ArrayList<>());
for (int j = i - 1; j >= 0; j--) {
if (isDateTimeOverlap(list.get(i).getEffectiveDate(), list.get(i).getExpiredDate(),
list.get(j).getEffectiveDate(), list.get(j).getExpiredDate())) {
list.get(i).getOverlapList().add(list.get(j));
}
}
}
return (list.stream().anyMatch(s -> s.getOverlapList() != null && !s.getOverlapList().isEmpty()));
}
private boolean isDateTimeOverlap(Date start1, Date end1, Date compareStart1, Date compareEnd1) {
// 判断时间范围是否重叠
long start = start1.getTime();
long end = end1.getTime();
long compareStart = compareStart1.getTime();
long compareEnd = compareEnd1.getTime();
return (start <= compareEnd && end >= compareStart);
}
}