Kaynağa Gözat

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

xucaiqin 1 ay önce
ebeveyn
işleme
3597d17a13

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

@@ -168,5 +168,5 @@ public interface TransportRemoteService {
     /**
      * 完结订单
      */
-    Boolean logisticOrderFinish(@RequestBody @Valid OrderFinishParam req);
+    Boolean logisticOrderFinish( OrderFinishParam req);
 }

+ 2 - 2
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/OrderFinishParam.java

@@ -16,7 +16,7 @@ public class OrderFinishParam implements Serializable {
     @Serial
     private static final long serialVersionUID = -8497329584784837085L;
     /**
-     * 物流订单id
+     * 贸易id
      */
-    private Long logisticOrderId;
+    private Long tradeOrderId;
 }

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

@@ -33,7 +33,7 @@ public class KwcContractLogisticsRepository extends ServiceImpl<KwcContractLogis
                 .like(StringUtils.isNotBlank(contractName), KwcContractLogistics::getName, contractName)
                 .eq(StringUtils.isNotBlank(status), KwcContractLogistics::getStatus, status)
                 .in(CollectionUtils.isNotEmpty(contractIds), KwcContractLogistics::getId, contractIds)
-                .orderByDesc(KwcContractLogistics::getCreateTime)
+                .orderByDesc(KwcContractLogistics::getUpdateTime)
                 .orderByDesc(KwcContractLogistics::getId));
     }
 

+ 3 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractTradeRepository.java

@@ -71,7 +71,9 @@ public class KwcContractTradeRepository extends ServiceImpl<KwcContractTradeMapp
                 .eq(Objects.nonNull(status),KwcContractTrade::getStatus, status)
                 .like(StringUtils.isNotBlank(supplementCode),KwcContractTrade::getContractPid, supplementCode)
                 .in(CollectionUtils.isNotEmpty(contractIds),KwcContractTrade::getId, contractIds)
-                .in(CollectionUtils.isNotEmpty(authEntIdList),KwcContractTrade::getEntId, authEntIdList));
+                .in(CollectionUtils.isNotEmpty(authEntIdList),KwcContractTrade::getEntId, authEntIdList)
+                .orderByDesc(KwcContractTrade::getUpdateTime)
+                .orderByDesc(KwcContractTrade::getId));
 
     }
 

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

@@ -1100,11 +1100,12 @@ public class TransportServiceImpl implements TransportRemoteService {
     @Override
     public Boolean logisticOrderFinish(OrderFinishParam req) {
         log.info("流程完结物流订单:{}", JSON.toJSONString(req));
-        if (Objects.isNull( req.getLogisticOrderId())){
-            throw new BusinessException("物流订单id不能为空");
+        if (Objects.isNull( req.getTradeOrderId())){
+            throw new BusinessException("贸易订单id不能为空");
         }
+
         OrderFinishReq orderFinishReq = new OrderFinishReq();
-        orderFinishReq.setLogisticOrderId(Collections.singletonList(req.getLogisticOrderId()));
+        orderFinishReq.setTradeOrderId(req.getTradeOrderId());
         return logisticsConsignmentService.logisticOrderFinish(orderFinishReq);
 
     }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/OrderFinishReq.java

@@ -25,4 +25,8 @@ public class OrderFinishReq implements Serializable {
     @Schema(description = "物流订单id")
     @NotEmpty(message = "物流订单id不能为空")
     private List<Long> logisticOrderId;
+    /**
+     *  贸易订单 id
+     */
+    private Long tradeOrderId;
 }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDetailResp.java

@@ -124,6 +124,10 @@ public class WaybillOrderDetailResp implements Serializable {
      */
     @Schema(description = "单据信息")
     private BillInfo billInfo;
+    /**
+     * 运单id列表
+     */
+    private List<Long> billOrderIdList;
     @Data
     public static class WeighingRecord implements Serializable{
         @Serial

+ 7 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderRepository.java

@@ -51,7 +51,7 @@ public class KwtLogisticsOrderRepository extends ServiceImpl<KwtLogisticsOrderMa
                         .like(StringUtils.isNotBlank(orderNo),KwtLogisticsOrder::getLOrderNo, orderNo)
                         .ge(StringUtils.isNotBlank(startTime),KwtLogisticsOrder::getLoadTime, startTime)
                         .le(StringUtils.isNotBlank(startTime),KwtLogisticsOrder::getUnloadTime, endTime)
-                        .orderByDesc(KwtLogisticsOrder::getCreateTime)
+                        .orderByDesc(KwtLogisticsOrder::getUpdateTime)
                         .orderByDesc(KwtLogisticsOrder::getId)
         );
     }
@@ -98,4 +98,10 @@ public class KwtLogisticsOrderRepository extends ServiceImpl<KwtLogisticsOrderMa
                 .eq(KwtLogisticsOrder::getDelFlag,0)
                 .eq(KwtLogisticsOrder::getEntId, entId));
     }
+
+    public List<KwtLogisticsOrder> queryByBillMethod(String billingMethod) {
+        return list(Wrappers.<KwtLogisticsOrder>lambdaQuery()
+                .eq(KwtLogisticsOrder::getDelFlag,0)
+                .eq(KwtLogisticsOrder::getBillingMode, billingMethod));
+    }
 }

+ 2 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java

@@ -128,6 +128,8 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
         return list(Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .eq(KwtWaybillOrder::getDelFlag,0)
                 .in(KwtWaybillOrder::getId, wayBillOrderIds)
+                .orderByDesc(KwtWaybillOrder::getUpdateTime)
+                .orderByDesc(KwtWaybillOrder::getId)
         );
     }
 

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java

@@ -75,7 +75,7 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                         .in(CollectionUtils.isNotEmpty(entIds),KwtWaybillOrderSubtask::getEntId, entIds)
                         .in(CollectionUtils.isNotEmpty(logOrderIds),KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
                         .in(CollectionUtils.isNotEmpty(billOrderIds),KwtWaybillOrderSubtask::getWOrderId, billOrderIds)
-                        .orderByDesc(BaseModel::getCreateTime)
+                        .orderByDesc(BaseModel::getUpdateTime)
                         .orderByDesc(KwtWaybillOrderSubtask::getId));
     }
 

+ 17 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -2887,11 +2887,17 @@ public class KwtLogisticsConsignmentService {
         return logisticsOrderCirculate;
     }
 
-    public Boolean logisticOrderFinish(@Valid OrderFinishReq req) {
+    public Boolean logisticOrderFinish( OrderFinishReq req) {
         log.info("物流订单-完结订单传递参数信息:{}", JSONObject.toJSONString(req));
-        //查询物流订单
-        List<KwtLogisticsOrder> logisticsOrder =
-                logisticsOrderRepository.queryByLogisticsOrderIds(req.getLogisticOrderId());
+        List<KwtLogisticsOrder> logisticsOrder= Lists.newArrayList();
+        //根据运单号查询物流运单
+        if (Objects.nonNull(req.getTradeOrderId())){
+             logisticsOrder = logisticsOrderRepository.queryByTradeOrderId(req.getTradeOrderId());
+        }else {
+            //查询物流订单
+            logisticsOrder =
+                    logisticsOrderRepository.queryByLogisticsOrderIds(req.getLogisticOrderId());
+        }
         if (CollectionUtils.isEmpty(logisticsOrder)){
             throw new BusinessException("未找到该物流订单信息");
         }
@@ -2925,6 +2931,13 @@ public class KwtLogisticsConsignmentService {
                 }
             }
         });
+        Map<Long, List<KwtLogisticsOrder>> tradeOrderIdAndLogisticsOrdersMap = logisticsOrders.stream()
+                .filter(x -> Objects.equals(x.getStatus(), LogisticsOrderV1Enum.HAVE_RECONCILED.getCode()))
+                .collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+        tradeOrderIdAndLogisticsOrdersMap.forEach((tradeOrderId,orders)->{
+            //todo  cxf  通知贸易订单完成
+        });
+
         return logisticsOrderRepository.updateBatchById(logisticsOrders);
     }
 

+ 59 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3108,6 +3108,14 @@ public class KwtWaybillOrderV1Service {
             logOrderIds.add(Long.parseLong(req.getLogisticsOrderId()));
         }
 
+        if (StringUtils.isNotBlank(req.getBillingMethod() )){
+            List<KwtLogisticsOrder> kwtLogisticsOrder = logisticsOrderRepository.queryByBillMethod(req.getBillingMethod());
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtLogisticsOrder)){
+                logOrderIds.addAll(kwtLogisticsOrder.stream()
+                        .map(KwtLogisticsOrder::getId)
+                        .collect(Collectors.toSet()));
+            }
+        }
         if (StringUtils.isNotBlank(req.getLogisticsOrderNo()) && StringUtils.isBlank(req.getLogisticsOrderId())){
             KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderRepository.queryByLogisticsOrderNo(req.getLogisticsOrderNo());
             if (Objects.nonNull(kwtLogisticsOrder)){
@@ -3331,8 +3339,20 @@ public class KwtWaybillOrderV1Service {
 
         //查询用户
         UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(subtask.getUnloadOperator());
+        //根据物流订单查询运单号
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = kwtWaybillOrderSubtaskRepository.queryByLogId(logOrder.getId());
+        List<KwtWaybillOrder> billOrders = Lists.newArrayList() ;
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrderSubtasks)){
+            Set<Long> billOrderIds = waybillOrderSubtasks.stream()
+                    .map(KwtWaybillOrderSubtask::getWOrderId)
+                    .collect(Collectors.toSet());
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(billOrderIds)){
+                billOrders = kwtWaybillOrderRepository.queryByBillOrderIds(billOrderIds);
+            };
+        }
+
         return getWaybillOrderDetailResp( subtask,billOrder, logOrder, truck, fleet, goods,
-                keyAndAddressMap,kwpGoods,logisticsOrderUnitMap,nodeList,userCacheResDto);
+                keyAndAddressMap,kwpGoods,logisticsOrderUnitMap,nodeList,userCacheResDto,billOrders);
     }
 
     @NotNull
@@ -3345,7 +3365,8 @@ public class KwtWaybillOrderV1Service {
                                                                      KwpGoods kwpGoods,
                                                                      Map<String, KwtLogisticsOrderUnit> logisticsOrderUnitMap,
                                                                      List<KwtWaybillOrderNode> nodeList,
-                                                                     UserCacheResDto userCacheResDto) {
+                                                                     UserCacheResDto userCacheResDto,
+                                                                     List<KwtWaybillOrder> billOrders) {
         WaybillOrderDetailResp waybillOrderDetailResp = new WaybillOrderDetailResp();
         waybillOrderDetailResp.setWaybillOrderId(String.valueOf(billOrder.getId()));
         waybillOrderDetailResp.setWaybillOrderNo(billOrder.getWOrderNo());
@@ -3394,6 +3415,13 @@ public class KwtWaybillOrderV1Service {
         billInfo.setUploadTime(DateUtils.format(subtask.getUnloadUploadTime(),DateUtils.DATE_TIME_PATTERN));
         billInfo.setBillUrl(subtask.getUnloadUrl());
         waybillOrderDetailResp.setBillInfo(billInfo);
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(billOrders)){
+            List<Long> billOrderIdList = billOrders.stream()
+                    .filter(b -> Objects.equals(b.getStatus(), CarWaybillV1Enum.COMPLETION_LOADING.getCode()) && !Objects.equals(b.getId(),billOrder.getId()))
+                    .map(KwtWaybillOrder::getId)
+                    .collect(Collectors.toList());
+            waybillOrderDetailResp.setBillOrderIdList(billOrderIdList);
+        }
         return waybillOrderDetailResp;
     }
 
@@ -3420,17 +3448,18 @@ public class KwtWaybillOrderV1Service {
         List<Integer> statusList = Arrays.asList(CarWaybillV1Enum.WAIT_UNLOADING.getCode(), CarWaybillV1Enum.COMPLETION_UNLOADING.getCode());
         if (statusList.contains( status) && Objects.equals(billOrder.getStatus(), CarWaybillV1Enum.COMPLETION_LOADING.getCode())){
             updateOrder.setStatus( status);
+            updateOrder.setRemark(req.getRemark());
             updateSubtask.setStatus(status);
             updateSubtask.setRemark(req.getRemark());
             updateSubtask.setUnloadAmount(org.apache.commons.lang3.StringUtils.isBlank(req.getUnloadAmount()) ? null  :  new BigDecimal(req.getUnloadAmount()));
             if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getAddressUrl())){
-                subtask.setUnloadUrl(req.getAddressUrl());
+                updateSubtask.setUnloadUrl(req.getAddressUrl());
             }
             if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getUploadUser())){
-                subtask.setUnloadOperator(Long.valueOf(req.getUploadUser()));
+                updateSubtask.setUnloadOperator(Long.valueOf(req.getUploadUser()));
             }
             if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getUploadTime())){
-                subtask.setUnloadUploadTime(DateUtils.parse(req.getUploadTime(), DateUtils.DATE_TIME_PATTERN));
+                updateSubtask.setUnloadUploadTime(DateUtils.parse(req.getUploadTime(), DateUtils.DATE_TIME_PATTERN));
             }
             boolean b = kwtWaybillOrderRepository.updateById(updateOrder) && kwtWaybillOrderSubtaskRepository.updateById(updateSubtask);
             //修改物流订单数据
@@ -3438,6 +3467,11 @@ public class KwtWaybillOrderV1Service {
             //获取更新 订单状态
             KwtLogisticsOrder kwtLogisticsOrder = getKwtLogisticsOrder(kwtLogistics, subtask);
             boolean b1 = kwtLogisticsOrderRepository.updateById(kwtLogisticsOrder);
+            //如果物流订单状态是已完成需要通知贸易订单完成
+            if (Objects.equals(kwtLogisticsOrder.getStatus(),LogisticsOrderV1Enum.HAVE_RECONCILED.getCode())){
+                //todo cxf通知贸易订单完成
+            }
+
             // 存储记录
             String remark = null;
             if (Objects.equals(status, CarWaybillV1Enum.COMPLETION_UNLOADING.getCode())){
@@ -3457,17 +3491,18 @@ public class KwtWaybillOrderV1Service {
         if (Objects.equals(billOrder.getStatus(), CarWaybillV1Enum.COMPLETION_UNLOADING.getCode()) && Objects.equals(status,
                 CarWaybillV1Enum.WAIT_UNLOADING.getCode())){
             updateOrder.setStatus(status);
+            updateOrder.setRemark(req.getRemark());
             updateSubtask.setStatus(status);
             updateSubtask.setRemark(req.getRemark());
             updateSubtask.setUnloadAmount(org.apache.commons.lang3.StringUtils.isNotBlank(req.getUnloadAmount()) ? new BigDecimal(req.getUnloadAmount()) : null);
             if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getAddressUrl())){
-                subtask.setUnloadUrl(req.getAddressUrl());
+                updateSubtask.setUnloadUrl(req.getAddressUrl());
             }
             if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getUploadUser())){
-                subtask.setUnloadOperator(Long.valueOf(req.getUploadUser()));
+                updateSubtask.setUnloadOperator(Long.valueOf(req.getUploadUser()));
             }
             if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getUploadTime())){
-                subtask.setUnloadUploadTime(DateUtils.parse(req.getUploadTime(), DateUtils.DATE_TIME_PATTERN));
+                updateSubtask.setUnloadUploadTime(DateUtils.parse(req.getUploadTime(), DateUtils.DATE_TIME_PATTERN));
             }
             boolean b = kwtWaybillOrderRepository.updateById(updateOrder) && kwtWaybillOrderSubtaskRepository.updateById(updateSubtask);
 //            kwtWaybillOrderTicket.setWOrderId(waybillId);
@@ -3490,6 +3525,11 @@ public class KwtWaybillOrderV1Service {
 
     private void saveNode(KwtWaybillOrder billOrder, KwtWaybillOrderSubtask subtask, Integer status,String remark) {
         KwtWaybillOrderNode kwtWaybillOrderNode = new KwtWaybillOrderNode();
+        kwtWaybillOrderNode.setTruckId(billOrder.getTruckId());
+        kwtWaybillOrderNode.setTruckNo(billOrder.getTruckNo());
+        kwtWaybillOrderNode.setDriverId(billOrder.getDriverId());
+        kwtWaybillOrderNode.setDriverName(billOrder.getDriverName());
+
         kwtWaybillOrderNode.setWOrderId(billOrder.getId());
         kwtWaybillOrderNode.setWSubtaskId(subtask.getId());
         kwtWaybillOrderNode.setOrderStatus(status);
@@ -3500,10 +3540,16 @@ public class KwtWaybillOrderV1Service {
     }
 
     @NotNull
-    private static KwtLogisticsOrder getKwtLogisticsOrder(KwtLogisticsOrder kwtLogistics, KwtWaybillOrderSubtask subtask) {
+    private  KwtLogisticsOrder getKwtLogisticsOrder(KwtLogisticsOrder kwtLogistics, KwtWaybillOrderSubtask subtask) {
         if (Objects.isNull(kwtLogistics)){
             throw new BusinessException("物流订单信息不存在");
         }
+        //调物流订单完结订单
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = kwtWaybillOrderSubtaskRepository.queryByLogId(subtask.getLOrderId());
+        boolean b2 = waybillOrderSubtasks.stream()
+                .allMatch(x -> Arrays.asList(CarWaybillV1Enum.WAIT_UNLOADING.getCode(), CarWaybillV1Enum.APPROVAL_TREAT.getCode()).contains(x.getStatus()));
+        // KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderRepository.queryByLogisticsOrderId(subtask.getLOrderId());
+
         BigDecimal entrustAmount  = Objects.isNull(kwtLogistics.getEntrustAmount())  ? BigDecimal.ZERO: kwtLogistics.getEntrustAmount();
         BigDecimal subEntrustAmount = Objects.isNull(subtask.getEntrustAmount()) ? BigDecimal.ZERO: subtask.getEntrustAmount();
         BigDecimal loadAmount  = Objects.isNull(kwtLogistics.getLoadAmount())  ? BigDecimal.ZERO: kwtLogistics.getLoadAmount();
@@ -3517,6 +3563,10 @@ public class KwtWaybillOrderV1Service {
         kwtLogisticsOrder.setEntrustAmount(entrustAmount.add(subEntrustAmount));
         kwtLogisticsOrder.setLoadAmount(loadAmount.add(subLoadAmount));
         kwtLogisticsOrder.setUnloadAmount(unloadAmount.add(subUnloadAmount));
+        if (b2){
+            //调物流订单完结订单
+            kwtLogisticsOrder.setStatus(LogisticsOrderV1Enum.HAVE_RECONCILED.getCode());
+        }
         return kwtLogisticsOrder;
     }