Browse Source

fix(场景联动): 设备触发添加所属产品作为条件 (#314)

---------

Co-authored-by: zhou-hao <zh.sqy@qq.com>
Zhang Ji 2 năm trước cách đây
mục cha
commit
c4cb274569

+ 12 - 1
jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/scene/DeviceTrigger.java

@@ -13,6 +13,7 @@ import org.hswebframework.ezorm.rdb.operator.builder.fragments.SqlFragments;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.validator.ValidatorUtils;
 import org.hswebframework.web.validator.ValidatorUtils;
+import org.jetlinks.community.rule.engine.executor.device.DeviceSelectorProviders;
 import org.jetlinks.core.device.DeviceRegistry;
 import org.jetlinks.core.device.DeviceRegistry;
 import org.jetlinks.core.metadata.DeviceMetadata;
 import org.jetlinks.core.metadata.DeviceMetadata;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.core.metadata.types.StringType;
@@ -470,7 +471,17 @@ public class DeviceTrigger extends DeviceSelectorSpec implements Serializable {
 
 
         config.setProductId(productId);
         config.setProductId(productId);
         config.setMessage(operation.toMessageTemplate());
         config.setMessage(operation.toMessageTemplate());
-        config.setSelectorSpec(FastBeanCopier.copy(this, new DeviceSelectorSpec()));
+
+        if (DeviceSelectorProviders.isFixed(this)) {
+            config.setSelectorSpec(FastBeanCopier.copy(this, new DeviceSelectorSpec()));
+        } else {
+            config.setSelectorSpec(
+                DeviceSelectorProviders.composite(
+                    //先选择产品下的设备
+                    DeviceSelectorProviders.product(this.productId),
+                    FastBeanCopier.copy(this, new DeviceSelectorSpec())
+                ));
+        }
         config.validate();
         config.validate();
 
 
         deviceNode.setConfiguration(config.toMap());
         deviceNode.setConfiguration(config.toMap());