From 41ecbff2b97d26ce821edf6d4cb050e8f9fdf6f3 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 09 五月 2026 09:39:39 +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 |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 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 1ef432c..e4d9b35 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
@@ -16,7 +16,6 @@
 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.map.XpMapClient;
 import com.xiaopeng.api.feignClient.operation.SmsClient;
 import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
 import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
@@ -68,6 +67,7 @@
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.util.Strings;
 import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
 import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.redisson.api.RLock;
@@ -75,7 +75,6 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.geo.Point;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -296,6 +295,9 @@
             List<Long> userIds = xpOperationsRoleResult.getData().stream().filter(x -> ids.contains(x.getOperationsUserId()))
                     .map(XpOperationsRole::getOperationsUserId)
                     .distinct().collect(Collectors.toList());
+            if(CollUtil.isEmpty(userIds)){
+                throw new ServiceException("未配置车队运维人员");
+            }
             //获取首选人的实时定位,计算每个人到事故车辆位置的导航距离
             List<Operations> operationsList = new ArrayList<>();
             for (Long userId : userIds) {
@@ -1476,8 +1478,13 @@
         }
 
         List<XpTask.Reject> rejects = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
-        XpTask.Reject reject = task.reject(msg);
-        rejects.add(reject);
+        if(msg != null && Strings.isNotBlank(task.getHandleUserId())) {
+            XpTask.Reject reject = task.reject(msg);
+            rejects.add(reject);
+            List<Long> id = Collections.singletonList(Long.parseLong(task.getHandleUserId()));
+            String roleName = xpOperationUserClient.listByIdsWithRole(id).getData().get(0).getRoleName();
+            reject.setRejectUserRoleName(roleName);
+        }
         task.setExcluded(rejects);
         task.setReassignmentStatus(1);
         task.setStatus(4);
@@ -1493,9 +1500,9 @@
                 .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));
+        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));
         String handlerUser = chooseNearestAvailableOperationsUser(belongUserIds, vehiclePosition);
         task.setHandleUserId(handlerUser);
         if(handlerUser == null) {
@@ -1505,9 +1512,6 @@
         }
         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());
         }
     }
@@ -1563,7 +1567,7 @@
         task.setCreateTime(LocalDateTime.now());
         this.save(task);
         // 异步发送消息通知
-        sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
+         sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
     }
 
     @Override
@@ -1718,6 +1722,7 @@
     }
 
     @Override
+    @Transactional
     public void saveTask(SaveErrorTaskDto dto, Long reportUserId) {
 
         List<XpTask> saveTask = new ArrayList<>();
@@ -1748,6 +1753,10 @@
         }
         this.saveBatch(saveTask);
 
+        for (XpTask task : saveTask) {
+
+            reassign(task.getId(),null);
+        }
     }
 
     @Override

--
Gitblit v1.7.1