Parcourir la source

增补运力物流合同选择优化

donglang il y a 4 mois
Parent
commit
eec0e948f8

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

@@ -212,4 +212,6 @@ public interface TransportRemoteService {
     WaybillOrderDetailVo auditLogisticsTask(LogisticsOrderAuditPara para);
 
     Object countLogistics(CountPara2 countPara);
+
+    List<LogisticContractVo> queryLogOrderCirculateByLogOrderId(Long tradeOrderId);
 }

+ 12 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -78,6 +78,7 @@ import com.sckw.transport.api.model.param.AddLogisticOrderParam;
 import com.sckw.transport.api.model.param.LogisticInfo;
 import com.sckw.transport.api.model.param.OrderFinishParam;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.LogisticContractVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -2603,8 +2604,17 @@ public class KwoTradeOrderService {
         if (CollectionUtils.isEmpty(contractLogisticsList)) {
             throw new BusinessException("未找到该商品有效的手动派车物流合同");
         }
+        //查询贸易订单已经存在的物流合同
+        List<LogisticContractVo> logisticContractVos = transportRemoteService.queryLogOrderCirculateByLogOrderId(param.getTradeOrderId());
+        Set<Long> existingContractIds = logisticContractVos.stream().map(LogisticContractVo::getLogContractId).collect(Collectors.toSet());
+
+        // 过滤掉contractLogisticsList中包含已存在合同ID的数据
+        List<LogisticsEntDtoVO> filteredContractList = contractLogisticsList.stream()
+                .filter(contract -> !existingContractIds.contains(contract.getContractId()))
+                .collect(Collectors.toList());
+
         //填充运输单价
-        for (LogisticsEntDtoVO vo : contractLogisticsList) {
+        for (LogisticsEntDtoVO vo : filteredContractList) {
             LogisticsGoodsDto dto = remoteContractService.queryLogGoodsByContractId(vo.getContractId(), param.getGoodsId());
             if (dto.getPrice() == null || dto.getPrice().compareTo(BigDecimal.ZERO) == 0) {
                 vo.setTransportPrice(vo.getCommonPrice());
@@ -2613,7 +2623,7 @@ public class KwoTradeOrderService {
             }
         }
         List<ContractLogisticsVO> contractLogisticsVOS = new ArrayList<>();
-        for (LogisticsEntDtoVO vo : contractLogisticsList) {
+        for (LogisticsEntDtoVO vo : filteredContractList) {
             ContractLogisticsVO logisticsVO = new ContractLogisticsVO();
             logisticsVO.setContractId(vo.getContractId());
             logisticsVO.setContractNo(vo.getContractNo());

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

@@ -1748,4 +1748,21 @@ public class TransportServiceImpl implements TransportRemoteService {
         return jsonObject;
     }
 
+    @Override
+    public List<LogisticContractVo> queryLogOrderCirculateByLogOrderId(Long tradeOrderId) {
+        //根据贸易订单查询物流订单
+        List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.queryByTradeOrderId(tradeOrderId);
+        if (CollectionUtils.isEmpty(logisticsOrders)) {
+            return new ArrayList<>();
+        }
+        Set<Long> logOrderIds = logisticsOrders.stream().map(KwtLogisticsOrder::getId).collect(Collectors.toSet());
+        //查询物流订单合同信息
+        List<KwtLogisticsOrderContract> logisticsOrderContracts = logisticsOrderContractRepository.queryByLogOrderIds(logOrderIds);
+        return logisticsOrderContracts.stream().map(con -> {
+            LogisticContractVo logisticContractVo = new LogisticContractVo();
+            logisticContractVo.setLogContractId(con.getContractId());
+            return logisticContractVo;
+        }).collect(Collectors.toList());
+    }
+
 }