Procházet zdrojové kódy

修改友盛测试bug

donglang před 1 měsícem
rodič
revize
024792a6c7

+ 12 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppWayBillController.java

@@ -376,6 +376,18 @@ public class AppWayBillController {
         return BaseResult.success("打印中!");
     }
 
+    /**
+     * 卸货过磅
+     *
+     * @param param
+     * @return
+     */
+    @Operation(summary = "卸货过磅", description = "卸货过磅")
+    @PostMapping("/unloadingWeigh")
+    public BaseResult unloadingWeigh(@RequestBody @Valid WaybillOrderUnloadingWeighParam param){
+        waybillOrderService.unloadingWeigh(param);
+        return BaseResult.success();
+    }
 
     /**
      * 卸货离场

+ 47 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingWeighHandler.java

@@ -18,6 +18,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 
 /**
@@ -118,8 +119,9 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
         if (!(GatekeeperStatusEnum.PENDING_ENTRY.getCode().equals(gatekeeper.getStatus()))) {
             throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为待放行状态!");
         }
-        //修改门卫:待放行
-        gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_RELEASE.getCode());
+        //修改门卫:卸货已进场
+        gatekeeper.setStatus(GatekeeperStatusEnum.IN_YARD.getCode());
+        gatekeeper.setIntoTime(new Date());
         gatekeeperWaybillOrderRepository.updateById(gatekeeper);
     }
 
@@ -162,14 +164,52 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
         }
 
-        //1.填充运单卸货单皮重
-        takeTicket.setTareAmount(param.getTareAmount());
-        waybillOrderTicketRepository.updateById(takeTicket);
+        // 1.填充运单卸货单皮重、净重
+        BigDecimal unloadAmount = updateTareAmount(param, takeTicket);
+
+        // 2.填充子运单卸货净重
+        updateUnLoadAmount(param, waybillOrder, unloadAmount);
 
-        // 2.创建卸货过磅记录
+        // 3.创建卸货过磅记录
         createWeighbridges(waybillOrder);
     }
 
+    /**
+     * 填充皮重、卸货净重
+     * @param param
+     * @param takeTicket
+     */
+    private BigDecimal updateTareAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrderTicket takeTicket) {
+        //皮重
+        BigDecimal tareAmount = param.getTareAmount();
+        //毛重
+        BigDecimal grossAmount = takeTicket.getGrossAmount();
+        //卸货净重
+        BigDecimal unloadAmount = grossAmount.subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
+
+        takeTicket.setTareAmount(tareAmount);
+        takeTicket.setAmount(unloadAmount);
+        waybillOrderTicketRepository.updateById(takeTicket);
+        return unloadAmount;
+    }
+
+    /**
+     * 填充装货净重
+     * @param param
+     * @param waybillOrder
+     * @param unloadAmount
+     */
+    private void updateUnLoadAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal unloadAmount) {
+        //更新子运单卸货净重
+        KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
+        subtask.setUnloadAmount(unloadAmount);
+        subtask.setUnloadTime(new Date());
+        waybillOrderSubtaskRepository.updateById(subtask);
+        log.info("物流运单离场过磅成功!运单ID: {}, 皮重: {}, 卸货货净重: {}", param.getWaybillOrderId(), param.getTareAmount(), unloadAmount);
+    }
+
+
+
     @Override
     protected void calculateAutoDispatchScore(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder) {
 
@@ -183,7 +223,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
     @Override
     protected void getStatus(KwtWaybillOrder waybillOrder) {
         // 校验是否第一次卸货过磅
-        CarWaybillV1Enum status = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING)
+        CarWaybillV1Enum status = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING.getCode())
                 ? CarWaybillV1Enum.UNLOADING_POINT : CarWaybillV1Enum.UNLOADING_WAIT_LEAVE;
 
         // 1. 修改运单状态

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/forklift/reponse/GatekeeperOrderResp.java

@@ -51,6 +51,16 @@ public class GatekeeperOrderResp implements Serializable {
     @Schema(description = "物流订单id")
     private Long logisticsOrderId;
 
+    /**
+     * 门卫类型(1-装货单,2-卸货单)
+     */
+    private Integer type;
+
+    /**
+     * 门卫类型描述
+     */
+    private String typeDesc;
+
     /**
      * 状态(1-待进场,5-已进场、10-待离场、15-空载待离场、20-已放行未离场、25-已离场、30-空载离场)
      */

+ 10 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -82,6 +82,9 @@ public class GatekeeperOrderService {
      */
     public PageDataResult<GatekeeperOrderResp> pageQueryGatekeeperOrder(GatekeeperOrderQueryParam param) {
         log.info("查询门卫订单:{}", JSON.toJSONString(param));
+        if (param.getStatus() == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "状态不能为空!");
+        }
         //构建查询条件
         LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper = buildAndExecuteQuery(param);
 
@@ -328,7 +331,12 @@ public class GatekeeperOrderService {
         gatekeeper.setWaybillOrderId(gatekeeperWaybillOrder.getWOrderId());
         gatekeeper.setLogisticsOrderId(gatekeeperWaybillOrder.getLOrderId());
         gatekeeper.setStatus(gatekeeperWaybillOrder.getStatus());
-        gatekeeper.setStatusDesc(GatekeeperStatusEnum.getDesc(gatekeeperWaybillOrder.getStatus()));
+        gatekeeper.setType(gatekeeperWaybillOrder.getType());
+        gatekeeper.setTypeDesc(GatekeeperTypeEnum.getDesc(gatekeeperWaybillOrder.getType()));
+        String statusDesc = Objects.equals(gatekeeperWaybillOrder.getType(), GatekeeperTypeEnum.LOADING.getCode())
+                ? GatekeeperStatusEnum.getDesc(gatekeeperWaybillOrder.getStatus())
+                : GatekeeperStatusEnum.getDescription(gatekeeperWaybillOrder.getStatus());
+        gatekeeper.setStatusDesc(statusDesc);
         gatekeeper.setCarAxisName(gatekeeperWaybillOrder.getCarAxis());
         gatekeeper.setLegalLoad(gatekeeperWaybillOrder.getLegalLoad());
         gatekeeper.setTruckType(gatekeeperWaybillOrder.getTruckType());
@@ -370,7 +378,7 @@ public class GatekeeperOrderService {
      * @return
      */
     private static List<GatekeeperOrderResp> filterGatekeeperOrderResp(GatekeeperOrderQueryParam param, List<GatekeeperOrderResp> gatekeeperOrderPageResult) {
-        double configHours = 0;
+        double configHours = 3;
         //处理异常车辆数据
         if (param.getStatus() != 4) {
             return gatekeeperOrderPageResult;

+ 9 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -96,6 +96,7 @@ public class WaybillOrderService {
 
     private final UnloadingHandler unloadingHandler;
     private final UnloadingLeavedHandler unloadingLeavedHandler;
+    private final UnloadingWeighHandler unloadingWeighHandler;
 
     private final KwtWaybillOrderV1Service waybillOrderV1Service;
 
@@ -1244,6 +1245,14 @@ public class WaybillOrderService {
         log.info("运单状态统计,参数:{}", JSON.toJSONString(param));
     }
 
+    /**
+     * 卸货离场
+     * @param param
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void unloadingWeigh(WaybillOrderUnloadingWeighParam param) {
+        unloadingWeighHandler.handler(param);
+    }
     
     /**
      * 卸货离场