diff --git a/src/main/java/com/xydl/model/AssetItem.java b/src/main/java/com/xydl/model/AssetItem.java index ce9ad6f..6b6afb9 100644 --- a/src/main/java/com/xydl/model/AssetItem.java +++ b/src/main/java/com/xydl/model/AssetItem.java @@ -22,18 +22,25 @@ public class AssetItem { public static AssetItem fromData(Map map, String timeField, I2relation relation, List fieldList) { - AssetItem root = new AssetItem(); - root.setAssetCode(relation.getSensorid()); + List list = new ArrayList<>(); for (SyncFieldsInfo field : fieldList) { if (relation.getSensorindex().equals(field.getSensorindex())) { AttributeItem item = AttributeItem.fromData(map, field); - list.add(item); + if (item != null) { + list.add(item); + } } } - root.setAttributeList(list); - LocalDateTime time = (LocalDateTime) map.get(timeField); - root.setTimestamp(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); - return root; + if (list.size() > 0) { + AssetItem root = new AssetItem(); + root.setAssetCode(relation.getSensorid()); + root.setAttributeList(list); + LocalDateTime time = (LocalDateTime) map.get(timeField); + root.setTimestamp(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return root; + } else { + return null; + } } } diff --git a/src/main/java/com/xydl/model/AssetList.java b/src/main/java/com/xydl/model/AssetList.java index 073f8e0..a101db6 100644 --- a/src/main/java/com/xydl/model/AssetList.java +++ b/src/main/java/com/xydl/model/AssetList.java @@ -16,18 +16,22 @@ public class AssetList { public static AssetList fromData(List> dataList, String timeField, List relationList, List fieldList) { - AssetList root = new AssetList(); + List list = new ArrayList<>(); - if (relationList.size() > 1){ - int a = 1; - } for (Map map : dataList) { for (I2relation relation : relationList) { AssetItem item = AssetItem.fromData(map, timeField, relation, fieldList); - list.add(item); + if (item != null) { + list.add(item); + } } } - root.setAssetList(list); - return root; + if (list.size() > 0) { + AssetList root = new AssetList(); + root.setAssetList(list); + return root; + } else { + return null; + } } } diff --git a/src/main/java/com/xydl/model/AttributeItem.java b/src/main/java/com/xydl/model/AttributeItem.java index 5782fc6..0759b7c 100644 --- a/src/main/java/com/xydl/model/AttributeItem.java +++ b/src/main/java/com/xydl/model/AttributeItem.java @@ -14,9 +14,14 @@ public class AttributeItem { Object dataValue; public static AttributeItem fromData(Map map, SyncFieldsInfo field) { - AttributeItem root = new AttributeItem(); - root.setAttributeCode(field.getDestFieldName()); - root.setDataValue(map.get(field.getFieldName())); - return root; + Object value = map.get(field.getFieldName()); + if (value != null) { + AttributeItem root = new AttributeItem(); + root.setAttributeCode(field.getDestFieldName()); + root.setDataValue(value); + return root; + } else { + return null; + } } } diff --git a/src/main/java/com/xydl/service/MqttService.java b/src/main/java/com/xydl/service/MqttService.java index bd6867f..f50df51 100644 --- a/src/main/java/com/xydl/service/MqttService.java +++ b/src/main/java/com/xydl/service/MqttService.java @@ -110,8 +110,10 @@ public class MqttService { } else { count = dataList.size(); AssetList assetList = AssetList.fromData(dataList, table.getFieldName(), relationList, fieldList); - String json = JSONUtil.object2Json(assetList); - mqttUtil.publish2MQTT(json); + if (assetList != null) { + String json = JSONUtil.object2Json(assetList); + mqttUtil.publish2MQTT(json); + } Map lastMap = dataList.get(count - 1); LocalDateTime locdate = (LocalDateTime) lastMap.get(table.getFieldName());