Parcourir la source

提交解绑车辆bug

chenxiaofei il y a 6 mois
Parent
commit
a27b569b9d

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

@@ -2619,6 +2619,7 @@ public class KwtLogisticsConsignmentService {
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
             unloadAmount = waybillOrderSubtasks.stream()
+                    .filter(x-> !Objects.equals(x.getStatus(), CarWaybillV1Enum.CANCELLED.getCode()))
                     .filter(x -> Objects.nonNull(x.getUnloadAmount()))
                     .map(KwtWaybillOrderSubtask::getUnloadAmount)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -2640,8 +2641,8 @@ public class KwtLogisticsConsignmentService {
         }
         performanceInfoVO.setTotalCarriageCost(totalCarriageCost.setScale(2,RoundingMode.HALF_UP).toPlainString());
         BigDecimal tradeAmount = Optional.ofNullable(orderDetailVo).map(OrderDetailVo::getAmount).orElse(BigDecimal.ZERO);
-        BigDecimal totalAmount = getTotalAmount(logOrderList);
-        BigDecimal surplusAmount = tradeAmount.subtract(totalAmount);
+       // BigDecimal totalAmount = getTotalAmount(logOrderList);
+        BigDecimal surplusAmount = tradeAmount.subtract(orderAmount.add(unloadAmount));
         performanceInfoVO.setSurplusAmount(surplusAmount.setScale(2,RoundingMode.HALF_UP).toPlainString());
 
         logisticsOrderDetailResp.setPerformanceInfoVO(performanceInfoVO);
@@ -2667,27 +2668,24 @@ public class KwtLogisticsConsignmentService {
         }
         // 筛选出状态为已完成的子运单
         List<KwtWaybillOrderSubtask> pendingUnloadSubtasks = waybillOrderSubtasks.stream()
-                .filter(subtask -> Objects.equals(subtask.getStatus(), CarWaybillV1Enum.COMPLETED.getCode()))
+                .filter(subtask -> !Objects.equals(subtask.getStatus(), CarWaybillV1Enum.CANCELLED.getCode()))
                 .collect(Collectors.toList());
 
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(pendingUnloadSubtasks)) {
             return totalAmount;
         }
-        // 按装货量计费
-        if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
-            totalAmount = pendingUnloadSubtasks.stream()
-                    .map(KwtWaybillOrderSubtask::getLoadAmount)
-                    .filter(x -> Objects.nonNull(x))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-        }
-        // 按卸货量计费
-        else if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
-            totalAmount = pendingUnloadSubtasks.stream()
-                    .map(KwtWaybillOrderSubtask::getUnloadAmount)
-                    .filter(x -> Objects.nonNull(x))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-        }
-    return totalAmount;
+        // 已接单量
+        BigDecimal entrustAmount = pendingUnloadSubtasks.stream()
+                .map(KwtWaybillOrderSubtask::getEntrustAmount)
+                .filter(x -> Objects.nonNull(x))
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        // 累计卸货量
+        BigDecimal unloadAmount = pendingUnloadSubtasks.stream()
+                .map(KwtWaybillOrderSubtask::getUnloadAmount)
+                .filter(x -> Objects.nonNull(x))
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+    return entrustAmount.add(unloadAmount);
 }
 
     private static void setAddressInfo(Map<String, KwtLogisticsOrderAddress> logOrderIdAndUnitTypeKeyAndAddressMap, KwtLogisticsOrder logisticsOrder, LogisticsOrderDetailResp logisticsOrderDetailResp) {

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

@@ -821,19 +821,19 @@ public class WaybillOrderService {
 
             for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
                 List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderIdAndSubtaskList.getOrDefault(kwtLogisticsOrder.getId(), new ArrayList<>());
-                if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
-                    BigDecimal loadAmountSum = waybillOrderSubtasks.stream()
-                            .map(KwtWaybillOrderSubtask::getLoadAmount)
-                            .filter(Objects::nonNull)
-                            .reduce(BigDecimal.ZERO, BigDecimal::add);
-                    logTotatalAmount = logTotatalAmount.add(loadAmountSum);
-                } else if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
-                    BigDecimal unloadAmountSum = waybillOrderSubtasks.stream()
-                            .map(KwtWaybillOrderSubtask::getUnloadAmount)
-                            .filter(Objects::nonNull)
-                            .reduce(BigDecimal.ZERO, BigDecimal::add);
-                    logTotatalAmount = logTotatalAmount.add(unloadAmountSum);
-                }
+                BigDecimal loadAmountSum = waybillOrderSubtasks.stream()
+                        .filter(x->!Arrays.asList(CarWaybillV1Enum.COMPLETED.getCode(), CarWaybillV1Enum.CANCELLED.getCode()).contains(x.getStatus()))
+                        .map(KwtWaybillOrderSubtask::getEntrustAmount)
+                        .filter(Objects::nonNull)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                //logTotatalAmount = logTotatalAmount.add(loadAmountSum);
+                BigDecimal unloadAmountSum = waybillOrderSubtasks.stream()
+                        .filter(x->!Objects.equals(x.getStatus(),CarWaybillV1Enum.CANCELLED.getCode()))
+                        .map(KwtWaybillOrderSubtask::getUnloadAmount)
+                        .filter(Objects::nonNull)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                logTotatalAmount.add(loadAmountSum.add(unloadAmountSum));
+                //logTotatalAmount = logTotatalAmount.add(unloadAmountSum);
             }
         }
         return tradeAmount.subtract(logTotatalAmount).setScale(2, RoundingMode.HALF_UP).toPlainString();