liusuyi
2026-01-21 cf1d094cc68c60d03a7b4bc35a618b392b2bf956
ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java
@@ -21,8 +21,9 @@
    @Resource
    private RedisCache redisCache;
    /* ===================== 1️⃣ 申请控制 ===================== */
    /**
     * 申请控制
     */
    public void sendControlRequest(Long controllerId, String boxSn, String type, Long requesterId) {
        SysUser requester = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + requesterId);
@@ -39,8 +40,9 @@
        WebSocketUtil.sendMessage(controllerId, JSON.toJSONString(base));
    }
    /* ===================== 2️⃣ 同意控制 ===================== */
    /**
     * 同意控制
     */
    public void sendControlApproval(Long requesterId, String boxSn, String type, Long controllerId) {
        SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
@@ -57,8 +59,9 @@
        WebSocketUtil.sendMessage(requesterId, JSON.toJSONString(base));
    }
    /* ===================== 3️⃣ 拒绝控制 ===================== */
    /**
     * 拒绝控制
     */
    public void sendControlRejection(Long requesterId, String boxSn, String type, Long controllerId) {
        SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
@@ -76,24 +79,8 @@
    }
    /**
     * 发送控制释放通知
     * 控制权接管
     */
    public void sendControlRelease(String boxSn, String type, Long operatorId) {
        SysUser operator = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + operatorId);
        UavControlMessage message = new UavControlMessage();
        message.setBoxSn(boxSn);
        message.setType(type);
        message.setAction("release");
        message.setOperatorId(operatorId);
        message.setOperator(operator);
        BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
        WebSocketUtil.sendMessageAll(JSON.toJSONString(baseMessage));
    }
    /* ===================== 4️⃣ 控制权接管 ===================== */
    public void sendControlTakeover(Long oldControllerId, Long newControllerId, String boxSn, String type) {
        SysUser newController = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + newControllerId);
@@ -135,6 +122,23 @@
    }
    /**
     * 控制权释放
     */
    public void sendControlRelease(String boxSn, String type, Long operatorId) {
        SysUser operator = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + operatorId);
        UavControlMessage message = new UavControlMessage();
        message.setBoxSn(boxSn);
        message.setType(type);
        message.setAction("release");
        message.setOperatorId(operatorId);
        message.setOperator(operator);
        BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
        WebSocketUtil.sendMessageAll(JSON.toJSONString(baseMessage));
    }
    /**
     * 获取指定设备的当前操作者信息
     * 该方法重写自父类,用于获取无人机和载荷的当前控制者用户ID
     *