Browse Source

自动派车增补运力接口

donglang 3 tuần trước cách đây
mục cha
commit
d3d0d4bf05
16 tập tin đã thay đổi với 495 bổ sung13 xóa
  1. 5 0
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java
  2. 5 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderVo.java
  3. 1 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java
  4. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java
  5. 8 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractLogisticsRepository.java
  6. 38 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java
  7. 16 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  8. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrder.java
  9. 51 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ContractLogisticsAddParam.java
  10. 45 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ContractLogisticsQueryParam.java
  11. 72 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/ContractLogisticsVO.java
  12. 229 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  13. 1 0
      sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderMapper.xml
  14. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  15. 8 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java
  16. 3 0
      sql/2025/12/01/2025_12_04_donglang.sql

+ 5 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java

@@ -111,6 +111,11 @@ public interface RemoteContractService {
      */
     List<LogisticsEntDtoVO> queryAutoContractLogOrder(Long entId, List<Long> goodsIds);
 
+    /**
+     * 查询手动派车的物流合同信息List
+     */
+    List<LogisticsEntDtoVO> queryContractLogOrder(Long entId, Long goodsId);
+
     /**
      * 根据合同id和商品id查询物流合同商品信息
      */

+ 5 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderVo.java

@@ -44,4 +44,9 @@ public class TradeOrderVo implements Serializable {
     private String chargeTypeLabel;
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
+
+    /**
+     * 是否需要增派运力(0-不需要,1-需要)
+     */
+    private Integer addVehicles;
 }

+ 1 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportRemoteService.java

@@ -170,7 +170,7 @@ public interface TransportRemoteService {
      *新增物流订单
      * @param param 请求参数
      */
-    void addLogisticOrder(AddLogisticOrderParam param);
+    Integer addLogisticOrder(AddLogisticOrderParam param);
 
     /**
      * 完结订单

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

@@ -391,6 +391,11 @@ public class RemoteContractServiceImpl implements RemoteContractService {
         return kwcContractTradeService.queryAutoContractLogOrder(entId, goodsIds);
     }
 
+    @Override
+    public List<LogisticsEntDtoVO> queryContractLogOrder(Long entId, Long goodsId) {
+        return kwcContractTradeService.queryContractLogOrder(entId, goodsId);
+    }
+
     @Override
     public LogisticsGoodsDto queryLogGoodsByContractId(Long contractId, Long goodsId) {
         return kwcContractTradeService.queryLogGoodsByContractId(contractId, goodsId);

+ 8 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractLogisticsRepository.java

@@ -125,4 +125,12 @@ public class KwcContractLogisticsRepository extends ServiceImpl<KwcContractLogis
                 .eq(KwcContractLogistics::getStatus, 0)
                 .eq(KwcContractLogistics::getDelFlag, 0));
     }
+
+    public List<KwcContractLogistics> queryBycontractIdList(List<Long> ids) {
+        return list(Wrappers.<KwcContractLogistics>lambdaQuery()
+                .in(KwcContractLogistics::getId, ids)
+                .eq(KwcContractLogistics::getDispatchWay, 1)
+                .eq(KwcContractLogistics::getStatus, 0)
+                .eq(KwcContractLogistics::getDelFlag, 0));
+    }
 }

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

@@ -367,6 +367,9 @@ public class KwcContractTradeService {
      * @param goodsInfo
      */
     private void checkLogContractTime(TradeBaseInfoReqVo baseInfo, List<TradeGoodsInfoReqVo> goodsInfo) {
+        if (true) {
+            return;
+        }
         if (Objects.equals(DispatchWayEnums.AUTO_DISPATCH.getCode(), baseInfo.getDispatchWay())) {
             //商品ids
             List<Long> goodsIdList = goodsInfo.stream().map(TradeGoodsInfoReqVo::getGoodsId).collect(Collectors.toList());
@@ -2214,6 +2217,41 @@ public class KwcContractTradeService {
         }).collect(Collectors.toList());
     }
 
+    /**
+     * 查询同产品和同托运企业是否存在手动派车合同
+     * @param entId 托运企业
+     * @param goodsId 商品id集合
+     * @return
+     */
+    public List<LogisticsEntDtoVO> queryContractLogOrder(Long entId, Long goodsId) {
+        log.info("查询满足贸易合合同供应企业和商品的手动派车的物流合同,企业id:{}, 商品id:{}",entId, goodsId);
+        if (Objects.isNull(entId)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "供应商企业id不能为空!");
+        }
+        if (goodsId == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "商品id不能为空!");
+        }
+
+        //查询供应商企业物流合同信息
+        List<KwcContractLogisticsUnit> contractLogisticsUnits = kwcContractLogisticsUnitRepository.queryByEntIdAndType(entId);
+        if (CollectionUtils.isEmpty(contractLogisticsUnits)) {
+            return Collections.emptyList();
+        }
+        Set<Long> unitContractIds = contractLogisticsUnits.stream().map(KwcContractLogisticsUnit::getContractId).collect(Collectors.toSet());
+
+        //查询物流商品合同信息
+        List<KwcContractLogisticsGoods> contractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByLogIdsAndGoodsId(unitContractIds, goodsId);
+        if (CollectionUtils.isEmpty(contractLogisticsGoods)) {
+            return Collections.emptyList();
+        }
+        List<Long> goodContractIds = contractLogisticsGoods.stream().map(KwcContractLogisticsGoods::getContractId).distinct().collect(Collectors.toList());
+
+        //查询自动派车物流合同
+        List<KwcContractLogistics> contractLogisticsList = contractLogisticsRepository.queryBycontractIdList(goodContractIds);
+        return toLogisticsEntDtoVO(entId, contractLogisticsList);
+    }
+
+
     /**
      * 根据合同id和商品id查询物流合同商品信息
      * @param contractId 物流合同

+ 16 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -340,4 +340,20 @@ public class KwoTradeOrderController {
     public HttpResult tradeOrderContractList(@RequestBody @Validated TradeOrderContractParam params) {
         return HttpResult.ok(kwoTradeOrderService.tradeOrderContractList(params));
     }
+
+    @PostMapping("/queryAddContractList")
+    @Operation(summary = "增补运力下拉框查询", description = "增补运力下拉框查询")
+    public HttpResult queryAddContractList(@RequestBody @Validated ContractLogisticsQueryParam param) {
+        return HttpResult.ok("增补运力下拉框查询成功", kwoTradeOrderService.queryAddContractList(param));
+    }
+
+    @PostMapping("/addContractList")
+    @Operation(summary = "增补运力", description = "增补运力")
+    public HttpResult addContractList(@RequestBody @Validated ContractLogisticsAddParam param) {
+        kwoTradeOrderService.addContractList(param);
+        return HttpResult.ok("增补运力查询成功");
+    }
+
+
+
 }

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrder.java

@@ -137,6 +137,12 @@ public class KwoTradeOrder extends BaseModel implements Serializable {
     @TableField("dispatch_way")
     private Integer dispatchWay;
 
+    /**
+     * 是否需要增派运力(0-否,1-是)
+     */
+    @TableField("add_vehicles")
+    private Integer addVehicles;
+
 
 
 }

+ 51 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ContractLogisticsAddParam.java

@@ -0,0 +1,51 @@
+package com.sckw.order.model.vo.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+@Getter
+@Setter
+@ToString
+public class ContractLogisticsAddParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -7775641940799194481L;
+
+    /**
+     * 贸易订单id
+     */
+    @NotNull(message = "贸易订单id不能为空")
+    @Schema(description = "贸易订单id")
+    private Long tradeOrderId;
+
+    /**
+     * 贸易合同id
+     */
+    @NotNull(message = "贸易合同id不能为空")
+    @Schema(description = "贸易合同id")
+    private Long tradeContractId;
+
+    /**
+     * 商品id
+     */
+    @NotNull(message = "商品id不能为空")
+    @Schema(description = "商品id")
+    private Long goodsId;
+
+    /**
+     * 物流合同信息
+     */
+    @Schema(description = "物流合同信息")
+    private List<LogisticsEntDto> logisticsContractList;
+
+
+
+}

+ 45 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ContractLogisticsQueryParam.java

@@ -0,0 +1,45 @@
+package com.sckw.order.model.vo.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+@Getter
+@Setter
+@ToString
+public class ContractLogisticsQueryParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -7775641940799194481L;
+
+    /**
+     * 贸易订单id
+     */
+    @NotNull(message = "贸易订单id不能为空")
+    @Schema(description = "贸易订单id")
+    private Long tradeOrderId;
+
+    /**
+     * 供应企业id
+     */
+    @NotNull(message = "供应企业id不能为空")
+    @Schema(description = "供应企业id")
+    private Long supEntId;
+
+    /**
+     * 商品id
+     */
+    @NotNull(message = "商品id不能为空")
+    @Schema(description = "商品id")
+    private Long goodsId;
+
+
+
+
+}

+ 72 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/ContractLogisticsVO.java

@@ -0,0 +1,72 @@
+package com.sckw.order.model.vo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Getter
+@Setter
+@ToString
+public class ContractLogisticsVO {
+
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 承运单位不能为空
+     */
+    private Long entId;
+
+    /**
+     * 承运企业名称不能为空
+     */
+    private String entName;
+
+    /**
+     * 通用价格
+     */
+    private BigDecimal commonPrice;
+
+    /**
+     * 联系人ID
+     */
+    private Long contactsId;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 运输单价
+     */
+    private BigDecimal transportPrice;
+
+
+}

+ 229 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -2128,9 +2128,7 @@ public class KwoTradeOrderService {
             }
         }
 
-        //更新贸易订单状态
-        kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
-        kwoTradeOrderMapper.updateById(kwoTradeOrder);
+
         if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
             KwoTradeOrderTrack kwoTradeOrderTrack = new KwoTradeOrderTrack();
             kwoTradeOrderTrack.setTOrderId(kwoTradeOrder.getId());
@@ -2254,6 +2252,7 @@ public class KwoTradeOrderService {
                 return logisticInfo;
             }).collect(Collectors.toList());
             addLogisticOrderParam.setLogisticInfo(collect);
+            addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
         } else {
             List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
             if (CollUtil.isNotEmpty(list)) {
@@ -2360,9 +2359,15 @@ public class KwoTradeOrderService {
         }
         addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
         addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
-        addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
         log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
-        transportRemoteService.addLogisticOrder(addLogisticOrderParam);
+        Integer result = transportRemoteService.addLogisticOrder(addLogisticOrderParam);
+        //自动派单运力不足
+        if (result == Global.YES) {
+            kwoTradeOrder.setAddVehicles(Global.YES);
+        }
+        //更新贸易订单状态
+        kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
+        kwoTradeOrderMapper.updateById(kwoTradeOrder);
         return true;
     }
 
@@ -2515,4 +2520,223 @@ public class KwoTradeOrderService {
         }
         return new ArrayList<>();
     }
+
+    /**
+     * 查询增补运力物流合同(手动派车物流合同)
+     * @param param
+     * @return
+     */
+    public List<ContractLogisticsVO> queryAddContractList(ContractLogisticsQueryParam param) {
+        KwoTradeOrder kwoTradeOrder = kwoTradeOrderMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrder>().eq(KwoTradeOrder::getId, param.getTradeOrderId()).eq(KwoTradeOrder::getDelFlag, 0));
+        if (Objects.isNull(kwoTradeOrder)) {
+            throw new BusinessException("贸易订单不存在");
+        }
+        if (!Objects.equals(TradeOrderStatusEnum.ING.getCode(), kwoTradeOrder.getStatus())) {
+            throw new BusinessException("只有进行中的贸易订单可以增补运力");
+        }
+        //查询满足手动派单的物流合同
+        List<LogisticsEntDtoVO> contractLogisticsList = remoteContractService.queryContractLogOrder(param.getSupEntId(), param.getGoodsId());
+        List<LogisticsEntDtoVO> validContractLog = contractLogisticsList.stream()
+                .filter(Objects::nonNull)
+                .filter(log -> log.getStartTime() != null && log.getEndTime() != null)
+                .filter(log -> {
+                    boolean startTimeOk = log.getStartTime().after(kwoTradeOrder.getStartTime());
+                    boolean endTimeOk = kwoTradeOrder.getEndTime() == null || log.getEndTime().before(kwoTradeOrder.getEndTime());
+                    return startTimeOk && endTimeOk;
+                }).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(validContractLog)) {
+            throw new BusinessException("未找到该商品有效的自动派车物流合同,请先签订自动派车物流合同");
+        }
+        //填充运输单价
+        for (LogisticsEntDtoVO vo : validContractLog) {
+            LogisticsGoodsDto dto = remoteContractService.queryLogGoodsByContractId(vo.getContractId(), param.getGoodsId());
+            if (dto.getPrice() == null || dto.getPrice().compareTo(BigDecimal.ZERO) == 0) {
+                vo.setTransportPrice(vo.getCommonPrice());
+            } else {
+                vo.setTransportPrice(dto.getPrice());
+            }
+        }
+        List<ContractLogisticsVO> contractLogisticsVOS = new ArrayList<>();
+        for (LogisticsEntDtoVO vo : validContractLog) {
+            ContractLogisticsVO logisticsVO = new ContractLogisticsVO();
+            logisticsVO.setContractId(vo.getContractId());
+            logisticsVO.setContractNo(vo.getContractNo());
+            logisticsVO.setStartTime(vo.getStartTime());
+            logisticsVO.setEndTime(vo.getEndTime());
+            logisticsVO.setEntId(vo.getEntId());
+            logisticsVO.setEntName(vo.getEntName());
+            logisticsVO.setCommonPrice(vo.getCommonPrice());
+            logisticsVO.setContactsId(vo.getContactsId());
+            logisticsVO.setContacts(vo.getContacts());
+            logisticsVO.setPhone(vo.getPhone());
+            logisticsVO.setTransportPrice(vo.getTransportPrice());
+            contractLogisticsVOS.add(logisticsVO);
+        }
+        return contractLogisticsVOS;
+    }
+
+
+    /**
+     * 查询增补运力物流合同(手动派车物流合同)
+     * @param param
+     * @return
+     */
+    public void addContractList(ContractLogisticsAddParam param) {
+        KwoTradeOrder kwoTradeOrder = kwoTradeOrderMapper.selectOne(new LambdaQueryWrapper<KwoTradeOrder>().eq(KwoTradeOrder::getId, param.getTradeOrderId()).eq(KwoTradeOrder::getDelFlag, 0));
+        if (Objects.isNull(kwoTradeOrder)) {
+            throw new BusinessException("贸易订单不存在");
+        }
+        if (!Objects.equals(TradeOrderStatusEnum.ING.getCode(), kwoTradeOrder.getStatus())) {
+            throw new BusinessException("只有进行中的贸易订单可以增补运力");
+        }
+
+        KwoTradeOrderGoods byOrderId = kwoTradeOrderGoodsService.getByOrderId(kwoTradeOrder.getId());
+        if (Objects.isNull(byOrderId)) {
+            throw new BusinessException("贸易订单关联商品信息不存在");
+        }
+        List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderId(kwoTradeOrder.getId());
+        if (CollUtil.isEmpty(addressList)) {
+            throw new BusinessException("贸易订单运输地址信息不存在");
+        }
+        Map<String, List<KwoTradeOrderAddress>> addressMap = addressList.stream().collect(Collectors.groupingBy(KwoTradeOrderAddress::getAddressType));
+        if (CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()))) && CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.BOTH.getCode())))) {
+            throw new BusinessException("装货地址信息不存在");
+        }
+        if (CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.TAKE.getCode()))) && CollUtil.isEmpty(addressMap.get(String.valueOf(AddressTypeEnum.BOTH.getCode())))) {
+            throw new BusinessException("卸货地址信息不存在");
+        }
+        TradeContractResDto tradeContractResDto = remoteContractService.queryTradeContract(param.getTradeContractId(), param.getGoodsId());
+        if (Objects.isNull(tradeContractResDto)) {
+            throw new BusinessException("贸易合同不存在");
+        }
+        List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(kwoTradeOrder.getId());
+        if (CollUtil.isEmpty(orderUnits)) {
+            throw new BusinessException("贸易订单企业信息不存在");
+        }
+        Map<String, KwoTradeOrderUnit> unitMap = orderUnits.stream().collect(Collectors.toMap(KwoTradeOrderUnit::getUnitType, e -> e, (a, b) -> a));
+        if (unitMap.keySet().size() < 2) {
+            throw new BusinessException("贸易订单企业信息缺失");
+        }
+        if(Objects.equals(tradeContractResDto.getConsignment(), 2)) {
+            throw new BusinessException("增补运力必须为卖方托运");
+        }
+        List<LogisticsEntDto> logisticsContractList = param.getLogisticsContractList();
+        if (CollUtil.isEmpty(logisticsContractList)) {
+            throw new BusinessException("物流合同不能为空");
+        }
+
+        //创建贸易订单和物流合同关联关系
+        for (LogisticsEntDto logisticsEntDto : logisticsContractList) {
+            KwoTradeOrderTransport kwoTradeOrderTransport = new KwoTradeOrderTransport();
+            kwoTradeOrderTransport.setId(new IdWorker(1).nextId());
+            kwoTradeOrderTransport.setTOrderId(kwoTradeOrder.getId());
+            kwoTradeOrderTransport.setTOrderNo(kwoTradeOrder.getTOrderNo());
+            kwoTradeOrderTransport.setEntId(logisticsEntDto.getEntId());
+            kwoTradeOrderTransport.setFirmName(logisticsEntDto.getEntName());
+            kwoTradeOrderTransport.setContractId(logisticsEntDto.getContractId());
+            kwoTradeOrderTransport.setContractNo(logisticsEntDto.getContractNo());
+            kwoTradeOrderTransport.setTransportPrice(logisticsEntDto.getTransportPrice());
+            kwoTradeOrderTransport.setContactsId(logisticsEntDto.getContactsId());
+            kwoTradeOrderTransport.setContacts(logisticsEntDto.getContacts());
+            kwoTradeOrderTransport.setPhone(logisticsEntDto.getPhone());
+            kwoTradeOrderTransport.setRemark("");
+            kwoTradeOrderTransport.setStatus(0);
+            kwoTradeOrderTransport.setCreateBy(LoginUserHolder.getUserId());
+            kwoTradeOrderTransport.setCreateTime(LocalDateTime.now());
+            kwoTradeOrderTransportService.insert(kwoTradeOrderTransport);
+        }
+
+        //组装下游生成物流订单数据
+        AddLogisticOrderParam addLogisticOrderParam = new AddLogisticOrderParam();
+        List<LogisticInfo> collect = logisticsContractList.stream().map(d -> {
+            LogisticInfo logisticInfo = new LogisticInfo();
+            logisticInfo.setContractId(d.getContractId());
+            logisticInfo.setContractNo(d.getContractNo());
+            logisticInfo.setContractName("");
+            logisticInfo.setAcceptCompanyId(d.getEntId());
+            logisticInfo.setAcceptContactPhone("");
+            logisticInfo.setAcceptContacts(d.getContacts());
+            logisticInfo.setAcceptContactsId(d.getContactsId());
+            logisticInfo.setAcceptCompany("");
+            logisticInfo.setPrice(d.getTransportPrice());
+            logisticInfo.setPriceType(0L);
+            logisticInfo.setAmount(new BigDecimal("0"));
+            logisticInfo.setAmountUnit("");
+            logisticInfo.setLoss(new BigDecimal("0"));
+            logisticInfo.setPayment(0L);
+            logisticInfo.setSigningWay(0);
+            logisticInfo.setLossUnit("");
+            logisticInfo.setRemark("");
+            logisticInfo.setType(0);
+
+            return logisticInfo;
+        }).collect(Collectors.toList());
+        addLogisticOrderParam.setLogisticInfo(collect);
+
+        addLogisticOrderParam.setTradeOrderId(kwoTradeOrder.getId());
+        addLogisticOrderParam.setTradeOrderNo(kwoTradeOrder.getTOrderNo());
+        addLogisticOrderParam.setBillingMode(String.valueOf(kwoTradeOrder.getChargeType()));
+        addLogisticOrderParam.setStartTime(DateUtils.dateToLocalDate(kwoTradeOrder.getStartTime()));
+        addLogisticOrderParam.setEndTime(DateUtils.dateToLocalDate(kwoTradeOrder.getEndTime()));
+
+        KwoTradeOrderUnit kwoTradeOrderUnit = unitMap.get("2");//卖方
+        if (Objects.nonNull(kwoTradeOrderUnit)) {
+            addLogisticOrderParam.setConsignCompany(kwoTradeOrderUnit.getFirmName());
+            addLogisticOrderParam.setConsignCompanyId(kwoTradeOrderUnit.getEntId());
+            addLogisticOrderParam.setConsignContactPhone(kwoTradeOrderUnit.getPhone());
+            addLogisticOrderParam.setConsignContacts(kwoTradeOrderUnit.getContacts());
+            addLogisticOrderParam.setConsignContactsId(kwoTradeOrderUnit.getContactsId());
+        }
+        KwoTradeOrderUnit kwoTradeOrderUnit2 = unitMap.get("1");//买方
+        if (Objects.nonNull(kwoTradeOrderUnit2)) {
+            addLogisticOrderParam.setNonConsignCompany(kwoTradeOrderUnit2.getFirmName());
+            addLogisticOrderParam.setNonConsignCompanyId(kwoTradeOrderUnit2.getEntId());
+            addLogisticOrderParam.setNonConsignContactPhone(kwoTradeOrderUnit2.getPhone());
+            addLogisticOrderParam.setNonConsignContacts(kwoTradeOrderUnit2.getContacts());
+            addLogisticOrderParam.setNonConsignContactsId(kwoTradeOrderUnit2.getContactsId());
+        }
+
+        addLogisticOrderParam.setGoodsId(byOrderId.getGoodsId());
+        addLogisticOrderParam.setGoodsName(byOrderId.getGoodsName());
+        addLogisticOrderParam.setGoodsType(byOrderId.getGoodsType());
+        addLogisticOrderParam.setGoodsPrice(byOrderId.getUnitPrice());
+        addLogisticOrderParam.setGoodsPriceUnit(byOrderId.getUnit());
+        List<KwoTradeOrderAddress> kwoTradeOrderAddresses = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
+        KwoTradeOrderAddress kwoTradeOrderAddress = kwoTradeOrderAddresses.get(0);
+        if (Objects.nonNull(kwoTradeOrderAddress)) {
+            addLogisticOrderParam.setLoadName(kwoTradeOrderAddress.getName());
+            addLogisticOrderParam.setLoadCityCode(kwoTradeOrderAddress.getCityCode());
+            addLogisticOrderParam.setLoadCityName(kwoTradeOrderAddress.getCityName());
+            addLogisticOrderParam.setLoadContacts(kwoTradeOrderAddress.getContacts());
+            addLogisticOrderParam.setLoadPhone(kwoTradeOrderAddress.getPhone());
+            addLogisticOrderParam.setLoadDetailAddress(kwoTradeOrderAddress.getDetailAddress());
+            addLogisticOrderParam.setLoadLat(kwoTradeOrderAddress.getLat());
+            addLogisticOrderParam.setLoadLng(kwoTradeOrderAddress.getLng());
+        }
+
+        List<KwoTradeOrderAddress> kwoTradeOrderAddresses2 = addressMap.get(String.valueOf(AddressTypeEnum.TAKE.getCode()));
+        KwoTradeOrderAddress unloadAddress = kwoTradeOrderAddresses2.get(0);
+        if (Objects.nonNull(unloadAddress)) {
+            addLogisticOrderParam.setUnloadId(unloadAddress.getId());
+            addLogisticOrderParam.setUnloadName(unloadAddress.getName());
+            addLogisticOrderParam.setUnloadCityCode(unloadAddress.getCityCode());
+            addLogisticOrderParam.setUnloadCityName(unloadAddress.getCityName());
+            addLogisticOrderParam.setUnLoadDetailAddress(unloadAddress.getDetailAddress());
+            addLogisticOrderParam.setUnloadContacts(unloadAddress.getContacts());
+            addLogisticOrderParam.setUnloadPhone(unloadAddress.getPhone());
+            addLogisticOrderParam.setUnloadLng(unloadAddress.getLng());
+            addLogisticOrderParam.setUnloadLat(unloadAddress.getLat());
+        }
+        addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
+        addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());
+        addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
+        log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
+        transportRemoteService.addLogisticOrder(addLogisticOrderParam);
+
+        //修改贸易订单增派运力是否满足
+        kwoTradeOrder.setAddVehicles(Global.NO);
+        kwoTradeOrderMapper.updateById(kwoTradeOrder);
+
+    }
+
 }

+ 1 - 0
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderMapper.xml

@@ -749,6 +749,7 @@
                a.unload_amount,
                a.charge_type,
                a.create_time
+               a.add_vehicles
         FROM kwo_trade_order a
                  LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = '1' AND d.del_flag = 0
                  LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = '2' AND e.del_flag = 0

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

@@ -1162,10 +1162,10 @@ public class TransportServiceImpl implements TransportRemoteService {
     }
 
     @Override
-    public void addLogisticOrder(AddLogisticOrderParam param) {
+    public Integer addLogisticOrder(AddLogisticOrderParam param) {
         log.info("新增物流订单:{}", JSON.toJSONString(param));
         AddLogisticOrderDTO addLogisticOrderDTO = getAddLogisticOrderDTO(param);
-        kwtAcceptCarriageOrderService.addLogisticOrder( addLogisticOrderDTO);
+        return kwtAcceptCarriageOrderService.addLogisticOrder(addLogisticOrderDTO);
     }
 
     @Override

+ 8 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -3189,7 +3189,7 @@ public class KwtAcceptCarriageOrderService {
      * 物流订单-新建订单
      */
     @Transactional(rollbackFor = Exception.class)
-    public void addLogisticOrder(AddLogisticOrderDTO orderDTO) {
+    public Integer addLogisticOrder(AddLogisticOrderDTO orderDTO) {
         log.info("创建物流订单请求参数:{}",JSON.toJSONString(orderDTO));
         commonService.getRedisGenerateOrderNo();
         /**生成订单编号*/
@@ -3282,15 +3282,18 @@ public class KwtAcceptCarriageOrderService {
             }
 
         }
+
+        // 批量保存并检查结果
+        saveBatch(saveLogisticsOrderList, saveAddressList, savelogOrderGoodsList, saveContractList, savelogOrderUnitList, lOrderNo);
+
         //校验派车总量,处理未达标场景
         int unDispatched = actualDisPatch - dispatched;
         if (unDispatched > 0) {
-            // 3.1 核心告警:记录未派足的情况
+            // 自动派车未派足
             log.error("派车未完成!实际需派{}辆,仅派{}辆,缺{}辆无可用车辆", actualDisPatch, dispatched, unDispatched);
+            return Global.YES;
         }
-
-        // 批量保存并检查结果
-        saveBatch(saveLogisticsOrderList, saveAddressList, savelogOrderGoodsList, saveContractList, savelogOrderUnitList, lOrderNo);
+        return Global.NO;
     }
 
     /**

+ 3 - 0
sql/2025/12/01/2025_12_04_donglang.sql

@@ -62,3 +62,6 @@ create table kwf_truck_dispatch_coefficient
 ) comment '自动派单系数表';
 
 
+ALTER TABLE kwo_trade_order ADD add_vehicles tinyint NOT NULL DEFAULT '0' COMMENT '是否需要增派运力(0-不需要,1-需要)';
+
+