From 8b5ac6aa170ba050387c14931b95b9d9ce5ee4e2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 14 二月 2026 11:26:26 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   73 +++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 31 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 35c10f3..8b05587 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
@@ -77,6 +77,7 @@
 import com.xiaopeng.order.service.IXpOrderReassignService;
 import com.xiaopeng.order.service.IXpOrderService;
 import com.xiaopeng.order.utils.TaxiPricingDemoService;
+import com.xiaopeng.order.utils.TrajectoryGenerator;
 import com.xiaopeng.order.utils.holiday.HolidayUtil;
 import com.xiaopeng.order.vo.OrderDetailVo;
 import io.swagger.annotations.ApiModelProperty;
@@ -949,8 +950,8 @@
             cancelTaxiPassengerVo.setVin(vehicle.getVehicleVin());
             cancelTaxiPassengerVo.setUid(uid);
             cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
-//            cancelTaxiPassengerVo.setAppId();
-
+            // TODO 加配置文件取
+            cancelTaxiPassengerVo.setAppId("");
             userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
         }
         // 根据订单所属开通城市id 查询定价
@@ -960,25 +961,37 @@
             throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS);
         }
         // 费用
-        // 查询订单轨迹
-        List<OrderTrajectory> trajectories = mongoTemplate.find(
-                new Query(Criteria.where("orderId").is(orderId))
-                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
-                OrderTrajectory.class
-        );
-        List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>();
-        for (OrderTrajectory trajectory : trajectories) {
-            TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime());
-            gpsPoints.add(point);
-        }
+//        // 查询订单轨迹
+//        List<OrderTrajectory> trajectories = mongoTemplate.find(
+//                new Query(Criteria.where("orderId").is(orderId))
+//                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
+//                OrderTrajectory.class
+//        );
+//        List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>();
+//        for (OrderTrajectory trajectory : trajectories) {
+//            TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime());
+//            gpsPoints.add(point);
+//        }
+    // 补充临时轨迹数据
+        List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime()));
+
+
         TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig();
         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")));
+        if(pricing.getPricingType()==1){
+            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")));
+            // --- 远途加价区间配置 (关键修改) ---
+            // 1. 超过 num1(12) 不足 num2(20), 加收 num3(1.2)
+            config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num6")), Double.parseDouble(basicPricingJson.getString("num7")), Double.parseDouble(basicPricingJson.getString("num8"))));
+            // 2. 超过 num4(20) 不足 num5(35), 加收 num6(2.0)
+            config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num9")), Double.parseDouble(basicPricingJson.getString("num10")), Double.parseDouble(basicPricingJson.getString("num11"))));
+            // 3. 超过 num7(35) 以后, 加收 num8(3.5) -> numEnd 传个极大值
+            config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num12")), 999999, Double.parseDouble(basicPricingJson.getString("num13"))));
+        }
         for (Object o : startingFareJsonArray) {
             // 转化为jsonObject
             JSONObject jsonObject = (JSONObject) o;
@@ -991,13 +1004,7 @@
             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)));
         }
-        // --- 远途加价区间配置 (关键修改) ---
-        // 1. 超过 num1(12) 不足 num2(20), 加收 num3(1.2)
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num6")), Double.parseDouble(basicPricingJson.getString("num7")), Double.parseDouble(basicPricingJson.getString("num8"))));
-        // 2. 超过 num4(20) 不足 num5(35), 加收 num6(2.0)
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num9")), Double.parseDouble(basicPricingJson.getString("num10")), Double.parseDouble(basicPricingJson.getString("num11"))));
-        // 3. 超过 num7(35) 以后, 加收 num8(3.5) -> numEnd 传个极大值
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num12")), 999999, Double.parseDouble(basicPricingJson.getString("num13"))));
+
 
         TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService();
         Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getCreateTime()), order.getMileageKilometers(), gpsPoints, config);
@@ -1547,11 +1554,15 @@
             }
 
         }
-        List<OrderTrajectory> trajectories = mongoTemplate.find(
-                new Query(Criteria.where("orderId").is(orderId))
-                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
-                OrderTrajectory.class
-        );
+//        List<OrderTrajectory> trajectories = mongoTemplate.find(
+//                new Query(Criteria.where("orderId").is(orderId))
+//                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
+//                OrderTrajectory.class
+//        );
+        List<TaxiPricingDemoService.GpsPoint> mockGpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime()));
+
+        // 生成轨迹记录
+        List<OrderTrajectory> trajectories = TrajectoryGenerator.generateTrajectory(mockGpsPoints);
         orderDetailVo.setTrajectories(trajectories);
         if (order.getTripBegin() != null && order.getTripEnd() != null) {
             // 计算两个时间相差多少分钟

--
Gitblit v1.7.1