Просмотр исходного кода

1、车辆运单变更车辆及司机接口重构;

zk 2 лет назад
Родитель
Сommit
90c90db806

+ 18 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -110,4 +110,22 @@ public enum CarWaybillEnum {
         }
         return null;
     }
+
+    /**
+     * @param code 状态码
+     * @desc 是否可以变更司机/车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public static boolean changeDriverAndTruck(int code) {
+        if (code == CarWaybillEnum.COMPLETION_UNLOADING.getCode()
+                || code == CarWaybillEnum.APPROVAL_PASS.getCode()
+                || code == CarWaybillEnum.REJECT_ORDER.getCode()
+                || code == CarWaybillEnum.REFUSE_TRAFFIC.getCode()
+                || code == CarWaybillEnum.REVOKED.getCode()
+                || code == CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+            return false;
+        }
+        return true;
+    }
 }

+ 21 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -338,4 +338,25 @@ public class KwfTruckController {
         return HttpResult.ok(data);
     }
 
+    /**
+     * @param truckNo 车牌号
+     * @description 车牌号查询车辆关联数据
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @GetMapping("/findDetailByTruckNo")
+    public HttpResult findDetailByTruckNo(String truckNo) {
+        Map detail = new HashMap();
+        detail.put("truckNo", truckNo);
+        detail.put("driverName", "赵先生");
+        detail.put("driverPhone", "17358629955");
+        detail.put("firmName", "东旭物流有限公司");
+        detail.put("detailAddress", "四川省成都市xxx路10号");
+        detail.put("lng", "30."+new Random().nextInt(1000000));
+        detail.put("lat", "103."+new Random().nextInt(1000000));
+        detail.put("speed", new Random().nextInt(100));
+        detail.put("gpsTime", DateUtils.getCurrentTime());
+        return HttpResult.ok(detail);
+    }
+
 }

+ 16 - 23
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -83,32 +83,25 @@ public class KwtWaybillOrderController {
     }
 
     /**
-     * 司机端 根据当前登录 id获取派给当前id的车辆运单
-     * @return
-     */
-    @RequestMapping(value = "/getWaybillDriverDetail", method = RequestMethod.GET)
-    public HttpResult getWaybillDriverDetail(@RequestParam("id") Long id, @RequestParam("type") String type) {
-        try {
-            return driverService.getWaybillDriverDetail(id, type);
-        } catch (Exception e) {
-            log.error("派车给当前司机单据查询 error:{}", e.getMessage(), e);
-            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
-        }
+     * @param params
+     * @desc 变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @PostMapping("/changeDriver")
+    public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params){
+        return waybillOrderService.changeDriver(params);
     }
 
     /**
-     * 司机app top统计
-     * @param id 司机id
-     * @return
-     */
-    @RequestMapping(value = "/statistics", method = RequestMethod.POST)
-    public HttpResult statistics(@RequestParam("id") Long id) {
-        try {
-            return driverService.statistics(id);
-        } catch (Exception e) {
-            log.error("司机app top统计 error:{}", e.getMessage(), e);
-            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
-        }
+     * @param params
+     * @desc 变更车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @PostMapping("/changeTruck")
+    public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params){
+        return waybillOrderService.changeTruck(params);
     }
 
     /**

+ 57 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeDriverDto.java

@@ -0,0 +1,57 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 车辆运单变更司机
+ * @date 2023/8/2 0002
+ */
+@Data
+public class ChangeDriverDto {
+
+    /**
+     * 派车类型(1:趟次:2:循环)
+     */
+    @JsonProperty("type")
+    @NotNull(message = "派车类型不能为空")
+    private Integer type;
+
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 司机id
+     */
+    @JsonProperty("driverId")
+    @NotNull(message = "司机信息ID不能为空")
+    private Long driverId;
+
+    /**
+     * 司机名称
+     */
+    @JsonProperty("driverName")
+    @NotBlank(message = "司机名称不能为空")
+    private String driverName;
+
+    /**
+     * 司机手机号码
+     */
+    @JsonProperty("driverPhone")
+    @NotBlank(message = "司机手机号码不能为空")
+    private String driverPhone;
+
+    /**
+     * 司机身份证号
+     */
+    @JsonProperty("driverIdcard")
+    @NotBlank(message = "司机身份证号不能为空")
+    private String driverIdcard;
+}

+ 68 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeTruckDto.java

@@ -0,0 +1,68 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 车辆运单变更车辆
+ * @date 2023/8/2 0002
+ */
+@Data
+public class ChangeTruckDto {
+
+    /**
+     * 派车类型(1:趟次:2:循环)
+     */
+    @JsonProperty("type")
+    @NotNull(message = "派车类型不能为空")
+    private Integer type;
+
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 车牌号
+     */
+    @JsonProperty("truckId")
+    @NotNull(message = "车辆信息ID不能为空")
+    private Long truckId;
+
+    /**
+     * 车牌号
+     */
+    @JsonProperty("truckNo")
+    @NotBlank(message = "车牌号不能为空")
+    private String truckNo;
+
+    /**
+     * 车辆类型(牵引车、自卸、高栏、平板、厢式、集装箱车、罐车、封闭式、专项作业车、其他)
+     */
+    private String truckType;
+
+    /**
+     * 车能源类型(柴油、汽油、电动、氢能、天然气、液化石油气、甲醇、油电混动、油气混动、其他)
+     */
+    private String truckEnergyType;
+
+    /**
+     * 车使用性质(营运车、租赁车辆、货运车、危化品运输车、非营运车、其他)
+     */
+    private String truckUseType;
+
+    /**
+     * 车辆颜色
+     */
+    private String truckColor;
+
+    /**
+     * 车挂车号
+     */
+    private String truckTrailerNo;
+}

+ 147 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1,12 +1,9 @@
 package com.sckw.transport.service;
 
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
-import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
@@ -18,19 +15,19 @@ import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
-import com.sckw.system.api.model.dto.res.SysDictResDto;
-import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.vo.WaybillCountVo;
 import com.sckw.transport.model.vo.WaybillOrderDriverVo;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import org.apache.dubbo.config.annotation.DubboReference;
 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 org.springframework.web.bind.annotation.RequestBody;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -42,6 +39,7 @@ import java.util.stream.Collectors;
  * @date 2023/7/19 0019
  */
 @Service
+@SuppressWarnings("all")
 public class KwtWaybillOrderService {
 
     @Autowired
@@ -69,7 +67,6 @@ public class KwtWaybillOrderService {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
-
     /**
      * @param driverId 司机ID
      * @desc 统计司机任务数(待接单/出车/执行/完结)
@@ -130,7 +127,151 @@ public class KwtWaybillOrderService {
         return waybillOrders;
     }
 
+    /**
+     * @param params
+     * @desc 变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params){
+        /**数据校验**/
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = logisticsOrderCirculateDao.selectById(params.getWOrderId());
+        if (waybillOrder == null && circulate == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+
+        /**循环派车**/
+        if (params.getType() == Global.NUMERICAL_TWO) {
+            /**更新循环派车信息**/
+            if (circulate != null) {
+                changeWaybillOrderCirculate(circulate.getId(), params, null);
+                wOrder.set_id(circulate.getId());
+            } else {
+                circulate = logisticsOrderCirculateDao.findCirculate(waybillOrder.getLOrderId(), waybillOrder.getTruckId(), waybillOrder.getDriverId(), Global.NO);
+                changeWaybillOrderCirculate(circulate.getId(), params, null);
+            }
+        }
+
+        if (waybillOrder != null) {
+            if (!CarWaybillEnum.changeDriverAndTruck(waybillOrder.getStatus())) {
+                return HttpResult.error("车辆运单当前状态不能变更司机!");
+            }
+            /**更新车辆运单**/
+            changeWaybillOrder(params, null);
+            wOrder.set_id(params.getWOrderId());
+        }
+
+        /**Mongodb数据更新**/
+        wOrder.setDriverId(params.getDriverId());
+        wOrder.setDriverName(params.getDriverName());
+        wOrder.setDriverPhone(params.getDriverPhone());
+        wOrder.setDriverIdcard(params.getDriverIdcard());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+        return HttpResult.ok("更换司机成功!");
+    }
+
+    /**
+     * @param params
+     * @desc 变更车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params){
+        /**数据校验**/
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = logisticsOrderCirculateDao.selectById(params.getWOrderId());
+        if (waybillOrder == null && circulate == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+
+        /**循环派车**/
+        if (params.getType() == Global.NUMERICAL_TWO) {
+            /**更新循环派车信息**/
+            if (circulate != null) {
+                changeWaybillOrderCirculate(circulate.getId(), null, params);
+                wOrder.set_id(circulate.getId());
+            } else {
+                circulate = logisticsOrderCirculateDao.findCirculate(waybillOrder.getLOrderId(), waybillOrder.getTruckId(), waybillOrder.getDriverId(), Global.NO);
+                changeWaybillOrderCirculate(circulate.getId(), null, params);
+            }
+        }
+
+        if (waybillOrder != null) {
+            if (!CarWaybillEnum.changeDriverAndTruck(waybillOrder.getStatus())) {
+                return HttpResult.error("车辆运单当前状态不能变更车辆!");
+            }
+            /**更新车辆运单**/
+            changeWaybillOrder(null, params);
+            wOrder.set_id(params.getWOrderId());
+        }
+
+        /**Mongodb数据更新**/
+        wOrder.setTruckId(params.getTruckId());
+        wOrder.setTruckNo(params.getTruckNo());
+        wOrder.setTruckType(params.getTruckType());
+        wOrder.setTruckEnergyType(params.getTruckEnergyType());
+        wOrder.setTruckUseType(params.getTruckUseType());
+        wOrder.setTruckColor(params.getTruckColor());
+        wOrder.setTruckTrailerNo(params.getTruckTrailerNo());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+        return HttpResult.ok("更换车辆成功!");
+    }
+
+    /**
+     * @param circulateId 循环派车信息ID
+     * @param driver 司机信息
+     * @param truck 车辆信息
+     * @desc 变更循环派车信息
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public void changeWaybillOrderCirculate(Long circulateId, ChangeDriverDto driver, ChangeTruckDto truck){
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = new KwtLogisticsOrderCirculate();
+        if (driver != null) {
+            circulate.setId(circulateId);
+            circulate.setDriverId(driver.getDriverId());
+            circulate.setDriverPhone(driver.getDriverPhone());
+            circulate.setDriverName(driver.getDriverName());
+            circulate.setDriverIdcard(driver.getDriverIdcard());
+        }
+        if (truck != null) {
+            circulate.setTruckId(truck.getTruckId());
+            circulate.setTruckNo(truck.getTruckNo());
+        }
+        logisticsOrderCirculateDao.updateById(circulate);
+    }
 
+    /**
+     * @param driver 司机信息
+     * @param truck 车辆信息
+     * @desc 更新车辆运单信息
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public void changeWaybillOrder(ChangeDriverDto driver, ChangeTruckDto truck){
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
+        if (driver != null) {
+            waybillOrder.setId(driver.getWOrderId());
+            waybillOrder.setDriverId(driver.getDriverId());
+            waybillOrder.setDriverPhone(driver.getDriverPhone());
+            waybillOrder.setDriverName(driver.getDriverName());
+            waybillOrder.setDriverIdcard(driver.getDriverIdcard());
+        }
+        if (truck != null) {
+            waybillOrder.setTruckId(truck.getTruckId());
+            waybillOrder.setTruckNo(truck.getTruckNo());
+        }
+        waybillOrderDao.updateById(waybillOrder);
+    }
 
 
     /**