Explorar o código

原矿运输分页查询区分原矿运输

donglang hai 1 mes
pai
achega
0ad01c0936

+ 77 - 25
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -229,14 +229,14 @@ public class WaybillOrderService {
         Map<Boolean, List<KwtLogisticsOrder>> partitionedMap = logOrderList.stream()
                 .collect(Collectors.partitioningBy(order -> Integer.valueOf(1).equals(order.getOrderType())));
 
-        // 获取order_type=1的订单集合
-        List<KwtLogisticsOrder> typeOneList = partitionedMap.get(true);
-        log.info("原矿运输的订单信息: {},数量:{}", JSON.toJSONString(typeOneList), typeOneList.size());
-
         // 获取order_type=null的订单集合
         List<KwtLogisticsOrder> typeNullList = partitionedMap.get(false);
         log.info("正常流程的订单信息: {},数量:{}",  JSON.toJSONString(typeNullList), typeNullList.size());
 
+        // 获取order_type=1的订单集合
+        List<KwtLogisticsOrder> typeOneList = partitionedMap.get(true);
+        log.info("原矿运输的订单信息: {},数量:{}", JSON.toJSONString(typeOneList), typeOneList.size());
+
         List<LogisticsOrderResp> orderList = new ArrayList<>();
         // 正常流程
         List<LogisticsOrderResp> normalOrderList = getLogisticsOrderResps(param, typeNullList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
@@ -926,22 +926,73 @@ public class WaybillOrderService {
             log.info("当前车辆无物流订单,truckNo:{}", param.getTruckNo());
             throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_STATUS_ERROR, "当前车辆无物流订单");
         }
-        Map<Long, KwtLogisticsOrder> logOrderMap = logOrderList.stream().collect(Collectors.toMap(logOrder -> logOrder.getId(),
+
+        // 按照order_type区分“正常订单”和“原矿运输订单”
+        Map<Boolean, List<KwtLogisticsOrder>> partitionedMap = logOrderList.stream()
+                .collect(Collectors.partitioningBy(order -> Integer.valueOf(1).equals(order.getOrderType())));
+
+        // 获取order_type=null的订单集合
+        List<KwtLogisticsOrder> typeNullList = partitionedMap.get(false);
+        log.info("正常流程的订单信息: {},数量:{}",  JSON.toJSONString(typeNullList), typeNullList.size());
+
+        // 获取order_type=1的订单集合
+        List<KwtLogisticsOrder> typeOneList = partitionedMap.get(true);
+        log.info("原矿运输的订单信息: {},数量:{}", JSON.toJSONString(typeOneList), typeOneList.size());
+
+        List<WaybillOrderStatusResp> ordderList = new ArrayList<>();
+        //1.查询正常流程物流运运单
+        List<WaybillOrderStatusResp> normalOrdderList = getWaybillOrderStatusResps(param, records, typeNullList,
+                orderSubtaskList, logOrderIdList, wbOrderIdList, subtaskMap, logOrderIdAndCirculateMap, Boolean.FALSE);
+        ordderList.addAll(normalOrdderList);
+
+        //2.查询原矿运输物流运运单
+        List<WaybillOrderStatusResp> rawOreOrdderList = getWaybillOrderStatusResps(param, records, typeOneList,
+                orderSubtaskList, logOrderIdList, wbOrderIdList, subtaskMap, logOrderIdAndCirculateMap, Boolean.TRUE);
+        ordderList.addAll(rawOreOrdderList);
+
+        return ordderList;
+    }
+
+    /**
+     * 查询正常流程物流运单
+     * @param param
+     * @return
+     */
+    private List<WaybillOrderStatusResp> getWaybillOrderStatusResps(WaybillOrderQueryParam param, List<KwtWaybillOrder> records,
+                                                                    List<KwtLogisticsOrder> logOrderList,
+                                                                    List<KwtWaybillOrderSubtask> orderSubtaskList,
+                                                                    List<Long> logOrderIdList,
+                                                                    List<Long> wbOrderIdList,
+                                                                    Map<Long, KwtWaybillOrderSubtask> subtaskMap,
+                                                                    Map<Long, KwtLogisticsOrderCirculate> logOrderIdAndCirculateMap,
+                                                                    boolean isRawOre) {
+        log.info("开始{}物流运单查询,param:{}", isRawOre ? "原矿运输" : "正常流程", JSON.toJSONString(param));
+
+        // 物流订单映射
+        Map<Long, KwtLogisticsOrder> logOrderMap = logOrderList.stream().collect(Collectors.toMap(KwtLogisticsOrder::getId,
                 Function.identity(), (x, y) -> x));
-        Set<Long> tradeIds = logOrderList.stream()
-                .map(KwtLogisticsOrder::getTOrderId)
-                .collect(Collectors.toSet());
-        //获取贸易订单
-        List<OrderDetailVo> orderDetailVos = tradeOrderInfoService.queryByTradeOrderIds(tradeIds);
-        if (CollectionUtils.isEmpty(orderDetailVos)) {
-            log.info("当前车辆的贸易订单无数据,truckNo:{}", param.getTruckNo());
-            throw new BusinessPlatfromException(ErrorCodeEnum.TRADE_ORDER_NOT_FOUND, "当前车辆的贸易订单数据不存在");
+
+        // 贸易订单相关(仅非原矿运输查询)
+        Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap;
+        Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList;
+        if (!isRawOre) {
+            Set<Long> tradeIds = logOrderList.stream().map(KwtLogisticsOrder::getTOrderId).collect(Collectors.toSet());
+            //获取贸易订单
+            List<OrderDetailVo> orderDetailVos = tradeOrderInfoService.queryByTradeOrderIds(tradeIds);
+            if (CollectionUtils.isEmpty(orderDetailVos)) {
+                log.info("当前车辆的贸易订单无数据,truckNo:{}", param.getTruckNo());
+                throw new BusinessPlatfromException(ErrorCodeEnum.TRADE_ORDER_NOT_FOUND, "当前车辆的贸易订单数据不存在");
+            }
+            tradeIdAndOrderDetailVoMap = orderDetailVos.stream().collect(Collectors.toMap(OrderDetailVo::getId,
+                    Function.identity(), (x, y) -> x));
+
+            tradeIdAndLogOrderList = logOrderList.stream().collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+        } else {
+            tradeIdAndOrderDetailVoMap = new HashMap<>();
+            tradeIdAndLogOrderList = new HashMap<>();
         }
-        Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap = orderDetailVos.stream()
-                    .collect(Collectors.toMap(OrderDetailVo::getId, Function.identity(), (x, y) -> x));
 
-        Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList = logOrderList.stream()
-                .collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+        // 子任务分组
         Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList = orderSubtaskList.stream()
                 .collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
 
@@ -963,7 +1014,6 @@ public class WaybillOrderService {
         }
         Map<Long, KwpGoods> goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
 
-
         //承运托运企业
         List<KwtLogisticsOrderUnit> logOrderUnits = logisticsOrderUnitRepository.queryByLogOrderIds(logOrderIdList);
         if (CollectionUtils.isEmpty(logOrderUnits)) {
@@ -982,22 +1032,23 @@ public class WaybillOrderService {
             log.info("当前车辆无物流运单装卸货信息,truckNo:{}", param.getTruckNo());
             throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_TICKET, "当前车辆无物流运单装卸货信息");
         }
-        Map<String, KwtWaybillOrderTicket> ticketMap = orderTicketList.stream().collect(
-                Collectors.toMap(ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
+        Map<String, KwtWaybillOrderTicket> ticketMap = orderTicketList.stream()
+                .collect(Collectors.toMap(ticket -> ticket.getWOrderId() + "-" + ticket.getType(),
                         Function.identity(), (x, y) -> x));
 
         //查询字典
         Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
                 Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
 
-        List<WaybillOrderStatusResp> ordderList = records.stream().map(
+        List<WaybillOrderStatusResp> orderList = records.stream().map(
                 billOrder -> {
                     return getWaybillOrderResp(billOrder, subtaskMap, logOrderMap, logOrderIdAndCirculateMap,
                             logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap,
                             tradeIdAndOrderDetailVoMap,tradeIdAndLogOrderList,logisticsOrderIdAndSubtaskList,
                             dictValueAndDictResDtoMap, goodsIdAndGoodsMap);
                 }).collect(Collectors.toList());
-        return ordderList;
+        log.info("{}物流运单查询结束,result:{}", isRawOre ? "原矿运输" : "正常流程", JSON.toJSONString(orderList));
+        return orderList;
     }
 
 
@@ -1038,11 +1089,12 @@ public class WaybillOrderService {
         wbOrderResp.setChargeType(logOrder.getBillingMode());
         wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
         wbOrderResp.setOrderType(logOrder.getOrderType());
+
         //设置余量
-        KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
-        BigDecimal supAmount = getSupAmount(order.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList,
-                logisticsOrderIdAndSubtaskList);
+        BigDecimal supAmount = Objects.equals(1, logOrder.getOrderType()) ? getRawOreSupAmount(logOrder, logisticsOrderIdAndSubtaskList)
+                : getSupAmount(logOrder.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, logisticsOrderIdAndSubtaskList);
         wbOrderResp.setOrderSurplus(supAmount);
+
         //托运企业
         KwtLogisticsOrderUnit consignEnt = logOrderIdAndUnitMap.getOrDefault(wbOrder.getLOrderId() + "-" + UnitTypeEnum.CONSIGN.getCode(), new KwtLogisticsOrderUnit());
         wbOrderResp.setConsignCompanyId(Optional.ofNullable(consignEnt.getEntId()).map(String::valueOf).orElse(null));