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 3c8afb9..9e3fbf9 100644 --- a/src/main/java/com/ruoyi/device/service/impl/SynService.java +++ b/src/main/java/com/ruoyi/device/service/impl/SynService.java @@ -387,10 +387,7 @@ public class SynService { log.warn("机场 {} 没有 sub_device.device_sn 属性,无法建立机场-无人机关联", deviceName); } } else if (deviceType == DeviceType.AIRCRAFT) { - // 无人机:同步无人机表 - syncAircraft(deviceId, deviceName); - - // 获取无人机所属的机场SN号 + // 无人机:先检查是否有 dock_sn 属性 Optional dockSnOpt = attributes.get(DeviceAttributes.DOCK_SN); if (dockSnOpt.isPresent() && StringUtils.hasText(dockSnOpt.get())) { String dockSn = dockSnOpt.get(); @@ -400,13 +397,17 @@ public class SynService { Device dockDevice = findDeviceBySn(dockSn); if (dockDevice != null) { log.info("找到机场设备: dockSn={}, deviceId={}", dockSn, dockDevice.getDeviceId()); + + // 只有在找到机场的情况下,才同步无人机表 + syncAircraft(deviceId, deviceName); + // 建立机场-无人机关联 syncDockAircraft(dockDevice.getDeviceId(), deviceId); } else { - log.warn("未找到机场设备: dockSn={}, 可能机场尚未同步", dockSn); + log.warn("未找到机场设备: dockSn={}, 跳过无人机同步,避免产生脏数据", dockSn); } } else { - log.warn("无人机 {} 没有 dock_sn 属性,无法建立机场-无人机关联", deviceName); + log.warn("无人机 {} 没有 dock_sn 属性,跳过同步,避免产生脏数据", deviceName); } } // 网关类型不需要额外处理