From 3c88eb9bd41ea647663995fc0f3e62778f8434a0 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 24 四月 2026 17:37:18 +0800
Subject: [PATCH] [fix] 可改派人员设置距离,排序

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
index d4084d7..46a2b14 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1409,10 +1409,10 @@
 
         Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData();
         List<Long> roleIds = taskRuleRole.stream().map(XpTaskRuleRole::getRoleId).collect(Collectors.toList());
-        List<Long> ids = xpFleetOperationsClient.getOperationsIdsByFleetId(fleetId).getData();//TODO 空指针
+        List<Long> ids = xpFleetOperationsClient.getOperationsIdsByFleetId(fleetId).getData();
         String belongUserIds = xpOperationUserClient.getXpOperationsRoleByRoleIds(roleIds).getData().stream()
                 .map(XpOperationsRole::getOperationsUserId)
-                .filter(ids::contains)
+                .filter(e -> ids == null || ids.isEmpty() || ids.contains(e))
                 .filter(id -> !excludedUserIds.contains(id.toString()))
                 .map(String::valueOf).collect(Collectors.joining(","));
 
@@ -1569,7 +1569,10 @@
         // 让mongo根据[id in ids]返回距离排序的users
 //        List<XpOperationsUserPositionDTO> users = mongoTemplate.find(new Query(Criteria.where("_id").in(ids)), XpOperationsUserPositionDTO.class);
 
-        List<XpOperationsUserPositionDTO> XpOperationsUserPositionDTOs = repository.findWithDistance(new Point(vehiclePosition.getPoint().getX(), vehiclePosition.getPoint().getY()), 1000, ids);
+        List<XpOperationsUserPositionDTO> XpOperationsUserPositionDTOs = mongoTemplate.find(
+                new Query(Criteria.where("_id").in(ids).and("location").nearSphere(new GeoJsonPoint(vehiclePosition.getPoint().getX(), vehiclePosition.getPoint().getY())).maxDistance(1000 / 6378137.0)),
+                XpOperationsUserPositionDTO.class
+        );
 
         boolean skipBusy = false;//TODO 获取系统配置,是否开启跳过忙碌
 

--
Gitblit v1.7.1