From 888f77612426c8a9ccb83147a8895a6b8c08e983 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 13 Jan 2022 11:09:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E6=BF=80=E6=B4=BB?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/response/DeviceDetail.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java index a0e9c227..3b4ca5d6 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java +++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java @@ -12,6 +12,8 @@ import org.jetlinks.community.device.enums.DeviceType; import org.jetlinks.core.Values; import org.jetlinks.core.device.DeviceOperator; import org.jetlinks.core.metadata.ConfigPropertyMetadata; +import org.jetlinks.core.metadata.DeviceMetadata; +import org.jetlinks.supports.official.JetLinksDeviceMetadataCodec; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import reactor.core.publisher.Mono; @@ -127,9 +129,29 @@ public class DeviceDetail { public DeviceDetail notActive() { state = DeviceState.notActive; + initTags(); return this; } + private DeviceMetadata decodeMetadata() { + if (StringUtils.isEmpty(metadata)) { + return null; + } + return JetLinksDeviceMetadataCodec.getInstance().doDecode(metadata); + } + + private void initTags() { + DeviceMetadata metadata = decodeMetadata(); + if (null != metadata) { + with(metadata + .getTags() + .stream() + .map(DeviceTagEntity::of) + .collect(Collectors.toList())); + } + } + + public Mono with(DeviceOperator operator, List configs) { return Mono .zip( @@ -140,7 +162,7 @@ public class DeviceDetail { //T3: 离线时间 operator.getOfflineTime().defaultIfEmpty(0L), //T4: 物模型 - operator.getMetadata(), + operator.getMetadata().switchIfEmpty(Mono.fromSupplier(this::decodeMetadata)), //T5: 真实的配置信息 operator.getSelfConfigs(configs .stream()