diff --git a/src/main/java/com/ruoyi/device/service/impl/DaJiangBufferDeviceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DaJiangBufferDeviceImpl.java index c2afcf0..eeab1aa 100644 --- a/src/main/java/com/ruoyi/device/service/impl/DaJiangBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/DaJiangBufferDeviceImpl.java @@ -239,18 +239,27 @@ public class DaJiangBufferDeviceImpl implements IBufferDeviceService // 根据 ACTIVE 属性和 MODE_CODE 设置机场状态 // 先检查 ACTIVE 属性判断是否离线,只有在线时才通过 MODE_CODE 判断具体状态 // MODE_CODE 定义: {"0":"空闲中","1":"现场调试","2":"远程调试","3":"固件升级中","4":"作业中","5":"待标定"} - Boolean isActive = attributeMap.get(DeviceAttributes.ACTIVE).orElse(false); +// Boolean isActive = attributeMap.get(DeviceAttributes.ACTIVE).orElse(false); +// log.info("大疆机场状态判断 - iotDeviceId: {}, ACTIVE: {}", dockerDeviceIotId, isActive); - if (!isActive) { +// if (!isActive) { // 设备离线 - dto.setDockStatus(DockStatusEnum.OFFLINE.getCode()); - } else { +// dto.setDockStatus(DockStatusEnum.OFFLINE.getCode()); +// log.info("大疆机场判定为离线 - iotDeviceId: {}, 原因: ACTIVE=false", dockerDeviceIotId); +// } else { // 设备在线,根据 MODE_CODE 判断具体状态 attributeMap.get(DeviceAttributes.MODE_CODE).ifPresent(modeCode -> { String dockStatus = mapModeCodeToDockStatus(modeCode); dto.setDockStatus(dockStatus); + log.info("大疆机场状态判断 - iotDeviceId: {}, MODE_CODE: {}, dockStatus: {}", + dockerDeviceIotId, modeCode, dockStatus); }); - } + + // 如果没有 MODE_CODE 属性,记录警告 + if (!attributeMap.get(DeviceAttributes.MODE_CODE).isPresent()) { + log.warn("大疆机场缺少 MODE_CODE 属性 - iotDeviceId: {}, 无法判断具体状态", dockerDeviceIotId); + } +// } // 设置备降点坐标数据 // 备降点经度 diff --git a/src/main/java/com/ruoyi/device/service/impl/SynService.java b/src/main/java/com/ruoyi/device/service/impl/SynService.java index 9813be9..3c8afb9 100644 --- a/src/main/java/com/ruoyi/device/service/impl/SynService.java +++ b/src/main/java/com/ruoyi/device/service/impl/SynService.java @@ -1053,6 +1053,7 @@ public class SynService { // 查询机场是否已存在 Dock existingDock = dockDomain.selectDockByDeviceId(deviceId); + Long dockId; if (existingDock == null) { // 机场不存在,插入新机场 @@ -1063,13 +1064,24 @@ public class SynService { log.info("准备插入新拓恒机场: deviceId={}, dockName={}, SN={}", deviceId, airportId, sn); dockDomain.insertDock(newDock); - log.info("插入新拓恒机场成功: dockId={}", newDock.getDockId()); - - // 确保默认分组存在并加入 - ensureDefaultGroupExists(); - insertDockToDefaultGroup(newDock.getDockId(), airportId); + dockId = newDock.getDockId(); + log.info("插入新拓恒机场成功: dockId={}", dockId); } else { - log.info("拓恒机场已存在: deviceId={}, dockId={}", deviceId, existingDock.getDockId()); + dockId = existingDock.getDockId(); + log.info("拓恒机场已存在: deviceId={}, dockId={}", deviceId, dockId); + } + + // 确保默认分组存在 + ensureDefaultGroupExists(); + + // 检查机场是否在任何分组中(无论新旧机场都检查) + List dockGroups = dockGroupDomain.selectDockGroupByDockId(dockId); + + if (dockGroups == null || dockGroups.isEmpty()) { + // 机场不在任何分组中,将其插入默认分组 + insertDockToDefaultGroup(dockId, airportId); + } else { + log.info("拓恒机场已在分组中: dockId={}, 分组数量={}", dockId, dockGroups.size()); } }