package pwc.taxtech.atms.service.impl; 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 java.util.ArrayList; import java.util.Date; import java.util.List; @Service public class CommonServiceImpl { private static final Logger logger = LoggerFactory.getLogger(CommonServiceImpl.class); @Autowired private MailQueueMapper mailQueueMapper; 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"); } 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); } }