From 15172f05e7901e362889bf44155dd4859cd2d1a4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 22 四月 2026 09:57:47 +0800
Subject: [PATCH] [fix] 附近车辆

---
 xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java                 |    3 +--
 xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/NearestNextVo.java                        |    2 +-
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java  |    4 +---
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java |   25 ++++++++++++++++++++-----
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestVo.java                     |    1 +
 5 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java
index e897baa..b2702a0 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java
@@ -2,7 +2,6 @@
 
 
 import lombok.Data;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.index.CompoundIndex;
 import org.springframework.data.mongodb.core.index.CompoundIndexes;
@@ -22,7 +21,7 @@
         @CompoundIndex(name = "location_index", def = "{'point': '2dsphere'}")
 }
 )
-public class  VehiclePosition implements Serializable {
+public class VehiclePosition implements Serializable {
     /**
      * 车辆VIN
      */
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestNextVo.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/NearestNextVo.java
similarity index 96%
rename from xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestNextVo.java
rename to xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/NearestNextVo.java
index b74156b..0f904fc 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestNextVo.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/NearestNextVo.java
@@ -1,4 +1,4 @@
-package com.xiaopeng.operation.vo;
+package com.xiaopeng.api.vo.operation;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java
index f2b07e6..3692cfb 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java
@@ -2,8 +2,10 @@
 
 import com.xiaopeng.api.dto.map.RouteAndFareDto;
 import com.xiaopeng.api.dto.order.OrderChangeDto;
-import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
+import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.operation.RouteAndFareVo;
+import com.xiaopeng.api.vo.operation.VehiclePositionVo;
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.itinerary.service.ActiveOrderService;
 import com.xiaopeng.itinerary.service.XpPricingService;
@@ -23,7 +25,9 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -76,23 +80,34 @@
         return R.ok();
     }
 
+    @Resource
+    XpVehicleClient xpVehicleClient;
     /**
      * 周围车辆点位查询
      */
     @ApiOperation(value = "周围车辆点位查询", notes = "", tags = {"小程序-周围车辆点位查询"})
     @GetMapping("/api/v1/mini-program/nearby/cars")
     @XpClientCheck(checkToken = false, checkOtpToken = true)
-    public R<List<VehiclePosition>> carAround(@RequestParam double lon,@RequestParam double lat,@RequestParam double distanceMeters,HttpServletRequest request) {
+    public R<List<XpVehicle>> carAround(@RequestParam double lon,@RequestParam double lat,HttpServletRequest request) {
 
-        String uid = request.getHeader("XP-Uid");
 
+        // TODO 需要车头方向
         Point point = new Point(lon, lat);
-        Distance distance = new Distance(distanceMeters / 1000.0, Metrics.KILOMETERS);
+        Distance distance = new Distance(3, Metrics.KILOMETERS);
         Criteria criteria = Criteria.where("point")
                 .nearSphere(point)
                 .maxDistance(distance.getNormalizedValue());
         Query query = new Query(criteria);
-        return R.ok(mongoTemplate.find(query, VehiclePosition.class));
+        List<VehiclePositionVo> vehiclePositions = mongoTemplate.find(query, VehiclePositionVo.class);
+
+        List<XpVehicle> xpVehicleList = vehiclePositions.stream()
+                .sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
+                .map(v -> xpVehicleClient.findByVehicleVin(v.getVin()).getData())
+                .filter(v -> v.getState() == 0)
+                .limit(5)
+                .collect(Collectors.toList());
+
+        return R.ok(xpVehicleList);
     }
     @Resource
     private MongoTemplate mongoTemplate;
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
index 27b1fd7..3b65bd0 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -5,13 +5,11 @@
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.dto.operation.PointMapQuery;
 import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
 import com.xiaopeng.api.dto.order.HistoryStartPointsDto;
 import com.xiaopeng.api.feignClient.account.XpAppUserCollectAddrClient;
-import com.xiaopeng.api.model.account.XpAppUserCollectAddr;
 import com.xiaopeng.api.model.operation.*;
 import com.xiaopeng.api.query.operation.PointListQuery;
 import com.xiaopeng.api.query.operation.PointPageListListQuery;
@@ -35,7 +33,7 @@
 import com.xiaopeng.operation.utils.TimeRangeChecker;
 import com.xiaopeng.operation.utils.holiday.HolidayUtil;
 import com.xiaopeng.operation.utils.map.FastDistanceCalculator;
-import com.xiaopeng.operation.vo.NearestNextVo;
+import com.xiaopeng.api.vo.operation.NearestNextVo;
 import com.xiaopeng.operation.vo.NearestVo;
 import com.xiaopeng.operation.vo.OrderDistanceVo;
 import org.springframework.stereotype.Service;
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestVo.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestVo.java
index 25a3947..fcd3d64 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestVo.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestVo.java
@@ -1,5 +1,6 @@
 package com.xiaopeng.operation.vo;
 
+import com.xiaopeng.api.vo.operation.NearestNextVo;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 

--
Gitblit v1.7.1