Skip to content

Commit 888f776

Browse files
committed
修复未激活设备无法获取标签信息
1 parent 1794e3d commit 888f776

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.jetlinks.core.Values;
1313
import org.jetlinks.core.device.DeviceOperator;
1414
import org.jetlinks.core.metadata.ConfigPropertyMetadata;
15+
import org.jetlinks.core.metadata.DeviceMetadata;
16+
import org.jetlinks.supports.official.JetLinksDeviceMetadataCodec;
1517
import org.springframework.util.CollectionUtils;
1618
import org.springframework.util.StringUtils;
1719
import reactor.core.publisher.Mono;
@@ -127,9 +129,29 @@ public class DeviceDetail {
127129
public DeviceDetail notActive() {
128130

129131
state = DeviceState.notActive;
132+
initTags();
130133
return this;
131134
}
132135

136+
private DeviceMetadata decodeMetadata() {
137+
if (StringUtils.isEmpty(metadata)) {
138+
return null;
139+
}
140+
return JetLinksDeviceMetadataCodec.getInstance().doDecode(metadata);
141+
}
142+
143+
private void initTags() {
144+
DeviceMetadata metadata = decodeMetadata();
145+
if (null != metadata) {
146+
with(metadata
147+
.getTags()
148+
.stream()
149+
.map(DeviceTagEntity::of)
150+
.collect(Collectors.toList()));
151+
}
152+
}
153+
154+
133155
public Mono<DeviceDetail> with(DeviceOperator operator, List<ConfigPropertyMetadata> configs) {
134156
return Mono
135157
.zip(
@@ -140,7 +162,7 @@ public Mono<DeviceDetail> with(DeviceOperator operator, List<ConfigPropertyMetad
140162
//T3: 离线时间
141163
operator.getOfflineTime().defaultIfEmpty(0L),
142164
//T4: 物模型
143-
operator.getMetadata(),
165+
operator.getMetadata().switchIfEmpty(Mono.fromSupplier(this::decodeMetadata)),
144166
//T5: 真实的配置信息
145167
operator.getSelfConfigs(configs
146168
.stream()

0 commit comments

Comments
 (0)