Commit d939bd030ca96b11119510e5c71b3a5c7a1980c7
1 parent
9d5da66f
feat:1.更新邮件提示,根据不同的客户编码重新设置邮件提示。
2.产品信息添加最新信息展示
Showing
11 changed files
with
320 additions
and
51 deletions
src/main/java/com/order/erp/common/constant/Constant.java
@@ -343,5 +343,6 @@ public class Constant { | @@ -343,5 +343,6 @@ public class Constant { | ||
343 | public static final String FINANCE_EVENT_TITLE_INNERNO = " , 对应内部编号为 : "; | 343 | public static final String FINANCE_EVENT_TITLE_INNERNO = " , 对应内部编号为 : "; |
344 | 344 | ||
345 | public static final String FINANCE_EVENT_TITLE_PROJECTNO = " , 对应项目号为 : "; | 345 | public static final String FINANCE_EVENT_TITLE_PROJECTNO = " , 对应项目号为 : "; |
346 | + public static final String ORDERBASEINFO_PRODUCTIONCOMMENT = " , 更新信息为 : "; | ||
346 | 347 | ||
347 | } | 348 | } |
src/main/java/com/order/erp/common/utils/DateUtils.java
@@ -203,6 +203,15 @@ public class DateUtils { | @@ -203,6 +203,15 @@ public class DateUtils { | ||
203 | } | 203 | } |
204 | 204 | ||
205 | /** | 205 | /** |
206 | + * 获取年月日 | ||
207 | + * | ||
208 | + */ | ||
209 | + public static String getYearandMountandDay() { | ||
210 | + LocalDateTime localDateTime = LocalDateTime.now(); | ||
211 | + return localDateTime.getYear()+"-"+localDateTime.getMonthValue()+"-"+localDateTime.getDayOfMonth(); | ||
212 | + } | ||
213 | + | ||
214 | + /** | ||
206 | * 解析字符串日期为LocalDate | 215 | * 解析字符串日期为LocalDate |
207 | * | 216 | * |
208 | * @param dateStr | 217 | * @param dateStr |
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
@@ -37,7 +37,7 @@ public class EmailSendUtils { | @@ -37,7 +37,7 @@ public class EmailSendUtils { | ||
37 | private FreeMarkerConfigurer freeMarkerConfigurer; | 37 | private FreeMarkerConfigurer freeMarkerConfigurer; |
38 | 38 | ||
39 | /** | 39 | /** |
40 | - * @Description: 发送邮件 | 40 | + * @Description: 发送邮件 发送尾期验货报告,中期验货报告,邮件提醒事件。 |
41 | * @param emailTemplateEnum 邮件事件类型 | 41 | * @param emailTemplateEnum 邮件事件类型 |
42 | * @param receiveemailList 收件人邮箱 | 42 | * @param receiveemailList 收件人邮箱 |
43 | * @param orderEventJobVO 订单基本信息,订单-质检信息,等。 | 43 | * @param orderEventJobVO 订单基本信息,订单-质检信息,等。 |
@@ -75,6 +75,49 @@ public class EmailSendUtils { | @@ -75,6 +75,49 @@ public class EmailSendUtils { | ||
75 | } | 75 | } |
76 | javaMailSender.send(mimeMessage); | 76 | javaMailSender.send(mimeMessage); |
77 | } | 77 | } |
78 | + | ||
79 | + /** | ||
80 | + * @Description: 发送邮件 只发送产品信息。 | ||
81 | + * @param emailTemplateEnum 邮件事件类型 | ||
82 | + * @param receiveemailList 收件人邮箱 | ||
83 | + * @param orderEventJobVO 订单基本信息,订单-质检信息,等。 | ||
84 | + * @Param extraString 每次更新的产品信息。 | ||
85 | + * @throws MessagingException | ||
86 | + * @throws IOException | ||
87 | + */ | ||
88 | + | ||
89 | + public void sendEmail(EmailTemplateEnum emailTemplateEnum, List<String> receiveemailList, OrderEventJobVO orderEventJobVO,String extraString) { | ||
90 | + if(CollectionUtils.isEmpty(receiveemailList) && emailTemplateEnum ==null && ObjectUtils.isNull(orderEventJobVO)){ | ||
91 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
92 | + } | ||
93 | + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | ||
94 | + MimeMessageHelper helper= null; | ||
95 | + Map<String, Object> map = new HashMap<>(); | ||
96 | + map.put("context",emailTemplateEnum.getContent()+orderEventJobVO.getBaseInfo().getProjectNo()+Constant.ORDERBASEINFO_PRODUCTIONCOMMENT+extraString); | ||
97 | + map.put("title",emailTemplateEnum.getTitle()); | ||
98 | + map.put("data",orderEventJobVO); | ||
99 | + Template template = null; | ||
100 | + //设置收件人 | ||
101 | + String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | ||
102 | + try { | ||
103 | + helper = new MimeMessageHelper(mimeMessage,true); | ||
104 | + //设置邮件的主题 | ||
105 | + helper.setSubject(emailTemplateEnum.getTitle()); | ||
106 | + //设置发件人 | ||
107 | + helper.setFrom(sendEmail); | ||
108 | + helper.setTo(receiveemailListArray); | ||
109 | + helper.setSentDate(new Date()); | ||
110 | + template = freeMarkerConfigurer.getConfiguration().getTemplate("mail.ftl"); | ||
111 | + StringWriter stringWriter = new StringWriter(); | ||
112 | + template.process(map,stringWriter); | ||
113 | + helper.setText(stringWriter.toString(),true); | ||
114 | + } catch (TemplateException | IOException | MessagingException e) { | ||
115 | + throw new RuntimeException("邮件发送失败!"); | ||
116 | + } | ||
117 | + javaMailSender.send(mimeMessage); | ||
118 | + } | ||
119 | + | ||
120 | + | ||
78 | /** | 121 | /** |
79 | * @Description: 发送生产指示书邮件 | 122 | * @Description: 发送生产指示书邮件 |
80 | * @param emailTemplateEnum 邮件事件类型 | 123 | * @param emailTemplateEnum 邮件事件类型 |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
@@ -75,7 +75,7 @@ public class InvoiceBillOrderController { | @@ -75,7 +75,7 @@ public class InvoiceBillOrderController { | ||
75 | @PostMapping(value = "/export") | 75 | @PostMapping(value = "/export") |
76 | @ApiOperation("导出分析列表") | 76 | @ApiOperation("导出分析列表") |
77 | @AnonymousAccess | 77 | @AnonymousAccess |
78 | - public void export(HttpServletResponse response, @RequestBody @Validated InvoiceAndCheckAnalysisVO queryVO) throws IOException, Excel4JException { | 78 | + public void export(HttpServletResponse response, @RequestBody InvoiceAndCheckAnalysisVO queryVO) throws IOException, Excel4JException { |
79 | invoiceBillOrderService.export(response, queryVO); | 79 | invoiceBillOrderService.export(response, queryVO); |
80 | } | 80 | } |
81 | 81 |
src/main/java/com/order/erp/job/OrderJob.java
@@ -63,7 +63,7 @@ public class OrderJob { | @@ -63,7 +63,7 @@ public class OrderJob { | ||
63 | .le(OrderBaseInfoDO::getCreateTime, DateUtils.format(DateTime.now().toDate(), DateUtils.DATE_TIME)) | 63 | .le(OrderBaseInfoDO::getCreateTime, DateUtils.format(DateTime.now().toDate(), DateUtils.DATE_TIME)) |
64 | .ne(OrderBaseInfoDO::getOrderStatus, OrderStatusEnum.ORDER_FINISH.getStatus()); | 64 | .ne(OrderBaseInfoDO::getOrderStatus, OrderStatusEnum.ORDER_FINISH.getStatus()); |
65 | List<OrderBaseInfoDO> ordersDOS = orderBaseInfoService.list(queryWrapper); | 65 | List<OrderBaseInfoDO> ordersDOS = orderBaseInfoService.list(queryWrapper); |
66 | - | 66 | +//如果都填充完成为 1.25,如果只填写4个,则为1。 |
67 | List<OrderInfoResultVO> orderInfoResultVOS = orderBaseInfoService.wrapperOrderResultList(false, ordersDOS); | 67 | List<OrderInfoResultVO> orderInfoResultVOS = orderBaseInfoService.wrapperOrderResultList(false, ordersDOS); |
68 | if (CollectionUtils.isNotEmpty(orderInfoResultVOS)) { | 68 | if (CollectionUtils.isNotEmpty(orderInfoResultVOS)) { |
69 | Set<Long> orderIds = orderInfoResultVOS.stream().filter(x -> Objects.nonNull(x.getSchedule()) && Constant.ONE == x.getSchedule()).map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | 69 | Set<Long> orderIds = orderInfoResultVOS.stream().filter(x -> Objects.nonNull(x.getSchedule()) && Constant.ONE == x.getSchedule()).map(OrderInfoResultVO::getId).collect(Collectors.toSet()); |
src/main/java/com/order/erp/job/OrderOverTimeEventJob.java
@@ -103,6 +103,7 @@ public class OrderOverTimeEventJob { | @@ -103,6 +103,7 @@ public class OrderOverTimeEventJob { | ||
103 | private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) { | 103 | private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) { |
104 | HashSet<String> customerCodeList = new HashSet<>(); | 104 | HashSet<String> customerCodeList = new HashSet<>(); |
105 | for (OrderEventJobVO orderEventJob : eventJobVOS) { | 105 | for (OrderEventJobVO orderEventJob : eventJobVOS) { |
106 | + //这里虽然没有使用redis限制住订单id,但是限制住了客户编码,要是发现redis中有发送的订单,就会设置客户编码是"",查询不出来邮件,所以就不会发送邮箱。要是没有,则会设置客户编码,会去查询。 | ||
106 | if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate( | 107 | if (!redisUtils.hasKey(EmailTemplateEnum.byTemplate( |
107 | eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId())) { | 108 | eventEnum.getTemplateId()) + Constant.CROSS_BAR_CHARACTER + orderEventJob.getBaseInfo().getId())) { |
108 | customerCodeList.add(orderEventJob.getBaseInfo().getCustomerCode()); | 109 | customerCodeList.add(orderEventJob.getBaseInfo().getCustomerCode()); |
@@ -302,28 +303,174 @@ public class OrderOverTimeEventJob { | @@ -302,28 +303,174 @@ public class OrderOverTimeEventJob { | ||
302 | */ | 303 | */ |
303 | private Map<String, OrderEventJobVO> groupByOrderEvent(OrderEventJobVO eventJobVO) { | 304 | private Map<String, OrderEventJobVO> groupByOrderEvent(OrderEventJobVO eventJobVO) { |
304 | Map<String, OrderEventJobVO> map = new HashMap<>(); | 305 | Map<String, OrderEventJobVO> map = new HashMap<>(); |
305 | - if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
306 | - map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
307 | - } | ||
308 | - if (filterOtherSampleEvent(eventJobVO)) { | ||
309 | - map.put(OrderEventEnum.OTHER_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
310 | - } | ||
311 | - if (filterBigSampleEvent(eventJobVO)) { | ||
312 | - map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
313 | - } | ||
314 | - if (filterAITEXSGSTestEvent(eventJobVO)) { | ||
315 | - map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
316 | - } | ||
317 | - if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
318 | - map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
319 | - } | ||
320 | - if (filterLatestDCEvent(eventJobVO)) { | ||
321 | - map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
322 | - } | ||
323 | - if (filterEndCheckDateEvent(eventJobVO)) { | ||
324 | - map.put(OrderEventEnum.END_CHECK_DATE_EVENT.getEvent(), eventJobVO); | 306 | + //如果包含"-",则去掉。 A04没有处理,然后A06,A09,A08,对于返单数据,只写了订舱和包材事件,对于返单的内销是否需要订舱和包材。 |
307 | + String simpleCustomerCode = eventJobVO.getBaseInfo().getCustomerCode().substring(0, 3); | ||
308 | + //把返单和不是返单分别区分。 | ||
309 | + if(StringUtils.isEmpty(eventJobVO.getBaseInfo().getReturnOrder())){ | ||
310 | + return map; | ||
311 | + }else{ | ||
312 | + // 不是返单。 | ||
313 | + if(Constant.ZERO_STRING.equals(eventJobVO.getBaseInfo().getReturnOrder())){ | ||
314 | + if("A06".equals(simpleCustomerCode) || "A09".equals(simpleCustomerCode)){ | ||
315 | + //如果运输方式为SF则代表内销。 | ||
316 | + boolean isOutboundTypeSF=eventJobVO.getBaseInfo().getOutboundType().equals("SF"); | ||
317 | + if (filterSGSTestEvent(eventJobVO)) { | ||
318 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
319 | + } | ||
320 | + if(!isOutboundTypeSF){ | ||
321 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
322 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
323 | + } | ||
324 | + if (filterBigSampleEvent(eventJobVO)) { | ||
325 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
326 | + } | ||
327 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
328 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
329 | + } | ||
330 | + if (filterLatestDCEvent(eventJobVO)) { | ||
331 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
332 | + } | ||
333 | + } | ||
334 | + }else if("A05".equals(simpleCustomerCode) || "A07".equals(simpleCustomerCode) || "M05".equals(simpleCustomerCode) || "M03".equals(simpleCustomerCode)){ | ||
335 | + //如果出库类型为POST则代表样品单,不需要订舱。 | ||
336 | + boolean isOutboundTypePOST = eventJobVO.getBaseInfo().getOutboundType().equals("POST"); | ||
337 | + | ||
338 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
339 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
340 | + } | ||
341 | + if (filterBigSampleEvent(eventJobVO)) { | ||
342 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
343 | + } | ||
344 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
345 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
346 | + } | ||
347 | + if (filterSGSTestEvent(eventJobVO)) { | ||
348 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
349 | + } | ||
350 | + if(!isOutboundTypePOST){ | ||
351 | + if (filterLatestDCEvent(eventJobVO)) { | ||
352 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
353 | + } | ||
354 | + } | ||
355 | + }else if("A01".equals(simpleCustomerCode)){ | ||
356 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
357 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
358 | + } | ||
359 | + if (filterOtherSampleEvent(eventJobVO)) { | ||
360 | + map.put(OrderEventEnum.OTHER_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
361 | + } | ||
362 | + if (filterBigSampleEvent(eventJobVO)) { | ||
363 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
364 | + } | ||
365 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
366 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
367 | + } | ||
368 | + if (filterSGSTestEvent(eventJobVO)) { | ||
369 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
370 | + } | ||
371 | + if(filterAITEXTestEvent(eventJobVO)){ | ||
372 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
373 | + } | ||
374 | + if (filterLatestDCEvent(eventJobVO)) { | ||
375 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
376 | + } | ||
377 | + }else if("A04".equals(simpleCustomerCode)){ | ||
378 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
379 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
380 | + } | ||
381 | + if (filterBigSampleEvent(eventJobVO)) { | ||
382 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
383 | + } | ||
384 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
385 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
386 | + } | ||
387 | + if (filterSGSTestEvent(eventJobVO)) { | ||
388 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
389 | + } | ||
390 | + if (filterLatestDCEvent(eventJobVO)) { | ||
391 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
392 | + } | ||
393 | + }//除了上述几种,其他的都全部走一遍。 先注释掉。 | ||
394 | + /* else{ | ||
395 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
396 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
397 | + } | ||
398 | + if (filterOtherSampleEvent(eventJobVO)) { | ||
399 | + map.put(OrderEventEnum.OTHER_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
400 | + } | ||
401 | + if (filterBigSampleEvent(eventJobVO)) { | ||
402 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
403 | + } | ||
404 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
405 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
406 | + } | ||
407 | + if (filterSGSTestEvent(eventJobVO)) { | ||
408 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
409 | + } | ||
410 | + if(filterAITEXTestEvent(eventJobVO)){ | ||
411 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
412 | + } | ||
413 | + if (filterLatestDCEvent(eventJobVO)) { | ||
414 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
415 | + } | ||
416 | + }*/ | ||
417 | + }else{ | ||
418 | + //返单。 | ||
419 | + if("A05".equals(simpleCustomerCode) || "A07".equals(simpleCustomerCode) || "M05".equals(simpleCustomerCode) || "M03".equals(simpleCustomerCode)){ | ||
420 | + boolean isOutboundTypePOST = eventJobVO.getBaseInfo().getOutboundType().equals("POST"); | ||
421 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
422 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
423 | + } | ||
424 | + if(!isOutboundTypePOST){ | ||
425 | + if (filterLatestDCEvent(eventJobVO)) { | ||
426 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
427 | + } | ||
428 | + } | ||
429 | + }else if("A06".equals(simpleCustomerCode) || "A09".equals(simpleCustomerCode) || "A04".equals(simpleCustomerCode)){ | ||
430 | + if (filterLatestDCEvent(eventJobVO)) { | ||
431 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
432 | + } | ||
433 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
434 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
435 | + } | ||
436 | + }else if("A01".equals(simpleCustomerCode)){ | ||
437 | + | ||
438 | + if (filterBigSampleEvent(eventJobVO)) { | ||
439 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
440 | + } | ||
441 | + if (filterLatestDCEvent(eventJobVO)) { | ||
442 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
443 | + } | ||
444 | + if (filterLatestDCEvent(eventJobVO)) { | ||
445 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
446 | + } | ||
447 | + }//除了上述几种,其他的都全部走一遍。先注释掉。 | ||
448 | + /* else{ | ||
449 | + if (filterConfirmSampleOrderEvent(eventJobVO)) { | ||
450 | + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
451 | + } | ||
452 | + if (filterOtherSampleEvent(eventJobVO)) { | ||
453 | + map.put(OrderEventEnum.OTHER_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
454 | + } | ||
455 | + if (filterBigSampleEvent(eventJobVO)) { | ||
456 | + map.put(OrderEventEnum.BIG_SAMPLE_EVENT.getEvent(), eventJobVO); | ||
457 | + } | ||
458 | + if (filterBarcodeArrivalEvent(eventJobVO)) { | ||
459 | + map.put(OrderEventEnum.BARCODE_ARRIVAL_EVENT.getEvent(), eventJobVO); | ||
460 | + } | ||
461 | + if (filterSGSTestEvent(eventJobVO)) { | ||
462 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
463 | + } | ||
464 | + if(filterAITEXTestEvent(eventJobVO)){ | ||
465 | + map.put(OrderEventEnum.AITEX_SGS_TEST_EVENT.getEvent(), eventJobVO); | ||
466 | + } | ||
467 | + if (filterLatestDCEvent(eventJobVO)) { | ||
468 | + map.put(OrderEventEnum.LATEST_DC_EVENT.getEvent(), eventJobVO); | ||
469 | + } | ||
470 | + }*/ | ||
471 | + } | ||
472 | + return map; | ||
325 | } | 473 | } |
326 | - return map; | ||
327 | } | 474 | } |
328 | 475 | ||
329 | /** | 476 | /** |
@@ -379,7 +526,7 @@ public class OrderOverTimeEventJob { | @@ -379,7 +526,7 @@ public class OrderOverTimeEventJob { | ||
379 | } | 526 | } |
380 | 527 | ||
381 | 528 | ||
382 | - private Boolean filterAITEXSGSTestEvent(OrderEventJobVO eventJobVO) { | 529 | + /* private Boolean filterAITEXSGSTestEvent(OrderEventJobVO eventJobVO) { |
383 | int aitextestDaysBetween = 0; | 530 | int aitextestDaysBetween = 0; |
384 | int sgstestDaysBetween = 0; | 531 | int sgstestDaysBetween = 0; |
385 | String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime(); | 532 | String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime(); |
@@ -405,6 +552,48 @@ public class OrderOverTimeEventJob { | @@ -405,6 +552,48 @@ public class OrderOverTimeEventJob { | ||
405 | } | 552 | } |
406 | return false; | 553 | return false; |
407 | 554 | ||
555 | + }*/ | ||
556 | + | ||
557 | + private Boolean filterAITEXTestEvent(OrderEventJobVO eventJobVO) { | ||
558 | + int aitextestDaysBetween = 0; | ||
559 | + String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime(); | ||
560 | + String aitexTestFinishResult = eventJobVO.getTrackStageInfo().getAitexTestFinishResult(); | ||
561 | + String aitexTestFinishTime = eventJobVO.getTrackStageInfo().getAitexTestFinishTime(); | ||
562 | + | ||
563 | + if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(aitexTestFinishResult) && StringUtils.isNotBlank(aitexTestFinishTime)) { | ||
564 | + aitextestDaysBetween = getDaysBetween(aitexTestFinishResult, aitexTestFinishTime, orderHodTime); | ||
565 | + } | ||
566 | + | ||
567 | + if (StringUtils.isEmpty(aitexTestFinishResult)) { | ||
568 | + LocalDate today = LocalDate.now(); | ||
569 | + LocalDate localDate = DateUtils.parseDate(orderHodTime); | ||
570 | + if (Constant.THREE == (int) ChronoUnit.DAYS.between(today, localDate)) { | ||
571 | + return true; | ||
572 | + } | ||
573 | + } | ||
574 | + | ||
575 | + return Constant.THREE == aitextestDaysBetween || Constant.NEGATIVE_ONE == aitextestDaysBetween; | ||
576 | + } | ||
577 | + | ||
578 | + private Boolean filterSGSTestEvent(OrderEventJobVO eventJobVO) { | ||
579 | + int sgstestDaysBetween = 0; | ||
580 | + String orderHodTime = eventJobVO.getBaseInfo().getOrderHodTime(); | ||
581 | + String sgsTestFinishResult = eventJobVO.getTrackStageInfo().getSgsTestFinishResult(); | ||
582 | + String sgsTestFinishTime = eventJobVO.getTrackStageInfo().getSgsTestFinishTime(); | ||
583 | + | ||
584 | + if (StringUtils.isNotBlank(orderHodTime) && StringUtils.isNotBlank(sgsTestFinishResult) && StringUtils.isNotBlank(sgsTestFinishTime)) { | ||
585 | + sgstestDaysBetween = getDaysBetween(sgsTestFinishResult, sgsTestFinishTime, orderHodTime); | ||
586 | + } | ||
587 | + | ||
588 | + if (StringUtils.isEmpty(sgsTestFinishResult)) { | ||
589 | + LocalDate today = LocalDate.now(); | ||
590 | + LocalDate localDate = DateUtils.parseDate(orderHodTime); | ||
591 | + if (Constant.THREE == (int) ChronoUnit.DAYS.between(today, localDate)) { | ||
592 | + return true; | ||
593 | + } | ||
594 | + } | ||
595 | + | ||
596 | + return Constant.THREE == sgstestDaysBetween || Constant.NEGATIVE_ONE == sgstestDaysBetween; | ||
408 | } | 597 | } |
409 | 598 | ||
410 | 599 |
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
@@ -390,6 +390,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -390,6 +390,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
390 | queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | 390 | queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); |
391 | } | 391 | } |
392 | Set<Long> existOrderIdSet=new HashSet<>(); | 392 | Set<Long> existOrderIdSet=new HashSet<>(); |
393 | + Set<Long> filterDoubleOrderIds = new HashSet<>(); | ||
393 | //查询数据 | 394 | //查询数据 |
394 | List<InvoiceIdAndCheckIdResultVO> idResultVOS = baseMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); | 395 | List<InvoiceIdAndCheckIdResultVO> idResultVOS = baseMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); |
395 | List<Long> invoiceIds = idResultVOS.stream().map(x -> x.getInvoiceId()).filter(Objects::nonNull).collect(Collectors.toList()); | 396 | List<Long> invoiceIds = idResultVOS.stream().map(x -> x.getInvoiceId()).filter(Objects::nonNull).collect(Collectors.toList()); |
@@ -401,7 +402,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -401,7 +402,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
401 | List<Long> existOrderIds = invoiceBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | 402 | List<Long> existOrderIds = invoiceBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); |
402 | existOrderIdSet.addAll(existOrderIds); | 403 | existOrderIdSet.addAll(existOrderIds); |
403 | List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | 404 | List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); |
404 | - notExistOrderIds = orderIdList.stream() | 405 | + filterDoubleOrderIds.addAll(orderIdList); |
406 | + notExistOrderIds = filterDoubleOrderIds.stream() | ||
405 | .filter(orderId -> !existOrderIdSet.contains(orderId)) | 407 | .filter(orderId -> !existOrderIdSet.contains(orderId)) |
406 | .collect(Collectors.toList()); | 408 | .collect(Collectors.toList()); |
407 | 409 | ||
@@ -1327,6 +1329,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -1327,6 +1329,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
1327 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { | 1329 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { |
1328 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; | 1330 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; |
1329 | order.setInvoiceNo("N/N"); | 1331 | order.setInvoiceNo("N/N"); |
1332 | + order.setInvoiceStatus(FinanceEnum.NOT_CREATED.getStatus()); | ||
1330 | return order; | 1333 | return order; |
1331 | }).collect(Collectors.toList()); | 1334 | }).collect(Collectors.toList()); |
1332 | transactionHelper.run(() -> { | 1335 | transactionHelper.run(() -> { |
@@ -1416,17 +1419,19 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -1416,17 +1419,19 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
1416 | //第二行 | 1419 | //第二行 |
1417 | Row row2 = sheet.createRow(3); | 1420 | Row row2 = sheet.createRow(3); |
1418 | Cell cell2 = row2.createCell(0); | 1421 | Cell cell2 = row2.createCell(0); |
1419 | - cell2.setCellValue("提交人:"+queryVO.getFinancePerson()); | 1422 | + cell2.setCellValue("提交人:"+queryVO.getTrackerUser()); |
1420 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); | 1423 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); |
1421 | Cell cell3 = row2.createCell(2); | 1424 | Cell cell3 = row2.createCell(2); |
1422 | cell3.setCellValue(""); | 1425 | cell3.setCellValue(""); |
1423 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); | 1426 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); |
1424 | Cell cell4 = row2.createCell(8); | 1427 | Cell cell4 = row2.createCell(8); |
1425 | - if(StringUtils.isNotBlank(queryVO.getActualRefundDate())){ | 1428 | + /*if(StringUtils.isNotBlank(queryVO.getActualRefundDate())){ |
1426 | cell4.setCellValue("日期:"+queryVO.getActualRefundDate()); | 1429 | cell4.setCellValue("日期:"+queryVO.getActualRefundDate()); |
1427 | }else{ | 1430 | }else{ |
1428 | cell4.setCellValue("日期:"); | 1431 | cell4.setCellValue("日期:"); |
1429 | - } | 1432 | + }*/ |
1433 | + //改为 变成当前的年月日。 | ||
1434 | + cell4.setCellValue("日期:"+DateUtils.getYearandMountandDay()); | ||
1430 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); | 1435 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); |
1431 | //第三行 | 1436 | //第三行 |
1432 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "INVOICE编号"); | 1437 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "INVOICE编号"); |
@@ -1443,7 +1448,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -1443,7 +1448,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
1443 | createMergedCell(sheet, workbook, 7, 5, 7, 8, 5, 6, queryVO.getTotalPayAmount()!=null ? "$"+queryVO.getTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP) : ""); | 1448 | createMergedCell(sheet, workbook, 7, 5, 7, 8, 5, 6, queryVO.getTotalPayAmount()!=null ? "$"+queryVO.getTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP) : ""); |
1444 | createMergedCell(sheet, workbook, 7, 7, 7, 8, 7, 7, queryVO.getOtherAmount() != null ? "$"+queryVO.getOtherAmount().setScale(2, BigDecimal.ROUND_HALF_UP) : ""); | 1449 | createMergedCell(sheet, workbook, 7, 7, 7, 8, 7, 7, queryVO.getOtherAmount() != null ? "$"+queryVO.getOtherAmount().setScale(2, BigDecimal.ROUND_HALF_UP) : ""); |
1445 | createMergedCell(sheet, workbook, 7, 8, 7, 8, 8, 8, queryVO.getBackRefundDate() != null ? queryVO.getBackRefundDate() : ""); | 1450 | createMergedCell(sheet, workbook, 7, 8, 7, 8, 8, 8, queryVO.getBackRefundDate() != null ? queryVO.getBackRefundDate() : ""); |
1446 | - createMergedCell(sheet, workbook, 7, 9, 7, 8, 9, 9, queryVO.getActualRefundDate() != null ? queryVO.getActualRefundDate() : ""); | 1451 | + createMergedCell(sheet, workbook, 7, 9, 7, 8, 9, 9, ""); |
1447 | //第五行 | 1452 | //第五行 |
1448 | createMergedCell(sheet, workbook, 9, 0, 9, 10, 0, 1, "收款单位"); | 1453 | createMergedCell(sheet, workbook, 9, 0, 9, 10, 0, 1, "收款单位"); |
1449 | createMergedCell(sheet, workbook, 9, 2, 9, 10, 2, 9, queryVO.getPayee()); | 1454 | createMergedCell(sheet, workbook, 9, 2, 9, 10, 2, 9, queryVO.getPayee()); |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -230,7 +230,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -230,7 +230,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
230 | // 填充质检信息 | 230 | // 填充质检信息 |
231 | fillInspectionStageInfo(resultVOList); | 231 | fillInspectionStageInfo(resultVOList); |
232 | 232 | ||
233 | - // 填充发票信息 | 233 | + // 填充发票信息 对于填充发票信息和填充生产科对账单号,其实不需要在这里写了,而且这里只是填充了invoice号和check号,这里的代码是填充数据,达到一个进度条的效果,既然没有根据是否填充发票来填充进度条,这里就不需要写。 |
234 | fillInvoiceNo(resultVOList); | 234 | fillInvoiceNo(resultVOList); |
235 | //第四版 start | 235 | //第四版 start |
236 | /* //需要填充生产科对账单号信息 | 236 | /* //需要填充生产科对账单号信息 |
@@ -886,9 +886,6 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -886,9 +886,6 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
886 | } | 886 | } |
887 | 887 | ||
888 | Set<Long> orderIds = orderInfoResultVOList.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | 888 | Set<Long> orderIds = orderInfoResultVOList.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); |
889 | - /* List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | ||
890 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
891 | - .in(InvoiceBillMappingDO::getOrderId, orderIds));*/ | ||
892 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | 889 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
893 | .in(InvoiceBillOrderDO::getOrderId, orderIds)); | 890 | .in(InvoiceBillOrderDO::getOrderId, orderIds)); |
894 | 891 | ||
@@ -988,7 +985,7 @@ end | @@ -988,7 +985,7 @@ end | ||
988 | if (CollectionUtils.isEmpty(orderInfoResultVOList)) { | 985 | if (CollectionUtils.isEmpty(orderInfoResultVOList)) { |
989 | return; | 986 | return; |
990 | } | 987 | } |
991 | - | 988 | + //这里是判断基本,跟单,质检,项目报告书是否每一个栏都填写了。 |
992 | orderInfoResultVOList.forEach(x -> { | 989 | orderInfoResultVOList.forEach(x -> { |
993 | int i = 0; | 990 | int i = 0; |
994 | if (isFillOrderBaseInfo(x)) { | 991 | if (isFillOrderBaseInfo(x)) { |
@@ -1545,6 +1542,8 @@ end | @@ -1545,6 +1542,8 @@ end | ||
1545 | OrderBaseInfoDO baseInfoDO = new OrderBaseInfoDO(); | 1542 | OrderBaseInfoDO baseInfoDO = new OrderBaseInfoDO(); |
1546 | BeanUtils.copyProperties(baseInfoVO, baseInfoDO); | 1543 | BeanUtils.copyProperties(baseInfoVO, baseInfoDO); |
1547 | baseInfoDO.setOrderStatus(OrderStatusEnum.CREATE_FINISH.getStatus()); | 1544 | baseInfoDO.setOrderStatus(OrderStatusEnum.CREATE_FINISH.getStatus()); |
1545 | + baseInfoDO.setCheckStatus(FinanceEnum.NOT_CREATED.getStatus()); | ||
1546 | + baseInfoDO.setInvoiceStatus(FinanceEnum.NOT_CREATED.getStatus()); | ||
1548 | save(baseInfoDO); | 1547 | save(baseInfoDO); |
1549 | 1548 | ||
1550 | OrderOpinionLogDO orderOpinionLogDO = buildOrderOpinionLogDo(baseInfoDO.getId(), | 1549 | OrderOpinionLogDO orderOpinionLogDO = buildOrderOpinionLogDo(baseInfoDO.getId(), |
@@ -1747,15 +1746,29 @@ end | @@ -1747,15 +1746,29 @@ end | ||
1747 | String extra=updateVO.getBaseInfo().getProductionComment().substring(productionComment.length()); | 1746 | String extra=updateVO.getBaseInfo().getProductionComment().substring(productionComment.length()); |
1748 | //当新填写的产品意见是以句号开始,就不换行。 | 1747 | //当新填写的产品意见是以句号开始,就不换行。 |
1749 | if(extra.substring(0,2).contains("。")){ | 1748 | if(extra.substring(0,2).contains("。")){ |
1750 | - sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment()); | 1749 | + //去除逗号,传入方法里面作为更新的信息。 |
1750 | + String prefix = extra.substring(0, 2).replace("。", ""); | ||
1751 | + String extraString = prefix + extra.substring(2); | ||
1752 | + sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment(),extraString); | ||
1751 | }else{ | 1753 | }else{ |
1752 | //其他情况就需要换行 | 1754 | //其他情况就需要换行 |
1753 | stringBuilder.append("\n").append(date + ": " + newProductionComment[newProductionComment.length - 1].trim()); | 1755 | stringBuilder.append("\n").append(date + ": " + newProductionComment[newProductionComment.length - 1].trim()); |
1754 | updateVO.getBaseInfo().setProductionComment(stringBuilder.toString()); | 1756 | updateVO.getBaseInfo().setProductionComment(stringBuilder.toString()); |
1755 | - sendProductionCommentEmail(orderBaseInfoDo, stringBuilder.toString()); | 1757 | + sendProductionCommentEmail(orderBaseInfoDo, stringBuilder.toString(), newProductionComment[newProductionComment.length - 1].trim()); |
1756 | } | 1758 | } |
1757 | }else{ | 1759 | }else{ |
1758 | - sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment()); | 1760 | + //一定是输入信息比上一次少,不为通过或者不通过。 |
1761 | + if(orderBaseInfoDo.getProductionComment().length() > updateVO.getBaseInfo().getProductionComment().length() ){ | ||
1762 | + sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment(),"1"); | ||
1763 | + }else{ | ||
1764 | + //这里一定是通过或者未通过。截取通过后面的字符。 | ||
1765 | + int index = updateVO.getBaseInfo().getProductionComment().lastIndexOf("通过"); | ||
1766 | + String lastString = updateVO.getBaseInfo().getProductionComment().substring(index + 2); | ||
1767 | + //获取新输入的信息,并且对信息进行去除多于符号。 | ||
1768 | + String trimmedInput = lastString.replaceFirst("^[\\s,,。.;]*", ""); | ||
1769 | + sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment(),trimmedInput); | ||
1770 | + } | ||
1771 | + | ||
1759 | } | 1772 | } |
1760 | } | 1773 | } |
1761 | buildUpdateVO(updateVO.getBaseInfo(), orderBaseInfoDo); | 1774 | buildUpdateVO(updateVO.getBaseInfo(), orderBaseInfoDo); |
@@ -2081,7 +2094,7 @@ end | @@ -2081,7 +2094,7 @@ end | ||
2081 | //这个方法的作用就是:她们反应对于内部编号相同的订单,就不需要发送四个测试结果的产品意见信息,不然创建一个订单选择测试结果后就发送四个测试结果,太麻烦了,所以这里根据项目号和测试结果进行区分。 | 2094 | //这个方法的作用就是:她们反应对于内部编号相同的订单,就不需要发送四个测试结果的产品意见信息,不然创建一个订单选择测试结果后就发送四个测试结果,太麻烦了,所以这里根据项目号和测试结果进行区分。 |
2082 | public void setEmailSendUtilsRedis(OrderBaseInfoDO orderBaseInfoDo,String resultText,String productionComment){ | 2095 | public void setEmailSendUtilsRedis(OrderBaseInfoDO orderBaseInfoDo,String resultText,String productionComment){ |
2083 | if(!redisUtils.hasKey(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText)){ | 2096 | if(!redisUtils.hasKey(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText)){ |
2084 | - sendProductionCommentEmail(orderBaseInfoDo,productionComment); | 2097 | + sendProductionCommentEmail(orderBaseInfoDo,productionComment,resultText); |
2085 | redisUtils.set(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText, "1", 90, TimeUnit.DAYS); | 2098 | redisUtils.set(orderBaseInfoDo.getInnerNo()+Constant.CROSS_BAR_CHARACTER+resultText, "1", 90, TimeUnit.DAYS); |
2086 | } | 2099 | } |
2087 | } | 2100 | } |
@@ -2626,7 +2639,7 @@ end | @@ -2626,7 +2639,7 @@ end | ||
2626 | } | 2639 | } |
2627 | } | 2640 | } |
2628 | 2641 | ||
2629 | - private void sendProductionCommentEmail(OrderBaseInfoDO orderBaseInfoDo, String productionComment) { | 2642 | + private void sendProductionCommentEmail(OrderBaseInfoDO orderBaseInfoDo, String productionComment,String lastString) { |
2630 | List<AdminUserDO> adminList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() | 2643 | List<AdminUserDO> adminList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() |
2631 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | 2644 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
2632 | .in(AdminUserDO::getUserName, Arrays.asList(orderBaseInfoDo.getBusinessPerson(), orderBaseInfoDo.getCreateBy(), orderBaseInfoDo.getProductionDepartment()))); | 2645 | .in(AdminUserDO::getUserName, Arrays.asList(orderBaseInfoDo.getBusinessPerson(), orderBaseInfoDo.getCreateBy(), orderBaseInfoDo.getProductionDepartment()))); |
@@ -2655,7 +2668,12 @@ end | @@ -2655,7 +2668,12 @@ end | ||
2655 | orderEventJobVO.getBaseInfo().setProductionComment(productionComment); | 2668 | orderEventJobVO.getBaseInfo().setProductionComment(productionComment); |
2656 | orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(orderBaseInfoDo.getProductionDepartmentConsignTime().substring(0, 10)); | 2669 | orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(orderBaseInfoDo.getProductionDepartmentConsignTime().substring(0, 10)); |
2657 | //目前是选择的是跟单员邮箱和业务员邮箱。 | 2670 | //目前是选择的是跟单员邮箱和业务员邮箱。 |
2658 | - emailSendUtils.sendEmail(EmailTemplateEnum.PRODUCE_IDEA, emailList, orderEventJobVO); | 2671 | + if(!"1".equals(lastString)){ |
2672 | + emailSendUtils.sendEmail(EmailTemplateEnum.PRODUCE_IDEA, emailList, orderEventJobVO,lastString); | ||
2673 | + }else{ | ||
2674 | + emailSendUtils.sendEmail(EmailTemplateEnum.PRODUCE_IDEA, emailList, orderEventJobVO,"无更新信息!"); | ||
2675 | + } | ||
2676 | + | ||
2659 | } | 2677 | } |
2660 | } | 2678 | } |
2661 | } | 2679 | } |
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
@@ -201,6 +201,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -201,6 +201,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
201 | queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | 201 | queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); |
202 | } | 202 | } |
203 | Set<Long> existOrderIdSet=new HashSet<>(); | 203 | Set<Long> existOrderIdSet=new HashSet<>(); |
204 | + Set<Long> filterDoubleOrderIds=new HashSet<>(); | ||
204 | //查询数据 | 205 | //查询数据 |
205 | List<InvoiceIdAndCheckIdResultVO> idResultVOS = invoiceBillOrderMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); | 206 | List<InvoiceIdAndCheckIdResultVO> idResultVOS = invoiceBillOrderMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); |
206 | List<Long> checkIds = idResultVOS.stream().map(x -> x.getCheckId()).filter(Objects::nonNull).collect(Collectors.toList()); | 207 | List<Long> checkIds = idResultVOS.stream().map(x -> x.getCheckId()).filter(Objects::nonNull).collect(Collectors.toList()); |
@@ -211,7 +212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -211,7 +212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
211 | List<Long> existOrderIds = checkBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | 212 | List<Long> existOrderIds = checkBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); |
212 | existOrderIdSet.addAll(existOrderIds); | 213 | existOrderIdSet.addAll(existOrderIds); |
213 | List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | 214 | List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); |
214 | - notExistOrderIds = orderIdList.stream() | 215 | + filterDoubleOrderIds.addAll(orderIdList); |
216 | + notExistOrderIds = filterDoubleOrderIds.stream() | ||
215 | .filter(orderId -> !existOrderIdSet.contains(orderId)) | 217 | .filter(orderId -> !existOrderIdSet.contains(orderId)) |
216 | .collect(Collectors.toList()); | 218 | .collect(Collectors.toList()); |
217 | }else{ | 219 | }else{ |
@@ -904,7 +906,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -904,7 +906,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
904 | throw new BusinessException("应付款单据已审核通过,无法编辑"); | 906 | throw new BusinessException("应付款单据已审核通过,无法编辑"); |
905 | } | 907 | } |
906 | //todo 已完成。 | 908 | //todo 已完成。 |
907 | - checkCommitApply(deductInfoVO.getId()); | 909 | +// checkCommitApply(deductInfoVO.getId()); |
908 | checkApply(new ArrayList<>(Arrays.asList(deductInfoVO.getId()))); | 910 | checkApply(new ArrayList<>(Arrays.asList(deductInfoVO.getId()))); |
909 | //需要判断一下是否为空?不然知己以逗号分隔会报错。 | 911 | //需要判断一下是否为空?不然知己以逗号分隔会报错。 |
910 | if(StringUtils.isNotBlank(checkBillOrderDO.getDeductUrl())){ | 912 | if(StringUtils.isNotBlank(checkBillOrderDO.getDeductUrl())){ |
@@ -951,7 +953,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -951,7 +953,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
951 | throw new BusinessException("已完成收款,无法更新!"); | 953 | throw new BusinessException("已完成收款,无法更新!"); |
952 | } | 954 | } |
953 | //todo 已完成。 | 955 | //todo 已完成。 |
954 | - checkCommitApply(amountInfoVO.getId()); | 956 | +// checkCommitApply(amountInfoVO.getId()); |
955 | checkApply(new ArrayList<>(Arrays.asList(amountInfoVO.getId()))); | 957 | checkApply(new ArrayList<>(Arrays.asList(amountInfoVO.getId()))); |
956 | 958 | ||
957 | checkBillOrderDO.setActualPayedAmount1(amountInfoVO.getActualPayedAmount1() != null ? amountInfoVO.getActualPayedAmount1().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | 959 | checkBillOrderDO.setActualPayedAmount1(amountInfoVO.getActualPayedAmount1() != null ? amountInfoVO.getActualPayedAmount1().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); |
@@ -1212,6 +1214,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -1212,6 +1214,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
1212 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { | 1214 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { |
1213 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; | 1215 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; |
1214 | order.setCheckNo("N/N"); | 1216 | order.setCheckNo("N/N"); |
1217 | + order.setCheckStatus(FinanceEnum.NOT_CREATED.getStatus()); | ||
1215 | return order; | 1218 | return order; |
1216 | }).collect(Collectors.toList()); | 1219 | }).collect(Collectors.toList()); |
1217 | transactionHelper.run(() -> { | 1220 | transactionHelper.run(() -> { |
@@ -1346,17 +1349,18 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -1346,17 +1349,18 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
1346 | //第二行 | 1349 | //第二行 |
1347 | Row row2 = sheet.createRow(3); | 1350 | Row row2 = sheet.createRow(3); |
1348 | Cell cell2 = row2.createCell(0); | 1351 | Cell cell2 = row2.createCell(0); |
1349 | - cell2.setCellValue("提交人:"+queryVO.getFinancePerson()); | 1352 | + cell2.setCellValue("提交人:"+(StringUtils.isNotBlank(queryVO.getTrackerUser()) ? queryVO.getTrackerUser() : "")); |
1350 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); | 1353 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); |
1351 | Cell cell3 = row2.createCell(2); | 1354 | Cell cell3 = row2.createCell(2); |
1352 | cell3.setCellValue(""); | 1355 | cell3.setCellValue(""); |
1353 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); | 1356 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); |
1354 | Cell cell4 = row2.createCell(8); | 1357 | Cell cell4 = row2.createCell(8); |
1355 | - if(StringUtils.isNotBlank(queryVO.getActualPayedDate())){ | 1358 | + /* if(StringUtils.isNotBlank(queryVO.getActualPayedDate())){ |
1356 | cell4.setCellValue("日期:"+queryVO.getActualPayedDate()); | 1359 | cell4.setCellValue("日期:"+queryVO.getActualPayedDate()); |
1357 | }else{ | 1360 | }else{ |
1358 | cell4.setCellValue("日期:"); | 1361 | cell4.setCellValue("日期:"); |
1359 | - } | 1362 | + }*/ |
1363 | + cell4.setCellValue("日期:"+DateUtils.getYearandMountandDay()); | ||
1360 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); | 1364 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); |
1361 | //第三行 | 1365 | //第三行 |
1362 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "生产科对账单号"); | 1366 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "生产科对账单号"); |
@@ -1373,7 +1377,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -1373,7 +1377,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
1373 | createMergedCell(sheet, workbook, 7, 5, 7, 8, 5, 6, queryVO.getTotalActualPayedAmount()!=null? "¥"+queryVO.getTotalActualPayedAmount().setScale(2, BigDecimal.ROUND_HALF_UP):""); | 1377 | createMergedCell(sheet, workbook, 7, 5, 7, 8, 5, 6, queryVO.getTotalActualPayedAmount()!=null? "¥"+queryVO.getTotalActualPayedAmount().setScale(2, BigDecimal.ROUND_HALF_UP):""); |
1374 | createMergedCell(sheet, workbook, 7, 7, 7, 8, 7, 7, queryVO.getUnPayedAmount()!=null? "¥"+queryVO.getUnPayedAmount().setScale(2, BigDecimal.ROUND_HALF_UP):""); | 1378 | createMergedCell(sheet, workbook, 7, 7, 7, 8, 7, 7, queryVO.getUnPayedAmount()!=null? "¥"+queryVO.getUnPayedAmount().setScale(2, BigDecimal.ROUND_HALF_UP):""); |
1375 | createMergedCell(sheet, workbook, 7, 8, 7, 8, 8, 8, queryVO.getPayedDate()!=null?queryVO.getPayedDate():""); | 1379 | createMergedCell(sheet, workbook, 7, 8, 7, 8, 8, 8, queryVO.getPayedDate()!=null?queryVO.getPayedDate():""); |
1376 | - createMergedCell(sheet, workbook, 7, 9, 7, 8, 9, 9, queryVO.getActualPayedDate()!=null?queryVO.getActualPayedDate():""); | 1380 | + createMergedCell(sheet, workbook, 7, 9, 7, 8, 9, 9, ""); |
1377 | //第五行 | 1381 | //第五行 |
1378 | createMergedCell(sheet, workbook, 9, 0, 9, 10, 0, 1, "部门经理审核"); | 1382 | createMergedCell(sheet, workbook, 9, 0, 9, 10, 0, 1, "部门经理审核"); |
1379 | createMergedCell(sheet, workbook, 9, 2, 9, 10, 2, 4, "财务审核"); | 1383 | createMergedCell(sheet, workbook, 9, 2, 9, 10, 2, 4, "财务审核"); |
src/main/resources/application-pre-prod.yml
@@ -57,9 +57,9 @@ spring: | @@ -57,9 +57,9 @@ spring: | ||
57 | testWhileIdle: true | 57 | testWhileIdle: true |
58 | testOnBorrow: true | 58 | testOnBorrow: true |
59 | testOnReturn: true | 59 | testOnReturn: true |
60 | - password: Erp@test123456 | 60 | + password: eJ8(bD6]wN6=gI5= |
61 | time-between-eviction-runs-millis: 1000 | 61 | time-between-eviction-runs-millis: 1000 |
62 | - url: jdbc:mysql://47.104.8.35:3307/order-erp-pre-prod?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true | 62 | + url: jdbc:mysql://47.104.8.35:3307/order-erp-test-real?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true |
63 | username: root | 63 | username: root |
64 | redis: | 64 | redis: |
65 | database: 10 | 65 | database: 10 |