From bc7ea9b2430833d1bda26cb75e756ab0e28ab34f Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期三, 22 四月 2026 17:47:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0
---
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java | 44 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 42 insertions(+), 2 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 d0df525..b30db02 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
@@ -11,13 +11,13 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mongodb.client.MongoCollection;
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.feignClient.maintenance.*;
+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.vehicleConvoy.XpFleet;
@@ -25,6 +25,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
+import com.xiaopeng.api.vo.operation.VehiclePositionVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehicleDoorStatusVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehicleStateVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehiclesCommandCallbackVo;
@@ -40,7 +41,7 @@
import com.xiaopeng.vehicleConvoy.model.exportExcel.XpVehicleExportExcel;
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
-import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
+import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import com.xiaopeng.vehicleConvoy.service.IXpFleetService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
@@ -57,6 +58,9 @@
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.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@@ -64,6 +68,7 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -73,6 +78,7 @@
import java.time.LocalDateTime;
import java.util.*;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* <p>
@@ -1156,4 +1162,38 @@
VehicleDoorStatusVo vehicleDoorStatus = xpVehicleService.getVehicleDoorStatus(orderId);
return R.ok(vehicleDoorStatus);
}
+
+ @Resource
+ XpVehicleClient xpVehicleClient;
+ /**
+ * 周围车辆点位查询
+ */
+ @ApiOperation(value = "周围车辆点位查询", notes = "", tags = {"小程序-周围车辆点位查询"})
+ @GetMapping("/api/v1/mini-program/vehicle/nearby")
+ @XpClientCheck(checkToken = false, checkOtpToken = true)
+ public R<List<XpVehicleVO>> carAround(@RequestParam double lon,@RequestParam double lat,HttpServletRequest request) {
+
+ 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);
+
+ List<XpVehicleVO> xpVehicleList = vehiclePositions.stream()
+ .sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
+ .map(vp -> {
+ XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vp.getVin()).getData();
+ XpVehicleVO vo = new XpVehicleVO();
+ BeanUtils.copyProperties(xpVehicle, vo);
+ vo.setDirection(vp.getCourse());
+ return vo;
+ })
+ .filter(v -> v.getState() == 0)
+ .limit(5)
+ .collect(Collectors.toList());
+
+ return R.ok(xpVehicleList);
+ }
}
--
Gitblit v1.7.1