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