From 124045dda668eeaa2b7a0648776d9b7b7a12ca06 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 11 三月 2026 16:46:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   59 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 33 insertions(+), 26 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 587c6aa..d9a4138 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
@@ -412,6 +412,7 @@
         wrapper.orderByDesc(XpOrder::getCreateTime);
         return wrapper;
     }
+
     private LambdaQueryWrapper<XpOrder> buildExcelQueryWrapper(XpOrderExcelQuery query) {
         LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
 
@@ -548,7 +549,7 @@
         vo.setStatus(order.getStatus());
 
         // 用户信息
-        if (Objects.nonNull(order.getAppUserId()) && userInfoMap !=null && userInfoMap.containsKey(order.getAppUserId().toString())) {
+        if (Objects.nonNull(order.getAppUserId()) && userInfoMap != null && userInfoMap.containsKey(order.getAppUserId().toString())) {
             UcUserInfo userInfo = userInfoMap.get(order.getAppUserId().toString());
             vo.setNickName(userInfo.getNickName());
             vo.setPhoneNumber(userInfo.getMobile());
@@ -574,15 +575,15 @@
      * 取消订单
      */
     private void cancelOrder(XpOrder order) {
-        redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
+        redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
         //判断还原车辆状态
-        if(null == order.getVehicleId()){
+        if (null == order.getVehicleId()) {
             Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
-            if(null != cacheObject1){
+            if (null != cacheObject1) {
                 com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
                 String vin = jsonObject.getString("vin");
                 XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
-                if(null != vehicle && 0 != vehicle.getState()){
+                if (null != vehicle && 0 != vehicle.getState()) {
                     vehicle.setState(0);
                     xpVehicleClient.updateVehicleById(vehicle);
                 }
@@ -625,7 +626,7 @@
             }
 
             //还原车辆状态
-            if(1 == xpVehicle.getState()){
+            if (1 == xpVehicle.getState()) {
                 xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
             }
 
@@ -1086,7 +1087,7 @@
     @Transactional
     public void cancelOrder(Long orderId, String uid) {
         XpOrder order = this.getById(orderId);
-        if(order.getStatus()==0){
+        if (order.getStatus() == 0) {
             return;
         }
         if (order == null) {
@@ -1100,17 +1101,17 @@
         }
 
         try {
-            redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
-        }catch (Exception e){
+            redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
+        } catch (Exception e) {
         }
         //判断还原车辆状态
-        if(null == order.getVehicleId()){
+        if (null == order.getVehicleId()) {
             Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
-            if(null != cacheObject1){
+            if (null != cacheObject1) {
                 com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
                 String vin = jsonObject.getString("vin");
                 XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
-                if(null != vehicle && 0 != vehicle.getState()){
+                if (null != vehicle && 0 != vehicle.getState()) {
                     vehicle.setState(0);
                     xpVehicleClient.updateVehicleById(vehicle);
                 }
@@ -1123,7 +1124,7 @@
             baseMapper.updateById(order);
             return;
         }
-        if(order.getStatus()==1){
+        if (order.getStatus() == 1) {
             order.setStatus(0);
             baseMapper.updateById(order);
             return;
@@ -1158,7 +1159,7 @@
         xpOrderCancel.setCancelReason("用户取消订单");
         xpOrderCancelService.save(xpOrderCancel);
         //还原车辆状态
-        if(1 == xpVehicle.getState()){
+        if (1 == xpVehicle.getState()) {
             xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
         }
 
@@ -1218,7 +1219,7 @@
         xpOrderCancel.setCreateTime(LocalDateTime.now());
         xpOrderCancelService.save(xpOrderCancel);
 
-        redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
+        redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
 
 
         R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
@@ -1373,6 +1374,11 @@
         order.setStatus(8);
         order.setAppUserId(null);
         order.setTripEnd(LocalDateTime.now());
+
+
+        long minutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMinutes();
+        order.setDuration((double) minutes);
+
 //        order.setMileageKilometers(80.0);
         baseMapper.updateById(order);
         // 解绑用户与车辆关系
@@ -1736,13 +1742,13 @@
             return;
         }
 
-        if(vehicle.getState()!=0 || vehicle.getOperatingStatus()!=1){
+        if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
             return;
         }
 
         // 判断是否有计划
         R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId());
-        if(xpCruisePlanR==null || xpCruisePlanR.getData()==null){
+        if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) {
             return;
         }
 
@@ -2201,17 +2207,16 @@
                 OrderTrajectory.class
         );
         orderDetailVo.setTrajectories(trajectories);
-        if (order.getTripBegin() != null && order.getTripEnd() != null) {
+        if (order.getBoardingTime() != null && order.getTripEnd() != null) {
             // 计算两个时间相差多少分钟
-            long minutesDifference = Duration.between(order.getTripBegin(), order.getTripEnd()).toMinutes();
-            orderDetailVo.setOrderTime(minutesDifference);
+            double exactMinutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMillis() / (1000.0 * 60);
+            exactMinutes = new BigDecimal(exactMinutes).setScale(2, RoundingMode.HALF_UP).doubleValue();
+            orderDetailVo.setOrderTime(exactMinutes);
         } else {
-            orderDetailVo.setOrderTime(0l);
+            orderDetailVo.setOrderTime(0.0);
         }
-        if (order.getStartMileage() != null) {
-            orderDetailVo.setTotalMileage(order.getStartMileage() + (order.getMileageKilometers() != null ? order.getMileageKilometers() : 0D));
+        orderDetailVo.setTotalMileage(order.getMileageKilometers() != null ? new BigDecimal(order.getMileageKilometers()).setScale(2, RoundingMode.HALF_UP).doubleValue() : 0D);
 
-        }
         return orderDetailVo;
     }
 
@@ -2271,7 +2276,7 @@
                 // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
                 try {
                     redisService.popFirstElement(order.getQueueName());
-                }catch (Exception e){
+                } catch (Exception e) {
                     log.error("Redis弹出队列元素出错");
                 }
                 XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity();
@@ -2384,7 +2389,9 @@
 
         if (xpOrder.getVehicleId() != null) {
             R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId());
-            xpOrderDetailVO.setPlateNumber(xpVehicleR.getData().getPlateNumber());
+            XpVehicle vehicle = xpVehicleR.getData();
+            xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber());
+            xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures());
         }
 
         return xpOrderDetailVO;

--
Gitblit v1.7.1