From cb1c303a6cbb95ab8660415fae064d85d874ebcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Wed, 21 Jan 2026 15:47:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96=E6=9C=BA?= =?UTF-8?q?=E5=9C=BA=E7=8A=B6=E6=80=81=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/service/impl/BufferDeviceImpl.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) 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) {