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 bc3e6ee..823598c 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 @@ -266,6 +266,53 @@ public class TuohengDeviceAttributes { } ); + /** + * 飞行限制属性(手动维护) + */ + + // 最大飞行高度(米) - Integer + public static final AttributeKey MAX_ALTITUDE = AttributeKey.of( + "maxAltitude", + Integer.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).intValue(); + } + return Integer.parseInt(value.toString()); + } + ); + + // 最大飞行距离(米) - Integer + public static final AttributeKey MAX_DISTANCE = AttributeKey.of( + "maxDistance", + Integer.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).intValue(); + } + return Integer.parseInt(value.toString()); + } + ); + + /** + * 飞行数据属性(手动维护) + */ + + // 飞行时长(秒) - Integer + public static final AttributeKey FLIGHT_DURATION = AttributeKey.of( + "flightDuration", + Integer.class, + value -> { + if (value == null) return null; + if (value instanceof Number) { + return ((Number) value).intValue(); + } + return Integer.parseInt(value.toString()); + } + ); + private TuohengDeviceAttributes() { // 工具类,禁止实例化 } @@ -297,7 +344,10 @@ public class TuohengDeviceAttributes { MISSION_COUNT, AIR_CONDITIONER_STATUS, ENVIRONMENT_TEMPERATURE, - ENVIRONMENT_HUMIDITY + ENVIRONMENT_HUMIDITY, + MAX_ALTITUDE, + MAX_DISTANCE, + FLIGHT_DURATION ); } diff --git a/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java b/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java index c1f9774..4e07fc5 100644 --- a/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java +++ b/src/main/java/com/ruoyi/device/service/dto/DockDetailDTO.java @@ -114,8 +114,8 @@ public class DockDetailDTO implements Serializable /** 舱门状态 */ private String cabinDoorStatus; -// /** 机场运行状态 */ -// private String dockRunStatus; + /** 机场运行状态 */ + private String dockRunStatus; /** 舱内摄像头 */ private String internalCamera; 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 47af81b..c98b718 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -607,9 +607,12 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { dto.setAircraftStatus(aircraftStatus); - // 设置作业架次 - 暂时设置为0 - dto.setMissionCount(0); - log.info("设置作业架次: 0"); + // 设置作业架次(从属性中获取,取不到则默认为 0) + log.info("---------- 解析作业架次 ----------"); + Integer missionCount = attributes.get(TuohengDeviceAttributes.MISSION_COUNT) + .orElse(0); + log.info("MISSION_COUNT 作业架次: {}", missionCount); + dto.setMissionCount(missionCount); // 设置GPS信号 log.info("---------- 解析GPS数据 ----------"); @@ -661,13 +664,37 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { dto.setCycleCount(value.getValue()); }); - // 设置飞行时长(秒) + // 设置飞行时长(从属性中获取,取不到则默认为 null) log.info("---------- 解析飞行数据 ----------"); - telemetry.get(TuohengDeviceTelemetry.FLIGHT_TIME) - .ifPresent(value -> { - log.info("FLIGHT_TIME 飞行时长(秒): {}", value.getValue()); - dto.setFlightDuration(value.getValue()); - }); + Integer flightDuration = attributes.get(TuohengDeviceAttributes.FLIGHT_DURATION) + .orElse(null); + if (flightDuration != null) { + log.info("FLIGHT_DURATION 飞行时长: {} 秒", flightDuration); + dto.setFlightDuration(flightDuration); + } else { + log.info("FLIGHT_DURATION 未设置"); + } + + // 设置最大飞行高度(从属性中获取,取不到则默认为 null) + log.info("---------- 解析飞行限制 ----------"); + Integer maxAltitude = attributes.get(TuohengDeviceAttributes.MAX_ALTITUDE) + .orElse(null); + if (maxAltitude != null) { + log.info("MAX_ALTITUDE 最大飞行高度: {} 米", maxAltitude); + dto.setMaxAltitude(maxAltitude); + } else { + log.info("MAX_ALTITUDE 未设置"); + } + + // 设置最大飞行距离(从属性中获取,取不到则默认为 null) + Integer maxDistance = attributes.get(TuohengDeviceAttributes.MAX_DISTANCE) + .orElse(null); + if (maxDistance != null) { + log.info("MAX_DISTANCE 最大飞行距离: {} 米", maxDistance); + dto.setMaxDistance(maxDistance); + } else { + log.info("MAX_DISTANCE 未设置"); + } log.info("拓恒无人机详情填充完成: iotDeviceId={}, aircraftStatus={}", iotDeviceId, dto.getAircraftStatus()); log.info("========== 拓恒无人机详情填充结束 ==========");