From 66e7a83f20944f1285bd869110e123564c7f9867 Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期三, 29 四月 2026 14:12:07 +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 |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 47 insertions(+), 2 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 e422737..3d4d383 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
@@ -57,6 +57,7 @@
 import com.xiaopeng.maintenance.utils.UUIDUtil;
 import com.xiaopeng.maintenance.vo.TaskCleanDetailVO;
 import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
+import com.xiaopeng.maintenance.vo.TaskReassignmentVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -155,6 +156,9 @@
     private AliOssService aliOssService;
     @Autowired
     private AliOssDownloadUtil aliOssDownloadUtil;
+
+    @Resource
+    private WebSocketMessageClient xpWebSocketMessageClient;
 
     @Override
     public PageInfo<WorkBenchVO> workbench(WorkBenchQuery query) throws UnsupportedEncodingException {
@@ -437,8 +441,7 @@
         }
     }
 
-    @Resource
-    WebSocketMessageClient xpWebSocketMessageClient;
+
     /**
      * 推送阿里云通知
      *
@@ -2144,4 +2147,46 @@
     }
 
 
+    /**
+     * 任务改派操作
+     * @param vo
+     */
+    @Override
+    public void taskReassignment(TaskReassignmentVo vo) {
+        XpTask xpTask = this.getById(vo.getTaskId());
+        if(null == xpTask){
+            throw new ServiceException("无效的任务", I18nKeyConstant.TASK_NOT_EXIST);
+        }
+        if(2 == xpTask.getReassignmentStatus()){
+            throw new ServiceException("任务已改派,不能重复操作", I18nKeyConstant.TASK_HAS_BEEN_REASSIGNED);
+        }
+        xpTask.setReassignmentStatus(2);
+        xpTask.setHandleUserId(vo.getNewOperationsUserId() + "");
+        xpTask.setStatus(1);
+        this.updateById(xpTask);
+        //推送websocket
+        XpTaskVO xpTaskVO = new XpTaskVO();
+        BeanUtil.copyProperties(xpTask, xpTaskVO);
+        xpWebSocketMessageClient.pushTask(xpTaskVO);
+        boolean isAccidentTask = Integer.valueOf(2).equals(xpTask.getTaskCategory());
+        Long vehicleId = xpTask.getVehicleId();
+        Integer processingTimeLimit = null;
+        String plateNumber = "";
+        if (isAccidentTask) {
+            // 查询规则 任务结束时间从任务分配时开始计算
+            XpTaskRule taskRule = xpTaskRuleMapper.selectOne(null);
+            if (taskRule != null) {
+                processingTimeLimit = taskRule.getProcessingTimeLimit();
+            }
+            if (vehicleId != null) {
+                XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData();
+                if (vehicle != null && StringUtils.isNotBlank(vehicle.getPlateNumber())) {
+                    plateNumber = vehicle.getPlateNumber();
+                }
+            }
+        }
+        if (isAccidentTask && processingTimeLimit != null) {
+            sendAssignedAccidentNotificationAsync(xpTask, Long.valueOf(xpTask.getHandleUserId()), plateNumber, processingTimeLimit);
+        }
+    }
 }

--
Gitblit v1.7.1