From f161eb229c5fb0f82c2dfd26c6440dbf84cba1ca Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 24 四月 2026 17:05:52 +0800
Subject: [PATCH] [feat] 杂项优化,可改派人员排序,车队信息模糊查询等,活动通知方式

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java |   45 +++++++++++++++++++++++++++++++--------------
 1 files changed, 31 insertions(+), 14 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 fd6cd71..54ca44f 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
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
 import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
 import com.xiaopeng.api.model.account.XpOperationsUser;
@@ -12,8 +13,10 @@
 import com.xiaopeng.api.model.maintenance.XpTask;
 import com.xiaopeng.api.model.maintenance.XpTaskRule;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
+import com.xiaopeng.api.vo.XpTaskVO;
 import com.xiaopeng.api.vo.account.LoginOperationUser;
+import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.common.core.web.page.PageInfo;
@@ -305,35 +308,49 @@
 
     @ApiOperation(value = "待改派的工单分页列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
     @PostMapping("/api/v1/task/reassign/pageList")
-    public R<PageInfo<TaskVO>> reassignTaskPageList(@RequestBody TaskPageListQuery query) {
+    public R<PageInfo<XpTaskVO>> reassignTaskPageList(@RequestBody TaskPageListQuery query) {
         return R.ok(xpTaskService.reassignTaskPageList(query));
     }
 
-    @ApiOperation(value = "可改派的运维人员列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
-    @GetMapping("/api/v1/task/reassign/availableUsers")
-    public R<List<XpOperationsUser>> availableReassignUsers(@RequestParam Long taskId) {
+    @Resource
+    XpFleetClient xpFleetClient;
 
-        XpTask task = xpTaskService.getById(taskId);
+    @ApiOperation(value = "可改派的运维人员列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
+    @PostMapping("/api/v1/task/reassign/availableUsers")
+    public R<PageInfo<XpOperationsUserWithRoleVO>> availableReassignUsers(@RequestBody OptionalUsersPageListQuery query) {
+
+        XpTask task = xpTaskService.getById(query.getTaskId());
         GeoJsonPoint point =
             new GeoJsonPoint(
                 task.getVehicleLon().doubleValue(), 
                 task.getVehicleLat().doubleValue()
             );
-        Query query = new Query(Criteria.where("location").near(point)
+        Query q = new Query(Criteria.where("location").near(point)
             .maxDistance(new Distance(10, Metrics.KILOMETERS).getNormalizedValue()));
-        query.with(Sort.by(Sort.Direction.ASC, "dis"));
-        List<Long> ids = mongoTemplate.find(query, XpOperationsUserPositionDTO.class)
-                .stream().map(XpOperationsUserPositionDTO::getId).collect(Collectors.toList());
-        return R.ok(operationUserClient.listByIds(ids).getData());
+        q.with(Sort.by(Sort.Direction.ASC, "dis"));
+
+        List<XpOperationsUserPositionDTO> up = mongoTemplate.find(q, XpOperationsUserPositionDTO.class);
+
+        // 查询车队下面面所有人员id和up求交集
+        List<Long> data = xpFleetClient.idsByFleetName(query.getFleet()).getData();
+
+        List<Long> ids = up.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();
+
+        return R.ok(ret);
     }
 
     @Resource
     private XpOperationUserClient operationUserClient;
 
     @ApiOperation(value = "改派详情", tags = {"管理后台-运维执行-任务工单-待改派工单"})
-    @GetMapping("/api/v1/task/reassign/detail")
-    public R<XpTask> reassignDetail(@RequestParam Long taskId) {
-        return R.ok(xpTaskService.getById(taskId));
+    @GetMapping("/api/v1/task/detail")
+    public R<XpTaskVO> reassignDetail(@RequestParam Long taskId) {
+        return R.ok(xpTaskService.detail(taskId));
     }
 
     @ApiOperation(value = "执行保险年检检测定时任务", tags = {"定时任务"})

--
Gitblit v1.7.1