From e4e8a1a96de8dc5efb965bea8e98581e2b41ac82 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 13 二月 2026 21:23:32 +0800
Subject: [PATCH] bug修改,计算费用工具类
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java | 26 ++++++++++++++++++++++++--
1 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java
index 2741f3b..a6dc382 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java
@@ -128,12 +128,14 @@
exceedValue = BigDecimal.ZERO;
}
BigDecimal exceedRate = activeRuleNameRate.get(ruleName);
- result.put("时长费"+split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue.multiply(exceedRate)));
+ result.put("时长费"+split[0]+"&"+exceedValue, result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue.multiply(exceedRate)));
}
}
// 2. 远途加价计算 (基于区间判定)
BigDecimal longExtra = calculateLongDistExtra(BigDecimal.valueOf(totalMileageKm), config.longSteps);
- result.put("远途费|", longExtra);
+ // 计算远途里程
+ BigDecimal longExtraValue = calculateLongDistExtra(BigDecimal.valueOf(totalMileageKm), config.longSteps);
+ result.put("远途费&"+longExtraValue, longExtra);
return formatMap(result);
}
@@ -157,6 +159,26 @@
}
return billM.subtract(extraStart).multiply(extraRate);
}
+ /**
+ * 计算远途费的里程
+ */
+ private BigDecimal calculateLongDistExtraValue(BigDecimal billM, List<LongRangeStep> steps) {
+ if (billM.compareTo(BigDecimal.ZERO) <= 0) return BigDecimal.ZERO;
+
+ // 当前点所在的公里数
+ BigDecimal extraStart = BigDecimal.ZERO;
+ BigDecimal extraRate = BigDecimal.ZERO;
+
+ // 匹配区间规则
+ for (LongRangeStep step : steps) {
+ if (step.isMatch(billM)) {
+ extraRate = step.addPrice;
+ extraStart = step.numStart;
+ break;
+ }
+ }
+ return billM.subtract(extraStart);
+ }
private Map<String, BigDecimal> formatMap(Map<String, BigDecimal> map) {
return map.entrySet().stream().collect(Collectors.toMap(
--
Gitblit v1.7.1