소스 검색

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

xucaiqin 13 시간 전
부모
커밋
a54f87d0c5
24개의 변경된 파일228개의 추가작업 그리고 80개의 파일을 삭제
  1. 2 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 6 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillV1Enum.java
  3. 4 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/vo/TradeContractResDto.java
  4. 4 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java
  5. 1 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java
  6. 11 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractDetailResp.java
  7. 2 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java
  8. 1 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  9. 13 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppWayBillController.java
  10. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  11. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/AbstractWaybillOrderHandler.java
  12. 0 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/CancelHandler.java
  13. 5 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java
  14. 0 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveHandler.java
  15. 23 35
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveMockHandler.java
  16. 12 21
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingHandler.java
  17. 70 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingIntoHandler.java
  18. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java
  19. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java
  20. 30 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderUnloadingIntoParam.java
  21. 15 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderTicketRepository.java
  22. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java
  23. 3 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java
  24. 12 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

+ 2 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -97,6 +97,8 @@ public enum DictEnum {
     SETTLEMENT_WAY_2("settlement_way", "2", "线下结算"),
     LOAD_UNLOAD_WAY_1("load_unload_way", "1", "按装货量"),
     LOAD_UNLOAD_WAY_2("load_unload_way", "2", "按卸货量"),
+    MEASUREMENT_WAY_1("measurement_way", "1", "地磅自动计算"),
+    MEASUREMENT_WAY_2("measurement_way", "2", "司机填报"),
     ;
 
     private final String type;

+ 6 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillV1Enum.java

@@ -35,6 +35,12 @@ public enum CarWaybillV1Enum {
      * 已离场
      */
     WAIT_LOADING(15,  "已离场"),
+
+    /**
+     * 卸货入场
+     */
+    INTO_UNLOADING(16,  "已离场"),
+
     /**
      * 已卸货
      */

+ 4 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/vo/TradeContractResDto.java

@@ -88,4 +88,8 @@ public class TradeContractResDto implements Serializable {
      */
     @TableField("dispatch_way")
     private Integer dispatchWay;
+    /**
+     * 计量方式
+     */
+    private Integer measurementWay;
 }

+ 4 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java

@@ -224,6 +224,10 @@ public class AddLogisticOrderParam implements Serializable {
      */
     @NotNull(message = "计费方式不能为空")
     private String billingMode;
+    /**
+     * 计量方式
+     */
+    private Integer measurementWay;
 
     /**
      * 计划卸货时间

+ 1 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java

@@ -277,6 +277,7 @@ public class RemoteContractServiceImpl implements RemoteContractService {
             tradeContractResDto.setContactName(kwcContractTrade.getName());
             tradeContractResDto.setContractNo(kwcContractTrade.getContractNo());
             tradeContractResDto.setDispatchWay(kwcContractTrade.getDispatchWay());
+            tradeContractResDto.setMeasurementWay(kwcContractTrade.getMeasurementWay());
             KwcContractTradeGoods kwcContractTradeGoods = kwcContractTradeGoodsMapper.selectOne(new LambdaQueryWrapper<KwcContractTradeGoods>()
                     .eq(KwcContractTradeGoods::getContractId, tradeContractId)
                     .eq(KwcContractTradeGoods::getGoodsId, goodsId)

+ 11 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/ContractDetailResp.java

@@ -205,6 +205,17 @@ public class ContractDetailResp implements Serializable {
          */
         @Schema(description = "销售联系电话")
         private String salesmanPhone;
+
+        /**
+         * 计量方式
+         */
+        @Schema(description = "计量方式 1-地磅自动计算,2-司机填报")
+        private Integer measurementWay;
+        /**
+         * 计量方式描述
+         */
+        @Schema(description = "计量方式描述")
+        private String measurementWayDesc;
     }
     @Data
     public static class TradeGoodsInfo implements Serializable{

+ 2 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java

@@ -1571,6 +1571,8 @@ public class KwcContractTradeService {
                 String.valueOf(kwcContractTrade.getUnloadWay())));
         tradeBaseInfo.setSalesmanId(kwcContractTrade.getSalesmanId());
         tradeBaseInfo.setSalesmanPhone(kwcContractTrade.getSalesmanPhone());
+        tradeBaseInfo.setMeasurementWay(Objects.equals(kwcContractTrade.getMeasurementWay(),-1) ? null:kwcContractTrade.getMeasurementWay());
+        tradeBaseInfo.setMeasurementWayDesc(Objects.equals(kwcContractTrade.getMeasurementWay(),-1) ? "" : DictEnum.getLabel(String.valueOf(kwcContractTrade.getMeasurementWay())));
         tradeBaseInfo.setDispatchWay(kwcContractTrade.getDispatchWay());
         tradeBaseInfo.setDispatchWayDesc(Optional.ofNullable(kwcContractTrade.getDispatchWay()).map(DispatchWayEnums::getDesc).orElse(""));
         return tradeBaseInfo;

+ 1 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -2419,6 +2419,7 @@ public class KwoTradeOrderService {
         }
         addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
         addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
+        addLogisticOrderParam.setMeasurementWay(tradeContractResDto.getMeasurementWay());
         log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
         Integer result = transportRemoteService.addLogisticOrder(addLogisticOrderParam);
         //自动派单运力不足

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

@@ -324,6 +324,19 @@ public class AppWayBillController {
         return BaseResult.success();
     }
 
+    /**
+     * 卸货入场
+     *
+     * @param param
+     * @return
+     */
+    @Operation(summary = "卸货入场", description = "卸货入场")
+    @PostMapping("/unloadingInto")
+    public BaseResult unloadingInto(@RequestBody @Valid WaybillOrderUnloadingIntoParam param){
+        waybillOrderService.unloadingInto(param);
+        return BaseResult.success();
+    }
+
     /**
      * 卸货
      *

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -1324,6 +1324,7 @@ public class TransportServiceImpl implements TransportRemoteService {
         addLogisticOrderDTO.setDispatchWay(param.getDispatchWay());
         addLogisticOrderDTO.setActualDisPatch(param.getActualDisPatch());
         addLogisticOrderDTO.setGoodsUnit(param.getGoodsUnit());
+        addLogisticOrderDTO.setMeasurementWay(param.getMeasurementWay());
         return addLogisticOrderDTO;
     }
 

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

@@ -2,7 +2,6 @@ package com.sckw.transport.handler;
 
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.feign.LogisticsScoreFeignService;
 import com.sckw.contract.api.model.dto.req.LogisticsScoreDetailFeignDto;
@@ -26,7 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**

+ 0 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/CancelHandler.java

@@ -39,11 +39,6 @@ import java.util.concurrent.TimeUnit;
 @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) {

+ 5 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -56,11 +56,11 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
 
     @Override
     protected void doBusiness(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
-        //1.填充运单皮重
-        LambdaQueryWrapper<KwtWaybillOrderTicket> queryWrapper = Wrappers.<KwtWaybillOrderTicket>lambdaQuery()
-                .eq(KwtWaybillOrderTicket::getWOrderId, param.getWaybillOrderId())
-                .eq(KwtWaybillOrderTicket::getType, AddressTypeEnum.SHIPMENT.getCode());
-        KwtWaybillOrderTicket orderTicket = waybillOrderTicketRepository.getOne(queryWrapper);
+        //1.填充运单装货单皮重
+        KwtWaybillOrderTicket orderTicket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 1);
+        if (orderTicket == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录皮重!");
+        }
         orderTicket.setTareAmount(param.getTareAmount());
         waybillOrderTicketRepository.updateById(orderTicket);
 

+ 0 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveHandler.java

@@ -25,12 +25,6 @@ import java.util.Objects;
 @Service
 public class LeaveHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveParam> {
 
-    @Autowired
-    private KwtWaybillOrderTicketRepository waybillOrderTicketRepository;
-    @Autowired
-    private KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
-
-
     @Override
     protected KwtWaybillOrder getWaybillOrder(WaybillOrderLeaveParam param) {
         return getWaybillOrder(param.getWaybillOrderId());

+ 23 - 35
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveMockHandler.java

@@ -5,6 +5,7 @@ import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.enums.AddressTypeEnum;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.KwtWaybillOrderTicket;
@@ -32,12 +33,6 @@ import java.util.stream.Collectors;
 @Service
 public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveMockParam> {
 
-    @Autowired
-    private KwtWaybillOrderTicketRepository waybillOrderTicketRepository;
-    @Autowired
-    private KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
-
-
     @Override
     protected KwtWaybillOrder getWaybillOrder(WaybillOrderLeaveMockParam param) {
         return getWaybillOrder(param.getWaybillOrderId());
@@ -52,14 +47,14 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
 
     @Override
     protected void doBusiness(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder) {
-        List<KwtWaybillOrderTicket> ticketList = waybillOrderTicketRepository.queryByWOrderId(param.getWaybillOrderId());
-        // 按 type 分组
-        Map<Integer, KwtWaybillOrderTicket> ticketMap = ticketList.stream()
-                .collect(Collectors.toMap(KwtWaybillOrderTicket::getType, Function.identity(), (a, b) -> a));
-        //1.填充毛重
-        updateGrossAmount(param, ticketMap);
-        //2.填充运单装货重
-        updateLoadAmount(param, waybillOrder, ticketMap);
+        KwtWaybillOrderTicket shipmentTicket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 1);
+        if (shipmentTicket == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录毛重!");
+        }
+        //1.填充装货单毛重和装货净重
+        BigDecimal loadAmount = updateGrossAmount(param, shipmentTicket);
+        //2.填充运单装货
+        updateLoadAmount(param, waybillOrder, loadAmount);
     }
 
     @Override
@@ -70,40 +65,33 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
     /**
      * 填充毛重
      * @param param
-     * @param ticketMap
+     * @param shipmentTicket
      */
-    private void updateGrossAmount(WaybillOrderLeaveMockParam param, Map<Integer, KwtWaybillOrderTicket> ticketMap) {
-        //查询卸货信息,用于记录毛重
-        KwtWaybillOrderTicket takeTicket = ticketMap.get(AddressTypeEnum.TAKE.getCode());
-        if (takeTicket == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录毛重!");
-        }
-        takeTicket.setGrossAmount(param.getGrossAmount());
-        waybillOrderTicketRepository.updateById(takeTicket);
+    private BigDecimal updateGrossAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrderTicket shipmentTicket) {
+        //毛重
+        shipmentTicket.setGrossAmount(param.getGrossAmount());
+        //皮重
+        BigDecimal tareAmount = shipmentTicket.getTareAmount();
+        //装货单装货净重
+        BigDecimal loadAmount = param.getGrossAmount().subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
+        shipmentTicket.setAmount(loadAmount);
+        waybillOrderTicketRepository.updateById(shipmentTicket);
+        return loadAmount;
     }
 
     /**
      * 填充装货净重
      * @param param
      * @param waybillOrder
-     * @param ticketMap
+     * @param loadAmount
      */
-    private void updateLoadAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder, Map<Integer, KwtWaybillOrderTicket> ticketMap) {
-        //查询装货信息,用于获取皮重
-        KwtWaybillOrderTicket shipmentTicket  = ticketMap.get(AddressTypeEnum.SHIPMENT.getCode());
-        if (shipmentTicket == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法获取皮重!");
-        }
-        //皮重
-        BigDecimal tareAmount = shipmentTicket.getTareAmount();
-
+    private void updateLoadAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
         //更新子运单装货净重
         KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
-        BigDecimal loadAmount = param.getGrossAmount().subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
         subtask.setLoadAmount(loadAmount);
         subtask.setLoadTime(new Date());
         waybillOrderSubtaskRepository.updateById(subtask);
-        log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 皮重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getGrossAmount(), tareAmount, loadAmount);
+        log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getGrossAmount(), loadAmount);
     }
 
     @Override

+ 12 - 21
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingHandler.java

@@ -110,38 +110,29 @@ public class UnloadingHandler extends AbstractWaybillOrderHandler<WaybillOrderUn
             //1.更新子运单卸货量
             updateWaybillOrderSubtask(param, waybill);
 
-            //2.更新物流订单装货量
-            updateLogisticsOrderByTake(logisticsOrder, loadAmount);
+            //按照卸货方式,运单驳回后,不再更新订单装货量
+            if (Objects.equals(CarWaybillV1Enum.WAIT_LOADING.getCode(), waybill.getStatus())) {
+                //2.更新物流订单装货量
+                updateLogisticsOrderByTake(logisticsOrder, loadAmount);
 
-            //3.更新贸易订单装货量
-            updateTradeOrder(logisticsOrder, loadAmount);
+                //3.更新贸易订单装货量
+                updateTradeOrder(logisticsOrder, loadAmount);
+            }
         }
     }
 
     /**
-     * 计算净装货
+     * 计算装货单装货净
      * @param param
      * @return
      */
     private BigDecimal getLoadAmount(WaybillOrderUnloadParam param) {
-        List<KwtWaybillOrderTicket> ticketList = waybillOrderTicketRepository.queryByWOrderId(param.getWaybillOrderId());
-        // 毛重
-        BigDecimal grossAmount = ticketList.stream().filter(Objects::nonNull)
-                .filter(ticket -> Objects.equals(ticket.getType(), AddressTypeEnum.TAKE.getCode()))
-                .findFirst()
-                .map(KwtWaybillOrderTicket::getGrossAmount)
-                .orElse(BigDecimal.ZERO);
-        // 皮重
-        BigDecimal tareAmount = ticketList.stream().filter(Objects::nonNull)
-                .filter(ticket -> Objects.equals(ticket.getType(), AddressTypeEnum.SHIPMENT.getCode()))
-                .findFirst()
-                .map(KwtWaybillOrderTicket::getTareAmount)
-                .orElse(BigDecimal.ZERO);
-        if (grossAmount.compareTo(BigDecimal.ZERO) <= 0 || tareAmount.compareTo(BigDecimal.ZERO) <= 0) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "运单车辆的皮重/毛重为空!");
+        KwtWaybillOrderTicket ticket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 1);
+        if (ticket == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装货单信息不存在!");
         }
         //装货净重
-        return grossAmount.subtract(tareAmount);
+        return ticket.getAmount();
     }
 
     /**

+ 70 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingIntoHandler.java

@@ -0,0 +1,70 @@
+package com.sckw.transport.handler;
+
+
+import com.sckw.core.common.enums.enums.ErrorCodeEnum;
+import com.sckw.core.exception.BusinessPlatfromException;
+import com.sckw.core.model.enums.CarWaybillV1Enum;
+import com.sckw.transport.model.KwtWaybillOrder;
+import com.sckw.transport.model.KwtWaybillOrderTicket;
+import com.sckw.transport.model.param.WaybillOrderUnloadingIntoParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * Author: donglang
+ * Time: 2026-01-20
+ * Des: 卸货入场(计算卸货单毛重和净重)
+ * Version: 1.0
+ */
+
+@Slf4j
+@Service
+public class UnloadingIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderUnloadingIntoParam> {
+
+    @Override
+    protected KwtWaybillOrder getWaybillOrder(WaybillOrderUnloadingIntoParam param) {
+        return getWaybillOrder(param.getWaybillOrderId());
+    }
+
+    @Override
+    protected void checkState(WaybillOrderUnloadingIntoParam param, KwtWaybillOrder waybillOrder) {
+        if (!Objects.equals(CarWaybillV1Enum.WAIT_LOADING.getCode(), waybillOrder.getStatus())) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "运单状态不是“已离场”状态,无法推进下一节点!");
+        }
+    }
+
+    @Override
+    protected void doBusiness(WaybillOrderUnloadingIntoParam param, KwtWaybillOrder waybillOrder) {
+        KwtWaybillOrderTicket takeTicket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 2);
+        if (takeTicket == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单卸货单信息不存在,无法记录毛重!");
+        }
+        //填充卸货单毛重
+        takeTicket.setGrossAmount(param.getGrossAmount());
+        waybillOrderTicketRepository.updateById(takeTicket);
+
+    }
+
+    @Override
+    protected void calculateAutoDispatchScore(WaybillOrderUnloadingIntoParam param, KwtWaybillOrder waybillOrder) {
+
+    }
+
+    @Override
+    protected String getProcessName() {
+        return "离场过磅";
+    }
+
+    @Override
+    protected Integer getStatus() {
+        return CarWaybillV1Enum.INTO_UNLOADING.getCode();
+    }
+
+
+    @Override
+    protected String getRemark(WaybillOrderUnloadingIntoParam param, KwtWaybillOrder waybillOrder) {
+        return "车辆[" + waybillOrder.getTruckNo() + "]已到达卸货点["  + param.getWeighbridgeName() + "]称重[" + param.getGrossAmount() + "吨]";
+    }
+}

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java

@@ -243,6 +243,12 @@ public class KwtLogisticsOrder implements Serializable {
     @TableField("distance")
     private String distance;
 
+    /**
+     * 计量方式
+     */
+    @TableField("measurement_way")
+    private Integer measurementWay;
+
     private static final long serialVersionUID = 1L;
 
     @TableField(exist = false)

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java

@@ -222,6 +222,10 @@ public class AddLogisticOrderDTO implements Serializable {
      * 计费方式
      */
     private String billingMode;
+    /**
+     * 计量方式
+     */
+    private Integer measurementWay;
 
     /**
      * 计划卸货时间

+ 30 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderUnloadingIntoParam.java

@@ -0,0 +1,30 @@
+package com.sckw.transport.model.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author :donglang
+ * @version :1.0
+ * @description : 车辆卸货入场过磅入参信息
+ * @create :2025-11-13 08:59:00
+ */
+@Data
+public class WaybillOrderUnloadingIntoParam extends WaybillOrderProcessParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6321184385988633871L;
+
+    /**
+     * 毛重
+     */
+    @Schema(description = "毛重")
+    @NotNull(message = "毛重不能为空")
+    private BigDecimal grossAmount;
+
+}

+ 15 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderTicketRepository.java

@@ -27,6 +27,14 @@ public class KwtWaybillOrderTicketRepository extends ServiceImpl<KwtWaybillOrder
                 .eq(KwtWaybillOrderTicket::getDelFlag,0));
     }
 
+    public KwtWaybillOrderTicket queryByWOrderIdByIdAndType(Long wOrderId, Integer type) {
+        return getOne(Wrappers.<KwtWaybillOrderTicket>lambdaQuery()
+                .eq(KwtWaybillOrderTicket::getWOrderId, wOrderId)
+                .eq(KwtWaybillOrderTicket::getType, type)
+                .eq(KwtWaybillOrderTicket::getDelFlag,0)
+                .last("limit 1"));
+    }
+
     public List<KwtWaybillOrderTicket> queryByAddressIds(Set<Long> addressIds) {
         return list(Wrappers.<KwtWaybillOrderTicket>lambdaQuery()
                 .eq(KwtWaybillOrderTicket::getDelFlag,0)
@@ -53,5 +61,12 @@ public class KwtWaybillOrderTicketRepository extends ServiceImpl<KwtWaybillOrder
                 .eq(KwtWaybillOrderTicket::getDelFlag, 0));
     }
 
+    public List<KwtWaybillOrderTicket> queryByWOrderIdsAndType(List<Long> wOrderIds, Integer type) {
+        return list(Wrappers.<KwtWaybillOrderTicket>lambdaQuery()
+                .in(KwtWaybillOrderTicket::getWOrderId, wOrderIds)
+                .eq(KwtWaybillOrderTicket::getType, type)
+                .eq(KwtWaybillOrderTicket::getDelFlag, 0));
+    }
+
 
 }

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -3664,6 +3664,7 @@ public class KwtAcceptCarriageOrderService {
         kwtLogisticsOrder.setBindStatus(String.valueOf(NumberConstant.ZERO));
         kwtLogisticsOrder.setDispatchWay(orderDTO.getDispatchWay());
         kwtLogisticsOrder.setDistance(distance);
+        kwtLogisticsOrder.setMeasurementWay(orderDTO.getMeasurementWay());
         saveLogisticsOrderList.add(kwtLogisticsOrder);
     }
 

+ 3 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -88,7 +88,6 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -5038,9 +5037,10 @@ public class KwtWaybillOrderV1Service {
         if (Objects.isNull(kwtLogistics)){
             throw new BusinessException("物流订单信息不存在");
         }
+        //查询贸易订单
         //调物流订单完结订单
        // BigDecimal loadAmount  = Objects.isNull(kwtLogistics.getLoadAmount())  ? BigDecimal.ZERO: kwtLogistics.getLoadAmount();
-       // BigDecimal subLoadAmount = Objects.isNull(subtask.getLoadAmount()) ? BigDecimal.ZERO: subtask.getLoadAmount();
+        //BigDecimal subLoadAmount = Objects.isNull(subtask.getLoadAmount()) ? BigDecimal.ZERO: subtask.getLoadAmount();
         BigDecimal unloadAmount  = Objects.isNull(kwtLogistics.getUnloadAmount())  ? BigDecimal.ZERO: kwtLogistics.getUnloadAmount();
         BigDecimal subUnloadAmount = Objects.isNull(subtask.getUnloadAmount()) ? BigDecimal.ZERO: subtask.getUnloadAmount();
         BigDecimal entrustAmount  = Objects.isNull(kwtLogistics.getEntrustAmount())  ? BigDecimal.ZERO: kwtLogistics.getEntrustAmount();
@@ -5051,6 +5051,7 @@ public class KwtWaybillOrderV1Service {
         BigDecimal entrust = subtractAmount.compareTo(BigDecimal.ZERO) >= 0
                 ? subtractAmount : new BigDecimal("0.00");
         kwtLogisticsOrder.setEntrustAmount(entrust);
+       // kwtLogisticsOrder.setTotalLoadAmount(loadAmount.add(subLoadAmount));
         kwtLogisticsOrder.setTotalUnloadAmount(unloadAmount.add(subUnloadAmount));
 
         //如果审核的状态是 完成,那么就要去查询物流订单状态是完结中,并且所有物流订单下的运单全部是完成或者取消如果是则更新状态为已完成

+ 12 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -90,6 +90,7 @@ public class WaybillOrderService {
     private final LoadingHandler loadingHandler;
     private final LeaveMockHandler leaveMockHandler;
     private final LeaveHandler leaveHandler;
+    private final UnloadingIntoHandler unloadingIntoHandler;
     private final UnloadingHandler unloadingHandler;
 
     private final KwtWaybillOrderV1Service waybillOrderV1Service;
@@ -836,12 +837,10 @@ public class WaybillOrderService {
         //装卸地之间距离
         wbOrderResp.setDistanceKm(logOrder.getDistance());
 
-        //皮重
+        //皮重、毛重
         KwtWaybillOrderTicket tareAmountTicket = ticketMap.getOrDefault(wbOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderTicket());
         wbOrderResp.setTareAmount(tareAmountTicket.getTareAmount());
-        //毛重
-        KwtWaybillOrderTicket grossAmountTicket = ticketMap.getOrDefault(wbOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderTicket());
-        wbOrderResp.setGrossAmount(grossAmountTicket.getGrossAmount());
+        wbOrderResp.setGrossAmount(tareAmountTicket.getGrossAmount());
 
         //司机信息
         wbOrderResp.setDriverId(wbOrder.getDriverId());
@@ -1168,6 +1167,15 @@ public class WaybillOrderService {
         leaveHandler.handler(param);
     }
 
+    /**
+     * 卸货入场
+     * @param param
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void unloadingInto(WaybillOrderUnloadingIntoParam param) {
+        unloadingIntoHandler.handler(param);
+    }
+
     /**
      * 卸货
      * @param param