From 1d480fdb0905715c2058d113220c47f26c051dce Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期五, 17 四月 2026 18:36:25 +0800
Subject: [PATCH] 1.按照车型 计算价格(行程中修改目的地(获取路线和费用)、行程结束) 完成100% 2.车型管理端接口添加,并修改APP页面展示需要展示车型的代码 3.系统配置文件-行程中的配置 添加,并修改代码标记需要读取配置文件的地方 4.优化代码

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   27 +++++++++++++++++----------
 1 files changed, 17 insertions(+), 10 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 adac44e..4945338 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
@@ -318,7 +318,7 @@
             XpVehicle vehicle = vehicleMap.get(order.getVehicleId());
             if (Objects.nonNull(vehicle)) {
                 vo.setPlateNumber(vehicle.getPlateNumber());
-                vo.setVehicleModel(vehicle.getVehicleModel());
+                vo.setVehicleModel(vehicle.getVehicleModelName());
             }
         }
 
@@ -607,7 +607,7 @@
         if (Objects.nonNull(order.getVehicleId()) && vehicleMap.containsKey(order.getVehicleId())) {
             XpVehicle vehicle = vehicleMap.get(order.getVehicleId());
             vo.setPlateNumber(vehicle.getPlateNumber());
-            vo.setVehicleModel(vehicle.getVehicleModel());
+            vo.setVehicleModel(vehicle.getVehicleModelName());
         }
 
         // 车队信息
@@ -3465,7 +3465,7 @@
             R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId());
             XpVehicle vehicle = xpVehicleR.getData();
             xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin());
-            xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel());
+            xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModelName());
             xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor());
             xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber());
             xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures());
@@ -3493,7 +3493,7 @@
             R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId());
             XpVehicle vehicle = xpVehicleR.getData();
             xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin());
-            xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel());
+            xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModelName());
             xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor());
             xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber());
 
@@ -3513,21 +3513,28 @@
      */
     private boolean isCancelShow(XpOrder xpOrder,String vehicleVin) {
         boolean isCancel = false;
+
+        //获取系统配置
+        XpSystemSetting systemSetting = xpSystemSettingClient.getSystemSettingOne().getData();
+        if(systemSetting == null){
+            throw new ServiceException("获取行程配置错误");
+        }
         //获取配置文件
-        int sylc = 800;//单位米 todo yyy 需要读取后台配置文件
-        int sysj = 5;//单位分钟 todo yyy 需要读取后台配置文件
+        int sylc = systemSetting.getXczSyDistance();  // 行程中剩余里程单位米  需要读取后台配置文件
+        int sysj = systemSetting.getXczSyTime();//行程中剩余时间 单位分钟  需要读取后台配置文件
         // 减少3分钟 获取3分账内的 行程数据
-        long minute =3;//todo yyy 需要读取后台配置文件
+        Integer xczSpeedPerHour = systemSetting.getXczHmSpeedPerHour();//行程中豁免时速 km/h
+        Integer xczHmDuration = systemSetting.getXczHmDuration();//行程中豁免持续时间 分钟  需要读取后台配置文件
 
 
         List<OrderTrajectory> orderTrajectories = queryOrderTrajectories(xpOrder.getId());
         if(!orderTrajectories.isEmpty()){// 减少3分钟 获取3分账内的 行程数据
             //3千米/小时 转换成分钟 50米/分钟
-            BigDecimal suduDefault = new BigDecimal("3");//3千米/小时
+            BigDecimal suduDefault = new BigDecimal(xczSpeedPerHour);//3千米/小时
             BigDecimal suduDefault1 = suduDefault.multiply(BigDecimal.valueOf(1000)) ;
             BigDecimal suduDefaultNew =suduDefault1.divide(BigDecimal.valueOf(60),2,RoundingMode.HALF_EVEN);
 
-            LocalDateTime minutesBefore = LocalDateTime.now().minusMinutes(minute);
+            LocalDateTime minutesBefore = LocalDateTime.now().minusMinutes(xczHmDuration);
             long milliseconds = DateUtils.getMilliseconds(minutesBefore);
             List<OrderTrajectory> orderTrajectoriesNew = new ArrayList<>();
             for (OrderTrajectory orderTrajectory : orderTrajectories) {
@@ -3540,7 +3547,7 @@
              */
             //计算行驶总距离和时长
             Double reduce = orderTrajectoriesNew.stream().map(OrderTrajectory::getDistance).reduce(0.0, Double::sum);
-            BigDecimal xcsudu = new BigDecimal(reduce).divide(new BigDecimal(minute),2, RoundingMode.HALF_EVEN);//米/分钟
+            BigDecimal xcsudu = new BigDecimal(reduce).divide(new BigDecimal(xczHmDuration),2, RoundingMode.HALF_EVEN);//米/分钟
 
             //特殊豁免:若系统检测到车辆在当前坐标时速 < 3km/h 且持续时间 > 3分钟(后台配置)(判定为极度拥堵或异常停滞),此时解除限制,允许用户修改目的地或新增途径点以寻找更近的下车位置。
             if(xcsudu.compareTo(suduDefaultNew)<0){

--
Gitblit v1.7.1