From 6fc82a59f1fd80b0b255021bcc0e88ce23b07466 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 4 Aug 2025 18:40:14 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=A2=9E=E5=8A=A0=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=B9=B6=E5=8A=9E=E7=90=86=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/WorkflowService.java | 10 ++++++ .../service/impl/TestLeaveServiceImpl.java | 9 ++--- .../service/impl/WorkflowServiceImpl.java | 35 +++++++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index 9d1a90195..706d357e7 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -82,6 +82,7 @@ public interface WorkflowService { * completeTask.getVariables().put("ignore", true); * * @param completeTask 参数 + * @return 结果 */ boolean completeTask(CompleteTaskDTO completeTask); @@ -90,6 +91,15 @@ public interface WorkflowService { * * @param taskId 任务ID * @param message 办理意见 + * @return 结果 */ boolean completeTask(Long taskId, String message); + + /** + * 启动流程并办理第一个任务 + * + * @param startProcess 参数 + * @return 结果 + */ + boolean startCompleteTask(StartProcessDTO startProcess); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 47fdfaff7..4306041dc 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -131,16 +131,13 @@ public class TestLeaveServiceImpl implements ITestLeaveService { bo.setId(leave.getId()); // 后端发起需要忽略权限 bo.getParams().put("ignore", true); - StartProcessReturnDTO result = workflowService.startWorkFlow(new StartProcessDTO() {{ + + + boolean flag1 = workflowService.startCompleteTask(new StartProcessDTO() {{ setBusinessId(leave.getId().toString()); setFlowCode(StringUtils.isEmpty(bo.getFlowCode()) ? "leave1" : bo.getFlowCode()); setVariables(bo.getParams()); }}); - boolean flag1 = workflowService.completeTask(new CompleteTaskDTO() {{ - setTaskId(result.getTaskId()); - setMessageType(List.of("1")); - setVariables(bo.getParams()); - }}); if (!flag1) { throw new ServiceException("流程发起异常"); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 0c0224000..419f9467e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -6,17 +6,21 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.CompleteTaskDTO; import org.dromara.common.core.domain.dto.StartProcessDTO; import org.dromara.common.core.domain.dto.StartProcessReturnDTO; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.StringUtils; import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.domain.bo.CompleteTaskBo; import org.dromara.workflow.domain.bo.StartProcessBo; import org.dromara.workflow.service.IFlwDefinitionService; import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -148,4 +152,35 @@ public class WorkflowServiceImpl implements WorkflowService { return flwTaskService.completeTask(completeTask); } + /** + * 启动流程并办理第一个任务 + * + * @param startProcess 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean startCompleteTask(StartProcessDTO startProcess) { + try { + StartProcessReturnDTO startWorkFlow = flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class)); + CompleteTaskBo completeTask = new CompleteTaskBo(); + completeTask.setTaskId(startWorkFlow.getTaskId()); + completeTask.setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); + StartProcessReturnDTO result = flwTaskService.startWorkFlow(new StartProcessBo() {{ + setBusinessId(startProcess.getBusinessId()); + setFlowCode(startProcess.getFlowCode()); + setVariables(startProcess.getVariables()); + }}); + boolean flag = flwTaskService.completeTask(new CompleteTaskBo() {{ + setTaskId(result.getTaskId()); + setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); + setVariables(startProcess.getVariables()); + }}); + if (!flag) { + throw new ServiceException("流程发起异常"); + } + return true; + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + } }