Эх сурвалжийг харах

贸易合同和贸易订单功能优化

donglang 6 сар өмнө
parent
commit
2eedadc4b7

+ 7 - 1
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/RemoteContractService.java

@@ -105,10 +105,16 @@ public interface RemoteContractService {
     KwcContractLogisticsDto queryContractByContractId(Long contractId);
 
     List<TradeContractUnitDto> queryContractUnitByContractId(Long contractId);
+
     /**
      * 查询自动派车的物流合同信息List
      */
-    List<LogisticsEntDtoVO> queryValidAutoContractLogOrder(Long entId, Long goodsId);
+    List<LogisticsEntDtoVO> queryAutoContractLogOrder(Long entId, List<Long> goodsIds);
+
+    /**
+     * 根据合同id和商品id查询物流合同商品信息
+     */
+    LogisticsGoodsDto queryLogGoodsByContractId(Long contractId, Long goodsId);
 
     /**
      * 查询自动派车的物流合同信息

+ 16 - 10
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/vo/LogisticsEntDtoVO.java

@@ -24,6 +24,16 @@ public class LogisticsEntDtoVO {
      */
     private String contractNo;
 
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
     /**
      * 承运单位不能为空
      */
@@ -35,9 +45,9 @@ public class LogisticsEntDtoVO {
     private String entName;
 
     /**
-     * 运输单价
+     * 通用价格
      */
-    private BigDecimal transportPrice;
+    private BigDecimal commonPrice;
 
     /**
      * 联系人ID
@@ -55,18 +65,14 @@ public class LogisticsEntDtoVO {
     private String phone;
 
     /**
-     * 运输企业评分
+     * 运输单价
      */
-    private BigDecimal score;
+    private BigDecimal transportPrice;
 
     /**
-     * 开始时间
+     * 运输企业评分
      */
-    private Date startTime;
+    private BigDecimal score;
 
-    /**
-     * 结束时间
-     */
-    private Date endTime;
 
 }

+ 32 - 0
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/model/vo/LogisticsGoodsDto.java

@@ -0,0 +1,32 @@
+package com.sckw.contract.api.model.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+@Data
+public class LogisticsGoodsDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 5035444423869907876L;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
+
+}

+ 6 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java

@@ -386,10 +386,14 @@ public class RemoteContractServiceImpl implements RemoteContractService {
         return contractCommonInfoResDto;
     }
 
+    @Override
+    public List<LogisticsEntDtoVO> queryAutoContractLogOrder(Long entId, List<Long> goodsIds) {
+        return kwcContractTradeService.queryAutoContractLogOrder(entId, goodsIds);
+    }
 
     @Override
-    public List<LogisticsEntDtoVO> queryValidAutoContractLogOrder(Long entId, Long goodsId) {
-        return kwcContractTradeService.queryValidAutoContractLogOrder(entId, goodsId);
+    public LogisticsGoodsDto queryLogGoodsByContractId(Long contractId, Long goodsId) {
+        return kwcContractTradeService.queryLogGoodsByContractId(contractId, goodsId);
     }
 
     @Override

+ 5 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractLogisticsGoodsRepository.java

@@ -49,10 +49,11 @@ public class KwcContractLogisticsGoodsRepository extends ServiceImpl<KwcContract
     }
 
 
-    public List<KwcContractLogisticsGoods> queryByContractIdsAndGoodId(List<Long> contractIds, Long goodId) {
-        return list(Wrappers.<KwcContractLogisticsGoods>lambdaQuery()
-                .in(KwcContractLogisticsGoods::getContractId,contractIds)
+    public KwcContractLogisticsGoods queryByContractIdAndGoodId(Long contractId, Long goodId) {
+        return getOne(Wrappers.<KwcContractLogisticsGoods>lambdaQuery()
+                .eq(KwcContractLogisticsGoods::getContractId, contractId)
                 .eq(KwcContractLogisticsGoods::getGoodsId,goodId)
-                .eq(KwcContractLogisticsGoods::getDelFlag,0));
+                .eq(KwcContractLogisticsGoods::getDelFlag,0)
+                .last("limit 1"));
     }
 }

+ 0 - 7
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractLogisticsUnitRepository.java

@@ -79,13 +79,6 @@ public class KwcContractLogisticsUnitRepository extends ServiceImpl<KwcContractL
                 .eq(KwcContractLogisticsUnit::getDelFlag, 0));
     }
 
-    public List<KwcContractLogisticsUnit> queryByContractIds(List<Long> tradeContractIds) {
-        return list(Wrappers.<KwcContractLogisticsUnit>lambdaQuery()
-                .eq(KwcContractLogisticsUnit::getDelFlag, 0)
-                .eq(KwcContractLogisticsUnit::getUnitType, 4)
-                .in(KwcContractLogisticsUnit::getContractId, tradeContractIds));
-    }
-
     public KwcContractLogisticsUnit queryByLogContractIdUnit(Long tradeContractId) {
         return getOne(Wrappers.<KwcContractLogisticsUnit>lambdaQuery()
                 .eq(KwcContractLogisticsUnit::getDelFlag, 0)

+ 88 - 49
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java

@@ -14,6 +14,7 @@ import com.sckw.contract.api.model.dto.res.ContractTradeOrderDto;
 import com.sckw.contract.api.model.dto.res.ContractTradeOrderInfo;
 import com.sckw.contract.api.model.dto.res.LogisticsOrderDto;
 import com.sckw.contract.api.model.vo.LogisticsEntDtoVO;
+import com.sckw.contract.api.model.vo.LogisticsGoodsDto;
 import com.sckw.contract.api.model.vo.TradeContractUnitDto;
 import com.sckw.contract.dao.KwcContractTradeMapper;
 import com.sckw.contract.model.dto.req.QueryListReqDto;
@@ -367,12 +368,11 @@ public class KwcContractTradeService {
      */
     private void checkLogContractTime(TradeBaseInfoReqVo baseInfo, List<TradeGoodsInfoReqVo> goodsInfo) {
         if (Objects.equals(DispatchWayEnums.AUTO_DISPATCH.getCode(), baseInfo.getDispatchWay())) {
-            List<LogisticsEntDtoVO> logisticsEntDtoVOS = new ArrayList<>();
-            for (TradeGoodsInfoReqVo good : goodsInfo) {
-                List<LogisticsEntDtoVO> logistics = queryValidAutoContractLogOrder(baseInfo.getProvideEntId(), good.getGoodsId());
-                logisticsEntDtoVOS.addAll(logistics);
-            }
-            List<LogisticsEntDtoVO> filteredLogistics  = logisticsEntDtoVOS.stream()
+            //商品ids
+            List<Long> goodsIdList = goodsInfo.stream().map(TradeGoodsInfoReqVo::getGoodsId).collect(Collectors.toList());
+            //查询满足条件的物理合同
+            List<LogisticsEntDtoVO> logisticsList = queryAutoContractLogOrder(baseInfo.getProvideEntId(), goodsIdList);
+            List<LogisticsEntDtoVO> filteredLogistics  = logisticsList.stream()
                     .filter(Objects::nonNull)
                     .filter(log -> log.getStartTime() != null && log.getEndTime() != null)
                     .filter(log -> {
@@ -386,7 +386,8 @@ public class KwcContractTradeService {
             //结束时间最早的
             LogisticsEntDtoVO logEndTimeMin = filteredLogistics.stream()
                     .filter(log -> log.getEndTime() != null)
-                    .min(Comparator.comparing(LogisticsEntDtoVO::getEndTime)).orElse(new LogisticsEntDtoVO());
+                    .min(Comparator.comparing(LogisticsEntDtoVO::getEndTime))
+                    .orElse(new LogisticsEntDtoVO());
             log.error("自动派车物流合同将在【{}】失效,将影响派车,请及时续签。", logEndTimeMin.getEndTime());
         }
     }
@@ -2135,70 +2136,108 @@ public class KwcContractTradeService {
     /**
      * 查询同产品和同托运企业是否存在自动派车合同
      * @param entId 托运企业
-     * @param goodsId 商品id
+     * @param goodsIds 商品id集合
      * @return
      */
-    public List<LogisticsEntDtoVO> queryValidAutoContractLogOrder(Long entId, Long goodsId) {
-        log.info("查询自动派车的物流合同,企业id:{}, 商品id:{}",entId, goodsId);
+    public List<LogisticsEntDtoVO> queryAutoContractLogOrder(Long entId, List<Long> goodsIds) {
+        log.info("查询满足贸易合合同供应企业和商品的自动派车的物流合同,企业id:{}, 商品id:{}",entId, JSON.toJSONString(goodsIds));
         if (Objects.isNull(entId)) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "供应商企业id不能为空!");
         }
-        if (Objects.isNull(goodsId)) {
+        if (CollectionUtils.isEmpty(goodsIds)) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "商品id不能为空!");
         }
 
-        //查询物流合同托运企业信息
+        //查询供应商企业物流合同信息
         List<KwcContractLogisticsUnit> contractLogisticsUnits = kwcContractLogisticsUnitRepository.queryByEntIdAndType(entId);
         if (CollectionUtils.isEmpty(contractLogisticsUnits)) {
-            return null;
+            return Collections.emptyList();
         }
-        List<Long> unitContractIds = contractLogisticsUnits.stream().map(KwcContractLogisticsUnit::getContractId).distinct().collect(Collectors.toList());
+        Set<Long> unitContractIds = contractLogisticsUnits.stream().map(KwcContractLogisticsUnit::getContractId).collect(Collectors.toSet());
 
         //查询物流商品合同信息
-        List<KwcContractLogisticsGoods> contractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByContractIdsAndGoodId(unitContractIds, goodsId);
+        List<KwcContractLogisticsGoods> contractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByContractIds(unitContractIds);
         if (CollectionUtils.isEmpty(contractLogisticsGoods)) {
-            return null;
+            return Collections.emptyList();
+        }
+        Map<Long, List<KwcContractLogisticsGoods>> logisticsGoodsMap = contractLogisticsGoods.stream().collect(Collectors.groupingBy(KwcContractLogisticsGoods::getContractId));
+        List<Long> contractIdList = new ArrayList<>();
+        //校验合同里是否都包含贸易合同里的商品
+        for (Map.Entry<Long, List<KwcContractLogisticsGoods>> entry : logisticsGoodsMap.entrySet()) {
+            Long contractId = entry.getKey();
+            List<KwcContractLogisticsGoods> logisticsGoodList = entry.getValue();
+            if (CollectionUtils.isEmpty(logisticsGoodList)) {
+                continue;
+            }
+            //提取当前合同下的所有商品ID
+            Set<Long> currentGoodsIds  = logisticsGoodList.stream().map(KwcContractLogisticsGoods::getGoodsId).filter(Objects::nonNull).collect(Collectors.toSet());
+            boolean isContains = goodsIds.stream().allMatch(currentGoodsIds::contains);
+            if (isContains) {
+                contractIdList.add(contractId);
+            }
         }
-        Map<Long, KwcContractLogisticsGoods> goodsMap = contractLogisticsGoods.stream().collect(Collectors
-                .toMap(KwcContractLogisticsGoods::getContractId, Function.identity(), (x, y) -> x));
-        List<Long> goodContractIds = contractLogisticsGoods.stream().map(KwcContractLogisticsGoods::getContractId).distinct().collect(Collectors.toList());
-
         //查询自动派车物流合同
-        List<KwcContractLogistics> contractLogistics = contractLogisticsRepository.queryByIdsAndDispatch(goodContractIds);
+        List<KwcContractLogistics> contractLogisticsList = contractLogisticsRepository.queryByIdsAndDispatch(contractIdList);
+        return toLogisticsEntDtoVO(entId, contractLogisticsList);
+    }
 
-        return contractLogistics.stream()
-                .map(log ->
-                        getContractLogisticsList(log,  goodsMap,  entId))
-                .sorted(Comparator.comparing(LogisticsEntDtoVO::getScore).reversed())
-                .collect(Collectors.toList());
+    /**
+     * 参数转换
+     * @param contractLogisticsList
+     * @return
+     */
+    private List<LogisticsEntDtoVO> toLogisticsEntDtoVO(Long supEntId, List<KwcContractLogistics> contractLogisticsList) {
+        return contractLogisticsList.stream().filter(Objects::nonNull).map(log -> {
+            LogisticsEntDtoVO vo = new LogisticsEntDtoVO();
+            vo.setContractId(log.getId());
+            vo.setContractNo(log.getContractNo());
+            vo.setStartTime(log.getStartTime());
+            vo.setEndTime(log.getEndTime());
+            vo.setCommonPrice(log.getCommonPrice());
+
+            //承运企业信息
+            TradeContractUnitDto unit = queryEntByContractId(log.getId());
+            vo.setEntId(unit.getEntId());
+            vo.setEntName(unit.getFirmName());
+            vo.setContactsId(unit.getContactsId());
+            vo.setContacts(unit.getContacts());
+            vo.setPhone(unit.getPhone());
+
+            //企业评分
+            KwcContractLogisticsScore entScore = queryEntScoreByEntId(supEntId, unit.getEntId());
+            vo.setScore(entScore.getScore());
+
+            return vo;
+        }).collect(Collectors.toList());
     }
 
-    @NotNull
-    private LogisticsEntDtoVO getContractLogisticsList(KwcContractLogistics log, Map<Long, KwcContractLogisticsGoods> goodsMap,
-                                                       Long proEntId) {
-        LogisticsEntDtoVO vo = new LogisticsEntDtoVO();
-        vo.setContractId(log.getId());
-        vo.setContractNo(log.getContractNo());
-        vo.setStartTime(log.getStartTime());
-        vo.setEndTime(log.getEndTime());
-        //承运企业信息
-        TradeContractUnitDto unit = queryEntByContractId(log.getId());
-        vo.setEntId(unit.getEntId());
-        vo.setEntName(unit.getFirmName());
-        vo.setContactsId(unit.getContactsId());
-        vo.setContacts(unit.getContacts());
-        vo.setPhone(unit.getPhone());
-        //商品价格
-        KwcContractLogisticsGoods goods = goodsMap.getOrDefault(log.getId(), new KwcContractLogisticsGoods());
-        vo.setTransportPrice(goods.getPriceUnit() == null ? BigDecimal.ZERO : new BigDecimal(goods.getPriceUnit()));
-        //评分
-        KwcContractLogisticsScore entScore = queryEntScoreByEntId(proEntId, unit.getEntId());
-        vo.setScore(entScore.getScore());
-
-        return vo;
+    /**
+     * 根据合同id和商品id查询物流合同商品信息
+     * @param contractId 物流合同
+     * @param goodsId 商品id
+     * @return
+     */
+    public LogisticsGoodsDto queryLogGoodsByContractId(Long contractId, Long goodsId) {
+        if (Objects.isNull(contractId)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "物流合同id不能为空!");
+        }
+        if (goodsId == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "商品id不能为空!");
+        }
+        //查询物流商品合同信息
+        KwcContractLogisticsGoods goods = kwcContractLogisticsGoodsRepository.queryByContractIdAndGoodId(contractId, goodsId);
+        if (goods == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "当前物流合同商品信息不存在!");
+        }
+        LogisticsGoodsDto dto = new LogisticsGoodsDto();
+        dto.setGoodsId(goods.getGoodsId());
+        dto.setAmount(goods.getAmount());
+        dto.setPrice(goods.getPrice());
+        return dto;
     }
 
 
+
     //查询物流合同物流企业信息
     public TradeContractUnitDto queryEntByContractId(Long contractId) {
         KwcContractLogisticsUnit unit = kwcContractLogisticsUnitRepository.queryByLogContractIdUnit(contractId);

+ 47 - 79
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -12,12 +12,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.google.common.collect.Lists;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.contract.api.model.vo.GoodsInfoDto;
-import com.sckw.contract.api.model.vo.LogisticsEntDtoVO;
-import com.sckw.contract.api.model.vo.TradeContractResDto;
-import com.sckw.contract.api.model.vo.TradeContractUnitDto;
+import com.sckw.contract.api.model.vo.*;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
@@ -37,24 +35,22 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.api.RemoteFleetService;
-import com.sckw.fleet.api.model.vo.RTruckVo;
-import com.sckw.fleet.api.model.vo.TmsTruckAxleNumVO;
 import com.sckw.fleet.api.model.vo.TruckDispatchCoefficientVO;
 import com.sckw.manage.api.RemoteManageService;
 import com.sckw.manage.api.model.dto.res.FindEntCooperateResVo;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.model.*;
 import com.sckw.order.dao.KwoTradeOrderMapper;
-import com.sckw.order.enums.ContractStatusEnum;
 import com.sckw.order.enums.*;
+import com.sckw.order.enums.ContractStatusEnum;
 import com.sckw.order.model.*;
 import com.sckw.order.model.dto.*;
-import com.sckw.order.model.vo.req.ContractInfo;
 import com.sckw.order.model.vo.req.*;
+import com.sckw.order.model.vo.req.ContractInfo;
+import com.sckw.order.model.vo.res.*;
 import com.sckw.order.model.vo.res.GoodsInfoDetailRes;
 import com.sckw.order.model.vo.res.OrderDetailRes;
 import com.sckw.order.model.vo.res.UnitInfoDetailRes;
-import com.sckw.order.model.vo.res.*;
 import com.sckw.payment.api.dubbo.PayCenterDubboService;
 import com.sckw.payment.api.dubbo.PaymentDubboService;
 import com.sckw.payment.api.model.constant.ChannelEnum;
@@ -83,6 +79,7 @@ import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
@@ -797,26 +794,15 @@ public class KwoTradeOrderService {
         List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(id);
         if (CollUtil.isNotEmpty(list)) {
             Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(list.stream().map(KwoTradeOrderTransport::getContractId).collect(Collectors.toList()));
-            //贸易合同派单方式
-            Integer dispatchWay = (detail.getContractInfo() == null || detail.getContractInfo().getDispatchWay() == null) ? 0 : detail.getContractInfo().getDispatchWay();
+
             List<ContractInfo> collect = list.stream().map(d -> {
                 ContractInfo contractInfo = new ContractInfo();
                 contractInfo.setContractId(d.getContractId());
                 contractInfo.setContractNo(d.getContractNo());
                 Optional.ofNullable(contractMap.get(d.getContractId())).ifPresent(c -> {
-                    // 新增:若贸易合同为自动派单,则需要过滤自动派单的物流合同
-                    if (Objects.equals(DispatchWayEnums.AUTO_DISPATCH.getCode(), dispatchWay)) {
-                        // 仅当合同自身也是自动派单类型时,才赋值字段
-                        if (Objects.equals(DispatchWayEnums.AUTO_DISPATCH.getCode(), c.getDispatchWay())) {
-                            contractInfo.setContractName(c.getContactName());
-                            contractInfo.setContractSigningWay(c.getSigningWayName());
-                            contractInfo.setContractStatus(c.getStatusName());
-                        }
-                    } else {
-                        contractInfo.setContractName(c.getContactName());
-                        contractInfo.setContractSigningWay(c.getSigningWayName());
-                        contractInfo.setContractStatus(c.getStatusName());
-                    }
+                    contractInfo.setContractName(c.getContactName());
+                    contractInfo.setContractSigningWay(c.getSigningWayName());
+                    contractInfo.setContractStatus(c.getStatusName());
                 });
                 return contractInfo;
             }).collect(Collectors.toList());
@@ -2130,25 +2116,18 @@ public class KwoTradeOrderService {
             throw new BusinessException("贸易合同不存在");
         }
 
-        List<LogisticsEntDtoVO> contractLogisticsList = new ArrayList<>();
-        //自动派单校验: 判断当前有无包含该商品的有效自动派车物流合同
+        List<LogisticsEntDtoVO> validContractLog = new ArrayList<>();
+        List<LogisticsEntDto> logisticsContractId =new ArrayList<>();
         if (Objects.equals(DispatchWayEnums.AUTO_DISPATCH.getCode(), tradeContractResDto.getDispatchWay())) {
-            KwoTradeOrderUnit tradeOrderUnit = unitMap.get(String.valueOf(Global.NUMERICAL_TWO));
-            //查询满足自动派单的物流合同
-            contractLogisticsList = remoteContractService.queryValidAutoContractLogOrder(tradeOrderUnit.getEntId(), byOrderId.getId());
-            if (CollectionUtils.isEmpty(contractLogisticsList)) {
-                throw new BusinessException("未找到该商品有效的自动派车物流合同,请先签订自动派车物流合同");
-            }
+            //自动派单校验: 判断当前有无包含该商品的有效自动派车物流合同
+            validContractLog = checkAutoContractLogOrder(unitMap, byOrderId, tradeContractResDto);
         } else {
-            List<LogisticsEntDto> logisticsContractId = tradeOrderAuditParam.getLogisticsContractList();
+            logisticsContractId = tradeOrderAuditParam.getLogisticsContractList();
             if (Objects.equals(tradeContractResDto.getConsignment(), 2) && CollUtil.isEmpty(logisticsContractId)) {
                 throw new BusinessException("卖方托运时,物流合同不能为空");
             }
         }
-        List<LogisticsEntDto> logisticsContractId = tradeOrderAuditParam.getLogisticsContractList();
-        if (Objects.equals(tradeContractResDto.getConsignment(), 2) && CollUtil.isEmpty(logisticsContractId)) {
-            throw new BusinessException("卖方托运时,物流合同不能为空");
-        }
+
         //更新贸易订单状态
         kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
         kwoTradeOrderMapper.updateById(kwoTradeOrder);
@@ -2198,7 +2177,7 @@ public class KwoTradeOrderService {
         AddLogisticOrderParam addLogisticOrderParam = new AddLogisticOrderParam();
         if (DispatchWayEnums.AUTO_DISPATCH.getCode().equals(kwoTradeOrder.getDispatchWay())) {
             // 自动派车物流合同
-            List<LogisticInfo> collect = contractLogisticsList.stream().map(d -> {
+            List<LogisticInfo> logisticInfoList = validContractLog.stream().map(d -> {
                 LogisticInfo logisticInfo = new LogisticInfo();
                 logisticInfo.setContractId(d.getContractId());
                 logisticInfo.setContractNo(d.getContractNo());
@@ -2221,7 +2200,7 @@ public class KwoTradeOrderService {
 
                 return logisticInfo;
             }).collect(Collectors.toList());
-            addLogisticOrderParam.setLogisticInfo(collect);
+            addLogisticOrderParam.setLogisticInfo(logisticInfoList);
             addLogisticOrderParam.setDispatchWay(DispatchWayEnums.AUTO_DISPATCH.getCode());
 
             //实际派车数
@@ -2365,6 +2344,35 @@ public class KwoTradeOrderService {
         return true;
     }
 
+    @NotNull
+    private List<LogisticsEntDtoVO> checkAutoContractLogOrder(Map<String, KwoTradeOrderUnit> unitMap, KwoTradeOrderGoods byOrderId, TradeContractResDto tradeContractResDto) {
+        List<LogisticsEntDtoVO> validContractLog;
+        KwoTradeOrderUnit tradeOrderUnit = unitMap.get(String.valueOf(Global.NUMERICAL_TWO));
+        //查询满足自动派单的物流合同
+        List<LogisticsEntDtoVO> contractLogisticsList = remoteContractService.queryAutoContractLogOrder(tradeOrderUnit.getEntId(), Lists.newArrayList(byOrderId.getId()));
+        validContractLog = contractLogisticsList.stream()
+                .filter(Objects::nonNull)
+                .filter(log -> log.getStartTime() != null && log.getEndTime() != null)
+                .filter(log -> {
+                    boolean startTimeOk = log.getStartTime().after(tradeContractResDto.getStartTime());
+                    boolean endTimeOk = tradeContractResDto.getEndTime() == null || log.getEndTime().before(tradeContractResDto.getEndTime());
+                    return startTimeOk && endTimeOk;
+                }).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(validContractLog)) {
+            throw new BusinessException("未找到该商品有效的自动派车物流合同,请先签订自动派车物流合同");
+        }
+        //填充运输单价
+        for (LogisticsEntDtoVO vo : validContractLog) {
+            LogisticsGoodsDto dto = remoteContractService.queryLogGoodsByContractId(vo.getContractId(), byOrderId.getGoodsId());
+            if (dto.getPrice() == null || dto.getPrice().compareTo(BigDecimal.ZERO) == 0) {
+                vo.setTransportPrice(vo.getCommonPrice());
+            } else {
+                vo.setTransportPrice(dto.getPrice());
+            }
+        }
+        return validContractLog;
+    }
+
     /**
      * 实际派车数
      *
@@ -2406,48 +2414,8 @@ public class KwoTradeOrderService {
             throw new BusinessPlatfromException(ErrorCodeEnum.DATA_NOT_EXIST, "实际派车数量需大于0!");
         }
         return actualDisPatch;
-
     }
 
-
-    /**
-     * 物流企业可派车
-     *
-     * @param byOrderId
-     * @param contractLogisticsList
-     * @return
-     */
-    public Integer getEntAvailableVehicle(KwoTradeOrderGoods byOrderId, List<LogisticsEntDtoVO> contractLogisticsList) {
-        List<Long> contractIds = contractLogisticsList.stream().map(LogisticsEntDtoVO::getContractId).collect(Collectors.toList());
-        //物流企业总运力
-        int sumAvailableVehicle = contractIds.stream().filter(Objects::nonNull).map(contractId -> getSignEntAvailableVehicle(byOrderId.getGoodsId(), contractId)).mapToInt(num -> num == null ? 0 : num).sum();
-        return sumAvailableVehicle;
-    }
-
-    /**
-     * 单个物流企业满足轴数可派车
-     *
-     * @param goodId
-     * @param contractId
-     * @return
-     */
-    public Integer getSignEntAvailableVehicle(Long goodId, Long contractId) {
-        //查询商品轴数
-        KwpGoods goodsById = goodsInfoService.getGoodsById(goodId);
-        if (goodsById == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "物流运单装货地址有误!");
-        }
-        //商品轴数
-        TmsTruckAxleNumVO carAxisInfo = remoteFleetService.getCarAxisInfo(Optional.ofNullable(goodsById.getCarAxis()).map(Integer::valueOf).orElse(null));
-        //物流合同企业id
-        TradeContractUnitDto unitDto = remoteContractService.queryEntByContractId(contractId);
-
-        //当前物流企业总运力
-        List<RTruckVo> truckVoList = remoteFleetService.findTruckByEntIds(unitDto.getEntId());
-        return Math.toIntExact(truckVoList.stream().filter(Objects::nonNull).filter(truck -> Objects.equals(truck.getCarAxis(), String.valueOf(carAxisInfo.getId()))).count());
-    }
-
-
     /**
      * 手动完结订单
      *

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

@@ -5,7 +5,6 @@ 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.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.param.WaybillOrderLeaveParam;
 import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
 import com.sckw.transport.repository.KwtWaybillOrderTicketRepository;

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

@@ -59,7 +59,7 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
         //1.填充毛重
         updateGrossAmount(param, ticketMap);
         //2.填充装货净重
-        updateLoadAmount(param, waybillOrder, ticketMap);
+//        updateLoadAmount(param, waybillOrder, ticketMap);
     }
 
     @Override

+ 0 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LoadingHandler.java

@@ -5,7 +5,6 @@ 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.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.param.WaybillOrderLoadingParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;

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

@@ -3370,7 +3370,7 @@ public class KwtAcceptCarriageOrderService {
         // 车辆最大可派任务数
         Integer vehicleMaxTasks = truckDispatchVO.getVehicleMaxTasks();
         if (vehicleMaxTasks <= 0) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.DATA_NOT_EXIST, "自动派单车辆最大任务数!");
+            throw new BusinessPlatfromException(ErrorCodeEnum.DATA_NOT_EXIST, "自动派单车辆最大任务数需大于0!");
         }
         //TODO 车辆最大可派任务数校验
         boolean available = circulatesList.size() < vehicleMaxTasks;