Przeglądaj źródła

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

donglang 4 tygodni temu
rodzic
commit
e2f6a640d0

+ 2 - 1
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java

@@ -127,7 +127,8 @@ public interface RemoteFleetService {
 
     void updateDriverScoreByEntId(RUpdateDriverScoreDto dto);
 
-    void driverBindTruck(Long driverId, Long truckId);
+    void driverBindTruck(Long driverId, Long truckId,Long entId);
 
 
+    void unbindTruck(Long entId, Long driverId);
 }

+ 25 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -1,11 +1,15 @@
 package com.sckw.fleet.dubbo;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.dto.RUpdateDriverScoreDto;
 import com.sckw.fleet.api.model.vo.*;
@@ -17,6 +21,7 @@ import com.sckw.fleet.service.KwfDriverScoreService;
 import com.sckw.fleet.service.KwfDriverService;
 import com.sckw.system.api.RemoteSystemService;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.jetbrains.annotations.NotNull;
@@ -34,6 +39,7 @@ import java.util.stream.Collectors;
 @DubboService(group = "design", version = "1.0.0")
 @Service
 @RequiredArgsConstructor
+@Slf4j
 public class RemoteFleetServiceImpl implements RemoteFleetService {
 
     @Autowired
@@ -57,6 +63,7 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
     private final KwfDriverScoreRepository driverScoreRepository;
     private final KwfDriverScoreService driverScoreService;
     private final KwfDriverService driverService;
+    private final KwfTruckReportRepository truckReportRepository;
 
 
     /**
@@ -624,7 +631,23 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
     }
 
     @Override
-    public void driverBindTruck(Long driverId, Long truckId) {
-        driverService.bindTruck(driverId, truckId);
+    public void driverBindTruck(Long driverId, Long truckId,Long entId) {
+        driverService.bindTruck(driverId, truckId,entId);
+    }
+
+    @Override
+    public void unbindTruck(Long entId, Long driverId) {
+        KwfTruckReport truckReport = truckReportRepository.getOne(Wrappers.<KwfTruckReport>lambdaQuery()
+                .eq(KwfTruckReport::getEntId, LoginUserHolder.getEntId())
+                .eq(KwfTruckReport::getDriverId, driverId)
+                .eq(KwfTruckReport::getDelFlag, Global.NO)
+                .eq(KwfTruckReport::getStatus, Global.YES));
+        if(truckReport == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "此司机无车辆解绑信息!");
+        }
+        truckReport.setStatus(Global.NO);
+        log.info("pc端解绑车辆请求参数 :{}", truckReport);
+        truckReportRepository.updateById(truckReport);
+
     }
 }

+ 7 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -1205,7 +1205,7 @@ public class KwfDriverService {
      * @date 2023/7/6
      **/
     public HttpResult bindTruck(KwfBindTruckDto params) {
-         bindTruck(params.getId(), params.getTruckId());
+         bindTruck(params.getId(), params.getTruckId(),null);
          return HttpResult.ok();
     }
 
@@ -1215,14 +1215,17 @@ public class KwfDriverService {
      * @author zk
      * @date 2023/7/6
      **/
-    public void bindTruck(Long driverId, Long truckId) {
+    public void bindTruck(Long driverId, Long truckId,Long entId) {
         log.info("绑定车辆,入参参数,driverId:{}, truckId:{}", driverId, truckId);
         if (driverId == null || truckId == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "司机id和车辆id不能为空!");
         }
+        if (Objects.nonNull(LoginUserHolder.getEntId())) {
+            entId = LoginUserHolder.getEntId();
+         }
         //查询司机是否存在已绑定的车辆
         KwfTruckReport truckReport = truckReportRepository.getOne(Wrappers.<KwfTruckReport>lambdaQuery()
-                .eq(KwfTruckReport::getEntId, LoginUserHolder.getEntId())
+                .eq(KwfTruckReport::getEntId, entId)
                 .eq(KwfTruckReport::getDriverId, driverId)
                 .eq(KwfTruckReport::getDelFlag, Global.NO)
                 .eq(KwfTruckReport::getStatus, Global.YES));
@@ -1230,7 +1233,7 @@ public class KwfDriverService {
             KwfTruckReport newTruckReport = new KwfTruckReport();
             newTruckReport.setTruckId(truckId);
             newTruckReport.setDriverId(driverId);
-            newTruckReport.setEntId(LoginUserHolder.getEntId());
+            newTruckReport.setEntId(entId);
             newTruckReport.setStatus(Global.YES);
             boolean saveResult = truckReportRepository.save(newTruckReport);
             if (!saveResult) {

+ 20 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/CancelHandler.java

@@ -1,10 +1,14 @@
 package com.sckw.transport.handler;
 
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessPlatfromException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
 import com.sckw.core.utils.DateUtils;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.DriverConductRulesVO;
 import com.sckw.order.api.model.OrderDetailVo;
 import com.sckw.order.api.model.UpdateActualAmountParam;
@@ -14,13 +18,17 @@ import com.sckw.transport.model.KwtWaybillOrderNode;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.param.WaybillOrderCancelParam;
 import com.sckw.transport.repository.KwtLogisticsOrderRepository;
+import com.sckw.transport.repository.KwtWaybillOrderRepository;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Objects;
+import java.util.Optional;
 
 /**
  * Author: donglang
@@ -31,10 +39,14 @@ import java.util.Objects;
 
 @Slf4j
 @Service
+@RequiredArgsConstructor
 public class CancelHandler extends AbstractWaybillOrderHandler<WaybillOrderCancelParam>{
 
     @Autowired
     private KwtLogisticsOrderRepository logisticsOrderRepository;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteFleetService remoteFleetService;
+    private final KwtWaybillOrderRepository waybillOrderRepository;
 
     @Override
     protected KwtWaybillOrder getWaybillOrder(WaybillOrderCancelParam param) {
@@ -53,10 +65,16 @@ public class CancelHandler extends AbstractWaybillOrderHandler<WaybillOrderCance
         //1.获取子运单任务量
         KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybill.getId());
         BigDecimal entrustAmount = subtask.getEntrustAmount();
-
+        //查询运单运单信息
+        KwtWaybillOrder order = waybillOrderRepository.queryByBillOrderId(subtask.getWOrderId());
         //2.更新上游订单:更新物流订单运输量
         KwtLogisticsOrder logOrder = updateLogOrder(param, entrustAmount);
-
+        //查询司机是否存在已绑定的车辆
+        Long driverId = Optional.ofNullable(order).map(KwtWaybillOrder::getDriverId).orElse(null);
+        Long wayBillOrderId = Optional.ofNullable(order).map(KwtWaybillOrder::getId).orElse(null);
+        Long entId = Optional.ofNullable(order).map(KwtWaybillOrder::getEntId).orElse(null);
+        log.info("运单取消完成,解绑司机与车辆关系,运单id:{},企业id:{},司机id:{}", wayBillOrderId, entId, driverId);
+        remoteFleetService.unbindTruck(entId,driverId);
 //        //3.更新上游订单:更新贸易订单运输量
 //        updateTradeOrder(logOrder, entrustAmount);
     }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java

@@ -564,7 +564,7 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
 
     // 7. 绑定车辆
     private void driverBindTruck(KwtWaybillOrder waybillOrder) {
-        remoteFleetService.driverBindTruck(waybillOrder.getDriverId(), waybillOrder.getTruckId());
+        remoteFleetService.driverBindTruck(waybillOrder.getDriverId(), waybillOrder.getTruckId(), waybillOrder.getEntId());
 
     }
 

+ 8 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3666,6 +3666,11 @@ public class KwtWaybillOrderV1Service {
             if (!b || !b1){
                 throw new BusinessException("审核运单失败");
             }
+            //查询司机是否存在已绑定的车辆
+            if (Objects.equals(status, CarWaybillV1Enum.COMPLETED.getCode())){
+                log.info("运单审核完成,解绑司机与车辆关系,运单id:{},企业id:{},司机id:{}", billOrder.getId(), billOrder.getEntId(), billOrder.getDriverId());
+                remoteFleetService.unbindTruck(billOrder.getEntId(), billOrder.getDriverId());
+            }
 
             return Boolean.TRUE;
         }
@@ -3700,7 +3705,9 @@ public class KwtWaybillOrderV1Service {
             if (!b ){
                throw new BusinessException("完善单证失败");
             }
-
+            //查询司机是否存在已绑定的车辆
+            log.info("运单由审核驳回审核完成,解绑司机与车辆关系,运单id:{},企业id:{},司机id:{}", billOrder.getId(), billOrder.getEntId(), billOrder.getDriverId());
+            remoteFleetService.unbindTruck(billOrder.getEntId(), billOrder.getDriverId());
             return Boolean.TRUE;
         }
         //计算司机分值