Переглянути джерело

修复无法转换非条件中属性值问题

zhouhao 3 роки тому
батько
коміт
da7e8093cf

+ 15 - 9
jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/device/DeviceAlarmRule.java

@@ -225,16 +225,22 @@ public class DeviceAlarmRule implements Serializable {
         private List<ConditionFilter> filters;
 
         public Set<String> toColumns() {
+            Set<String> columns = new LinkedHashSet<>();
+            columns.add(type.getPropertyPrefix() + "this $this");
+
+            if (StringUtils.hasText(modelId)) {
+                //this.properties.this['temp'] temp
+                columns.add(
+                    type.getPropertyPrefix() + "this['" + modelId + "'] \"" + modelId + "\""
+                );
+            }
+            if (!CollectionUtils.isEmpty(filters)) {
+                for (ConditionFilter filter : filters) {
+                    columns.add(filter.getColumn(type));
+                }
+            }
 
-            return Stream.concat(
-                             (StringUtils.hasText(modelId)
-                                 ? Collections.singleton(type.getPropertyPrefix() + "this['" + modelId + "'] \"" + modelId + "\"")
-                                 : Collections.<String>emptySet()).stream(),
-                             (CollectionUtils.isEmpty(filters)
-                                 ? Stream.<ConditionFilter>empty()
-                                 : filters.stream())
-                                 .map(filter -> filter.getColumn(type)))
-                         .collect(Collectors.toSet());
+            return columns;
         }
 
         public List<Object> toFilterBinds() {