|
|
@@ -271,11 +271,37 @@ public class WaybillOrderService {
|
|
|
//地址
|
|
|
Map<String, KwtLogisticsOrderAddress> logOrderIdAndAddressMap = getKwtLogisticsOrderAddressMap(logOrderIdList);
|
|
|
|
|
|
+
|
|
|
+ Set<Long> tradeIds = logOrderList.stream()
|
|
|
+ .map(KwtLogisticsOrder::getTOrderId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ //物流订单id
|
|
|
+ List<Long> logisticOrderIds = logOrderList.stream()
|
|
|
+ .map(KwtLogisticsOrder::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<KwtWaybillOrderSubtask> orderSubtaskList = waybillOrderSubtaskRepository.queryByLogIds(logisticOrderIds);
|
|
|
+ if (CollectionUtils.isEmpty(orderSubtaskList)) {
|
|
|
+ log.info("当前车辆辆的无物流子运单,truckNo:{}", param.getTruckNo());
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_SUB_NOT_FOUND, "当前物流子运单不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取贸易订单
|
|
|
+ List<OrderDetailVo> orderDetailVos = tradeOrderInfoService.queryByTradeOrderIds(tradeIds);
|
|
|
+ Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(orderDetailVos)){
|
|
|
+ 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));
|
|
|
//组装数据
|
|
|
+ Map<Long, OrderDetailVo> finalTradeIdAndOrderDetailVoMap = tradeIdAndOrderDetailVoMap;
|
|
|
List<LogisticsOrderResp> ordderList = logOrderList.stream()
|
|
|
.map(order -> {
|
|
|
return getLogisticsOrderResp(order, logOrderIdAndGoodsMap, goodsIdAndGoodsMap, logOrderIdAndUnitMap,
|
|
|
- tOrderIdAndUnitMap, logOrderIdAndAddressMap, logOrderIdAndCirculateMap);
|
|
|
+ tOrderIdAndUnitMap, logOrderIdAndAddressMap, logOrderIdAndCirculateMap, finalTradeIdAndOrderDetailVoMap,tradeIdAndLogOrderList,logisticsOrderIdAndSubtaskList);
|
|
|
}).collect(Collectors.toList());
|
|
|
log.info("查询司机关联车辆的物流订单成功!");
|
|
|
return PageDataResult.success(param.getPageNum(), param.getPageSize(), (long) ordderList.size(), ordderList);
|
|
|
@@ -313,7 +339,10 @@ public class WaybillOrderService {
|
|
|
Map<String, KwtLogisticsOrderUnit> logOrderIdAndUnitMap,
|
|
|
Map<String, OrderUnitInfoDetailVO> tOrderIdAndUnitMap,
|
|
|
Map<String, KwtLogisticsOrderAddress> logOrderIdAndAddressMap,
|
|
|
- Map<Long, KwtLogisticsOrderCirculate> logOrderIdAndCirculateMap) {
|
|
|
+ Map<Long, KwtLogisticsOrderCirculate> logOrderIdAndCirculateMap,
|
|
|
+ Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
|
|
|
+ Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList ,
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList) {
|
|
|
LogisticsOrderResp orderResp = new LogisticsOrderResp();
|
|
|
orderResp.setLogisticsOrderId(Optional.ofNullable(order.getId()).map(String::valueOf).orElse(null));
|
|
|
orderResp.setLogisticsOrderNo(order.getLOrderNo());
|
|
|
@@ -362,11 +391,13 @@ public class WaybillOrderService {
|
|
|
orderResp.setSendPhone(Optional.ofNullable(userCacheResDto).map(UserCacheResDto::getPhone).orElse(null));
|
|
|
orderResp.setStatus(Optional.ofNullable(order.getStatus()).map(String::valueOf).orElse(null));
|
|
|
orderResp.setStatusDesc(LogisticsOrderV1Enum.IN_TRANSIT.getCode().equals(order.getStatus()) ? "待接单" : "未知状态");
|
|
|
-
|
|
|
-
|
|
|
+ //设置余量
|
|
|
+ String orderSurplus = getSupAmount(order.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, logisticsOrderIdAndSubtaskList);
|
|
|
+ orderResp.setOrderSurplus(orderSurplus);
|
|
|
return orderResp;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 查询司机关联车辆的物流运单
|
|
|
* @param param
|
|
|
@@ -698,7 +729,9 @@ public class WaybillOrderService {
|
|
|
wbOrderResp.setChargeType(logOrder.getBillingMode());
|
|
|
wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
|
|
|
//设置余量
|
|
|
- setSupAmount(wbOrder, logOrderMap, tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, logisticsOrderIdAndSubtaskList, wbOrderResp);
|
|
|
+ KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
|
|
|
+ String supAmount = getSupAmount(order.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));
|
|
|
@@ -774,11 +807,14 @@ public class WaybillOrderService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private static void setSupAmount(KwtWaybillOrder wbOrder, Map<Long, KwtLogisticsOrder> logOrderMap, Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap, Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList, Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList, WaybillOrderStatusResp wbOrderResp) {
|
|
|
- KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
|
|
|
- OrderDetailVo detailVo = tradeIdAndOrderDetailVoMap.getOrDefault(order.getTOrderId(), new OrderDetailVo());
|
|
|
+ private static String getSupAmount(Long tradeOrderId,
|
|
|
+ Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
|
|
|
+ Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList,
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList) {
|
|
|
+ // KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
|
|
|
+ OrderDetailVo detailVo = tradeIdAndOrderDetailVoMap.getOrDefault(tradeOrderId, new OrderDetailVo());
|
|
|
BigDecimal tradeAmount = Optional.ofNullable(detailVo).map(OrderDetailVo::getAmount).orElse(BigDecimal.ZERO);
|
|
|
- List<KwtLogisticsOrder> kwtLogisticsOrders = tradeIdAndLogOrderList.get(order.getTOrderId());
|
|
|
+ List<KwtLogisticsOrder> kwtLogisticsOrders = tradeIdAndLogOrderList.get(tradeOrderId);
|
|
|
BigDecimal logTotatalAmount = BigDecimal.ZERO;
|
|
|
if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)){
|
|
|
String billingMode = kwtLogisticsOrders.get(0).getBillingMode();
|
|
|
@@ -800,7 +836,7 @@ public class WaybillOrderService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- wbOrderResp.setOrderSurplus(tradeAmount.subtract(logTotatalAmount).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
+ return tradeAmount.subtract(logTotatalAmount).setScale(2, RoundingMode.HALF_UP).toPlainString();
|
|
|
}
|
|
|
|
|
|
/**
|