Explorar o código

add 增加启动流程并办理第一个任务接口

gssong hai 11 meses
pai
achega
6fc82a59f1

+ 10 - 0
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);
 }

+ 3 - 6
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("流程发起异常");
             }

+ 35 - 0
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());
+        }
+    }
 }