From 48fec1634b25b672450b645eeb4f133216112119 Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期日, 17 五月 2026 23:56:36 +0800
Subject: [PATCH] 修改bug

---
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java |   33 ++++++++++++++++++---------------
 1 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
index e21bdbc..0bba481 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -10,6 +10,7 @@
 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.core.conditions.update.LambdaUpdateWrapper;
 import com.mongodb.client.MongoCollection;
 import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
@@ -20,6 +21,7 @@
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
 import com.xiaopeng.api.model.account.XpOperationsUser;import com.xiaopeng.api.model.maintenance.XpTask;
 import com.xiaopeng.api.model.maintenance.XpTaskRule;
+import com.xiaopeng.api.model.operation.XpGeoQueryEntity;
 import com.xiaopeng.api.model.operation.XpOfficialPartner;
 import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
 import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle;
@@ -64,11 +66,11 @@
 import org.springframework.context.MessageSource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.data.geo.Distance;
-import org.springframework.data.geo.Metrics;
-import org.springframework.data.geo.Point;
+import org.springframework.data.geo.*;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.NearQuery;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
@@ -1253,31 +1255,32 @@
     @GetMapping("/api/v1/mini-program/vehicle/nearby")
     @XpClientCheck(checkToken = false, checkOtpToken = false)
     public R<List<XpVehicleVO>> carAround(@RequestParam double lon, @RequestParam double lat) {
-
-        Point point = new Point(lon, lat);
-        Distance distance = new Distance(3, Metrics.KILOMETERS);
-        Criteria criteria = Criteria.where("point")
-                .nearSphere(point)
-                .maxDistance(distance.getNormalizedValue());
-        Query query = new Query(criteria);
-        List<VehiclePositionVo> vehiclePositions = mongoTemplate.find(query, VehiclePositionVo.class);
+        //找到中心点
+        GeoJsonPoint geoJsonPoint = new GeoJsonPoint(lon, lat);
+        //构造半径
+        Distance distanceR = new Distance(3, Metrics.KILOMETERS);
+        //画圆
+        Circle circle = new Circle(geoJsonPoint, distanceR);
+        // 构造query对象
+        Query query = Query.query(Criteria.where("point").withinSphere(circle));
+        List<VehiclePosition> vehiclePositions = mongoTemplate.find(query, VehiclePosition.class);
         if (CollectionUtils.isEmpty(vehiclePositions)) {
             return R.ok(new ArrayList<>());
         }
         List<XpVehicleVO> xpVehicleList = vehiclePositions.stream()
-                .sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
                 .map(vp -> {
-                    XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(vp.getVin())));
+                    XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getState, 0).eq(XpVehicle::getOperatingStatus, 1)
+                            .eq(XpVehicle::getAcceptOrTest, 1).eq(XpVehicle::getDeleted, 0).in(XpVehicle::getVehicleVin, SensitiveDataCryptoUtil.queryValues(vp.getVin())));
                     if (xpVehicle == null) {
                         return null;
                     }
                     XpVehicleVO vo = new XpVehicleVO();
-                    BeanUtils.copyProperties(xpVehicle, vo);
+                    vo.setLongitude(vp.getPoint().getX());
+                    vo.setLatitude(vp.getPoint().getY());
                     vo.setDirection(vp.getCourse());
                     return vo;
                 })
                 .filter(Objects::nonNull)
-                .filter(v -> v.getState() != null && v.getState() == 0)
                 .limit(5)
                 .collect(Collectors.toList());
         return R.ok(xpVehicleList);

--
Gitblit v1.7.1