|
@@ -229,14 +229,14 @@ public class WaybillOrderService {
|
|
|
Map<Boolean, List<KwtLogisticsOrder>> partitionedMap = logOrderList.stream()
|
|
Map<Boolean, List<KwtLogisticsOrder>> partitionedMap = logOrderList.stream()
|
|
|
.collect(Collectors.partitioningBy(order -> Integer.valueOf(1).equals(order.getOrderType())));
|
|
.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的订单集合
|
|
// 获取order_type=null的订单集合
|
|
|
List<KwtLogisticsOrder> typeNullList = partitionedMap.get(false);
|
|
List<KwtLogisticsOrder> typeNullList = partitionedMap.get(false);
|
|
|
log.info("正常流程的订单信息: {},数量:{}", JSON.toJSONString(typeNullList), typeNullList.size());
|
|
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> orderList = new ArrayList<>();
|
|
|
// 正常流程
|
|
// 正常流程
|
|
|
List<LogisticsOrderResp> normalOrderList = getLogisticsOrderResps(param, typeNullList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
|
|
List<LogisticsOrderResp> normalOrderList = getLogisticsOrderResps(param, typeNullList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
|
|
@@ -926,22 +926,73 @@ public class WaybillOrderService {
|
|
|
log.info("当前车辆无物流订单,truckNo:{}", param.getTruckNo());
|
|
log.info("当前车辆无物流订单,truckNo:{}", param.getTruckNo());
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_STATUS_ERROR, "当前车辆无物流订单");
|
|
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));
|
|
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()
|
|
Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList = orderSubtaskList.stream()
|
|
|
.collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
|
|
.collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
|
|
|
|
|
|
|
@@ -963,7 +1014,6 @@ public class WaybillOrderService {
|
|
|
}
|
|
}
|
|
|
Map<Long, KwpGoods> goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
|
|
Map<Long, KwpGoods> goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
//承运托运企业
|
|
//承运托运企业
|
|
|
List<KwtLogisticsOrderUnit> logOrderUnits = logisticsOrderUnitRepository.queryByLogOrderIds(logOrderIdList);
|
|
List<KwtLogisticsOrderUnit> logOrderUnits = logisticsOrderUnitRepository.queryByLogOrderIds(logOrderIdList);
|
|
|
if (CollectionUtils.isEmpty(logOrderUnits)) {
|
|
if (CollectionUtils.isEmpty(logOrderUnits)) {
|
|
@@ -982,22 +1032,23 @@ public class WaybillOrderService {
|
|
|
log.info("当前车辆无物流运单装卸货信息,truckNo:{}", param.getTruckNo());
|
|
log.info("当前车辆无物流运单装卸货信息,truckNo:{}", param.getTruckNo());
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_TICKET, "当前车辆无物流运单装卸货信息");
|
|
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));
|
|
Function.identity(), (x, y) -> x));
|
|
|
|
|
|
|
|
//查询字典
|
|
//查询字典
|
|
|
Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
|
|
Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
|
|
|
Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
|
|
Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
|
|
|
|
|
|
|
|
- List<WaybillOrderStatusResp> ordderList = records.stream().map(
|
|
|
|
|
|
|
+ List<WaybillOrderStatusResp> orderList = records.stream().map(
|
|
|
billOrder -> {
|
|
billOrder -> {
|
|
|
return getWaybillOrderResp(billOrder, subtaskMap, logOrderMap, logOrderIdAndCirculateMap,
|
|
return getWaybillOrderResp(billOrder, subtaskMap, logOrderMap, logOrderIdAndCirculateMap,
|
|
|
logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap,
|
|
logOrderIdAndGoodsMap, logOrderIdAndUnitMap, logOrderIdAndAddressMap, ticketMap,
|
|
|
tradeIdAndOrderDetailVoMap,tradeIdAndLogOrderList,logisticsOrderIdAndSubtaskList,
|
|
tradeIdAndOrderDetailVoMap,tradeIdAndLogOrderList,logisticsOrderIdAndSubtaskList,
|
|
|
dictValueAndDictResDtoMap, goodsIdAndGoodsMap);
|
|
dictValueAndDictResDtoMap, goodsIdAndGoodsMap);
|
|
|
}).collect(Collectors.toList());
|
|
}).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.setChargeType(logOrder.getBillingMode());
|
|
|
wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
|
|
wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
|
|
|
wbOrderResp.setOrderType(logOrder.getOrderType());
|
|
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);
|
|
wbOrderResp.setOrderSurplus(supAmount);
|
|
|
|
|
+
|
|
|
//托运企业
|
|
//托运企业
|
|
|
KwtLogisticsOrderUnit consignEnt = logOrderIdAndUnitMap.getOrDefault(wbOrder.getLOrderId() + "-" + UnitTypeEnum.CONSIGN.getCode(), new KwtLogisticsOrderUnit());
|
|
KwtLogisticsOrderUnit consignEnt = logOrderIdAndUnitMap.getOrDefault(wbOrder.getLOrderId() + "-" + UnitTypeEnum.CONSIGN.getCode(), new KwtLogisticsOrderUnit());
|
|
|
wbOrderResp.setConsignCompanyId(Optional.ofNullable(consignEnt.getEntId()).map(String::valueOf).orElse(null));
|
|
wbOrderResp.setConsignCompanyId(Optional.ofNullable(consignEnt.getEntId()).map(String::valueOf).orElse(null));
|