From c86e794fbd49c90a3abd953be65f100de26e24d6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 18 四月 2026 17:39:03 +0800
Subject: [PATCH] [feat] 接收任务,socket推送任务

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 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 1a5cd3e..b2650fd 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
@@ -1,5 +1,6 @@
 package com.xiaopeng.maintenance.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -13,6 +14,7 @@
 import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
 import com.xiaopeng.api.feignClient.account.XpOperationUserNotificationClient;
 import com.xiaopeng.api.feignClient.operation.SmsClient;
+import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
 import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetVehicleClient;
@@ -23,6 +25,7 @@
 import com.xiaopeng.api.model.account.XpOperationsUserNotification;
 import com.xiaopeng.api.model.maintenance.*;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
+import com.xiaopeng.api.vo.TaskVO;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.maintenance.TaskScheduleConstants;
 import com.xiaopeng.api.vo.operation.SmsVo;
@@ -75,6 +78,7 @@
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
@@ -420,6 +424,10 @@
             log.info("事故通知记录保存成功,共 {} 条", notifications.size());
         }
 
+        TaskVO taskVO = new TaskVO();
+        BeanUtil.copyProperties(xpTask, taskVO);
+        xpWebSocketMessageClient.pushTask(taskVO);
+
         Map<Integer, List<XpOperationsUser>> operationUserMap = data.stream()
                 .filter(u -> u.getDeviceType() != null && StringUtils.isNotBlank(u.getPhoneNumber()))
                 .collect(Collectors.groupingBy(XpOperationsUser::getDeviceType));
@@ -428,6 +436,7 @@
         }
     }
 
+    WebSocketMessageClient xpWebSocketMessageClient;
     /**
      * 推送阿里云通知
      *
@@ -1398,7 +1407,7 @@
         task.setHandleUserId(handlerUser);
         if(handlerUser == null) {
             task.setStatus(4);
-            noticeAdministrator(task);
+            noticeAdministrator(task);//TODO 需要通知管理员手动处理,考虑再AliPushUtil 中给管理员发送消息
         }
         updateById(task);
         // 存储事故处理日志
@@ -1462,6 +1471,14 @@
         sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
     }
 
+    @Override
+    @Transactional
+    public void accept(TaskVO taskVO) {
+
+        updateTaskStatus(taskVO.getId(), TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE, Long.valueOf(taskVO.getHandleUserId()));
+        sendAccidentNotificationAsync(getById(taskVO.getId()), taskVO.getPlateNumber(), (int) Duration.between(LocalDateTime.now(),taskVO.getEndTime()).toMinutes());
+    }
+
     @Value("${robotaxi.sms.app-id:1476153389173952512}")
     private String smsAppId;
     @Value("${robotaxi.sms.app-push-config-code:ROBOTAXI_VERIFY_CODE_SMS}")

--
Gitblit v1.7.1