From 98d664b2ebd508d170283312eccdc99b7d6a40ef Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 01 五月 2026 01:32:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java |   36 ++++++++++++++++++------------------
 1 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
index e6ddc72..5cd2753 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -47,6 +47,7 @@
 import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
+import org.springframework.data.geo.Circle;
 import org.springframework.data.geo.Distance;
 import org.springframework.data.geo.Metrics;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -358,30 +359,29 @@
 
     @ApiOperation(value = "可改派的运维人员列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
     @PostMapping("/api/v1/task/reassign/availableUsers")
-    public R<PageInfo<XpOperationsUserWithRoleVO>> availableReassignUsers(@RequestBody OptionalUsersPageListQuery query) {
+    public R<PageInfo<XpOperationsUserWithRoleVO>> availableReassignUsers(@RequestBody OptionalUsersPageListQuery query1) {
+        XpTask task = xpTaskService.getById(query1.getTaskId());
+        // 找到中心点
+        GeoJsonPoint geoJsonPoint = new GeoJsonPoint(task.getVehicleLon().doubleValue(), task.getVehicleLat().doubleValue());
+        // 构造半径
+        Distance distanceR = new Distance(10, Metrics.KILOMETERS);
+        // 画圆
+        Circle circle = new Circle(geoJsonPoint, distanceR);
+        Query query = Query.query(new Criteria().andOperator(
+                Criteria.where("location").withinSphere(circle)
+        ));
+        List<XpOperationsUserPositionDTO> vehiclePositions = mongoTemplate.find(query, XpOperationsUserPositionDTO.class);
+        Map<Long, Double> disMap = vehiclePositions.stream().collect(Collectors.toMap(XpOperationsUserPositionDTO::getId, XpOperationsUserPositionDTO::getDistance));
 
-        XpTask task = xpTaskService.getById(query.getTaskId());
-        GeoJsonPoint point =
-                new GeoJsonPoint(
-                        task.getVehicleLon().doubleValue(),
-                        task.getVehicleLat().doubleValue()
-                );
-        Query q = new Query(Criteria.where("location").near(point)
-                .maxDistance(new Distance(10, Metrics.KILOMETERS).getNormalizedValue()));
-        q.with(Sort.by(Sort.Direction.ASC, "dis"));
-
-        List<XpOperationsUserPositionDTO> up = mongoTemplate.find(q, XpOperationsUserPositionDTO.class);
-
-        Map<Long, Double> disMap = up.stream().collect(Collectors.toMap(XpOperationsUserPositionDTO::getId, XpOperationsUserPositionDTO::getDistance));
         // 查询车队下面面所有人员id和up求交集
-        List<Long> data = xpFleetClient.idsByFleetName(query.getFleet()).getData();
+        List<Long> data = xpFleetClient.idsByFleetName(query1.getFleet()).getData();
 
-        List<Long> ids = up.stream().map(XpOperationsUserPositionDTO::getId)
+        List<Long> ids = vehiclePositions.stream().map(XpOperationsUserPositionDTO::getId)
                 .filter(e -> data == null || data.isEmpty() || data.contains(e))
                 .collect(Collectors.toList());
 
-        query.setIds(ids);
-        PageInfo<XpOperationsUserWithRoleVO> ret = operationUserClient.listByQueryIds(query).getData();
+        query1.setIds(ids);
+        PageInfo<XpOperationsUserWithRoleVO> ret = operationUserClient.listByQueryIds(query1).getData();
 
         // 设置距离,然后排序
 

--
Gitblit v1.7.1