Commit a8d064490e42192a0ad3b0aeac3bb1836aa2714e
1 parent
c1005400
feat:1.把时间由yyyy-mm-dd hh:mm:ss改为yyyy-mm-dd
2.把邮件标头背景色改为白色,手机端黑色不显示
Showing
2 changed files
with
55 additions
and
28 deletions
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 { |