From 0ad5864476e755f14108c7e9c424a1620fcd613f Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Mon, 8 Dec 2025 20:01:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(process):=20=E6=96=B0=E5=A2=9E=E6=B5=81?= =?UTF-8?q?=E7=A8=8BID=E6=9C=89=E6=95=88=E6=80=A7=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IProcessService接口添加validateFlowId方法声明 - 在ProcessServiceImpl实现流程ID验证逻辑 - 在ProcessController添加validateFlowId接口供前端调用 - 支持检查流程ID是否在IProcessInstanceStatusEventService实现类中注册 --- .../flow/controller/ProcessController.java | 18 +++++++++- .../pigx/flow/service/IProcessService.java | 10 +++++- .../flow/service/impl/ProcessServiceImpl.java | 35 +++++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java index a4c3d6c14..bd8b157bb 100644 --- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java +++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/controller/ProcessController.java @@ -66,7 +66,7 @@ public class ProcessController { * - delete: 删除流程(逻辑删除,可恢复) * - 修改分组:传入groupId参数可将流程移动到其他分组 *

- * + * * @param flowId 流程定义ID * @param type 操作类型(stop/using/delete) * @param groupId 流程分组ID(可选,用于修改流程所属分组) @@ -78,4 +78,20 @@ public class ProcessController { return processService.update(flowId, type, groupId); } + /** + * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在 + *

+ * 用于前端表单验证,检查用户输入的流程ID是否已在系统中注册。 + * 流程ID必须在某个IProcessInstanceStatusEventService实现类的getFlowId()方法中返回, + * 才能被认为是有效的流程ID。 + *

+ * + * @param flowId 流程定义ID + * @return 验证结果:true表示流程ID存在,false表示不存在 + */ + @GetMapping("validateFlowId") + public R validateFlowId(@RequestParam String flowId) { + return processService.validateFlowId(flowId); + } + } diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java index 345df70e8..abfa1f3c7 100644 --- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java +++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/IProcessService.java @@ -61,7 +61,7 @@ public interface IProcessService extends IService { /** * 更新流程状态或分组 - * + * * @param flowId 流程定义ID * @param type 操作类型:stop(停用)、using(启用)、delete(删除) * @param groupId 流程分组ID(可选,用于修改流程分组) @@ -69,4 +69,12 @@ public interface IProcessService extends IService { */ R update(String flowId, String type, Long groupId); + /** + * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在 + * + * @param flowId 流程定义ID + * @return 验证结果:true表示存在,false表示不存在 + */ + R validateFlowId(String flowId); + } diff --git a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java index 08b48bf1b..3c67cef54 100644 --- a/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java +++ b/pigx-flow/pigx-flow-biz/src/main/java/com/pig4cloud/pigx/flow/service/impl/ProcessServiceImpl.java @@ -24,6 +24,7 @@ import com.pig4cloud.pigx.flow.dto.NodeUser; import com.pig4cloud.pigx.flow.entity.Process; import com.pig4cloud.pigx.flow.entity.ProcessStarter; import com.pig4cloud.pigx.flow.mapper.ProcessMapper; +import com.pig4cloud.pigx.flow.service.IProcessInstanceStatusEventService; import com.pig4cloud.pigx.flow.service.IProcessService; import com.pig4cloud.pigx.flow.service.IProcessStarterService; import com.pig4cloud.pigx.flow.support.utils.ModelUtil; @@ -42,6 +43,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.Optional; /** * 流程定义服务实现类 @@ -66,6 +68,8 @@ public class ProcessServiceImpl extends ServiceImpl impl private final Sequence flowSequence; + private final Optional> processInstanceStatusEventServicesOptional; + /** * 获取流程详细信息 *

@@ -295,4 +299,35 @@ public class ProcessServiceImpl extends ServiceImpl impl return R.ok(); } + /** + * 验证流程ID是否在所有IProcessInstanceStatusEventService实现类中存在 + *

+ * 遍历所有实现了IProcessInstanceStatusEventService接口的服务类,检查输入的flowId + * 是否与任意一个服务的getFlowId()返回值匹配。如果匹配则返回true,否则返回false。 + *

+ * + * @param flowId 流程定义ID + * @return 验证结果:true表示存在,false表示不存在 + */ + @Override + public R validateFlowId(String flowId) { + // 如果flowId为空,直接返回false + if (StrUtil.isBlank(flowId)) { + return R.ok(false); + } + + // 如果没有IProcessInstanceStatusEventService实现类,返回false + if (processInstanceStatusEventServicesOptional.isEmpty()) { + log.warn("未找到任何IProcessInstanceStatusEventService实现类"); + return R.ok(false); + } + + // 遍历所有实现类,检查flowId是否存在 + List serviceList = processInstanceStatusEventServicesOptional.get(); + boolean exists = serviceList.stream() + .anyMatch(service -> flowId.equals(service.getFlowId())); + + return R.ok(exists); + } + }