liusuyi
2025-12-19 9904647f1c38cd06a2a0e190142aad430e722d4c
无人机上线离线通过websocket发送
1 files modified
22 ■■■■■ changed files
ard-work/src/main/java/com/ard/work/listener/DeviceStatusEventListener.java 22 ●●●●● patch | view | raw | blame | history
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);
    }
}