diff --git a/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceAttributes.java b/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceAttributes.java index 85517a8..f130dc7 100644 --- a/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceAttributes.java +++ b/src/main/java/com/ruoyi/device/domain/model/thingsboard/tuoheng/constants/TuohengDeviceAttributes.java @@ -135,6 +135,36 @@ public class TuohengDeviceAttributes { value -> value != null ? value.toString() : null ); + /** + * 机场位置属性(手动维护) + */ + + // 机场经度 - Double + public static final AttributeKey HOME_LONGITUDE = AttributeKey.of( + "home.longitude", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + + // 机场纬度 - Double + public static final AttributeKey HOME_LATITUDE = AttributeKey.of( + "home.latitude", + Double.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } + return Double.parseDouble(value.toString()); + } + ); + private TuohengDeviceAttributes() { // 工具类,禁止实例化 } @@ -157,7 +187,9 @@ public class TuohengDeviceAttributes { SOFTWARE_VERSION, HARDWARE_VERSION, SENDER, - DEVICE_ID + DEVICE_ID, + HOME_LONGITUDE, + HOME_LATITUDE ); } diff --git a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java index a29fe3f..0da9d08 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -216,6 +216,19 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { dto.setFirmwareVersion(value); }); + // 设置机场位置(从属性中获取 home.longitude 和 home.latitude) + log.info("---------- 解析机场位置数据 ----------"); + attributes.get(TuohengDeviceAttributes.HOME_LONGITUDE) + .ifPresent(value -> { + log.info("HOME_LONGITUDE 机场经度: {}", value); + dto.setLongitude(value); + }); + attributes.get(TuohengDeviceAttributes.HOME_LATITUDE) + .ifPresent(value -> { + log.info("HOME_LATITUDE 机场纬度: {}", value); + dto.setLatitude(value); + }); + // 设置在线状态 - 基于心跳时间戳判断离线,基于无人机mode判断工作状态 telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresentOrElse(statusValue -> { long lastHeartbeatTime = statusValue.getTimestamp();