From fc651ecd9d44e2b773fc96b8573c3b1c86503b0b Mon Sep 17 00:00:00 2001 From: Zhang Ji <125540670@qq.com> Date: Mon, 26 May 2025 19:03:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=A7=E8=A1=8C=E5=8A=A8=E4=BD=9C=E7=9A=84?= =?UTF-8?q?=E5=86=85=E7=BD=AE=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20(#636)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/engine/scene/SceneUtils.java | 29 +++++++++++++++---- .../community/rule/engine/scene/Variable.java | 2 ++ 2 files changed, 25 insertions(+), 6 deletions(-) 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());