From 22cdb6862afa4f483884247fc5277ff0c7cc636e Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 30 May 2025 11:27:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=B8=8D=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/LocalProtocolSupportManager.java | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/jetlinks-components/protocol-component/src/main/java/org/jetlinks/community/protocol/manager/LocalProtocolSupportManager.java b/jetlinks-components/protocol-component/src/main/java/org/jetlinks/community/protocol/manager/LocalProtocolSupportManager.java index 7e4aa15c..2910637d 100644 --- a/jetlinks-components/protocol-component/src/main/java/org/jetlinks/community/protocol/manager/LocalProtocolSupportManager.java +++ b/jetlinks-components/protocol-component/src/main/java/org/jetlinks/community/protocol/manager/LocalProtocolSupportManager.java @@ -18,10 +18,7 @@ package org.jetlinks.community.protocol.manager; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository; -import org.hswebframework.web.crud.events.EntityBeforeCreateEvent; -import org.hswebframework.web.crud.events.EntityBeforeDeleteEvent; -import org.hswebframework.web.crud.events.EntityBeforeModifyEvent; -import org.hswebframework.web.crud.events.EntityBeforeSaveEvent; +import org.hswebframework.web.crud.events.*; import org.hswebframework.web.exception.BusinessException; import org.hswebframework.web.i18n.LocaleUtils; import org.jetlinks.core.ProtocolSupport; @@ -104,6 +101,43 @@ public class LocalProtocolSupportManager ); } + //删除协议前,判断协议是否已被引用。已被引用的协不能删除 + @EventListener + public void handleProtocolDelete(EntityDeletedEvent event) { + event.async( + Flux.fromIterable(event.getEntity()) + .doOnNext(entity -> remove(entity.toDefinition())) + ); + } + + //保存协议前,判断协议是否能正常运行 + @EventListener + public void checkProtocol(EntitySavedEvent event) { + event.async( + Flux.fromIterable(event.getEntity()) + .flatMap(entity -> init(entity.toDefinition())) + ); + } + + //创建协议前,判断协议是否能正常运行 + @EventListener + public void checkProtocol(EntityCreatedEvent event) { + event.async( + Flux.fromIterable(event.getEntity()) + .flatMap(entity -> init(entity.toDefinition())) + ); + } + + + //修改协议前,判断协议是否能正常运行 + @EventListener + public void checkProtocol(EntityModifyEvent event) { + event.async( + Flux.fromIterable(event.getAfter()) + .flatMap(entity -> checkProtocol(entity.toDefinition())) + ); + } + public void remove(ProtocolSupportDefinition definition) { ProtocolSupport protocol = supports.get(definition.getId());