Commit 4e028640cbbf7f4f667ddb74b271ca34099fe1d7
1 parent
9dc13b91
fix(DEFECT-1505): 场景联动问题修复
1、修复触发器逻辑问题 2、告警详情内容调整
Showing
3 changed files
with
57 additions
and
49 deletions
@@ -180,7 +180,9 @@ public interface FastIotConstants { | @@ -180,7 +180,9 @@ public interface FastIotConstants { | ||
180 | /**遥测指标标识符*/ | 180 | /**遥测指标标识符*/ |
181 | public static String KEY = "key"; | 181 | public static String KEY = "key"; |
182 | /**遥测指标值*/ | 182 | /**遥测指标值*/ |
183 | - public static String VALUE = "value"; | 183 | + public static String VALUE = "realValue"; |
184 | + /**遥测指标值*/ | ||
185 | + public static String PREDICATE_VALUE = "logicValue"; | ||
184 | /**触发器逻辑关系*/ | 186 | /**触发器逻辑关系*/ |
185 | public static String PREDICATE = "logic"; | 187 | public static String PREDICATE = "logic"; |
186 | /**触发器*/ | 188 | /**触发器*/ |
@@ -119,48 +119,51 @@ class ReactState { | @@ -119,48 +119,51 @@ class ReactState { | ||
119 | ytDeviceService.findTbDeviceIdsByDeviceProfileId( | 119 | ytDeviceService.findTbDeviceIdsByDeviceProfileId( |
120 | tkProjectId, trigger.getTenantId()); | 120 | tkProjectId, trigger.getTenantId()); |
121 | } | 121 | } |
122 | - triggerMatched.set( | ||
123 | - trifggerDevices.stream() | ||
124 | - .anyMatch( | ||
125 | - devId -> { | ||
126 | - TriggerState triggerState = | ||
127 | - getOrCreateTriggerState(trigger, tkProjectId, devId); | ||
128 | - if (triggerState == null) { | ||
129 | - return false; | ||
130 | - } | ||
131 | - try { | ||
132 | - boolean fresh = false; | ||
133 | - if (trigger.getId().equals(prefixId) | ||
134 | - && msg.getOriginator().getId().toString().equals(devId)) { | ||
135 | - fresh = true; | ||
136 | - } | ||
137 | - ObjectNode result = triggerState.process(ctx, msg, fresh); | ||
138 | - log.error( | ||
139 | - String.format( | ||
140 | - "触发器【%s】刷新【%s】结果【%s】触发器设备【%s】数据设备【%s】数据内容【%s】", | ||
141 | - trigger.getId(), | ||
142 | - fresh, | ||
143 | - result, | ||
144 | - devId, | ||
145 | - msg.getOriginator(), | ||
146 | - msg.getData())); | ||
147 | - if (!result.isEmpty()) { | ||
148 | - detail.set(FastIotConstants.Alarm.TRIGGER,result); | ||
149 | - return true; | ||
150 | - } else if (currentAlarms.containsKey(deviceId)) { | ||
151 | - // 清除设备告警 | ||
152 | - for (AlarmConditionFilterKey entityKey : | ||
153 | - triggerState.getEntityKeys()) { | ||
154 | - clearAlarm(ctx, msg, deviceId, entityKey.getKey()); | ||
155 | - } | ||
156 | - } | ||
157 | - } catch (ExecutionException e) { | ||
158 | - throw new RuntimeException(e); | ||
159 | - } catch (InterruptedException e) { | ||
160 | - throw new RuntimeException(e); | ||
161 | - } | ||
162 | - return false; | ||
163 | - })); | 122 | + boolean matched = |
123 | + trifggerDevices.stream() | ||
124 | + .anyMatch( | ||
125 | + devId -> { | ||
126 | + TriggerState triggerState = | ||
127 | + getOrCreateTriggerState(trigger, tkProjectId, devId); | ||
128 | + if (triggerState == null) { | ||
129 | + return false; | ||
130 | + } | ||
131 | + try { | ||
132 | + boolean fresh = false; | ||
133 | + if (trigger.getId().equals(prefixId) | ||
134 | + && msg.getOriginator().getId().toString().equals(devId)) { | ||
135 | + fresh = true; | ||
136 | + } | ||
137 | + ObjectNode result = triggerState.process(ctx, msg, fresh); | ||
138 | + log.error( | ||
139 | + String.format( | ||
140 | + "触发器【%s】刷新【%s】结果【%s】触发器设备【%s】数据设备【%s】数据内容【%s】", | ||
141 | + trigger.getId(), | ||
142 | + fresh, | ||
143 | + result, | ||
144 | + devId, | ||
145 | + msg.getOriginator(), | ||
146 | + msg.getData())); | ||
147 | + if (!result.isEmpty()) { | ||
148 | + detail.set(devId,result); | ||
149 | + return true; | ||
150 | + } else if (currentAlarms.containsKey(deviceId)) { | ||
151 | + // 清除设备告警 | ||
152 | + for (AlarmConditionFilterKey entityKey : | ||
153 | + triggerState.getEntityKeys()) { | ||
154 | + clearAlarm(ctx, msg, deviceId, entityKey.getKey()); | ||
155 | + } | ||
156 | + } | ||
157 | + } catch (ExecutionException e) { | ||
158 | + throw new RuntimeException(e); | ||
159 | + } catch (InterruptedException e) { | ||
160 | + throw new RuntimeException(e); | ||
161 | + } | ||
162 | + return false; | ||
163 | + }); | ||
164 | + if(matched){ | ||
165 | + triggerMatched.set(matched); | ||
166 | + } | ||
164 | }); | 167 | }); |
165 | }); | 168 | }); |
166 | 169 | ||
@@ -193,7 +196,7 @@ class ReactState { | @@ -193,7 +196,7 @@ class ReactState { | ||
193 | fresh = true; | 196 | fresh = true; |
194 | } | 197 | } |
195 | ObjectNode result = conditionState.process(ctx, msg, fresh); | 198 | ObjectNode result = conditionState.process(ctx, msg, fresh); |
196 | - log.warn( | 199 | + log.debug( |
197 | String.format( | 200 | String.format( |
198 | "执行器【%s】刷新【%s】结果【%s】执行器设备【%s】数据设备【%s】数据内容【%s】", | 201 | "执行器【%s】刷新【%s】结果【%s】执行器设备【%s】数据设备【%s】数据内容【%s】", |
199 | condition.getId(), | 202 | condition.getId(), |
@@ -203,7 +206,7 @@ class ReactState { | @@ -203,7 +206,7 @@ class ReactState { | ||
203 | msg.getOriginator(), | 206 | msg.getOriginator(), |
204 | msg.getData())); | 207 | msg.getData())); |
205 | if (!result.isEmpty()) { | 208 | if (!result.isEmpty()) { |
206 | - detail.set(FastIotConstants.Alarm.CONDITION,result); | 209 | + detail.set(devId,result); |
207 | return true; | 210 | return true; |
208 | } | 211 | } |
209 | } catch (ExecutionException e) { | 212 | } catch (ExecutionException e) { |
@@ -217,7 +220,7 @@ class ReactState { | @@ -217,7 +220,7 @@ class ReactState { | ||
217 | }); | 220 | }); |
218 | 221 | ||
219 | if (triggerMatched.get() && conditionMatched.get()) { | 222 | if (triggerMatched.get() && conditionMatched.get()) { |
220 | - log.error(String.format("设备【%s】的消息内容【%s】触发动作", deviceId, msg.getData())); | 223 | + log.debug(String.format("设备【%s】的消息内容【%s】触发动作", deviceId, msg.getData())); |
221 | for (TkDoActionEntity item : actions) { | 224 | for (TkDoActionEntity item : actions) { |
222 | if (ActionTypeEnum.MSG_NOTIFY.equals(item.getOutTarget())) { | 225 | if (ActionTypeEnum.MSG_NOTIFY.equals(item.getOutTarget())) { |
223 | noticeMsg(ctx, msg, item, deviceId, detail, msg.getTs()); | 226 | noticeMsg(ctx, msg, item, deviceId, detail, msg.getTs()); |
@@ -362,7 +362,8 @@ public class TriggerRuleState { | @@ -362,7 +362,8 @@ public class TriggerRuleState { | ||
362 | if (predicateValue == null) { | 362 | if (predicateValue == null) { |
363 | return false; | 363 | return false; |
364 | } | 364 | } |
365 | - detailInform.put(FastIotConstants.Alarm.VALUE,predicateValue); | 365 | + detailInform.put(FastIotConstants.Alarm.VALUE,val); |
366 | + detailInform.put(FastIotConstants.Alarm.PREDICATE_VALUE,predicateValue); | ||
366 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); | 367 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
367 | switch (predicate.getOperation()) { | 368 | switch (predicate.getOperation()) { |
368 | case EQUAL: | 369 | case EQUAL: |
@@ -383,7 +384,8 @@ public class TriggerRuleState { | @@ -383,7 +384,8 @@ public class TriggerRuleState { | ||
383 | if (predicateValue == null) { | 384 | if (predicateValue == null) { |
384 | return false; | 385 | return false; |
385 | } | 386 | } |
386 | - detailInform.put(FastIotConstants.Alarm.VALUE,predicateValue); | 387 | + detailInform.put(FastIotConstants.Alarm.VALUE,val); |
388 | + detailInform.put(FastIotConstants.Alarm.PREDICATE_VALUE,predicateValue); | ||
387 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); | 389 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
388 | switch (predicate.getOperation()) { | 390 | switch (predicate.getOperation()) { |
389 | case NOT_EQUAL: | 391 | case NOT_EQUAL: |
@@ -416,7 +418,8 @@ public class TriggerRuleState { | @@ -416,7 +418,8 @@ public class TriggerRuleState { | ||
416 | val = val.toLowerCase(); | 418 | val = val.toLowerCase(); |
417 | predicateValue = predicateValue.toLowerCase(); | 419 | predicateValue = predicateValue.toLowerCase(); |
418 | } | 420 | } |
419 | - detailInform.put(FastIotConstants.Alarm.VALUE,predicateValue); | 421 | + detailInform.put(FastIotConstants.Alarm.VALUE,val); |
422 | + detailInform.put(FastIotConstants.Alarm.PREDICATE_VALUE,predicateValue); | ||
420 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); | 423 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
421 | switch (predicate.getOperation()) { | 424 | switch (predicate.getOperation()) { |
422 | case CONTAINS: | 425 | case CONTAINS: |