Commit a8d064490e42192a0ad3b0aeac3bb1836aa2714e

Authored by chenhang4442024
1 parent c1005400

feat:1.把时间由yyyy-mm-dd hh:mm:ss改为yyyy-mm-dd

2.把邮件标头背景色改为白色,手机端黑色不显示
src/main/java/com/order/erp/job/OrderOverTimeEventJob.java
@@ -28,6 +28,9 @@ import java.util.concurrent.TimeUnit; @@ -28,6 +28,9 @@ import java.util.concurrent.TimeUnit;
28 import java.util.function.Function; 28 import java.util.function.Function;
29 import java.util.stream.Collectors; 29 import java.util.stream.Collectors;
30 30
  31 +import static com.order.erp.common.utils.DateUtils.DATE;
  32 +import static com.order.erp.common.utils.DateUtils.DATE_TIME;
  33 +
31 34
32 /** 35 /**
33 * @author: xms 36 * @author: xms
@@ -62,7 +65,7 @@ public class OrderOverTimeEventJob { @@ -62,7 +65,7 @@ public class OrderOverTimeEventJob {
62 /** 65 /**
63 * 凌晨1点执行,一天一次 66 * 凌晨1点执行,一天一次
64 */ 67 */
65 - @Scheduled(cron = "0 0 1 * * ?") 68 + @Scheduled(cron = "0 * * * * *")
66 //存储的日期都必须为yyyy-MM-dd HH:mm:ss。 69 //存储的日期都必须为yyyy-MM-dd HH:mm:ss。
67 public void checkOverTimeExecuteV2() { 70 public void checkOverTimeExecuteV2() {
68 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.getEventList(); 71 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.getEventList();
@@ -87,7 +90,6 @@ public class OrderOverTimeEventJob { @@ -87,7 +90,6 @@ public class OrderOverTimeEventJob {
87 */ 90 */
88 //发送邮件。 91 //发送邮件。
89 private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) { 92 private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) {
90 -  
91 HashSet<String> customerCodeList = new HashSet<>(); 93 HashSet<String> customerCodeList = new HashSet<>();
92 for (OrderEventJobVO orderEventJob : eventJobVOS) { 94 for (OrderEventJobVO orderEventJob : eventJobVOS) {
93 if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate( 95 if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate(
@@ -117,21 +119,28 @@ public class OrderOverTimeEventJob { @@ -117,21 +119,28 @@ public class OrderOverTimeEventJob {
117 }).filter(Objects::nonNull) 119 }).filter(Objects::nonNull)
118 .collect(Collectors.toList()); 120 .collect(Collectors.toList());
119 //如果为尾期验货事件的话,需要从订单中的生产科角色中得到邮箱。而不是从邮件配置中得到邮箱。 121 //如果为尾期验货事件的话,需要从订单中的生产科角色中得到邮箱。而不是从邮件配置中得到邮箱。
120 - if (OrderEventEnum.END_CHECK_DATE_EVENT.equals(eventEnum)) { 122 + if (OrderEventEnum.END_CHECK_DATE_EVENT.equals(eventEnum) ) {
121 for (OrderEventJobVO orderEventJob : eventJobVOS) { 123 for (OrderEventJobVO orderEventJob : eventJobVOS) {
122 - String productionDepartment = orderEventJob.getBaseInfo().getProductionDepartment();  
123 - //根据订单的生产科得到生产科用户信息。  
124 - AdminUserDO productionDepartmentUser = adminUserService.getOne(new LambdaQueryWrapper<AdminUserDO>()  
125 - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)  
126 - .eq(AdminUserDO::getUserName, productionDepartment));  
127 - List<String> productionEmail = Arrays.asList(productionDepartmentUser.getEmail().split("[,,]+"))  
128 - .stream().map(String::trim)  
129 - .collect(Collectors.toList());  
130 - emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()),  
131 - productionEmail, orderEventJob);  
132 - redisUtils.set(EmailTemplateEnum.byTemplate(  
133 - eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId(),  
134 - orderEventJob, 90, TimeUnit.DAYS); 124 + if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate(
  125 + eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId())) {
  126 + //转化一下日期格式,为yyyy-MM-dd。
  127 + OrderBaseInfoVO orderBaseInfoFormat = getDateFormat(orderEventJob.getBaseInfo().getProductionDepartmentConsignTime(), orderEventJob.getBaseInfo().getOrderHodTime());
  128 + orderEventJob.getBaseInfo().setProductionDepartmentConsignTime(orderBaseInfoFormat.getProductionDepartmentConsignTime());
  129 + orderEventJob.getBaseInfo().setOrderHodTime(orderBaseInfoFormat.getOrderHodTime());
  130 + String productionDepartment = orderEventJob.getBaseInfo().getProductionDepartment();
  131 + //根据订单的生产科得到生产科用户信息。
  132 + AdminUserDO productionDepartmentUser = adminUserService.getOne(new LambdaQueryWrapper<AdminUserDO>()
  133 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  134 + .eq(AdminUserDO::getUserName, productionDepartment));
  135 + List<String> productionEmail = Arrays.asList(productionDepartmentUser.getEmail().split("[,,]+"))
  136 + .stream().map(String::trim)
  137 + .collect(Collectors.toList());
  138 + emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()),
  139 + productionEmail, orderEventJob);
  140 + redisUtils.set(EmailTemplateEnum.byTemplate(
  141 + eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId(),
  142 + orderEventJob, 90, TimeUnit.DAYS);
  143 + }
135 } 144 }
136 } else { 145 } else {
137 Set<Map<String, List<String>>> set = receiveEmailMappingDOS.stream().map(x -> { 146 Set<Map<String, List<String>>> set = receiveEmailMappingDOS.stream().map(x -> {
@@ -154,6 +163,10 @@ public class OrderOverTimeEventJob { @@ -154,6 +163,10 @@ public class OrderOverTimeEventJob {
154 for (OrderEventJobVO orderEventJob : eventJobVOS) { 163 for (OrderEventJobVO orderEventJob : eventJobVOS) {
155 for (Map<String, List<String>> map : set) { 164 for (Map<String, List<String>> map : set) {
156 if (orderEventJob.getBaseInfo().getCustomerCode().equals(map.keySet().iterator().next())) { 165 if (orderEventJob.getBaseInfo().getCustomerCode().equals(map.keySet().iterator().next())) {
  166 + //转化一下日期格式,为yyyy-MM-dd。
  167 + OrderBaseInfoVO orderBaseInfoFormat = getDateFormat(orderEventJob.getBaseInfo().getProductionDepartmentConsignTime(), orderEventJob.getBaseInfo().getOrderHodTime());
  168 + orderEventJob.getBaseInfo().setProductionDepartmentConsignTime(orderBaseInfoFormat.getProductionDepartmentConsignTime());
  169 + orderEventJob.getBaseInfo().setOrderHodTime(orderBaseInfoFormat.getOrderHodTime());
157 emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()), 170 emailSendUtils.sendEmail(EmailTemplateEnum.byTemplate(eventEnum.getTemplateId()),
158 map.get(map.keySet().iterator().next()), orderEventJob); 171 map.get(map.keySet().iterator().next()), orderEventJob);
159 redisUtils.set(EmailTemplateEnum.byTemplate( 172 redisUtils.set(EmailTemplateEnum.byTemplate(
@@ -277,7 +290,7 @@ public class OrderOverTimeEventJob { @@ -277,7 +290,7 @@ public class OrderOverTimeEventJob {
277 if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(esoSampleSendTime)) { 290 if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(esoSampleSendTime)) {
278 LocalDate orderHodTimelocalDate = DateUtils.parseDate(orderHodTime); 291 LocalDate orderHodTimelocalDate = DateUtils.parseDate(orderHodTime);
279 LocalDate esoSampleSendTimelocalDate = DateUtils.parseDate(esoSampleSendTime); 292 LocalDate esoSampleSendTimelocalDate = DateUtils.parseDate(esoSampleSendTime);
280 - if (ChronoUnit.DAYS.between(esoSampleSendTimelocalDate, orderHodTimelocalDate) == Constant.SEVEN) { 293 + if (ChronoUnit.DAYS.between(esoSampleSendTimelocalDate, orderHodTimelocalDate) == Constant.FOURTEEN) {
281 return true; 294 return true;
282 } 295 }
283 296
@@ -300,19 +313,21 @@ public class OrderOverTimeEventJob { @@ -300,19 +313,21 @@ public class OrderOverTimeEventJob {
300 313
301 314
302 private Boolean filterAITEXSGSTestEvent(OrderEventJobVO eventJobVO) { 315 private Boolean filterAITEXSGSTestEvent(OrderEventJobVO eventJobVO) {
  316 + int aitextestDaysBetween=0;
  317 + int sgstestDaysBetween=0;
303 String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime(); 318 String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime();
304 String aitexTestFinishResult = eventJobVO.getTrackStageInfo().getAitexTestFinishResult(); 319 String aitexTestFinishResult = eventJobVO.getTrackStageInfo().getAitexTestFinishResult();
305 String sgsTestFinishResult = eventJobVO.getTrackStageInfo().getSgsTestFinishResult(); 320 String sgsTestFinishResult = eventJobVO.getTrackStageInfo().getSgsTestFinishResult();
306 String sgsTestFinishTime = eventJobVO.getTrackStageInfo().getSgsTestFinishTime(); 321 String sgsTestFinishTime = eventJobVO.getTrackStageInfo().getSgsTestFinishTime();
307 String aitexTestFinishTime = eventJobVO.getTrackStageInfo().getAitexTestFinishTime(); 322 String aitexTestFinishTime = eventJobVO.getTrackStageInfo().getAitexTestFinishTime();
308 - if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(aitexTestFinishResult) && StringUtils.isNotBlank(aitexTestFinishTime) ||  
309 - StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(sgsTestFinishResult) && StringUtils.isNotBlank(sgsTestFinishTime)) {  
310 - int aitextestDaysBetween = getDaysBetween(aitexTestFinishResult, aitexTestFinishTime, orderHodTime);  
311 - int sgstestDaysBetween = getDaysBetween(sgsTestFinishResult, sgsTestFinishTime, orderHodTime);  
312 - if (aitextestDaysBetween == Constant.THREE || sgstestDaysBetween == Constant.LOCK_ERROR_TIMES || aitextestDaysBetween == Constant.NEGATIVE_ONE || sgstestDaysBetween == Constant.NEGATIVE_ONE) { 323 + if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(aitexTestFinishResult) && StringUtils.isNotBlank(aitexTestFinishTime)){
  324 + aitextestDaysBetween = getDaysBetween(aitexTestFinishResult, aitexTestFinishTime, orderHodTime);
  325 + } else if(StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(sgsTestFinishResult) && StringUtils.isNotBlank(sgsTestFinishTime)){
  326 + sgstestDaysBetween = getDaysBetween(sgsTestFinishResult, sgsTestFinishTime, orderHodTime);
  327 + }
  328 + if (aitextestDaysBetween == Constant.THREE || sgstestDaysBetween == Constant.THREE || aitextestDaysBetween == Constant.NEGATIVE_ONE || sgstestDaysBetween == Constant.NEGATIVE_ONE) {
313 return true; 329 return true;
314 } 330 }
315 - }  
316 return false; 331 return false;
317 332
318 } 333 }
@@ -369,4 +384,15 @@ public class OrderOverTimeEventJob { @@ -369,4 +384,15 @@ public class OrderOverTimeEventJob {
369 } 384 }
370 return Constant.ZERO; 385 return Constant.ZERO;
371 } 386 }
  387 +
  388 + public OrderBaseInfoVO getDateFormat(String productionDepartmentConsignTime,String orderHodTime){
  389 + String substring = productionDepartmentConsignTime.substring(0, 10);
  390 + String substring1 = orderHodTime.substring(0, 10);
  391 + String productionDepartmentConsignTimeFormat = DateUtils.format(DateUtils.parseDate(substring, DATE), DateUtils.DATE);
  392 + String orderHodTimeFormat = DateUtils.format(DateUtils.parseDate(substring1,DATE), DateUtils.DATE);
  393 + OrderBaseInfoVO orderBaseInfoVO = new OrderBaseInfoVO();
  394 + orderBaseInfoVO.setProductionDepartmentConsignTime(productionDepartmentConsignTimeFormat);
  395 + orderBaseInfoVO.setOrderHodTime(orderHodTimeFormat);
  396 + return orderBaseInfoVO;
  397 + }
372 } 398 }
src/main/resources/templates/mail.ftl
@@ -4,13 +4,14 @@ @@ -4,13 +4,14 @@
4 <meta charset="UTF-8"> 4 <meta charset="UTF-8">
5 <title>通用邮件模板</title> 5 <title>通用邮件模板</title>
6 <style> 6 <style>
7 - #title1 {  
8 - background: black;  
9 - } 7 + /*#title1 {*/
  8 + /* background: black;*/
  9 + /*}*/
10 10
11 #title1 > td { 11 #title1 > td {
12 - color: aliceblue;  
13 - border-right: 1px solid white; 12 + /*color: aliceblue;*/
  13 + /*border-right: 1px solid white;*/
  14 + border-right: 1px solid black;
14 } 15 }
15 16
16 #title2 td { 17 #title2 td {