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 2cbb2b4..2d8922f 100644 --- a/src/main/java/com/ruoyi/device/service/impl/SynService.java +++ b/src/main/java/com/ruoyi/device/service/impl/SynService.java @@ -197,10 +197,15 @@ public class SynService { syncTuohengDevice(childDeviceInfo, gatewayInfo.getId()); } else { // 大疆设备处理逻辑(原有逻辑) + log.info("检测到大疆设备: {}", deviceName); AttributeMap attributes = iThingsBoardDomain.getPredefinedDeviceAttributes(childDeviceId); + log.info("大疆设备 {} 的属性: {}", deviceName, attributes); DeviceType deviceType = determineDeviceType(childDeviceInfo, attributes); + log.info("大疆设备 {} 的类型: {}", deviceName, deviceType); Long deviceId = syncDevice(childDeviceInfo, deviceType, gatewayInfo.getId()); + log.info("大疆设备 {} 同步到device表,deviceId={}", deviceName, deviceId); syncDeviceByType(deviceId, childDeviceInfo.getName(), deviceType, attributes); + log.info("大疆设备 {} 同步完成", deviceName); } totalCount++; @@ -259,6 +264,25 @@ public class SynService { } else if (deviceType == DeviceType.AIRCRAFT) { // 无人机:同步无人机表 syncAircraft(deviceId, deviceName); + + // 获取无人机所属的机场SN号 + Optional dockSnOpt = attributes.get(DeviceAttributes.DOCK_SN); + if (dockSnOpt.isPresent() && StringUtils.hasText(dockSnOpt.get())) { + String dockSn = dockSnOpt.get(); + log.info("无人机 {} 尝试查找所属机场: dockSn={}", deviceName, dockSn); + + // 通过机场SN号查找机场设备 + Device dockDevice = findDeviceBySn(dockSn); + if (dockDevice != null) { + log.info("找到机场设备: dockSn={}, deviceId={}", dockSn, dockDevice.getDeviceId()); + // 建立机场-无人机关联 + syncDockAircraft(dockDevice.getDeviceId(), deviceId); + } else { + log.warn("未找到机场设备: dockSn={}, 可能机场尚未同步", dockSn); + } + } else { + log.warn("无人机 {} 没有 dock_sn 属性,无法建立机场-无人机关联", deviceName); + } } // 网关类型不需要额外处理 }