From d317f37ee46daec1cebb9bfbf27325e9ab85ce94 Mon Sep 17 00:00:00 2001 From: zhou-hao Date: Thu, 28 Jan 2021 15:35:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=A0=87=E7=AD=BE=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/entity/DeviceTagEntity.java | 17 +++++++++++++++++ .../service/DeviceMessageBusinessHandler.java | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/DeviceTagEntity.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/DeviceTagEntity.java index ed9f7720..ca2f8b88 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/DeviceTagEntity.java +++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/DeviceTagEntity.java @@ -11,6 +11,8 @@ import org.hswebframework.web.api.crud.entity.GenericEntity; import org.hswebframework.web.crud.annotation.EnableEntityEvent; import org.hswebframework.web.crud.generator.Generators; import org.hswebframework.web.validator.CreateGroup; +import org.jetlinks.core.metadata.Converter; +import org.jetlinks.core.metadata.DataType; import org.jetlinks.core.metadata.PropertyMetadata; import javax.persistence.Column; @@ -73,6 +75,21 @@ public class DeviceTagEntity extends GenericEntity { return entity; } + public static DeviceTagEntity of(PropertyMetadata property, Object value) { + DeviceTagEntity tag = of(property); + + DataType type = property.getValueType(); + if (type instanceof Converter) { + Object newValue = ((Converter) type).convert(value); + if (newValue != null) { + value = newValue; + } + } + tag.setValue(String.valueOf(value)); + return tag; + } + + public static String createTagId(String deviceId, String key) { return DigestUtils.md5Hex(deviceId + ":" + key); } diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java index 2b6dee04..a5fe8621 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java +++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceMessageBusinessHandler.java @@ -163,7 +163,7 @@ public class DeviceMessageBusinessHandler { .map(e -> { DeviceTagEntity tagEntity = metadata .getTag(e.getKey()) - .map(DeviceTagEntity::of) + .map(tagMeta -> DeviceTagEntity.of(tagMeta, e.getValue())) .orElseGet(() -> { DeviceTagEntity entity = new DeviceTagEntity(); entity.setKey(e.getKey()); @@ -171,9 +171,9 @@ public class DeviceMessageBusinessHandler { entity.setName(e.getKey()); entity.setCreateTime(new Date()); entity.setDescription("设备上报"); + entity.setValue(String.valueOf(e.getValue())); return entity; }); - tagEntity.setValue(String.valueOf(e.getValue())); tagEntity.setDeviceId(deviceId); tagEntity.setId(DeviceTagEntity.createTagId(deviceId, tagEntity.getKey())); return tagEntity;