Jelajahi Sumber

提交修改日志重量小数点

chenxiaofei 4 minggu lalu
induk
melakukan
290314620b

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsOrderResp.java

@@ -184,4 +184,9 @@ public class LogisticsOrderResp implements Serializable {
     @Schema(description = "装卸货之间距离")
     private double distanceKm;
 
+    /**
+     * 订单余量
+     */
+    @Schema(description = "订单余量")
+    private String orderSurplus;
 }

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

@@ -2482,10 +2482,10 @@ public class KwtLogisticsConsignmentService {
                 kwtLogisticsOrder.getTotalUnloadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00");
 
         KwtLogisticsOrderAddress loadAdd = finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(kwtLogisticsOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
-        logisticsOrderResp.setLoadAddress(loadAdd.getDetailAddress());
+        logisticsOrderResp.setLoadAddress(loadAdd.getCityName()+loadAdd.getDetailAddress());
         KwtLogisticsOrderAddress unloadAdd =
                 finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(kwtLogisticsOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(), new KwtLogisticsOrderAddress());
-        logisticsOrderResp.setUnloadAddress(unloadAdd.getDetailAddress());
+        logisticsOrderResp.setUnloadAddress(unloadAdd.getCityName()+unloadAdd.getDetailAddress());
         logisticsOrderResp.setUnloadContacts(unloadAdd.getContacts());
         logisticsOrderResp.setUnloadPhone(unloadAdd.getPhone());
         logisticsOrderResp.setStartTime(DateUtils.format(kwtLogisticsOrder.getStartTime(), DateUtils.DATE_PATTERN));

+ 46 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -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();
     }
 
     /**