Showing
6 changed files
with
54 additions
and
13 deletions
1 | 1 | package org.thingsboard.server.common.data.yunteng.dto.statistics; |
2 | 2 | |
3 | 3 | import lombok.Data; |
4 | +import org.thingsboard.server.common.data.alarm.AlarmStatus; | |
4 | 5 | |
5 | 6 | /** |
6 | 7 | * @Description : 数据聚合统计对象 |
... | ... | @@ -15,4 +16,22 @@ import lombok.Data; |
15 | 16 | public class AggregationDTO { |
16 | 17 | private String key; |
17 | 18 | private Integer value; |
19 | + private Boolean acknowledged; | |
20 | + private Boolean cleared; | |
21 | + public String getKey(){ | |
22 | + String status = null; | |
23 | + if(!acknowledged&&!cleared){ | |
24 | + status = AlarmStatus.ACTIVE_UNACK.name();//激活未确认 | |
25 | + } | |
26 | + if(acknowledged&&!cleared){ | |
27 | + status = AlarmStatus.ACTIVE_ACK.name();//激活已确认 | |
28 | + } | |
29 | + if(!acknowledged&&cleared){ | |
30 | + status = AlarmStatus.CLEARED_UNACK.name();//清除未确认 | |
31 | + } | |
32 | + if(acknowledged&&cleared){ | |
33 | + status = AlarmStatus.CLEARED_ACK.name();//清除已确认 | |
34 | + } | |
35 | + return status; | |
36 | + } | |
18 | 37 | } | ... | ... |
... | ... | @@ -85,7 +85,8 @@ public class TkAlarmEntity { |
85 | 85 | private String organizationId; |
86 | 86 | private String organizationName; |
87 | 87 | private String deviceAlias; |
88 | - | |
88 | + @TableField(exist = false) | |
89 | + private AlarmStatus status; | |
89 | 90 | public String getStartTs() { |
90 | 91 | return DateTimeUtils.format(this.startTs); |
91 | 92 | } |
... | ... | @@ -109,4 +110,21 @@ public class TkAlarmEntity { |
109 | 110 | public String getUpdatedTime() { |
110 | 111 | return DateTimeUtils.format(this.updatedTime); |
111 | 112 | } |
113 | + | |
114 | + public AlarmStatus getStatus() { | |
115 | + AlarmStatus alarmStatus = null; | |
116 | + if(!acknowledged&&!cleared){ | |
117 | + alarmStatus = AlarmStatus.ACTIVE_UNACK;//激活未确认 | |
118 | + } | |
119 | + if(acknowledged&&!cleared){ | |
120 | + alarmStatus = AlarmStatus.ACTIVE_ACK;//激活已确认 | |
121 | + } | |
122 | + if(!acknowledged&&cleared){ | |
123 | + alarmStatus = AlarmStatus.CLEARED_UNACK;//清除未确认 | |
124 | + } | |
125 | + if(acknowledged&&cleared){ | |
126 | + alarmStatus = AlarmStatus.CLEARED_ACK;//清除已确认 | |
127 | + } | |
128 | + return alarmStatus; | |
129 | + } | |
112 | 130 | } | ... | ... |
... | ... | @@ -305,7 +305,7 @@ public class TkHomePageServiceImpl implements HomePageService { |
305 | 305 | app.setTodayCustomer(today); |
306 | 306 | } |
307 | 307 | |
308 | - List<DeviceDTO> devices = getDeviceInfo(todayFilter); | |
308 | + List<TkDeviceEntity> devices = getDeviceInfo(todayFilter); | |
309 | 309 | AtomicInteger totalOnline = new AtomicInteger(); |
310 | 310 | AtomicInteger totalOffline = new AtomicInteger(); |
311 | 311 | AtomicInteger totalinactive = new AtomicInteger(); |
... | ... | @@ -325,9 +325,9 @@ public class TkHomePageServiceImpl implements HomePageService { |
325 | 325 | totalinactive.incrementAndGet(); |
326 | 326 | break; |
327 | 327 | } |
328 | - | |
329 | - return device.getCreateTime().isAfter(startTime) | |
330 | - && device.getCreateTime().isBefore(endTime); | |
328 | + LocalDateTime createTime = LocalDateTime.ofEpochSecond(device.getCreateTime()/ 1000, 0, ZoneOffset.UTC); | |
329 | + return createTime.isAfter(startTime) | |
330 | + && createTime.isBefore(endTime); | |
331 | 331 | }) |
332 | 332 | .count(); |
333 | 333 | DeviceStatisticsDTO today = new DeviceStatisticsDTO(0); |
... | ... | @@ -354,7 +354,7 @@ public class TkHomePageServiceImpl implements HomePageService { |
354 | 354 | EntityId entityId, LocalDateTime startTime, LocalDateTime endTime) { |
355 | 355 | Map<String, Object> filter = new HashMap<>(); |
356 | 356 | if (entityId != null) { |
357 | - String idStr = entityId.getId().toString(); | |
357 | + UUID idStr = entityId.getId(); | |
358 | 358 | switch (entityId.getEntityType()) { |
359 | 359 | case TENANT: |
360 | 360 | filter.put("tenantId", idStr); |
... | ... | @@ -385,8 +385,8 @@ public class TkHomePageServiceImpl implements HomePageService { |
385 | 385 | * |
386 | 386 | * @param filter 数据过滤参数 |
387 | 387 | */ |
388 | - private List<DeviceDTO> getDeviceInfo(Map<String, Object> filter) { | |
389 | - return deviceMapper.findDevices(filter).stream().map(e->CopyUtils.copyAndReturn(e,new DeviceDTO())).collect(Collectors.toList()); | |
388 | + private List<TkDeviceEntity> getDeviceInfo(Map<String, Object> filter) { | |
389 | + return deviceMapper.findDevices(filter); | |
390 | 390 | } |
391 | 391 | |
392 | 392 | /** | ... | ... |
... | ... | @@ -56,7 +56,8 @@ |
56 | 56 | <result property="organizationName" column="organization_name"/> |
57 | 57 | <result property="description" column="description"/> |
58 | 58 | <result property="isEdge" column="is_edge"/> |
59 | - | |
59 | + <result property="createTime" column="createTime"/> | |
60 | + <result property="updateTime" column="updateTime"/> | |
60 | 61 | |
61 | 62 | <!-- <association property="deviceProfile" column="device_profile_id"--> |
62 | 63 | <!-- javaType="org.thingsboard.server.dao.yunteng.entities.TkDeviceProfileEntity">--> |
... | ... | @@ -272,6 +273,8 @@ |
272 | 273 | io.NAME AS organization_name, |
273 | 274 | attrAt.long_v last_online_time, |
274 | 275 | ifd.customer_id, |
276 | + ifd.created_time as createTime, | |
277 | + ifd.update_time as updateTime, | |
275 | 278 | CASE |
276 | 279 | WHEN attrAt.long_v is null THEN 'INACTIVE' |
277 | 280 | WHEN attrA0.bool_v =true THEN 'ONLINE' | ... | ... |
... | ... | @@ -33,7 +33,8 @@ |
33 | 33 | </resultMap> |
34 | 34 | |
35 | 35 | <resultMap type="org.thingsboard.server.common.data.yunteng.dto.statistics.AggregationDTO" id="aggregationMap"> |
36 | - <result property="key" column="cleared"/> | |
36 | + <result property="acknowledged" column="acknowledged"/> | |
37 | + <result property="cleared" column="cleared"/> | |
37 | 38 | <result property="value" column="value"/> |
38 | 39 | </resultMap> |
39 | 40 | |
... | ... | @@ -103,7 +104,7 @@ |
103 | 104 | </select> |
104 | 105 | |
105 | 106 | <select id="countAlarms" resultMap="aggregationMap"> |
106 | - SELECT cleared , COUNT(m.id) AS value FROM alarm m | |
107 | + SELECT acknowledged,cleared , COUNT(m.id) AS value FROM alarm m | |
107 | 108 | <if test="queryMap.customerId !=null or queryMap.deviceIds !=null "> |
108 | 109 | LEFT JOIN device d ON m.originator_id = d.id |
109 | 110 | </if> |
... | ... | @@ -127,7 +128,7 @@ |
127 | 128 | </foreach> |
128 | 129 | </if> |
129 | 130 | </where> |
130 | - GROUP BY cleared; | |
131 | + GROUP BY acknowledged, cleared; | |
131 | 132 | </select> |
132 | 133 | <select id="getByTbDeviceId" resultType="java.lang.String"> |
133 | 134 | SELECT id FROM alarm where 1=1 | ... | ... |
... | ... | @@ -249,7 +249,7 @@ |
249 | 249 | <where> |
250 | 250 | ro.role_type = 'CUSTOMER_USER' |
251 | 251 | <if test="queryMap.tenantId !=null"> |
252 | - AND u.tenant_id= #{queryMap.tenantId} | |
252 | + AND u.tenant_id= #{queryMap.tenantId}::TEXT | |
253 | 253 | </if> |
254 | 254 | <if test="queryMap.startTime !=null"> |
255 | 255 | AND u.create_time >= #{queryMap.startTime} | ... | ... |