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 | 180 | /**遥测指标标识符*/ |
181 | 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 | 187 | public static String PREDICATE = "logic"; |
186 | 188 | /**触发器*/ | ... | ... |
... | ... | @@ -119,48 +119,51 @@ class ReactState { |
119 | 119 | ytDeviceService.findTbDeviceIdsByDeviceProfileId( |
120 | 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 | 196 | fresh = true; |
194 | 197 | } |
195 | 198 | ObjectNode result = conditionState.process(ctx, msg, fresh); |
196 | - log.warn( | |
199 | + log.debug( | |
197 | 200 | String.format( |
198 | 201 | "执行器【%s】刷新【%s】结果【%s】执行器设备【%s】数据设备【%s】数据内容【%s】", |
199 | 202 | condition.getId(), |
... | ... | @@ -203,7 +206,7 @@ class ReactState { |
203 | 206 | msg.getOriginator(), |
204 | 207 | msg.getData())); |
205 | 208 | if (!result.isEmpty()) { |
206 | - detail.set(FastIotConstants.Alarm.CONDITION,result); | |
209 | + detail.set(devId,result); | |
207 | 210 | return true; |
208 | 211 | } |
209 | 212 | } catch (ExecutionException e) { |
... | ... | @@ -217,7 +220,7 @@ class ReactState { |
217 | 220 | }); |
218 | 221 | |
219 | 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 | 224 | for (TkDoActionEntity item : actions) { |
222 | 225 | if (ActionTypeEnum.MSG_NOTIFY.equals(item.getOutTarget())) { |
223 | 226 | noticeMsg(ctx, msg, item, deviceId, detail, msg.getTs()); | ... | ... |
... | ... | @@ -362,7 +362,8 @@ public class TriggerRuleState { |
362 | 362 | if (predicateValue == null) { |
363 | 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 | 367 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
367 | 368 | switch (predicate.getOperation()) { |
368 | 369 | case EQUAL: |
... | ... | @@ -383,7 +384,8 @@ public class TriggerRuleState { |
383 | 384 | if (predicateValue == null) { |
384 | 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 | 389 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
388 | 390 | switch (predicate.getOperation()) { |
389 | 391 | case NOT_EQUAL: |
... | ... | @@ -416,7 +418,8 @@ public class TriggerRuleState { |
416 | 418 | val = val.toLowerCase(); |
417 | 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 | 423 | detailInform.put(FastIotConstants.Alarm.PREDICATE,predicate.getOperation().toString()); |
421 | 424 | switch (predicate.getOperation()) { |
422 | 425 | case CONTAINS: | ... | ... |