Explorar el Código

1、新增单证审核编辑接口;

zk hace 2 años
padre
commit
9944014e5c

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

@@ -295,6 +295,17 @@ public class KwtWaybillOrderController {
         return waybillOrderService.approvalTicket(params);
     }
 
+    /**
+     * @param params {}
+     * @desc 单证审核(编辑单证)
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @PostMapping("/approvalTicket")
+    public HttpResult approvalEditTicket(@RequestBody @Valid WaybillOrderTicketApprovalDto params){
+        return waybillOrderService.approvalEditTicket(params);
+    }
+
 
 
     //取消派车(未接单前)

+ 90 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketApprovalDto.java

@@ -0,0 +1,90 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * @author zk
+ * @desc 车辆运单审核
+ * @date 2023/7/27 0027
+ */
+@Data
+public class WaybillOrderTicketApprovalDto {
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 装卸货数量
+     */
+    @JsonProperty("loadAmount")
+    @NotNull(message = "装货净重不能为空")
+    @DecimalMin(value= "0", inclusive=false, message = "装卸货净重必须等于或大于0")
+    private BigDecimal loadAmount;
+
+    /**
+     * 上传凭证地址,多个以英文逗号隔开
+     */
+    @JsonProperty("loadUrls")
+    @NotBlank(message = "装货凭证不能为空")
+    private String loadUrls;
+
+    /**
+     * 操作时间
+     */
+    @JsonProperty("loadOperateTime")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @NotNull(message = "装货时间不能为空")
+    private Date loadOperateTime;
+
+    /**
+     * 装卸货数量
+     */
+    @JsonProperty("unloadAmount")
+    @NotNull(message = "卸货净重不能为空")
+    @DecimalMin(value= "0", inclusive=false, message = "装卸货净重必须等于或大于0")
+    private BigDecimal unloadAmount;
+
+    /**
+     * 上传凭证地址,多个以英文逗号隔开
+     */
+    @JsonProperty("unloadUrls")
+    @NotBlank(message = "卸货凭证不能为空")
+    private String unloadUrls;
+
+    /**
+     * 操作时间
+     */
+    @JsonProperty("unloadOperateTime")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @NotNull(message = "卸货时间不能为空")
+    private Date unloadOperateTime;
+
+    /**
+     * 磅单类型(0 审核-通过/1 已核-不通过)
+     */
+    @JsonProperty("status")
+    @NotNull(message = "磅单类型不能为空")
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    @Size(max=100, message = "原因长度不能大于100个字符!")
+    private String remark;
+}

+ 135 - 13
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -453,9 +453,9 @@ public class KwtWaybillOrderService {
     public HttpResult setWaybillOrder(List<SendCarDto1> params, KwtLogisticsOrder logisticsOrder) {
         /**获取基础信息**/
         //装货地址
-        KwtWaybillOrderAddress loadAddress = this.getAddress(logisticsOrder.getId(), Global.NUMERICAL_ONE);
+        KwtWaybillOrderAddress loadAddress = this.getAddress(logisticsOrder.getId(), Global.NUMERICAL_ONE, Global.NUMERICAL_ONE);
         //卸货地址
-        KwtWaybillOrderAddress unloadAddress = this.getAddress(logisticsOrder.getId(), Global.NUMERICAL_TWO);
+        KwtWaybillOrderAddress unloadAddress = this.getAddress(logisticsOrder.getId(), Global.NUMERICAL_TWO, Global.NUMERICAL_ONE);
         //托运企业
         KwtLogisticsOrderUnit checkEnt = logisticsOrderUnitDao.findByUnit(logisticsOrder.getId(), Global.NUMERICAL_ONE);
         //承运企业
@@ -561,19 +561,26 @@ public class KwtWaybillOrderService {
     }
 
     /**
-     * @param lOrderId    物流订单ID
+     * @param orderId    订单ID
      * @param addressType 地址类型(1装货地址、2卸货地址)
-     * @desc 获取物流订单地址信息
+     * @param type 订单类型(1物流订单、2车辆运单)
+     * @desc 获取订单地址信息
      * @author zk
      * @date 2023/7/20
      **/
-    public KwtWaybillOrderAddress getAddress(Long lOrderId, int addressType) {
+    public KwtWaybillOrderAddress getAddress(Long orderId, int addressType, int type) {
         /**查询数据**/
-        KwtWaybillOrderAddress orderAddress = waybillOrderAddressDao.findByAddress(lOrderId, addressType);
+        KwtWaybillOrderAddress address = new KwtWaybillOrderAddress();
+        if (type == Global.NUMERICAL_ONE) {
+            KwtLogisticsOrderAddress orderAddress = logisticsOrderAddressDao.findByAddress(orderId, addressType);
+            BeanUtils.copyProperties(orderAddress, address);
+        }
+        if (type == Global.NUMERICAL_TWO) {
+            KwtWaybillOrderAddress orderAddress = waybillOrderAddressDao.findByAddress(orderId, addressType);
+            BeanUtils.copyProperties(orderAddress, address);
+        }
 
         /**组装数据**/
-        KwtWaybillOrderAddress address = new KwtWaybillOrderAddress();
-        BeanUtils.copyProperties(orderAddress, address);
         address.setId(null);
         address.setCreateBy(null);
         address.setCreateTime(null);
@@ -1057,9 +1064,9 @@ public class KwtWaybillOrderService {
 
             /**2获取基础信息**/
             //装货地址
-            KwtWaybillOrderAddress loadAddress = this.getAddress(circulate.getLOrderId(), Global.NUMERICAL_ONE);
+            KwtWaybillOrderAddress loadAddress = this.getAddress(circulate.getLOrderId(), Global.NUMERICAL_ONE, Global.NUMERICAL_ONE);
             //卸货地址
-            KwtWaybillOrderAddress unloadAddress = this.getAddress(circulate.getLOrderId(), Global.NUMERICAL_TWO);
+            KwtWaybillOrderAddress unloadAddress = this.getAddress(circulate.getLOrderId(), Global.NUMERICAL_TWO, Global.NUMERICAL_ONE);
             //KwtWaybillOrder数据组装
             KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
             waybillOrder.setEntId(LoginUserHolder.getEntId());
@@ -1613,6 +1620,8 @@ public class KwtWaybillOrderService {
                 waybillOrder.setUpdateBy(circulate.getUpdateBy());
                 editSckwWaybillOrder(wOrder, waybillOrder, 2);
             }
+        } else {
+            logisticsOrderDao.updateById(logisticsOrder);
         }
 
         /**1-6更新贸易订单总量**/
@@ -1769,9 +1778,9 @@ public class KwtWaybillOrderService {
         //卸货榜单
         KwtWaybillOrderTicket unloadTicket = waybillOrderTicketDao.findWaybillOrderTicket(wOrderId, Global.NUMERICAL_TWO);
         //装货地址
-        KwtWaybillOrderAddress loadAddress = this.getAddress(waybillOrder.getId(), Global.NUMERICAL_ONE);
+        KwtWaybillOrderAddress loadAddress = this.getAddress(waybillOrder.getId(), Global.NUMERICAL_ONE, Global.NUMERICAL_TWO);
         //卸货地址
-        KwtWaybillOrderAddress unloadAddress = this.getAddress(waybillOrder.getId(), Global.NUMERICAL_TWO);
+        KwtWaybillOrderAddress unloadAddress = this.getAddress(waybillOrder.getId(), Global.NUMERICAL_TWO, Global.NUMERICAL_TWO);
         //商品信息
         KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(waybillOrder.getLOrderId());
         //用户数据集
@@ -1851,13 +1860,16 @@ public class KwtWaybillOrderService {
             editTruck(waybillOrder.getTruckId());
 
             /**5更新承运订单信息**/
+            //更新卸货量/卸货时间/亏吨/亏吨扣款
             Map queryParams = new HashMap();
             queryParams.put("lOrderId", waybillOrder.getLOrderId());
             queryParams.put("passStatus", Global.NUMERICAL_ONE);
             WaybillCountVo waybillCount = waybillOrderDao.findWaybillOrderCount(queryParams);
 
-            //更新卸货量/卸货时间/亏吨/亏吨扣款
+            //委派未运量=承运委派量-装货量
             KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+            BigDecimal residue = waybillOrder.getEntrustAmount().subtract(waybillOrder.getLoadAmount());
+            logisticsOrder.setEntrustAmount(logisticsOrder.getEntrustAmount().subtract(residue));
             logisticsOrder.setLoadAmount(waybillCount.getLoadAmount());
             logisticsOrder.setLoadTime(waybillCount.getLoadTime());
             logisticsOrder.setUnloadAmount(waybillCount.getUnloadAmount());
@@ -1894,6 +1906,116 @@ public class KwtWaybillOrderService {
         return HttpResult.ok("车辆运单审核完成!");
     }
 
+    /**
+     * @param params {}
+     * @desc 单证审核(编辑单证)
+     * @author zk
+     * @date 2023/7/26
+     **/
+    public HttpResult approvalEditTicket(WaybillOrderTicketApprovalDto params) {
+        /**1数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //已卸货/审批不通过车辆运单才能审核
+        if (waybillOrder.getStatus() != CarWaybillEnum.COMPLETION_UNLOADING.getCode()
+                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能审核!");
+        }
+        //已卸货/审批不通过车辆运单只能审批通过或审批不通过
+        if (params.getStatus() != Global.NO && params.getStatus() != Global.YES) {
+            return HttpResult.error("车辆运单当前状态只能审批通过或审批不通过!");
+        }
+
+        /**2更新车辆运单**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+        int status = params.getStatus() == Global.NO ? CarWaybillEnum.APPROVAL_PASS.getCode() : CarWaybillEnum.APPROVAL_NO_PASS.getCode();
+        waybillOrder.setLoadAmount(params.getLoadAmount());
+        waybillOrder.setUnloadAmount(params.getUnloadAmount());
+        waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
+        BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        waybillOrder.setDeficitPrice(deficitPrice);
+        waybillOrder.setStatus(status);
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**3更新榜单信息**/
+        KwtWaybillOrderTicket loadTicket = waybillOrderTicketDao.findWaybillOrderTicket(params.getWOrderId(), Global.NUMERICAL_ONE);
+        loadTicket.setAmount(params.getLoadAmount());
+        loadTicket.setUrls(params.getLoadUrls());
+        loadTicket.setOperateTime(params.getLoadOperateTime());
+        waybillOrderTicketDao.updateById(loadTicket);
+        KwtWaybillOrderTicket unloadTicket = waybillOrderTicketDao.findWaybillOrderTicket(params.getWOrderId(), Global.NUMERICAL_TWO);
+        unloadTicket.setAmount(params.getUnloadAmount());
+        unloadTicket.setUrls(params.getUnloadUrls());
+        unloadTicket.setOperateTime(params.getUnloadOperateTime());
+        waybillOrderTicketDao.updateById(unloadTicket);
+
+        /**4新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getUpdateTime(), waybillOrder.getStatus(), params.getRemark());
+
+        if (waybillOrder.getStatus() == CarWaybillEnum.APPROVAL_PASS.getCode()) {
+            /**5跟新司机/车辆数据**/
+            //更新司机信息
+            editDriver(waybillOrder.getDriverId());
+            //更新车辆信息
+            editTruck(waybillOrder.getTruckId());
+
+            /**6更新承运订单信息**/
+            //更新卸货量/卸货时间/亏吨/亏吨扣款
+            Map queryParams = new HashMap();
+            queryParams.put("lOrderId", waybillOrder.getLOrderId());
+            queryParams.put("passStatus", Global.NUMERICAL_ONE);
+            WaybillCountVo waybillCount = waybillOrderDao.findWaybillOrderCount(queryParams);
+
+            //委派未运量=承运委派量-装货量
+            BigDecimal residue = waybillOrder.getEntrustAmount().subtract(waybillOrder.getLoadAmount());
+            logisticsOrder.setEntrustAmount(logisticsOrder.getEntrustAmount().subtract(residue));
+            logisticsOrder.setLoadAmount(waybillCount.getLoadAmount());
+            logisticsOrder.setLoadTime(waybillCount.getLoadTime());
+            logisticsOrder.setUnloadAmount(waybillCount.getUnloadAmount());
+            logisticsOrder.setUnloadTime(waybillCount.getUnloadTime());
+            logisticsOrder.setDeficitAmount(waybillCount.getDeficitAmount());
+            deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
+                    logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+            logisticsOrder.setDeficitPrice(deficitPrice);
+            logisticsOrderDao.updateById(logisticsOrder);
+
+            /**7Mongodb数据更新**/
+            //2承运订单
+            SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+            lOrder.setLoadAmount(logisticsOrder.getLoadAmount());
+            lOrder.setLoadTime(logisticsOrder.getLoadTime());
+            lOrder.setUnloadAmount(logisticsOrder.getUnloadAmount());
+            lOrder.setUnloadTime(logisticsOrder.getUnloadTime());
+            lOrder.setDeficitAmount(logisticsOrder.getDeficitAmount());
+            lOrder.setDeficitPrice(logisticsOrder.getDeficitPrice());
+            editSckwLogisticsOrder(lOrder, logisticsOrder);
+
+            /**8校验当前承运订单是否运输完成(修改状态+统计量)**/
+            checkLogisticsByStatus(waybillOrder.getLOrderId());
+        }
+
+        /**9Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        wOrder.setLoadAmount(waybillOrder.getLoadAmount());
+        wOrder.setLoadTime(params.getLoadOperateTime());
+        wOrder.setLoadUrls(params.getLoadUrls());
+        wOrder.setUnloadAmount(waybillOrder.getUnloadAmount());
+        wOrder.setUnloadTime(params.getUnloadOperateTime());
+        wOrder.setUnloadUrls(params.getUnloadUrls());
+        wOrder.setDeficitAmount(waybillOrder.getDeficitAmount());
+        wOrder.setDeficitPrice(waybillOrder.getDeficitPrice());
+        editSckwWaybillOrder(wOrder, waybillOrder, Global.NUMERICAL_TWO);
+
+        /**8发送消息**/
+
+        return HttpResult.ok("车辆运单审核完成!");
+    }
+
     /**
      * @param driverId 司机档案ID
      * @desc 更新司机信息