diff --git a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/SceneUtils.java b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/SceneUtils.java index b3010e3f..e1b330cc 100644 --- a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/SceneUtils.java +++ b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/SceneUtils.java @@ -219,15 +219,32 @@ public class SceneUtils { } } - public static void refactorUpperKey(DeviceSelectorSpec deviceSelectorSpec) { + @SuppressWarnings("all") + public static void refactorUpperKey(Object source) { // 将变量格式改为与查询的别名一致 - if (VariableSource.Source.upper.equals(deviceSelectorSpec.getSource())) { - // scene.xx.current -> scene.scene_xx_current - if (deviceSelectorSpec.getUpperKey().startsWith("scene.")) { - String alias = SceneUtils.createColumnAlias("properties", deviceSelectorSpec.getUpperKey(), false); - deviceSelectorSpec.setUpperKey("scene." + alias); + if (source instanceof VariableSource) { + VariableSource variableSource = (VariableSource) source; + if (VariableSource.Source.upper.equals(variableSource.getSource())) { + variableSource.setUpperKey(transferSceneUpperKey(variableSource.getUpperKey())); } } + if (source instanceof Map) { + Map map = (Map) source; + VariableSource variableSource = VariableSource.of(source); + // 将变量格式改为与查询的别名一致 + if (VariableSource.Source.upper.equals(variableSource.getSource())) { + map.put("upperKey", transferSceneUpperKey(variableSource.getUpperKey())); + } + } + } + + public static String transferSceneUpperKey(String upperKey) { + // scene.xx.current -> scene.scene_xx_current + if (upperKey.startsWith("scene.")) { + String alias = SceneUtils.createColumnAlias("scene", upperKey, false); + return "scene." + alias; + } + return upperKey; } private static boolean isContainThis(String[] arr) { diff --git a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/Variable.java b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/Variable.java index dcb3fbef..61de7001 100644 --- a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/Variable.java +++ b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/Variable.java @@ -148,11 +148,13 @@ public class Variable { } public void refactorPrefix(Variable main) { + id = SceneUtils.transferSceneUpperKey(id); if (CollectionUtils.isNotEmpty(children)) { for (Variable child : children) { if (!child.getId().startsWith(main.id + ".")) { child.setId(main.id + "." + child.getId()); } + child.setId(SceneUtils.transferSceneUpperKey(child.getId())); if (StringUtils.hasText(child.getFullName()) && StringUtils.hasText(main.getFullName())) { child.setFullName(main.getFullName() + "/" + child.getFullName());