Commit 8dcc2a6efa6ac8745cc5922798d056b3aad98438

Authored by shaofan
1 parent df3394c5

Add JAXB dependencies, update transport order logic, refine CourierMQ listener, …

…and adjust CORS configuration
sl-express-gateway/src/main/resources/bootstrap-local.yml
@@ -19,9 +19,7 @@ spring: @@ -19,9 +19,7 @@ spring:
19 globalcors: 19 globalcors:
20 cors-configurations: 20 cors-configurations:
21 '[/**]': 21 '[/**]':
22 - allowed-origins:  
23 - - "http://127.0.0.1:5173"  
24 - - "http://localhost:5173" 22 + allowed-origin-patterns: "*"
25 allowed-headers: "*" 23 allowed-headers: "*"
26 allow-credentials: true 24 allow-credentials: true
27 allowed-methods: 25 allowed-methods:
sl-express-ms-web-driver/pom.xml
@@ -28,6 +28,26 @@ @@ -28,6 +28,26 @@
28 28
29 <dependencies> 29 <dependencies>
30 <dependency> 30 <dependency>
  31 + <groupId>javax.xml.bind</groupId>
  32 + <artifactId>jaxb-api</artifactId>
  33 + <version>2.2.11</version>
  34 + </dependency>
  35 + <dependency>
  36 + <groupId>com.sun.xml.bind</groupId>
  37 + <artifactId>jaxb-core</artifactId>
  38 + <version>2.2.11</version>
  39 + </dependency>
  40 + <dependency>
  41 + <groupId>com.sun.xml.bind</groupId>
  42 + <artifactId>jaxb-impl</artifactId>
  43 + <version>2.2.11</version>
  44 + </dependency>
  45 + <dependency>
  46 + <groupId>javax.activation</groupId>
  47 + <artifactId>activation</artifactId>
  48 + <version>1.1.1</version>
  49 + </dependency>
  50 + <dependency>
31 <groupId>com.sl-express.common</groupId> 51 <groupId>com.sl-express.common</groupId>
32 <artifactId>sl-express-common</artifactId> 52 <artifactId>sl-express-common</artifactId>
33 <version>${sl-express-common.version}</version> 53 <version>${sl-express-common.version}</version>
sl-express-ms-work-service/src/main/java/com/sl/ms/work/mq/CourierMQListener.java
1 package com.sl.ms.work.mq; 1 package com.sl.ms.work.mq;
2 2
  3 +import cn.hutool.core.date.DateUtil;
3 import cn.hutool.core.date.LocalDateTimeUtil; 4 import cn.hutool.core.date.LocalDateTimeUtil;
4 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
5 import cn.hutool.json.JSONUtil; 6 import cn.hutool.json.JSONUtil;
  7 +import com.sl.ms.base.api.common.MQFeign;
6 import com.sl.ms.oms.api.OrderFeign; 8 import com.sl.ms.oms.api.OrderFeign;
7 import com.sl.ms.oms.dto.OrderDTO; 9 import com.sl.ms.oms.dto.OrderDTO;
8 import com.sl.ms.oms.enums.OrderStatus; 10 import com.sl.ms.oms.enums.OrderStatus;
@@ -11,6 +13,7 @@ import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskSignStat @@ -11,6 +13,7 @@ import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskSignStat
11 import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskStatus; 13 import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskStatus;
12 import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskType; 14 import com.sl.ms.work.domain.enums.pickupDispatchtask.PickupDispatchTaskType;
13 import com.sl.ms.work.entity.PickupDispatchTaskEntity; 15 import com.sl.ms.work.entity.PickupDispatchTaskEntity;
  16 +import com.sl.ms.work.entity.TransportOrderEntity;
14 import com.sl.ms.work.service.PickupDispatchTaskService; 17 import com.sl.ms.work.service.PickupDispatchTaskService;
15 import com.sl.ms.work.service.TransportOrderService; 18 import com.sl.ms.work.service.TransportOrderService;
16 import com.sl.transport.common.constant.Constants; 19 import com.sl.transport.common.constant.Constants;
@@ -19,6 +22,7 @@ import com.sl.transport.common.util.BeanUtil; @@ -19,6 +22,7 @@ import com.sl.transport.common.util.BeanUtil;
19 import com.sl.transport.common.util.ObjectUtil; 22 import com.sl.transport.common.util.ObjectUtil;
20 import com.sl.transport.common.vo.CourierMsg; 23 import com.sl.transport.common.vo.CourierMsg;
21 import com.sl.transport.common.vo.CourierTaskMsg; 24 import com.sl.transport.common.vo.CourierTaskMsg;
  25 +import com.sl.transport.common.vo.TransportInfoMsg;
22 import lombok.extern.slf4j.Slf4j; 26 import lombok.extern.slf4j.Slf4j;
23 import org.springframework.amqp.core.ExchangeTypes; 27 import org.springframework.amqp.core.ExchangeTypes;
24 import org.springframework.amqp.rabbit.annotation.Exchange; 28 import org.springframework.amqp.rabbit.annotation.Exchange;
@@ -28,6 +32,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; @@ -28,6 +32,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
28 import org.springframework.beans.factory.annotation.Autowired; 32 import org.springframework.beans.factory.annotation.Autowired;
29 import org.springframework.stereotype.Component; 33 import org.springframework.stereotype.Component;
30 34
  35 +import javax.annotation.Resource;
31 import java.time.LocalDateTime; 36 import java.time.LocalDateTime;
32 import java.time.temporal.ChronoUnit; 37 import java.time.temporal.ChronoUnit;
33 import java.util.List; 38 import java.util.List;
@@ -49,6 +54,9 @@ public class CourierMQListener { @@ -49,6 +54,9 @@ public class CourierMQListener {
49 @Autowired 54 @Autowired
50 private OrderFeign orderFeign; 55 private OrderFeign orderFeign;
51 56
  57 + @Autowired
  58 + private MQFeign mqFeign;
  59 +
52 60
53 /** 61 /**
54 * 生成快递员取派件任务 62 * 生成快递员取派件任务
@@ -131,7 +139,19 @@ public class CourierMQListener { @@ -131,7 +139,19 @@ public class CourierMQListener {
131 log.info("接收到快递员取件成功的消息 >>> msg = {}", msg); 139 log.info("接收到快递员取件成功的消息 >>> msg = {}", msg);
132 //解析消息 140 //解析消息
133 CourierMsg courierMsg = JSONUtil.toBean(msg, CourierMsg.class); 141 CourierMsg courierMsg = JSONUtil.toBean(msg, CourierMsg.class);
134 - System.out.println(courierMsg);  
135 - //TODO 未实现具体逻辑 142 +
  143 + //订单转运单
  144 + TransportOrderEntity transportOrder = this.transportOrderService.orderToTransportOrder(courierMsg.getOrderId());
  145 +
  146 + //发送运单跟踪消息
  147 + String info = StrUtil.format("神领快递员已取件, 取件人【{},电话 {}】", courierMsg.getCourierName(), courierMsg.getCourierMobile());
  148 + //构建消息实体类
  149 + String transportInfoMsg = TransportInfoMsg.builder()
  150 + .transportOrderId(transportOrder.getId())//运单id
  151 + .status("已取件")//消息状态
  152 + .info(info)//消息详情
  153 + .created(DateUtil.current())//创建时间
  154 + .build().toJson();
  155 + this.mqFeign.sendMsg(Constants.MQ.Exchanges.TRANSPORT_INFO, Constants.MQ.RoutingKeys.TRANSPORT_INFO_APPEND, transportInfoMsg);
136 } 156 }
137 } 157 }
sl-express-ms-work-service/src/main/java/com/sl/ms/work/mq/TransportTaskMQListener.java
@@ -34,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
34 import org.springframework.stereotype.Component; 34 import org.springframework.stereotype.Component;
35 import org.springframework.transaction.annotation.Transactional; 35 import org.springframework.transaction.annotation.Transactional;
36 36
  37 +import java.util.ArrayList;
37 import java.util.List; 38 import java.util.List;
38 import java.util.stream.Collectors; 39 import java.util.stream.Collectors;
39 40
@@ -67,9 +68,12 @@ public class TransportTaskMQListener { @@ -67,9 +68,12 @@ public class TransportTaskMQListener {
67 public void listenTransportTaskMsg(String msg) { 68 public void listenTransportTaskMsg(String msg) {
68 //解析消息 {"driverIds":[123,345], "truckPlanId":456, "truckId":1210114964812075008,"totalVolume":4.2,"endOrganId":90001,"totalWeight":7,"transportOrderIdList":[320733749248,420733749248],"startOrganId":100280} 69 //解析消息 {"driverIds":[123,345], "truckPlanId":456, "truckId":1210114964812075008,"totalVolume":4.2,"endOrganId":90001,"totalWeight":7,"transportOrderIdList":[320733749248,420733749248],"startOrganId":100280}
69 JSONObject jsonObject = JSONUtil.parseObj(msg); 70 JSONObject jsonObject = JSONUtil.parseObj(msg);
70 - 71 + JSONArray driverIds1 = jsonObject.getJSONArray("driverIds");
  72 + List<Long> driverIds = new ArrayList<>();
  73 + for (Object o : driverIds1.toArray()) {
  74 + driverIds.add(Convert.toLong(o));
  75 + }
71 // 获取到司机ID列表 76 // 获取到司机ID列表
72 - List<Long> driverIds = CollUtil.getFieldValues(jsonObject, "driverIds", Long.class);  
73 77
74 // 分配状态 78 // 分配状态
75 TransportTaskAssignedStatus assignedStatus = CollUtil.isEmpty(driverIds) ? TransportTaskAssignedStatus.MANUAL_DISTRIBUTED : TransportTaskAssignedStatus.DISTRIBUTED; 79 TransportTaskAssignedStatus assignedStatus = CollUtil.isEmpty(driverIds) ? TransportTaskAssignedStatus.MANUAL_DISTRIBUTED : TransportTaskAssignedStatus.DISTRIBUTED;
sl-express-ms-work-service/src/main/java/com/sl/ms/work/service/impl/PickupDispatchTaskServiceImpl.java
@@ -60,11 +60,12 @@ public class PickupDispatchTaskServiceImpl extends ServiceImpl&lt;TaskPickupDispatc @@ -60,11 +60,12 @@ public class PickupDispatchTaskServiceImpl extends ServiceImpl&lt;TaskPickupDispatc
60 @Transactional 60 @Transactional
61 public Boolean updateStatus(PickupDispatchTaskDTO pickupDispatchTaskDTO) { 61 public Boolean updateStatus(PickupDispatchTaskDTO pickupDispatchTaskDTO) {
62 WorkExceptionEnum paramError = WorkExceptionEnum.PICKUP_DISPATCH_TASK_PARAM_ERROR; 62 WorkExceptionEnum paramError = WorkExceptionEnum.PICKUP_DISPATCH_TASK_PARAM_ERROR;
63 - if (ObjectUtil.hasEmpty(pickupDispatchTaskDTO.getId(), pickupDispatchTaskDTO.getStatus())) { 63 + PickupDispatchTaskStatus status = pickupDispatchTaskDTO.getStatus();
  64 + if (ObjectUtil.hasEmpty(pickupDispatchTaskDTO.getId(), status)) {
64 throw new SLException("更新取派件任务状态,id或status不能为空", paramError.getCode()); 65 throw new SLException("更新取派件任务状态,id或status不能为空", paramError.getCode());
65 } 66 }
66 -  
67 PickupDispatchTaskEntity pickupDispatchTask = getById(pickupDispatchTaskDTO.getId()); 67 PickupDispatchTaskEntity pickupDispatchTask = getById(pickupDispatchTaskDTO.getId());
  68 + pickupDispatchTask.setStatus(status);
68 69
69 switch (pickupDispatchTask.getStatus()) { 70 switch (pickupDispatchTask.getStatus()) {
70 case NEW: 71 case NEW:
sl-express-ms-work-service/src/main/java/com/sl/ms/work/service/impl/TransportOrderServiceImpl.java
@@ -159,6 +159,7 @@ public class TransportOrderServiceImpl extends @@ -159,6 +159,7 @@ public class TransportOrderServiceImpl extends
159 transportOrder.setNextAgencyId(sendAgentId); 159 transportOrder.setNextAgencyId(sendAgentId);
160 //运单状态(1.新建 2.已装车 3.运输中 4.到达终端网点 5.已签收 6.拒收) 160 //运单状态(1.新建 2.已装车 3.运输中 4.到达终端网点 5.已签收 6.拒收)
161 transportOrder.setStatus(TransportOrderStatus.ARRIVED_END); 161 transportOrder.setStatus(TransportOrderStatus.ARRIVED_END);
  162 + transportOrder.setIsRejection(false);
162 //调度状态(1.待调度2.未匹配线路3.已调度) 163 //调度状态(1.待调度2.未匹配线路3.已调度)
163 transportOrder.setSchedulingStatus(TransportOrderSchedulingStatus.SCHEDULED); 164 transportOrder.setSchedulingStatus(TransportOrderSchedulingStatus.SCHEDULED);
164 } 165 }