Commit d939bd030ca96b11119510e5c71b3a5c7a1980c7

Authored by chenhang4442024
1 parent 9d5da66f

feat:1.更新邮件提示,根据不同的客户编码重新设置邮件提示。

2.产品信息添加最新信息展示
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&lt;InvoiceBillOrderMap @@ -390,6 +390,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -401,7 +402,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -1327,6 +1329,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -1416,17 +1419,19 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -1443,7 +1448,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -230,7 +230,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;OrderBaseInfoMapper, O @@ -886,9 +886,6 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -201,6 +201,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -211,7 +212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -904,7 +906,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -951,7 +953,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -1212,6 +1214,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -1346,17 +1349,18 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -1373,7 +1377,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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
src/main/resources/application.yml
1 server: 1 server:
2 - port: 18000 2 + port: 18001
3 3
4 spring: 4 spring:
5 profiles: 5 profiles: