From 9904647f1c38cd06a2a0e190142aad430e722d4c Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Fri, 19 Dec 2025 11:28:02 +0800
Subject: [PATCH] 无人机上线离线通过websocket发送

---
 ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java b/ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java
index bfc6653..7cda171 100644
--- a/ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java
+++ b/ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java
@@ -1,12 +1,17 @@
 package com.ard.work.listener;
 
+import com.ard.work.component.websocket.utils.WebSocketUtil;
 import com.ard.work.domain.event.DeviceStatusEvent;
+import com.ard.work.domain.message.BaseMessage;
 import com.ard.work.service.IArdFlightTaskPartService;
 import lombok.extern.java.Log;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 无人机状态事件监听
@@ -29,10 +34,27 @@
 
         if (isOnline) {
             log.info("设备 {} 已上线", boxSn);
+            sendUavStatus(boxSn, "online");
         } else {
             log.info("设备 {} 已离线", boxSn);
+            sendUavStatus(boxSn, "offline");
             //将剩余轨迹分片数据入库
             ardFlightTaskPartService.flushRemaining(boxSn);
         }
     }
+
+    /**
+     * 发送无人机状态消息到所有客户端
+     */
+    private void sendUavStatus(String boxSn, String status) {
+        BaseMessage<Map<String, Object>> baseMessage = new BaseMessage<>();
+        baseMessage.setType("uav_status");
+
+        Map<String, Object> payload = new HashMap<>();
+        payload.put("boxSn", boxSn);
+        payload.put("status", status);
+
+        baseMessage.setPayload(payload);
+        WebSocketUtil.sendToAll(baseMessage);
+    }
 }

--
Gitblit v1.9.3