Эх сурвалжийг харах

Merge remote-tracking branch 'origin/dev' into dev

xucaiqin 2 жил өмнө
parent
commit
3f69051c76

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw_lfdc
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw_lfdc
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

+ 11 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -4,7 +4,8 @@ import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.model.ValiList;
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.transport.model.dto.ConfirmRefuseSendCarDto;
+import com.sckw.transport.model.dto.OperateWaybillDto;
+import com.sckw.transport.model.dto.OperateSendCarDto;
 import com.sckw.transport.model.dto.SendCarDto1;
 import com.sckw.transport.model.dto.UpdateDriverCarDTO;
 import com.sckw.transport.service.DriverService;
@@ -124,7 +125,7 @@ public class KwtWaybillOrderController {
      * @date 2023/7/24
      **/
     @PostMapping("/confirmSendCar")
-    public HttpResult confirmSendCar(@RequestBody @Valid ConfirmRefuseSendCarDto params){
+    public HttpResult confirmSendCar(@RequestBody @Valid OperateSendCarDto params){
         return waybillOrderService.confirmSendCar(params);
     }
 
@@ -135,30 +136,30 @@ public class KwtWaybillOrderController {
      * @date 2023/7/24
      **/
     @PostMapping("/refuseSendCar")
-    public HttpResult refuseSendCar(@RequestBody @Valid ConfirmRefuseSendCarDto params){
+    public HttpResult refuseSendCar(@RequestBody @Valid OperateSendCarDto params){
         return waybillOrderService.refuseSendCar(params);
     }
 
     /**
-     * @param params {}
+     * @param params 确认/拒绝出车参数
      * @description 确认出车
      * @author zk
      * @date 2023/7/26
      **/
     @PostMapping("/confirmDeparture")
-    public HttpResult confirmDeparture(@RequestBody @Valid ConfirmRefuseSendCarDto params){
-        return waybillOrderService.confirmSendCar(params);
+    public HttpResult confirmDeparture(@RequestBody @Valid OperateWaybillDto params){
+        return waybillOrderService.confirmDeparture(params);
     }
 
     /**
-     * @param params {}
+     * @param params 确认/拒绝出车参数
      * @description 拒绝出车
      * @author zk
      * @date 2023/7/26
      **/
-    @PostMapping("/confirmDeparture")
-    public HttpResult refuseDeparture(@RequestBody @Valid ConfirmRefuseSendCarDto params){
-        return waybillOrderService.refuseSendCar(params);
+    @PostMapping("/refuseDeparture")
+    public HttpResult refuseDeparture(@RequestBody @Valid OperateWaybillDto params){
+        return waybillOrderService.refuseDeparture(params);
     }
 
 

+ 8 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ConfirmRefuseSendCarDto.java → sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OperateSendCarDto.java

@@ -2,6 +2,7 @@ package com.sckw.transport.model.dto;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
 /**
@@ -10,7 +11,7 @@ import lombok.Data;
  * @date 2023/7/25 0025
  */
 @Data
-public class ConfirmRefuseSendCarDto {
+public class OperateSendCarDto {
 
     /**
      * 派车类型(1:趟次:2:循环)
@@ -46,4 +47,10 @@ public class ConfirmRefuseSendCarDto {
     @JsonProperty("truckId")
     @NotNull(message = "车辆信息ID不能为空")
     private Long truckId;
+
+    /**
+     * 备注
+     */
+    @Size(max=100, message = "原因长度不能大于100个字符!")
+    private String remark;
 }

+ 28 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OperateWaybillDto.java

@@ -0,0 +1,28 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 确认/拒绝出车参数
+ * @date 2023/7/26 0026
+ */
+@Data
+public class OperateWaybillDto {
+
+    /**
+     * 车辆订单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆订单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 备注
+     */
+    @Size(max=100, message = "原因长度不能大于100个字符!")
+    private String remark;
+}

+ 177 - 113
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1,7 +1,5 @@
 package com.sckw.transport.service;
 
-import com.alibaba.fastjson.JSON;
-import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
@@ -18,17 +16,17 @@ import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
-import com.sckw.transport.model.dto.ConfirmRefuseSendCarDto;
+import com.sckw.transport.model.dto.OperateWaybillDto;
+import com.sckw.transport.model.dto.OperateSendCarDto;
 import com.sckw.transport.model.dto.SendCarDto1;
 import jakarta.annotation.Resource;
-import org.checkerframework.checker.units.qual.K;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -250,7 +248,7 @@ public class KwtWaybillOrderService {
         waybillOrderAddressDao.insert(unloadAddress);
 
         /**车辆运单状态记录**/
-        this.setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus());
+        this.setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), null);
     }
 
     /**
@@ -299,14 +297,16 @@ public class KwtWaybillOrderService {
     /**
      * @param wOrderId 车辆订单ID
      * @param status 车辆运单状态
+     * @param remark 备注
      * @desc 新增运单状态记录
      * @author zk
      * @date 2023/7/20
      **/
-    public KwtWaybillOrderTrack setWaybillOrderTrack(Long wOrderId, int status) {
+    public KwtWaybillOrderTrack setWaybillOrderTrack(Long wOrderId, int status, String remark) {
         KwtWaybillOrderTrack orderTrack = new KwtWaybillOrderTrack();
         orderTrack.setWOrderId(wOrderId);
         orderTrack.setStatus(status);
+        orderTrack.setRemark(remark);
         int count = waybillOrderTrackDao.insert(orderTrack);
         return count > 0 ? orderTrack : null;
     }
@@ -512,7 +512,7 @@ public class KwtWaybillOrderService {
 
     /**
      * @param ids 车辆运单主键ID,多个已逗号隔开
-     * @description 取消派车
+     * @description 取消派车(趟次派车)
      * @author zk
      * @date 2023/7/24
      **/
@@ -544,56 +544,33 @@ public class KwtWaybillOrderService {
 
         /**业务处理**/
         for (Long id : ids) {
-            KwtWaybillOrder order = waybillOrderDao.selectById(id);
-            if (order != null) {
+            KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(id);
+            if (waybillOrder != null) {
                 //待接单的车辆运单才能撤回
-                if (order.getStatus() == CarWaybillEnum.PENDING_ORDER.getCode()) {
+                if (waybillOrder.getStatus() == CarWaybillEnum.PENDING_ORDER.getCode()) {
                     /**1更新车辆运单**/
-                    order.setStatus(CarWaybillEnum.REVOKED.getCode());
-                    waybillOrderDao.updateById(order);
+                    waybillOrder.setStatus(CarWaybillEnum.REVOKED.getCode());
+                    waybillOrderDao.updateById(waybillOrder);
 
                     /**2新增运单状态记录**/
-                    setWaybillOrderTrack(order.getId(), order.getStatus());
+                    setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), null);
 
                     /**3回退承运订单entrustAmount**/
-                    KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(order.getLOrderId());
+                    KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
                     //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
                     BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getEntrustAmount();
-                    logisticsOrder.setEntrustAmount(entrustAmount.subtract(order.getEntrustAmount()));
+                    logisticsOrder.setEntrustAmount(entrustAmount.subtract(waybillOrder.getEntrustAmount()));
                     logisticsOrderDao.updateById(logisticsOrder);
 
                     /**4Mongodb数据更新**/
-                    //1车辆
+                    //1车辆
                     SckwWaybillOrder wOrder = new SckwWaybillOrder();
-                    wOrder.set_id(order.getId());
-                    wOrder.setWOrderId(order.getId());
-                    wOrder.setStatus(order.getStatus());
-                    wOrder.setUpdateTime(order.getUpdateTime());
-                    wOrder.setUpdateBy(order.getUpdateBy());
-                    //rabbitMq业务汇总数据发送/消费对象
-                    SckwBusSum busSum = new SckwBusSum();
-                    //业务汇总类型
-                    busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-                    //操作对象(1新增/2修改/3替换数据)
-                    busSum.setMethod(2);
-                    //业务汇总数据对象
-                    busSum.setObject(wOrder);
-                    streamBridge.send("sckw-busSum", busSum);
+                    wOrder.set_id(waybillOrder.getId());
+                    editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
                     //2承运订单
                     SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
-                    lOrder.set_id(logisticsOrder.getId());
-                    lOrder.setLOrderId(logisticsOrder.getId());
-                    lOrder.setEntrustAmount(logisticsOrder.getEntrustAmount());
-                    lOrder.setUpdateTime(logisticsOrder.getUpdateTime());
-                    lOrder.setUpdateBy(logisticsOrder.getUpdateBy());
-                    //业务汇总类型
-                    busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
-                    //操作对象(1新增/2修改/3替换数据)
-                    busSum.setMethod(2);
-                    //业务汇总数据对象
-                    busSum.setObject(lOrder);
-                    streamBridge.send("sckw-busSum", busSum);
+                    editSckwLogisticsOrder(lOrder, logisticsOrder);
 
                     /**5发送消息**/
 
@@ -606,6 +583,54 @@ public class KwtWaybillOrderService {
         return HttpResult.ok("车辆运单撤回成功!");
     }
 
+    /**
+     * @param wOrder mongodb中车辆运单信息
+     * @param order 车辆运单信息
+     * @param method 操作对象(1新增/2修改/3替换数据)
+     * @description 更新mongodb中车辆运单信息
+     * @author zk
+     * @date 2023/7/26
+     **/
+    public void editSckwWaybillOrder(SckwWaybillOrder wOrder, KwtWaybillOrder order, int method){
+        wOrder.setWOrderId(order.getId());
+        wOrder.setStatus(order.getStatus());
+        wOrder.setUpdateTime(order.getUpdateTime());
+        wOrder.setUpdateBy(order.getUpdateBy());
+        //rabbitMq业务汇总数据发送/消费对象
+        SckwBusSum busSum = new SckwBusSum();
+        //业务汇总类型
+        busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
+        //操作对象(1新增/2修改/3替换数据)
+        busSum.setMethod(method);
+        //业务汇总数据对象
+        busSum.setObject(wOrder);
+        streamBridge.send("sckw-busSum", busSum);
+    }
+
+    /**
+     * @param lOrder mongodb中承运订单信息
+     * @param order 承运订单
+     * @description 更新mongodb中承运订单信息
+     * @author zk
+     * @date 2023/7/26
+     **/
+    public void editSckwLogisticsOrder(SckwLogisticsOrder lOrder, KwtLogisticsOrder order){
+        lOrder.set_id(order.getId());
+        lOrder.setLOrderId(order.getId());
+        lOrder.setEntrustAmount(order.getEntrustAmount());
+        lOrder.setUpdateTime(order.getUpdateTime());
+        lOrder.setUpdateBy(order.getUpdateBy());
+        //rabbitMq业务汇总数据发送/消费对象
+        SckwBusSum busSum = new SckwBusSum();
+        //业务汇总类型
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        //操作对象(1新增/2修改/3替换数据)
+        busSum.setMethod(2);
+        //业务汇总数据对象
+        busSum.setObject(lOrder);
+        streamBridge.send("sckw-busSum", busSum);
+    }
+
     /**
      * @param params {}
      * @description 确认接单
@@ -613,44 +638,32 @@ public class KwtWaybillOrderService {
      * @date 2023/7/25
      **/
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult confirmSendCar(ConfirmRefuseSendCarDto params) {
+    public HttpResult confirmSendCar(OperateSendCarDto params) {
         /**趟次派车**/
         if (params.getType() == Global.NUMERICAL_ONE) {
             /**数据校验**/
-            KwtWaybillOrder order = waybillOrderDao.selectById(params.getWOrderId());
-            if (order == null) {
+            KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+            if (waybillOrder == null) {
                 return HttpResult.error("车辆趟次运单不存在!");
             }
             //待接单车辆运单才能拒绝接单
-            if (order.getStatus() != CarWaybillEnum.PENDING_ORDER.getCode()) {
+            if (waybillOrder.getStatus() != CarWaybillEnum.PENDING_ORDER.getCode()) {
                 return HttpResult.error("车辆运单当前状态已不能拒绝接单!");
             }
 
             /**业务处理**/
             /**1更新车辆运单**/
-            order.setStatus(CarWaybillEnum.PENDING_VEHICLE.getCode());
-            waybillOrderDao.updateById(order);
+            waybillOrder.setStatus(CarWaybillEnum.PENDING_VEHICLE.getCode());
+            waybillOrderDao.updateById(waybillOrder);
 
             /**2新增运单状态记录**/
-            setWaybillOrderTrack(order.getId(), order.getStatus());
+            setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
 
             /**3Mongodb数据更新**/
             //1车辆运单
             SckwWaybillOrder wOrder = new SckwWaybillOrder();
-            wOrder.set_id(order.getId());
-            wOrder.setWOrderId(order.getId());
-            wOrder.setStatus(order.getStatus());
-            wOrder.setUpdateTime(order.getUpdateTime());
-            wOrder.setUpdateBy(order.getUpdateBy());
-            //rabbitMq业务汇总数据发送/消费对象
-            SckwBusSum busSum = new SckwBusSum();
-            //业务汇总类型
-            busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-            //操作对象(1新增/2修改/3替换数据)
-            busSum.setMethod(2);
-            //业务汇总数据对象
-            busSum.setObject(wOrder);
-            streamBridge.send("sckw-busSum", busSum);
+            wOrder.set_id(waybillOrder.getId());
+            editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
             /**4发送消息**/
 
@@ -693,7 +706,6 @@ public class KwtWaybillOrderService {
             //补上车辆运单待接单状态
             setWaybillOrderTrack(circulate, waybillOrder.getId());
 
-
             /**2更新承运订单信息**/
             //承运单信息
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
@@ -707,21 +719,14 @@ public class KwtWaybillOrderService {
             logisticsOrderCirculateDao.updateById(circulate);
 
             /**4Mongodb数据更新**/
+            //1车辆订单
             SckwWaybillOrder wOrder = new SckwWaybillOrder();
             wOrder.set_id(circulate.getId());
-            wOrder.setWOrderId(waybillOrder.getId());
-            wOrder.setStatus(waybillOrder.getStatus());
-            wOrder.setUpdateTime(waybillOrder.getUpdateTime());
-            wOrder.setUpdateBy(waybillOrder.getUpdateBy());
-            //rabbitMq业务汇总数据发送/消费对象
-            SckwBusSum busSum = new SckwBusSum();
-            //业务汇总类型
-            busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-            //操作对象(1新增/2修改/3替换数据)
-            busSum.setMethod(3);
-            //业务汇总数据对象
-            busSum.setObject(wOrder);
-            streamBridge.send("sckw-busSum", busSum);
+            editSckwWaybillOrder(wOrder, waybillOrder, 3);
+
+            //2承运订单
+            SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+            editSckwLogisticsOrder(lOrder, logisticsOrder);
 
             /**5发送消息**/
         }
@@ -754,66 +759,43 @@ public class KwtWaybillOrderService {
      * @date 2023/7/25
      **/
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult refuseSendCar(ConfirmRefuseSendCarDto params) {
+    public HttpResult refuseSendCar(OperateSendCarDto params) {
         /**趟次派车**/
         if (params.getType() == Global.NUMERICAL_ONE) {
             /**数据校验**/
-            KwtWaybillOrder order = waybillOrderDao.selectById(params.getWOrderId());
-            if (order == null) {
+            KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+            if (waybillOrder == null) {
                 return HttpResult.error("车辆趟次运单不存在!");
             }
             //待接单车辆运单才能拒绝接单
-            if (order.getStatus() != CarWaybillEnum.PENDING_ORDER.getCode()) {
+            if (waybillOrder.getStatus() != CarWaybillEnum.PENDING_ORDER.getCode()) {
                 return HttpResult.error("车辆运单当前状态已不能拒绝接单!");
             }
 
             /**业务处理**/
             /**1更新车辆运单**/
-            order.setStatus(CarWaybillEnum.REVOKED.getCode());
-            waybillOrderDao.updateById(order);
+            waybillOrder.setStatus(CarWaybillEnum.REVOKED.getCode());
+            waybillOrderDao.updateById(waybillOrder);
 
             /**2新增运单状态记录**/
-            setWaybillOrderTrack(order.getId(), order.getStatus());
+            setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
 
             /**3回退承运订单entrustAmount**/
-            KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(order.getLOrderId());
+            KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
             //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
             BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getEntrustAmount();
-            logisticsOrder.setEntrustAmount(entrustAmount.subtract(order.getEntrustAmount()));
+            logisticsOrder.setEntrustAmount(entrustAmount.subtract(waybillOrder.getEntrustAmount()));
             logisticsOrderDao.updateById(logisticsOrder);
 
             /**4Mongodb数据更新**/
             //1车辆运单
             SckwWaybillOrder wOrder = new SckwWaybillOrder();
-            wOrder.set_id(order.getId());
-            wOrder.setWOrderId(order.getId());
-            wOrder.setStatus(order.getStatus());
-            wOrder.setUpdateTime(order.getUpdateTime());
-            wOrder.setUpdateBy(order.getUpdateBy());
-            //rabbitMq业务汇总数据发送/消费对象
-            SckwBusSum busSum = new SckwBusSum();
-            //业务汇总类型
-            busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-            //操作对象(1新增/2修改/3替换数据)
-            busSum.setMethod(2);
-            //业务汇总数据对象
-            busSum.setObject(wOrder);
-            streamBridge.send("sckw-busSum", busSum);
+            wOrder.set_id(waybillOrder.getId());
+            editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
             //2承运订单
             SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
-            lOrder.set_id(logisticsOrder.getId());
-            lOrder.setLOrderId(logisticsOrder.getId());
-            lOrder.setEntrustAmount(logisticsOrder.getEntrustAmount());
-            lOrder.setUpdateTime(logisticsOrder.getUpdateTime());
-            lOrder.setUpdateBy(logisticsOrder.getUpdateBy());
-            //业务汇总类型
-            busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
-            //操作对象(1新增/2修改/3替换数据)
-            busSum.setMethod(2);
-            //业务汇总数据对象
-            busSum.setObject(lOrder);
-            streamBridge.send("sckw-busSum", busSum);
+            editSckwLogisticsOrder(lOrder, logisticsOrder);
 
             /**5发送消息**/
 
@@ -830,6 +812,7 @@ public class KwtWaybillOrderService {
 
             /**1更新循环单状态为失效**/
             circulate.setStatus(Global.YES);
+            circulate.setRemark(params.getRemark());
             logisticsOrderCirculateDao.updateById(circulate);
 
             /**2Mongodb数据更新**/
@@ -854,9 +837,90 @@ public class KwtWaybillOrderService {
         return HttpResult.ok("拒绝接单成功!");
     }
 
+    /**
+     * @param params 确认/拒绝出车参数
+     * @description 确认出车
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult confirmDeparture(OperateWaybillDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //待出车车辆运单才能出车
+        if (waybillOrder.getStatus() != CarWaybillEnum.PENDING_VEHICLE.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能出车!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setStatus(CarWaybillEnum.EXIT_COMPLETED.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
 
+        /**3Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
+        /**4发送消息**/
 
+        return HttpResult.ok("确认出车成功!");
+    }
+
+    /**
+     * @param params 确认/拒绝出车参数
+     * @description 拒绝出车
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult refuseDeparture(OperateWaybillDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //待出车车辆运单才能拒绝出车
+        if (waybillOrder.getStatus() != CarWaybillEnum.PENDING_VEHICLE.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能拒绝出车!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setStatus(CarWaybillEnum.REFUSE_TRAFFIC.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
+
+        /**3回退承运订单entrustAmount**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+        //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
+        BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getEntrustAmount();
+        logisticsOrder.setEntrustAmount(entrustAmount.subtract(waybillOrder.getEntrustAmount()));
+        logisticsOrderDao.updateById(logisticsOrder);
+
+        /**4Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        //2承运订单
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        editSckwLogisticsOrder(lOrder, logisticsOrder);
+
+        /**5发送消息**/
+
+        return HttpResult.ok("拒绝出车成功!");
+    }
 
 
 }