From 04ca40c73d8b6f9ad77d0f9d4747df2c928194cc Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 27 三月 2026 14:25:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 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 9ebc1b9..46b4741 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
@@ -16,6 +16,7 @@
 import com.xiaopeng.api.dto.account.UseUserCouponDto;
 import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
 import com.xiaopeng.api.dto.automaticPilot.VehicleEventDTO;
+import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
 import com.xiaopeng.api.dto.operation.CruisePointDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.dto.order.GetOrderNumDto;
@@ -34,6 +35,7 @@
 import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
 import com.xiaopeng.api.feignClient.automaticPilot.VehicleBuriedPointClient;
 import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
+import com.xiaopeng.api.feignClient.map.XpMapClient;
 import com.xiaopeng.api.feignClient.operation.XpCruisePlanClient;
 import com.xiaopeng.api.feignClient.operation.XpPointClient;
 import com.xiaopeng.api.feignClient.operation.XpPricingClient;
@@ -109,6 +111,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
@@ -157,6 +160,7 @@
     private final GDMapGeocodingUtil gdMapGeocodingUtil;
     private final VehicleBuriedPointClient vehicleBuriedPointClient;
     private final IXpTestOrderService xpTestOrderService;
+    private final XpMapClient xpMapClient;
 
 
     @Autowired
@@ -1593,6 +1597,7 @@
             case 6:
                 // 行程开始时间
                 xpOrder.setTripBegin(LocalDateTime.now());
+                redisService.deleteObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId());
                 break;
             case 7:
                 xpOrder.setGetoffTime(LocalDateTime.now());
@@ -2921,6 +2926,35 @@
                 addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
                 addTaxiPassengerVo.setAppId(appid);
                 userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
+
+                //生成前往上车点的导航数据
+                //查询车辆位置
+                VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(dto.getXpVehicleVin())), VehiclePosition.class);
+                if (Objects.isNull(vehiclePosition)) {
+                    throw new RuntimeException("车辆位置信息不存在");
+                }
+
+                LonLatDto destination = new LonLatDto();
+                LonLatDto origin = new LonLatDto();
+                //查询司机当前位置到起点的线路
+                origin.setLongitude(vehiclePosition.getPoint().getX());
+                origin.setLatitude(vehiclePosition.getPoint().getY());
+                destination.setLongitude(order.getStartLon());
+                destination.setLatitude(order.getStartLat());
+
+                OrderRouteAndFareDto dto2 = new OrderRouteAndFareDto();
+                dto2.setOrderId(orderId);
+                dto2.setOrigin(origin);
+                dto2.setDestination(destination);
+                dto2.setRouteType(1);
+                R<RouteVo> routeVoR = xpMapClient.getOrderDistanceAndDuration(dto2);
+                if (200 != routeVoR.getCode()) {
+                    throw new RuntimeException("获取订单线路和运费失败");
+                }
+                RouteVo routeVo = routeVoR.getData();
+                //缓存数据,用于后续推给乘客导航线路
+                redisService.setCacheObject("ORDER_NAVIGATION_START_DATA:" + order.getAppUserId(), JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
+
                 //推送乘客车辆到达预约点的导航数据
                 sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin());
             }

--
Gitblit v1.7.1