From 66cf674e0f18a8bdc3dc45b080763edee910a2ab Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 21 四月 2026 14:39:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java |   54 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 28 insertions(+), 26 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 153c4d5..fd70f2e 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
@@ -13,6 +13,7 @@
 import com.xiaopeng.api.feignClient.account.SysUserClient;
 import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
 import com.xiaopeng.api.feignClient.account.XpOperationUserNotificationClient;
+import com.xiaopeng.api.feignClient.account.XpOperationsRoleClient;
 import com.xiaopeng.api.feignClient.operation.SmsClient;
 import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
 import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
@@ -26,6 +27,7 @@
 import com.xiaopeng.api.model.maintenance.*;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.maintenance.TaskScheduleConstants;
 import com.xiaopeng.api.vo.operation.SmsVo;
@@ -57,7 +59,6 @@
 import com.xiaopeng.maintenance.utils.UUIDUtil;
 import com.xiaopeng.maintenance.vo.TaskCleanDetailVO;
 import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
-import com.xiaopeng.maintenance.vo.TaskReassignDetailVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -121,22 +122,22 @@
 
     @Autowired
     private XpVehicleCleanMapper vehicleCleanMapper;
-    @Autowired
+    @Resource
     private XpOperationUserClient xpOperationUserClient;
-    @Autowired
+    @Resource
     private SysUserClient sysUserClient;
     @Autowired
     private XpTaskHandleDetailRoutineMapper xpTaskHandleDetailRoutineMapper;
 
-    @Autowired
+    @Resource
     private XpVehicleClient xpVehicleClient;
     @Autowired
     private XpTaskRuleMapper xpTaskRuleMapper;
     @Autowired
     private MongoTemplate mongoTemplate;
-    @Autowired
+    @Resource
     private XpAliPushMessageClient xpAliPushMessageClient;
-    @Autowired
+    @Resource
     private XpOperationUserNotificationClient xpOperationUserNotificationClient;
     @Autowired
     private IXpTaskRuleRoleService xpTaskRuleRoleService;
@@ -1389,21 +1390,34 @@
         XpTask task = getById(taskId);
         XpVehicle vehicle = xpVehicleClient.queryById(task.getVehicleId()).getData();
         XpTaskRule taskRule = xpTaskRuleService.lambdaQuery().last("limit 1").one();
-        List<XpTaskRuleRole> taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, 9).list();
+
+        int type = 9;
+        if(task.getTaskCategory() != 2) {
+            type = Integer.parseInt(task.getTaskTypeId());
+        }
+
+        List<XpTaskRuleRole> taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, type).list();
+
         if (Objects.isNull(taskRuleRole) || Objects.isNull(taskRule)) {
             throw new ServiceException("未配置车辆事故任务分配规则");
         }
-        List<Long> excludedUserIds = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
-        excludedUserIds.addAll(Arrays.asList(task.getHandleUserId().split(",")).stream().map(Long::parseLong).collect(Collectors.toList()));
-        task.setExcluded(excludedUserIds);
+
+        List<XpTask.Reject> rejects = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
+        XpTask.Reject reject = task.reject(msg);
+        rejects.add(reject);
+        task.setExcluded(rejects);
+        Set<String> excludedUserIds = rejects.stream().map(XpTask.Reject::getRejectUserId).collect(Collectors.toSet());
+
         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();
         String belongUserIds = xpOperationUserClient.getXpOperationsRoleByRoleIds(roleIds).getData().stream()
                 .map(XpOperationsRole::getOperationsUserId)
                 .filter(ids::contains)
-                .filter(id -> !excludedUserIds.contains(id))
+                .filter(id -> !excludedUserIds.contains(id.toString()))
                 .map(String::valueOf).collect(Collectors.joining(","));
+
+
 //        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class);
         VehiclePosition vehiclePosition = new VehiclePosition();
         vehiclePosition.setPoint(new GeoJsonPoint(103.12615621, 30.264561));
@@ -1413,10 +1427,11 @@
             task.setStatus(4);
             noticeAdministrator(task);//TODO 需要通知管理员手动处理,考虑再AliPushUtil 中给管理员发送消息
         }
-
         updateById(task);
-
         if(StringUtils.isNotBlank(task.getHandleUserId())){
+            List<Long> id = Collections.singletonList(Long.parseLong(task.getHandleUserId()));
+            String roleName = xpOperationUserClient.listByIdsWithRole(id).getData().get(0).getRoleName();
+            reject.setRejectUserRoleName(roleName);
             sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
         }
     }
@@ -1487,19 +1502,6 @@
     @Override
     public PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query) {
         return baseMapper.reassignTaskPageList(query);
-    }
-
-    @Override
-    public TaskReassignDetailVO detail(Long taskId) {
-        XpTask task = getById(taskId);
-
-        // 根据taskId去查询XpTaskHandleDetail,
-//        XpTaskHandleDetail taskHandleDetail = xpTaskHandleDetailClient.queryByTaskId(taskId).getData();
-
-
-//        return baseMapper.detail(taskId);
-        // todo
-        return null;
     }
 
     @Value("${robotaxi.sms.app-id:1476153389173952512}")

--
Gitblit v1.7.1