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/service/impl/XpOrderServiceImpl.java | 95 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 76 insertions(+), 19 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 9e9081b..cbf7ba7 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -941,22 +941,23 @@
gpsPoints.add(point);
}
TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig();
- config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", "14:40", "14:46", 15.0, 3.0, 5.0, 3.0, 0.8));
- config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", "18:40", "19:46", 15.0, 3.0, 5.0, 3.0, 0.8));
- config.night = new TaxiPricingDemoService.PricingRule("夜间行驶", "14:47", "14:48", 18.0, 3.0, 5.0, 3.5, 1.0);
- config.holiday = new TaxiPricingDemoService.PricingRule("节假日", "18:47", "18:48", 18.0, 3.0, 5.0, 4, 2.0);
- config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", "14:46", "14:47", 10.0, 3.0, 5.0, 2.4, 0.5));
- JSONArray StartingFareJsonArray = JSONArray.parseArray(pricing.getStartingFareJson());
- for (Object o : StartingFareJsonArray) {
+ JSONArray startingFareJsonArray = JSONArray.parseArray(pricing.getStartingFareJson());
+ JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson());
+
+ config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split("-")[0], basicPricingJson.getString("num21").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
+ config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num22").split("-")[0], basicPricingJson.getString("num22").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
+ config.night = new TaxiPricingDemoService.PricingRule("夜间行驶", basicPricingJson.getString("num14").split("-")[0], basicPricingJson.getString("num14").split("-")[1], Double.parseDouble(basicPricingJson.getString("num16")), Double.parseDouble(basicPricingJson.getString("num17")), Double.parseDouble(basicPricingJson.getString("num18")), Double.parseDouble(basicPricingJson.getString("num19")), Double.parseDouble(basicPricingJson.getString("num20")));
+ config.holiday = new TaxiPricingDemoService.PricingRule("节假日", "00:00", "23:59", Double.parseDouble(basicPricingJson.getString("num30")), Double.parseDouble(basicPricingJson.getString("num31")), Double.parseDouble(basicPricingJson.getString("num32")), Double.parseDouble(basicPricingJson.getString("num33")), Double.parseDouble(basicPricingJson.getString("num234")));
+ for (Object o : startingFareJsonArray) {
// 转化为jsonObject
JSONObject jsonObject = (JSONObject) o;
- String num1 =jsonObject.getString("num1");
- String num2 =jsonObject.getString("num2");
- String num3 =jsonObject.getString("num3");
- String num4 =jsonObject.getString("num4");
- String num5 =jsonObject.getString("num5");
- String num6 =jsonObject.getString("num6");
- String num7 =jsonObject.getString("num7");
+ String num1 = jsonObject.getString("num1");
+ String num2 = jsonObject.getString("num2");
+ String num3 = jsonObject.getString("num3");
+ String num4 = jsonObject.getString("num4");
+ String num5 = jsonObject.getString("num5");
+ String num6 = jsonObject.getString("num6");
+ String num7 = jsonObject.getString("num7");
config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7)));
}
// --- 远途加价区间配置 (关键修改) ---
@@ -980,22 +981,78 @@
// 封装起步价
FareBreakdownDetailVo startDetail = new FareBreakdownDetailVo();
String key = stringBigDecimalEntry.getKey();
- if (key.contains("起步价")){
+ if (key.contains("起步价")) {
startDetail.setTime(key.split("\\|")[1]);
startDetail.setMoney(stringBigDecimalEntry.getValue());
- if (key.contains("普通时段")){
+ if (key.contains("普通时段")) {
startDetail.setType(1);
- }else if (key.contains("夜间")){
+ } else if (key.contains("夜间")) {
startDetail.setType(2);
- }else if (key.contains("高峰")){
+ } else if (key.contains("高峰")) {
startDetail.setType(3);
- }else if (key.contains("节假")){
+ } else if (key.contains("节假")) {
startDetail.setType(4);
}
startDetail.setDuration(Long.parseLong(key.split("=")[1]));
startDetail.setMileage(new BigDecimal(key.split("&")[1]));
+ start.add(startDetail);
}
// 封装里程费
+ if (!key.contains("起步")&&!key.contains("时长")&&!key.contains("远途")&&!key.contains("distance")) {
+ FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo();
+ if (key.contains("普通时段")){
+ mileageDetail.setType(1);
+ String key1 = "distance普通时段"+key.split("\\|")[1];
+ String key2 = "普通时段"+key.split("\\|")[1];
+ BigDecimal distance = bill.get(key1);
+ BigDecimal money = bill.get(key2);
+ mileageDetail.setMileage(distance);
+ mileageDetail.setMoney(money);
+ }else if (key.contains("夜间行驶")){
+ mileageDetail.setType(2);
+ String key1 = "distance夜间行驶"+key.split("\\|")[1];
+ String key2 = "夜间行驶"+key.split("\\|")[1];
+ BigDecimal distance = bill.get(key1);
+ BigDecimal money = bill.get(key2);
+ mileageDetail.setMileage(distance);
+ mileageDetail.setMoney(money);
+ }
+ else if (key.contains("高峰期")){
+ mileageDetail.setType(3);
+ String key1 = "distance高峰期"+key.split("\\|")[1];
+ String key2 = "高峰期"+key.split("\\|")[1];
+ BigDecimal distance = bill.get(key1);
+ BigDecimal money = bill.get(key2);
+ mileageDetail.setMileage(distance);
+ mileageDetail.setMoney(money);
+ }
+ else if (key.contains("节假")){
+ mileageDetail.setType(4);
+ String key1 = "distance节假日"+key.split("\\|")[1];
+ String key2 = "节假日"+key.split("\\|")[1];
+ BigDecimal distance = bill.get(key1);
+ BigDecimal money = bill.get(key2);
+ mileageDetail.setMileage(distance);
+ mileageDetail.setMoney(money);
+ }
+
+ }
+ // 封装时长费
+ FareBreakdownDetailVo timeDetail = new FareBreakdownDetailVo();
+ if (key.contains("时长费")) {
+ timeDetail.setType(startDetail.getType());
+ timeDetail.setMoney(stringBigDecimalEntry.getValue());
+ timeDetail.setDuration(Long.parseLong(key.split("&")[1]));
+ duration.add(timeDetail);
+ }
+ // 封装远途费
+ FareBreakdownDetailVo longDetail = new FareBreakdownDetailVo();
+ if (key.contains("远途费")) {
+ longDetail.setType(startDetail.getType());
+ longDetail.setMoney(stringBigDecimalEntry.getValue());
+ longDetail.setMileage(new BigDecimal(key.split("&")[1]));
+ longDistance.add(longDetail);
+ }
}
// // 计算实际价格
--
Gitblit v1.7.1