Commit 589b0cdced56b43ddf256617c0b361c1aa26b3a6

Authored by 谢茂盛
1 parent 23e0e78b

feat: ERP升级

1、订单超期事件
src/main/java/com/order/erp/domain/vo/order/OrderEventJobVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.order;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * 订单基础信息表(OrderBaseInfo)实体类
  10 + *
  11 + * @author makejava
  12 + * @since 2023-09-08 15:26:43
  13 + */
  14 +@Data
  15 +@AllArgsConstructor
  16 +@ToString
  17 +@NoArgsConstructor
  18 +@EqualsAndHashCode(callSuper = false)
  19 +@SuperBuilder
  20 +public class OrderEventJobVO implements Serializable {
  21 +
  22 + /**
  23 + * 订单id
  24 + */
  25 + private Long orderId;
  26 +
  27 + /**
  28 + * 订单基础信息
  29 + */
  30 + private OrderBaseInfoVO baseInfo;
  31 +
  32 + /**
  33 + * 利润分析信息
  34 + */
  35 + private OrderProfitAnalysisVO profitAnalysisInfo;
  36 +
  37 + /**
  38 + * 项目完成报告信息
  39 + */
  40 + private OrderCompletionReportVO reportInfo;
  41 +
  42 + /**
  43 + * 跟单信息
  44 + */
  45 + private OrderTrackStageVO trackStageInfo;
  46 +
  47 + /**
  48 + * 质检信息
  49 + */
  50 + private OrderInspectionStageVO inspectionStageInfo;
  51 +
  52 +}
... ...
src/main/java/com/order/erp/job/OrderOverTimeEventJob.java
... ... @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
4 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 5 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
6 6 import com.order.erp.common.constant.Constant;
7   -import com.order.erp.common.constant.ServerResult;
8 7 import com.order.erp.common.utils.EmailSendUtils;
9 8 import com.order.erp.common.utils.StringUtils;
10 9 import com.order.erp.common.utils.TransactionHelper;
... ... @@ -12,8 +11,12 @@ import com.order.erp.domain.EmailTemplateEnum;
12 11 import com.order.erp.domain.OrderEventEnum;
13 12 import com.order.erp.domain.OrderStatusEnum;
14 13 import com.order.erp.domain.dto.BaseDO;
15   -import com.order.erp.domain.dto.order.*;
  14 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
  15 +import com.order.erp.domain.dto.order.OrderInspectionStageDO;
  16 +import com.order.erp.domain.dto.order.OrderTrackStageDO;
  17 +import com.order.erp.domain.dto.order.ReceiveEmailMappingDO;
16 18 import com.order.erp.domain.email.OrderProductEmailVO;
  19 +import com.order.erp.domain.vo.order.OrderEventJobVO;
17 20 import com.order.erp.domain.vo.order.ReceiveEmailConfigItemVO;
18 21 import com.order.erp.service.order.*;
19 22 import freemarker.template.TemplateException;
... ... @@ -28,10 +31,7 @@ import java.io.IOException;
28 31 import java.time.LocalDate;
29 32 import java.time.format.DateTimeFormatter;
30 33 import java.time.temporal.ChronoUnit;
31   -import java.util.ArrayList;
32   -import java.util.List;
33   -import java.util.Map;
34   -import java.util.Set;
  34 +import java.util.*;
35 35 import java.util.function.Function;
36 36 import java.util.stream.Collectors;
37 37  
... ... @@ -91,11 +91,11 @@ public class OrderOverTimeEventJob {
91 91 System.out.println("1111111111111111111111111");
92 92 //只有跟单信息不为空时,才会有时间和状态。
93 93 if (CollectionUtils.isNotEmpty(orderTrackStageList)) {
94   - System.out.println("orderId"+baseInfoDOMap);
95   - System.out.println("order Base Info"+inspectionStageDOMap);
  94 + System.out.println("orderId" + baseInfoDOMap);
  95 + System.out.println("order Base Info" + inspectionStageDOMap);
96 96 orderTrackStageList.stream().forEach(x -> {
97   - System.out.println("orderId"+x.getOrderId());
98   - System.out.println("order Base Info"+baseInfoDOMap.get(x.getOrderId()));
  97 + System.out.println("orderId" + x.getOrderId());
  98 + System.out.println("order Base Info" + baseInfoDOMap.get(x.getOrderId()));
99 99 if (StringUtils.isBlank(baseInfoDOMap.get(x.getOrderId()).getOrderHodTime())) {
100 100 // return ServerResult.fail("HODTime不能为空");
101 101 }
... ... @@ -349,4 +349,86 @@ public class OrderOverTimeEventJob {
349 349 }
350 350 }*/
351 351  
  352 + @Scheduled(cron = "0 0 2 * * ?")
  353 + public void checkOverTimeExecuteV2() {
  354 + List<OrderEventJobVO> jobVOList = transfer2OrderEventList(null, null, null);
  355 +
  356 + Map<String, List<OrderEventJobVO>> map = handlerOrderEvent(jobVOList);
  357 +
  358 + for (Map.Entry<String, List<OrderEventJobVO>> entry : map.entrySet()) {
  359 +
  360 + sendEmail4OrderEvent(OrderEventEnum.getEvent(entry.getKey()), entry.getValue());
  361 + }
  362 + }
  363 +
  364 + /**
  365 + * @param eventEnum
  366 + * @param eventJobVOS
  367 + */
  368 + private void sendEmail4OrderEvent(OrderEventEnum eventEnum, List<OrderEventJobVO> eventJobVOS) {
  369 + // todo
  370 + }
  371 +
  372 + /**
  373 + * @param orderBaseInfoList
  374 + * @param orderInspectionStageList
  375 + * @param orderTrackStageList
  376 + * @return
  377 + */
  378 + private List<OrderEventJobVO> transfer2OrderEventList(List<OrderBaseInfoDO> orderBaseInfoList, List<OrderInspectionStageDO> orderInspectionStageList, List<OrderTrackStageDO> orderTrackStageList) {
  379 +
  380 + // todo
  381 + return null;
  382 + }
  383 +
  384 + /**
  385 + * @param orderEventJobVOList
  386 + * @return
  387 + */
  388 + private Map<String, List<OrderEventJobVO>> handlerOrderEvent(List<OrderEventJobVO> orderEventJobVOList) {
  389 + Map<String, List<OrderEventJobVO>> map = new HashMap<>();
  390 + for (OrderEventJobVO eventJobVO : orderEventJobVOList) {
  391 + Map<String, OrderEventJobVO> eventJobVOMap = groupByOrderEvent(eventJobVO);
  392 + if (CollectionUtils.isNotEmpty(eventJobVOMap)) {
  393 + for (Map.Entry<String, OrderEventJobVO> entry : eventJobVOMap.entrySet()) {
  394 + String key = entry.getKey();
  395 + if (map.containsKey(key)) {
  396 + List<OrderEventJobVO> list = map.get(key);
  397 + list.add(entry.getValue());
  398 + map.put(key, list);
  399 + } else {
  400 + List<OrderEventJobVO> list = new ArrayList<>();
  401 + list.add(entry.getValue());
  402 + map.put(key, list);
  403 + }
  404 + }
  405 + }
  406 + }
  407 + return map;
  408 + }
  409 +
  410 + /**
  411 + * @param eventJobVO
  412 + * @return
  413 + */
  414 + private Map<String, OrderEventJobVO> groupByOrderEvent(OrderEventJobVO eventJobVO) {
  415 + Map<String, OrderEventJobVO> map = new HashMap<>();
  416 + if (filterConfirmSampleOrderEvent(eventJobVO)) {
  417 + map.put(OrderEventEnum.CONFIRM_SAMPLE_EVENT.getEvent(), eventJobVO);
  418 + }
  419 + // todo 其他订单超期事件判断
  420 + return map;
  421 + }
  422 +
  423 + /**
  424 + * @param eventJobVO
  425 + * @return
  426 + */
  427 + private Boolean filterConfirmSampleOrderEvent(OrderEventJobVO eventJobVO) {
  428 +
  429 + // todo 判断是否未能在规定的期限内完成以下货号的确认样确认
  430 +
  431 + return true;
  432 + }
  433 +
352 434 }
... ...