diff --git a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/service/SceneService.java b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/service/SceneService.java index a5179cc0..1903f037 100644 --- a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/service/SceneService.java +++ b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/service/SceneService.java @@ -24,6 +24,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -93,25 +94,35 @@ public class SceneService extends GenericReactiveCrudService enable(String id) { - Assert.hasText(id, "id can not be empty"); + return enable(Collections.singletonList(id)); + } + + @Transactional(rollbackFor = Throwable.class) + public Mono enable(Collection id) { + Assert.notEmpty(id, "id can not be empty"); long now = System.currentTimeMillis(); return this .createUpdate() .set(SceneEntity::getState, RuleInstanceState.started) .set(SceneEntity::getModifyTime, now) .set(SceneEntity::getStartTime, now) - .where(SceneEntity::getId, id) + .in(SceneEntity::getId, id) .execute() .then(); } @Transactional public Mono disabled(String id) { - Assert.hasText(id, "id can not be empty"); + return disabled(Collections.singletonList(id)); + } + + @Transactional + public Mono disabled(Collection id) { + Assert.notEmpty(id, "id can not be empty"); return this .createUpdate() .set(SceneEntity::getState, RuleInstanceState.disable) - .where(SceneEntity::getId, id) + .in(SceneEntity::getId, id) .execute() .then(); } @@ -148,7 +159,7 @@ public class SceneService extends GenericReactiveCrudService disableSceneBatch(@RequestBody Mono> id) { + return id.flatMap(service::disabled); + } + @PutMapping("/{id}/_enable") @Operation(summary = "启用场景") @SaveAction @@ -73,6 +81,13 @@ public class SceneController implements ReactiveServiceQueryController enabledSceneBatch(@RequestBody Mono> id) { + return id.flatMap(service::enable); + } + @PostMapping("/{id}/_execute") @Operation(summary = "手动执行场景") @SaveAction @@ -124,7 +139,7 @@ public class SceneController implements ReactiveServiceQueryController rule - .createVariables(columns , + .createVariables(columns, branch, branchGroup, action))