diff --git a/src/main/java/com/ruoyi/device/service/impl/BufferDeviceImpl.java b/src/main/java/com/ruoyi/device/service/impl/BufferDeviceImpl.java index 02244ad..abe50dd 100644 --- a/src/main/java/com/ruoyi/device/service/impl/BufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/BufferDeviceImpl.java @@ -9,9 +9,11 @@ import com.ruoyi.device.domain.model.Device; import com.ruoyi.device.domain.model.Dock; import com.ruoyi.device.domain.model.thingsboard.AttributeMap; import com.ruoyi.device.domain.model.thingsboard.TelemetryMap; +import com.ruoyi.device.domain.model.thingsboard.constants.DeviceAttributes; import com.ruoyi.device.service.api.IBufferDeviceService; import com.ruoyi.device.service.dto.AircraftDetailDTO; import com.ruoyi.device.service.dto.DockDetailDTO; +import com.ruoyi.device.service.enums.DockStatusEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -83,11 +85,38 @@ public class BufferDeviceImpl implements IBufferDeviceService AttributeMap attributeMap = thingsBoardDomain.getPredefinedDeviceAttributes(deviceIotId); TelemetryMap telemetryMap = thingsBoardDomain.getPredefinedDeviceTelemetry(deviceIotId); - + // 根据 MODE_CODE 设置机场状态 + // MODE_CODE 定义: {"0":"空闲中","1":"现场调试","2":"远程调试","3":"固件升级中","4":"作业中","5":"待标定"} + attributeMap.get(DeviceAttributes.MODE_CODE).ifPresent(modeCode -> { + String dockStatus = mapModeCodeToDockStatus(modeCode); + dto.setDockStatus(dockStatus); + }); return dto; } + /** + * 将 MODE_CODE 映射到机场状态 + * @param modeCode 模式代码 + * @return 机场状态字符串 + */ + private String mapModeCodeToDockStatus(Integer modeCode) { + switch (modeCode) { + case 0: + return DockStatusEnum.IDLE.getCode(); + case 1: + case 2: + return DockStatusEnum.Debugging.getCode(); + case 3: + return DockStatusEnum.FIRMWARE_UPGRADING.getCode(); + case 4: + return DockStatusEnum.WORKING.getCode(); + case 5: + default: + return DockStatusEnum.UNKNOWN.getCode(); + } + } + private AircraftDetailDTO getChangeAbleAirDetailDTO(String deviceIotId) {