From b5859fef802a649d8819fa6a7dd3061ee1bf209d Mon Sep 17 00:00:00 2001 From: huguanghan Date: Fri, 20 Dec 2024 12:40:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5FirstTriggeredCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/cache/domain/DeviceInfoCache.java | 11 ++++++++ .../service/impl/EquipmentCacheImpl.java | 2 ++ .../modules/data/domain/DeviceEventInfo.java | 6 +++++ .../modules/data/service/TDEngineService.java | 25 ++++++++++++++++--- .../modules/event/domain/EventQueryParam.java | 5 ++++ .../event/service/impl/EventServiceImpl.java | 2 +- .../service/impl/NodeMessageServiceImpl.java | 2 ++ 7 files changed, 48 insertions(+), 5 deletions(-) diff --git a/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java b/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java index b7ed5c58..892f7f9b 100644 --- a/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java +++ b/das/src/main/java/com/das/modules/cache/domain/DeviceInfoCache.java @@ -1,5 +1,6 @@ package com.das.modules.cache.domain; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; /** @@ -32,4 +33,14 @@ public class DeviceInfoCache { * 物模型ID */ private Long iotModelId; + + /** + * 制造商 + */ + private String madeinFactory; + + /** + * 型号规格 + */ + private String model; } diff --git a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java index e08ce6fc..2afb4d67 100644 --- a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java +++ b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java @@ -75,6 +75,8 @@ public class EquipmentCacheImpl implements EquipmentCache { if (equipment != null) { DeviceInfoCache deviceInfoCache = new DeviceInfoCache(); deviceInfoCache.setDeviceId(equipment.getId()); + deviceInfoCache.setMadeinFactory(equipment.getMadeinFactory()); + deviceInfoCache.setModel(equipment.getModel()); deviceInfoCache.setDeviceCode(equipment.getCode()); deviceInfoCache.setDeviceName(equipment.getName()); deviceInfoCache.setObjectType(equipment.getObjectType()); diff --git a/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java b/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java index 2ee1b88b..3f705163 100644 --- a/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java +++ b/das/src/main/java/com/das/modules/data/domain/DeviceEventInfo.java @@ -30,4 +30,10 @@ public class DeviceEventInfo { private String deviceCode; private String deviceName; + + private String model; + + private String madeinFactory; + + private Integer firstTriggeredCode; } diff --git a/das/src/main/java/com/das/modules/data/service/TDEngineService.java b/das/src/main/java/com/das/modules/data/service/TDEngineService.java index affaf740..bd7b7efc 100644 --- a/das/src/main/java/com/das/modules/data/service/TDEngineService.java +++ b/das/src/main/java/com/das/modules/data/service/TDEngineService.java @@ -3,6 +3,8 @@ package com.das.modules.data.service; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.StrUtil; import com.das.common.utils.PageDataInfo; +import com.das.modules.cache.domain.DeviceInfoCache; +import com.das.modules.cache.service.CacheService; import com.das.modules.data.domain.DeviceEventInfo; import com.das.modules.data.domain.RTValue; import com.das.modules.equipment.domain.vo.IotModelFieldVo; @@ -12,6 +14,7 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import jakarta.annotation.PreDestroy; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; @@ -45,6 +48,8 @@ public class TDEngineService { @Value("${tdengine.batch-size:10000}") private int batchSize; + @Autowired + private CacheService cacheService; public void init() { if (hikariDataSource == null) { HikariConfig config = new HikariConfig(); @@ -256,7 +261,7 @@ public class TDEngineService { }); //初始化event_info - String eventInfo = "create stable IF NOT EXISTS event_info (event_time timestamp,event_id bigint primary key,attributecode varchar(64),event_type tinyint,event_level tinyint,event_text varchar(256),confirmed tinyint,confirm_account varchar(32),confirm_time timestamp) tags (device_id bigint,device_code varchar(64),device_name varchar(192))"; + String eventInfo = "create stable IF NOT EXISTS event_info (event_time timestamp,event_id bigint primary key,attributecode varchar(64),event_type tinyint,event_level tinyint,event_text varchar(256),confirmed tinyint,confirm_account varchar(32),confirm_time timestamp,first_triggered_code INTEGER) tags (device_id bigint,device_code varchar(64),device_name varchar(192))"; try { pstmt.executeUpdate(eventInfo); } catch (SQLException ex) { @@ -414,6 +419,8 @@ public class TDEngineService { sb.append(dv.getConfirmAccount()); sb.append(","); sb.append(dv.getConfirmTime()); + sb.append(","); + sb.append(dv.getFirstTriggeredCode()); sb.append(")"); } try { @@ -833,7 +840,7 @@ public class TDEngineService { return result; } - public PageDataInfo queryEvent(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList, Integer pageSize, Integer offset, Integer limit) { + public PageDataInfo queryEvent(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList, Integer pageSize, Integer offset, Integer limit,Integer firstTriggeredCode) { List result = new ArrayList<>(); StringBuffer sb = new StringBuffer(2048); Integer total = 0; @@ -842,6 +849,9 @@ public class TDEngineService { if (eventLevel != null) { sb.append(String.format(" and t.event_level = %d", eventLevel)); } + if (firstTriggeredCode != null){ + sb.append(String.format(" and t.first_triggered_code = %d", firstTriggeredCode)); + } if (!CollectionUtils.isEmpty(deviceCodeList)) { sb.append(" and t.device_code in ("); for (int i = 0; i < deviceCodeList.size(); i++) { @@ -864,7 +874,7 @@ public class TDEngineService { } if (pageSize != null) { sb.append(" desc limit ").append(offset).append(",").append(pageSize); - total = getEventCount(eventLevel, startTime, endTime, deviceCodeList); + total = getEventCount(eventLevel, startTime, endTime, deviceCodeList,firstTriggeredCode); } log.debug(sb.toString()); @@ -884,7 +894,11 @@ public class TDEngineService { deviceEventInfo.setConfirmTime(rs.getLong("confirm_time")); deviceEventInfo.setDeviceCode(rs.getString("device_code")); deviceEventInfo.setDeviceId(rs.getString("device_id")); + DeviceInfoCache deviceInfoCache = cacheService.getEquipmentCache().getDeviceInfoCacheById(rs.getLong("device_id")); deviceEventInfo.setDeviceName(rs.getString("device_name")); + deviceEventInfo.setFirstTriggeredCode(rs.getInt("first_triggered_code")); + deviceEventInfo.setMadeinFactory(deviceInfoCache.getMadeinFactory()); + deviceEventInfo.setModel(deviceInfoCache.getModel()); result.add(deviceEventInfo); } } catch (Exception e) { @@ -894,13 +908,16 @@ public class TDEngineService { return PageDataInfo.build(result, total); } - private Integer getEventCount(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList) { + private Integer getEventCount(Integer eventLevel, Long startTime, Long endTime, List deviceCodeList,Integer firstTriggeredCode) { StringBuffer sb = new StringBuffer(2048); sb.append("select count(t.*) as total from event_info t where "); sb.append(String.format(" t.event_time >= %d and t.event_time < %d", startTime, endTime)); if (eventLevel != null) { sb.append(String.format(" and t.event_level = %d", eventLevel)); } + if (firstTriggeredCode != null){ + sb.append(String.format(" and t.first_triggered_code = %d", firstTriggeredCode)); + } if (!CollectionUtils.isEmpty(deviceCodeList)) { sb.append(" and t.device_code in ("); for (int i = 0; i < deviceCodeList.size(); i++) { diff --git a/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java b/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java index 0c280839..8e3ae18f 100644 --- a/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java +++ b/das/src/main/java/com/das/modules/event/domain/EventQueryParam.java @@ -45,4 +45,9 @@ public class EventQueryParam * pageSize */ private Integer pageSize; + + /** + * 首次故障码 + */ + private Integer firstTriggeredCode; } diff --git a/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java b/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java index f26b7483..27021b14 100644 --- a/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java +++ b/das/src/main/java/com/das/modules/event/service/impl/EventServiceImpl.java @@ -34,7 +34,7 @@ public class EventServiceImpl implements EventService { if (param.getPageNum() != null) { offset = (param.getPageNum() - 1) * param.getPageSize(); } - PageDataInfo deviceEventInfos = tdEngineService.queryEvent(param.getEventLevel(), param.getStartTime(), param.getEndTime(), param.getDeviceCode(), param.getPageSize(), offset, param.getLimit()); + PageDataInfo deviceEventInfos = tdEngineService.queryEvent(param.getEventLevel(), param.getStartTime(), param.getEndTime(), param.getDeviceCode(), param.getPageSize(), offset, param.getLimit(),param.getFirstTriggeredCode()); return deviceEventInfos; } diff --git a/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java index 3192ac98..e64b4fe7 100644 --- a/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java +++ b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java @@ -358,6 +358,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node log.info("消息data转化deviceVo,{}", list); for (DeviceEventVo item : list) { DeviceInfoCache deviceInfoCache = cacheService.getEquipmentCache().getDeviceInfoCacheById(Long.valueOf(item.getDeviceId())); + Integer firstTriggeredCode = adminRedisTemplate.get(String.format("RT:%s:%s", item.getDeviceId(), "FirstTriggeredCode".toLowerCase())); DeviceEventInfo deviceEventInfo = new DeviceEventInfo(); deviceEventInfo.setEventTime(item.getEventTime()); deviceEventInfo.setEventId(IdWorker.getId()); @@ -365,6 +366,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node deviceEventInfo.setDeviceId(item.getDeviceId()); deviceEventInfo.setDeviceName(deviceInfoCache.getDeviceName()); deviceEventInfo.setDeviceCode(deviceInfoCache.getDeviceCode()); + deviceEventInfo.setFirstTriggeredCode(firstTriggeredCode); String eventType = getEventType(item.getEventType()); String model = dataService.deviceModelMap.get(item.getDeviceId()); if (StringUtils.isEmpty(model)) { From 7bc12a449ea353c4db798815af1d56f10c9e3664 Mon Sep 17 00:00:00 2001 From: huguanghan Date: Fri, 20 Dec 2024 12:51:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=BC=93=E5=AD=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/das/modules/cache/service/impl/EquipmentCacheImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java index 2afb4d67..5f50a77d 100644 --- a/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java +++ b/das/src/main/java/com/das/modules/cache/service/impl/EquipmentCacheImpl.java @@ -40,6 +40,8 @@ public class EquipmentCacheImpl implements EquipmentCache { deviceInfoCache.setDeviceCode(equipment.getCode()); deviceInfoCache.setDeviceName(equipment.getName()); deviceInfoCache.setObjectType(equipment.getObjectType()); + deviceInfoCache.setModel(equipment.getModel()); + deviceInfoCache.setMadeinFactory(equipment.getMadeinFactory()); deviceInfoCache.setParentDeviceId(equipment.getParentEquipmentId()); deviceInfoCache.setIotModelId(equipment.getIotModelId()); deviceInfoCaches.add(deviceInfoCache); From e8b88343e145c5ceb3563cb33d18c4f595210545 Mon Sep 17 00:00:00 2001 From: huguanghan Date: Fri, 20 Dec 2024 13:14:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=BC=93=E5=AD=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/das/modules/data/service/TDEngineService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/das/src/main/java/com/das/modules/data/service/TDEngineService.java b/das/src/main/java/com/das/modules/data/service/TDEngineService.java index bd7b7efc..172a5075 100644 --- a/das/src/main/java/com/das/modules/data/service/TDEngineService.java +++ b/das/src/main/java/com/das/modules/data/service/TDEngineService.java @@ -1,6 +1,7 @@ package com.das.modules.data.service; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.das.common.utils.PageDataInfo; import com.das.modules.cache.domain.DeviceInfoCache; @@ -896,7 +897,7 @@ public class TDEngineService { deviceEventInfo.setDeviceId(rs.getString("device_id")); DeviceInfoCache deviceInfoCache = cacheService.getEquipmentCache().getDeviceInfoCacheById(rs.getLong("device_id")); deviceEventInfo.setDeviceName(rs.getString("device_name")); - deviceEventInfo.setFirstTriggeredCode(rs.getInt("first_triggered_code")); + deviceEventInfo.setFirstTriggeredCode(ObjectUtil.isEmpty(rs.getString("first_triggered_code")) ? null : Integer.valueOf(rs.getString("first_triggered_code"))); deviceEventInfo.setMadeinFactory(deviceInfoCache.getMadeinFactory()); deviceEventInfo.setModel(deviceInfoCache.getModel()); result.add(deviceEventInfo);