zhaowenyu
2025-12-06 f3de8ac216bfc05348222e2b963ef3629358ae62
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DockOSDServiceImpl.java
@@ -1,5 +1,7 @@
package com.ard.sample.manage.service.impl;
import com.ard.common.core.redis.RedisConst;
import com.ard.common.core.redis.RedisOpsUtils;
import com.ard.sample.component.mqtt.model.CommonTopicReceiver;
import com.ard.sample.component.websocket.config.ConcurrentWebSocketSession;
import com.ard.sample.component.websocket.enums.MessageType;
@@ -66,6 +68,7 @@
                            //只要状态 "0":"作业准备中","1":"飞行作业中","5":"任务空闲"
                            if(code == 0 || code == 1 || code == 5) {
                                _deviceService.updateWorkType(deviceSn,code);
                                RedisOpsUtils.setWithExpire(RedisConst.OSD_STATUS_PREFIX + deviceSn, code, RedisConst.DEVICE_ALIVE_SECOND);
                            }
                        }
                    }
@@ -73,12 +76,14 @@
                } else if (dockOsdData.contains("network_state")) {
                    JsonNode jsonNode = mapper.readTree(dockOsdData);
                    if (jsonNode.has("drone_in_dock") && jsonNode.get("sub_device").has("device_online_status")) {
                        String childDeviceSn=jsonNode.get("sub_device").get("device_sn").asText();
                        Long inDock=jsonNode.get("drone_in_dock").asLong();
                        Long deviceOnlineStatus=jsonNode.get("sub_device").get("device_online_status").asLong();
                        if(inDock.equals(1L) && deviceOnlineStatus.equals(0L))
                        {// 飞行器在舱内且关机状态为6
                            _deviceService.updateWorkType(childDeviceSn,6L);
                        if(jsonNode.get("sub_device").has("device_sn")) {
                            String childDeviceSn = jsonNode.get("sub_device").get("device_sn").asText();
                            Long inDock = jsonNode.get("drone_in_dock").asLong();
                            Long deviceOnlineStatus = jsonNode.get("sub_device").get("device_online_status").asLong();
                            if (inDock.equals(1L) && deviceOnlineStatus.equals(0L)) {// 飞行器在舱内且关机状态为6
                                _deviceService.updateWorkType(childDeviceSn, 6L);
                                RedisOpsUtils.setWithExpire(RedisConst.OSD_STATUS_PREFIX + device.getChildDeviceSn(), 6, RedisConst.DEVICE_ALIVE_SECOND);
                            }
                        }
                    }
                    receiver.setType(MessageType.STATUS.getType()+"-network");