소스 검색

提交合同查询接口

chenxiaofei 1 개월 전
부모
커밋
603e414102

+ 54 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -64,6 +64,7 @@ import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -2902,6 +2903,7 @@ public class KwtLogisticsConsignmentService {
             throw new BusinessException("未找到该物流订单信息");
         }
         List<KwtLogisticsOrder> logisticsOrders = Lists.newArrayList();
+        Set<Long> tradeIds = Sets.newHashSet();
         logisticsOrder.forEach(x->{
             KwtLogisticsOrder updateLogisticsOrder = new KwtLogisticsOrder();
             updateLogisticsOrder.setId(x.getId());
@@ -2912,6 +2914,7 @@ public class KwtLogisticsConsignmentService {
             if (Objects.equals(x.getStatus(), LogisticsOrderV1Enum.WAIT_DELIVERY.getCode())){
                 updateLogisticsOrder.setStatus(LogisticsOrderV1Enum.HAVE_RECONCILED.getCode());
                 logisticsOrders.add(updateLogisticsOrder);
+                tradeIds.add(x.getTOrderId());
                 return;
                // return logisticsOrderRepository.updateLogisticsOrder(updateLogisticsOrder);
             }
@@ -2928,17 +2931,62 @@ public class KwtLogisticsConsignmentService {
                 }else {
                     updateLogisticsOrder.setStatus(LogisticsOrderV1Enum.HAVE_RECONCILED.getCode());
                     logisticsOrders.add(updateLogisticsOrder);
+                    tradeIds.add(x.getTOrderId());
                 }
             }
         });
-        Map<Long, List<KwtLogisticsOrder>> tradeOrderIdAndLogisticsOrdersMap = logisticsOrders.stream()
-                .filter(x -> Objects.equals(x.getStatus(), LogisticsOrderV1Enum.HAVE_RECONCILED.getCode()))
+        //更新物流订单
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(logisticsOrders)){
+            log.info("没有需要更新的物流订单");
+            return false;
+        }
+        logisticsOrderRepository.updateBatchById(logisticsOrders);
+
+        //更新贸易订单数据
+        updateTradeOrder(tradeIds);
+        return Boolean.TRUE;
+    }
+
+    private void updateTradeOrder(Set<Long> tradeIds) {
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeIds)){
+            return;
+        }
+        List<KwtLogisticsOrder> tradeOrderInfos = logisticsOrderRepository.queryByTradeOrderIds(tradeIds);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeOrderInfos)){
+            return;
+        }
+        Map<Long, List<KwtLogisticsOrder>> tradeOrderIdAndLogisticsOrdersMap = tradeOrderInfos.stream()
                 .collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
-        tradeOrderIdAndLogisticsOrdersMap.forEach((tradeOrderId,orders)->{
-            //todo  cxf  通知贸易订单完成
-        });
+        //通知订贸易订单完结订单
+        if (MapUtils.isNotEmpty(tradeOrderIdAndLogisticsOrdersMap)){
 
-        return logisticsOrderRepository.updateBatchById(logisticsOrders);
+            tradeOrderIdAndLogisticsOrdersMap
+                    .forEach((tradeOrderId,orders)->noticeTrader(tradeOrderId, orders));
+        }
+    }
+
+    private void noticeTrader(Long tradeOrderId, List<KwtLogisticsOrder> orders) {
+        boolean b = orders.stream()
+                .allMatch(x -> Arrays.asList(LogisticsOrderV1Enum.HAVE_RECONCILED.getCode(), LogisticsOrderV1Enum.REJECT_ORDER.getCode())
+                        .contains(x.getStatus()));
+        if (!b){
+            return;
+        }
+        TradeOrderSettlePara tradeOrderSettlePara = new TradeOrderSettlePara();
+
+        tradeOrderSettlePara.setTOrderId(tradeOrderId);
+        BigDecimal loadAmount = orders.stream()
+                .filter(x -> Objects.nonNull(x.getLoadAmount()))
+                .map(KwtLogisticsOrder::getLoadAmount)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal unloadAmount = orders.stream()
+                .filter(x -> Objects.nonNull(x.getUnloadAmount()))
+                .map(KwtLogisticsOrder::getUnloadAmount)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        tradeOrderSettlePara.setLoadAmount(loadAmount);
+        tradeOrderSettlePara.setUnloadAmount(unloadAmount);
+        log.info("物流订单-完结修改贸易订单参数信息:{}", JSONObject.toJSONString(tradeOrderSettlePara));
+        tradeOrderInfoService.orderSettle(tradeOrderSettlePara);
     }
 
 

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

@@ -30,6 +30,7 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.*;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.TradeOrderSettlePara;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.enums.MessageEnum;
@@ -3468,9 +3469,7 @@ public class KwtWaybillOrderV1Service {
             KwtLogisticsOrder kwtLogisticsOrder = getKwtLogisticsOrder(kwtLogistics, subtask);
             boolean b1 = kwtLogisticsOrderRepository.updateById(kwtLogisticsOrder);
             //如果物流订单状态是已完成需要通知贸易订单完成
-            if (Objects.equals(kwtLogisticsOrder.getStatus(),LogisticsOrderV1Enum.HAVE_RECONCILED.getCode())){
-                //todo cxf通知贸易订单完成
-            }
+            noticeTraderOrder(kwtLogisticsOrder, kwtLogistics);
 
             // 存储记录
             String remark = null;
@@ -3523,6 +3522,38 @@ public class KwtWaybillOrderV1Service {
         return Boolean.FALSE;
     }
 
+    private void noticeTraderOrder(KwtLogisticsOrder kwtLogisticsOrder, KwtLogisticsOrder kwtLogistics) {
+
+        if (!Objects.equals(kwtLogisticsOrder.getStatus(),LogisticsOrderV1Enum.HAVE_RECONCILED.getCode())){
+           return;
+        }
+        // 根据贸易订单id查询物理订单
+        List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderRepository.queryByTradeOrderId(kwtLogisticsOrder.getTOrderId());
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwtLogisticsOrders)){
+            return;
+        }
+        //判断所有的物流订单都都已经完成
+        boolean b = kwtLogisticsOrders.stream()
+                .allMatch(x -> Arrays.asList(LogisticsOrderV1Enum.HAVE_RECONCILED.getCode(), LogisticsOrderV1Enum.REJECT_ORDER.getCode()).contains(x.getStatus()));
+        if (!b){
+            return;
+        }
+        TradeOrderSettlePara tradeOrderSettlePara = new TradeOrderSettlePara();
+        tradeOrderSettlePara.setTOrderId(kwtLogistics.getTOrderId());
+        BigDecimal loadAmount = kwtLogisticsOrders.stream()
+                .map(KwtLogisticsOrder::getLoadAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal unloadAmount = kwtLogisticsOrders.stream()
+                .map(KwtLogisticsOrder::getUnloadAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        tradeOrderSettlePara.setLoadAmount(loadAmount);
+        tradeOrderSettlePara.setUnloadAmount(unloadAmount);
+        log.info("运单审核通过修改贸易订单状态请求参数:{}",JSON.toJSONString(tradeOrderSettlePara));
+        tradeOrderInfoService.orderSettle(tradeOrderSettlePara);
+    }
+
     private void saveNode(KwtWaybillOrder billOrder, KwtWaybillOrderSubtask subtask, Integer status,String remark) {
         KwtWaybillOrderNode kwtWaybillOrderNode = new KwtWaybillOrderNode();
         kwtWaybillOrderNode.setTruckId(billOrder.getTruckId());