Przeglądaj źródła

add 场景联动

18339543638 4 lat temu
rodzic
commit
c4e22d2c5e

+ 1 - 0
jetlinks-components/rule-engine-component/src/main/java/org/jetlinks/community/rule/engine/executor/DeviceMessageSendTaskExecutorProvider.java

@@ -9,6 +9,7 @@ import org.hswebframework.web.utils.ExpressionUtils;
 import org.jetlinks.core.device.DeviceOperator;
 import org.jetlinks.core.device.DeviceProductOperator;
 import org.jetlinks.core.device.DeviceRegistry;
+import org.jetlinks.core.event.EventBus;
 import org.jetlinks.core.message.DeviceMessageReply;
 import org.jetlinks.core.message.Headers;
 import org.jetlinks.core.message.MessageType;

+ 1 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceFirmwareController.java

@@ -21,7 +21,7 @@ import reactor.core.publisher.Mono;
  * @createTime 2021年08月10日 09:28:00
  */
 @RestController
-@RequestMapping({"/device-firmware", "/device/firmware"})
+@RequestMapping({"/device-firmware", "/device/firmware","/firmware"})
 @Authorize
 @Resource(id = "device-firmware", name = "固件")
 @Slf4j

+ 62 - 3
jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/entity/RuleSceneEntity.java

@@ -1,8 +1,27 @@
 package org.jetlinks.community.rule.engine.entity;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import org.hswebframework.ezorm.rdb.mapping.annotation.ColumnType;
+import org.hswebframework.ezorm.rdb.mapping.annotation.DefaultValue;
+import org.hswebframework.ezorm.rdb.mapping.annotation.EnumCodec;
+import org.hswebframework.ezorm.rdb.mapping.annotation.JsonCodec;
+import org.hswebframework.web.api.crud.entity.GenericEntity;
+import org.hswebframework.web.api.crud.entity.RecordCreationEntity;
+import org.hswebframework.web.api.crud.entity.RecordModifierEntity;
+import org.hswebframework.web.validator.CreateGroup;
 import org.jetlinks.community.rule.engine.device.DeviceAlarmRule;
+import org.jetlinks.community.rule.engine.enums.AlarmState;
+import org.jetlinks.community.rule.engine.enums.RuleSceneState;
 import org.jetlinks.community.rule.engine.model.Action;
+
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Table;
+import javax.validation.constraints.Pattern;
+import java.sql.JDBCType;
 import java.util.*;
 /**
  * @author lifang
@@ -11,15 +30,55 @@ import java.util.*;
  * @Description TODO
  * @createTime 2021年08月31日 14:59:00
  */
-@Data
-public class RuleSceneEntity {
-    private String id;
+@Getter
+@Setter
+@Table(name = "rule_scene")
+public class RuleSceneEntity  extends GenericEntity<String> implements RecordCreationEntity {
+
+    @Override
+    @GeneratedValue(generator = "snow_flake")
+    @Pattern(regexp = "^[0-9a-zA-Z_\\-]+$", message = "ID只能由数字,字母,下划线和中划线组成", groups = CreateGroup.class)
+    @Schema(description = "ID")
+    public String getId() {
+        return super.getId();
+    }
 
+    @Column
+    @ColumnType(javaType = String.class)
+    @DefaultValue("false")
+    @Schema(description = "名称")
     private String name;
 
+    @Column
+    @ColumnType(javaType = Boolean.class)
+    @DefaultValue("false")
+    @Schema(description = "是否并行")
     private Boolean parallel;
 
+    @Column
+    @EnumCodec
+    @ColumnType(javaType = String.class)
+    @DefaultValue("stopped")
+    @Schema(description = "状态")
+    private RuleSceneState state;
+
+    @Column(nullable = false)
+    @JsonCodec
+    @ColumnType(jdbcType = JDBCType.CLOB, javaType = List.class)
+    @Schema(description = "执行行动")
     private List<Action> actions;
 
+    @Column(nullable = false)
+    @JsonCodec
+    @ColumnType(jdbcType = JDBCType.CLOB, javaType = List.class)
+    @Schema(description = "触发器")
     private List<DeviceAlarmRule.Trigger> triggers;
+
+    @Column(name = "create_time")
+    @Schema(description = "创建时间")
+    private Long createTime;
+
+    @Column(name = "creator_id")
+    @Schema(description = "创建者ID")
+    private String creatorId;
 }

+ 20 - 0
jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/enums/RuleSceneState.java

@@ -0,0 +1,20 @@
+package org.jetlinks.community.rule.engine.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.web.dict.EnumDict;
+
+@AllArgsConstructor
+@Getter
+public enum RuleSceneState implements EnumDict<String> {
+
+    running("运行中"),
+    stopped("已停止");
+
+    private String text;
+
+    @Override
+    public String getValue() {
+        return name();
+    }
+}

+ 1 - 1
jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/web/RuleInstanceController.java

@@ -32,7 +32,7 @@ import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 @RestController
-@RequestMapping({"rule-engine/instance","rule-engine/scene"})
+@RequestMapping({"rule-engine/instance"})
 @Resource(id = "rule-instance", name = "规则引擎-实例")
 @Tag(name = "规则实例")
 public class RuleInstanceController implements ReactiveServiceCrudController<RuleInstanceEntity, String> {

+ 0 - 22
jetlinks-standalone/src/test/java/org/jetlinks/community/network/manager/web/GateWayTest.java

@@ -1,25 +1,13 @@
 package org.jetlinks.community.network.manager.web;
 
 import io.vertx.core.Vertx;
-import io.vertx.mqtt.MqttServerOptions;
-import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.nullness.Opt;
-import org.checkerframework.checker.units.qual.A;
-import org.hswebframework.web.exception.NotFoundException;
-import org.jetlinks.community.device.entity.DeviceFirmwareEntity;
 import org.jetlinks.community.device.service.LocalDeviceFirmwareService;
 import org.jetlinks.community.device.service.LocalDeviceInstanceService;
 import org.jetlinks.community.gateway.DeviceGatewayManager;
 import org.jetlinks.community.network.NetworkManager;
-import org.jetlinks.community.network.manager.entity.DeviceGatewayEntity;
-import org.jetlinks.community.network.manager.entity.NetworkConfigEntity;
-import org.jetlinks.community.network.manager.enums.NetworkConfigState;
 import org.jetlinks.community.network.manager.service.DeviceGatewayService;
 import org.jetlinks.community.network.manager.service.NetworkConfigService;
 import org.jetlinks.community.network.mqtt.server.MqttServer;
-import org.jetlinks.community.network.mqtt.server.MqttSubscription;
-import org.jetlinks.community.network.mqtt.server.vertx.VertxMqttServerProperties;
-import org.jetlinks.community.network.mqtt.server.vertx.VertxMqttServerProvider;
 import org.jetlinks.community.standalone.JetLinksApplication;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -27,16 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import reactor.core.publisher.EmitterProcessor;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-
 /**
  * @author lifang
  * @version 1.0.0