From 1d8fa38794d80659dd263085198fd0e0f9a2cec7 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 13 二月 2026 21:23:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   73 ++++++++++++++++++++++++------------
 1 files changed, 49 insertions(+), 24 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 cbf7ba7..fbe1452 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
@@ -8,6 +8,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.ImmutableMap;
 import com.xiaopeng.api.dto.account.GetUserCouponDto;
+import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.dto.order.GetOrderNumDto;
 import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
@@ -20,6 +21,7 @@
 import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
 import com.xiaopeng.api.feignClient.account.XpAppUserClient;
 import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient;
+import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
 import com.xiaopeng.api.feignClient.operation.XpPointClient;
 import com.xiaopeng.api.feignClient.operation.XpPricingClient;
 import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient;
@@ -40,7 +42,9 @@
 import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.account.UserCouponVo;
+import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType;
 import com.xiaopeng.api.vo.order.*;
+import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
 import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo;
 import com.xiaopeng.common.core.constant.CacheConstants;
 import com.xiaopeng.common.core.domain.R;
@@ -127,6 +131,7 @@
     private final XpSystemSettingClient xpSystemSettingClient;
     private final OrderTrajectoryService orderTrajectoryService;
     private final XpPushMessageClient xpPushMessageClient;
+    private final OrderMissionClient orderMissionClient;
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -726,7 +731,6 @@
         // TODO 加配置文件取
         cancelTaxiPassengerVo.setAppId("");
 
-
         BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
         if (baseVehicleUserDto.getCode() != 200) {
             throw new RuntimeException("取消订单失败");
@@ -749,6 +753,13 @@
             Integer i = Integer.valueOf(cacheObject.toString());
             redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, i + 1);
         }
+
+        // 下发命令
+        PushOrderDto pushOrderDto = new PushOrderDto();
+        pushOrderDto.setOrderId(order.getId());
+        pushOrderDto.setVin(xpVehicle.getVehicleVin());
+        pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER);
+        orderMissionClient.cancelOrder(pushOrderDto);
     }
 
     @Override
@@ -769,7 +780,10 @@
         xpOrderCancelService.save(xpOrderCancel);
 
 
-        // 推送消息
+        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
+        XpVehicle xpVehicle = xpVehicleR.getData();
+
+
         // 消息推送
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> content = new HashMap<>();
@@ -784,6 +798,13 @@
         sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId()));
         xpPushMessageClient.sendStatus(sendMessageDTO);
         log.info("订单取消消息推送完毕");
+
+        // 下发命令
+        PushOrderDto pushOrderDto = new PushOrderDto();
+        pushOrderDto.setOrderId(order.getId());
+        pushOrderDto.setVin(xpVehicle.getVehicleVin());
+        pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
+        orderMissionClient.cancelOrder(pushOrderDto);
     }
 
     /**
@@ -817,6 +838,7 @@
         evaluate.setFeedbackContent(dto.getFeedbackContent());
         evaluate.setFeedbackPictures(dto.getFeedbackPictures());
         evaluate.setFeedbackTypeId(dto.getFeedbackTypeId());
+        evaluate.setCreateTime(LocalDateTime.now());
         xpOrderEvaluateService.save(evaluate);
 
     }
@@ -1743,8 +1765,11 @@
             orderDetailVo.setFeedbackPictures(evaluate.getFeedbackPictures());
             orderDetailVo.setFeedbackContent(evaluate.getFeedbackContent());
             orderDetailVo.setOrderRating(evaluate.getOrderRating());
-            XpFeedbackType feedbackType = xpSystemSettingClient.getFeedbackTypeById(evaluate.getFeedbackTypeId()).getData();
-            orderDetailVo.setFeedbackTypeName(feedbackType.getFeedbackType());
+            if(evaluate.getFeedbackTypeId()!=null){
+                XpFeedbackType feedbackType = xpSystemSettingClient.getFeedbackTypeById(evaluate.getFeedbackTypeId()).getData();
+                orderDetailVo.setFeedbackTypeName(feedbackType.getFeedbackType());
+            }
+
         }
         List<OrderTrajectory> trajectories = mongoTemplate.find(
                 new Query(Criteria.where("orderId").is(orderId))
@@ -1776,35 +1801,35 @@
     @Transactional
 //    @ShardingTransactionType(TransactionType.BASE)
     public void popOrder(PopOrderDto dto) {
-
         XpOrder order = this.getById(dto.getOrderId());
         order.setAcceptanceTime(LocalDateTime.now());
-
+        AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo();
         R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin());
         if (byVehicleVin.getCode() == 200) {
             order.setVehicleId(byVehicleVin.getData().getId());
+            addTaxiPassengerVo.setVin(byVehicleVin.getData().getVehicleVin());
         }
         order.setStatus(2);
 
-        // Redis弹出这个队列元素
-        // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
-        String popFirstElement = redisService.popFirstElement(order.getQueueName());
-        XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity();
-        String[] split = popFirstElement.split("_");
-        xpGeoQueryEntity.setOrderId(split[0]);
-        String[] split1 = split[1].split(",");
-        xpGeoQueryEntity.setLocation(new GeoJsonPoint(Double.parseDouble(split1[0]), Double.parseDouble(split1[1])));
-        xpGeoQueryEntity.setTimestamp(new Date());
-        // 计算2个时间的秒数
-        LocalDateTime createTime = order.getCreateTime();
-        LocalDateTime acceptanceTime = order.getAcceptanceTime();
-        xpGeoQueryEntity.setSeconds((int) Duration.between(createTime, acceptanceTime).getSeconds());
-        String currentTimeSlot = DateUtils.getCurrentTimeSlot();
-        xpGeoQueryEntity.setTime(currentTimeSlot);
-        // 存mongo数据
-        xpPricingClient.saveXpGeoQueryEntity(xpGeoQueryEntity);
-        this.updateById(order);
+        addTaxiPassengerVo.setUid(order.getAppUserId().toString());
+        addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
+        // TODO appid
+        addTaxiPassengerVo.setAppId("");
 
+        BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
+        if(baseVehicleUserDto.getCode()==200){
+
+            // Redis弹出这个队列元素
+            // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
+            String popFirstElement = redisService.popFirstElement(order.getQueueName());
+            XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity();
+            String[] split = popFirstElement.split("_");
+            xpGeoQueryEntity.setOrderId(split[0]);
+            // 存mongo数据
+            xpPricingClient.updateXpGeoQueryEntity(split[0]);
+            this.updateById(order);
+
+        }
     }
 
 

--
Gitblit v1.7.1