Kaynağa Gözat

新增认领相关接口

hubin 1 yıl önce
ebeveyn
işleme
729a750b3a

+ 15 - 1
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessTaskController.java

@@ -68,7 +68,21 @@ public class ProcessTaskController extends ApiController {
     @Permission("flw:processTask:viewed")
     @PostMapping("/viewed-{taskId}")
     public boolean viewed(@PathVariable("taskId") Long taskId) {
-        return processTaskService.viewed(FlowHelper.getFlowCreator(), taskId);
+        return processTaskService.viewed(taskId, FlowHelper.getFlowCreator());
+    }
+
+    @Operation(summary = "拿回任务")
+    @Permission("flw:processTask:reclaim")
+    @PostMapping("/reclaim-{taskId}")
+    public boolean reclaim(@PathVariable("taskId") Long taskId) {
+        return processTaskService.reclaim(taskId, FlowHelper.getFlowCreator());
+    }
+
+    @Operation(summary = "认领任务")
+    @Permission("flw:processTask:resume")
+    @PostMapping("/resume-{taskId}")
+    public boolean resume(@PathVariable("taskId") Long taskId) {
+        return processTaskService.resume(taskId, FlowHelper.getFlowCreator());
     }
 
     @Operation(summary = "执行任务")

+ 45 - 1
src/main/java/com/aizuda/boot/modules/flw/service/IProcessTaskService.java

@@ -7,6 +7,7 @@ import com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO;
 import com.aizuda.core.api.PageParam;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flowlong.bpm.engine.core.FlowCreator;
+import com.flowlong.bpm.engine.entity.FlwTaskActor;
 
 /**
  * 流程任务 服务类
@@ -44,10 +45,53 @@ public interface IProcessTaskService {
     /**
      * 设置任务为已阅状态
      *
+     * @param taskId      任务ID
      * @param flowCreator 流程创建者
+     */
+    boolean viewed(Long taskId, FlowCreator flowCreator);
+
+    /**
+     * 转办任务
+     *
+     * @param taskId            任务ID
+     * @param taskActor         任务参与者
+     * @param assigneeTaskActor 任务办理人
+     */
+    boolean transfer(Long taskId, FlwTaskActor taskActor, FlwTaskActor assigneeTaskActor);
+
+    /**
+     * 委派任务
+     *
+     * @param taskId            任务ID
+     * @param taskActor         任务参与者
+     * @param assigneeTaskActor 任务办理人
+     */
+    boolean delegate(Long taskId, FlwTaskActor taskActor, FlwTaskActor assigneeTaskActor);
+
+    /**
+     * 拿回任务
+     *
+     * @param taskId      任务ID
+     * @param flowCreator 任务创建者
+     */
+    boolean reclaim(Long taskId, FlowCreator flowCreator);
+
+    /**
+     * 认领任务
+     *
+     * @param taskId      任务ID
+     * @param flowCreator 任务创建者
+     */
+    boolean resume(Long taskId, FlowCreator flowCreator);
+
+    /**
+     * 执行节点跳转任务
+     *
      * @param taskId      任务ID
+     * @param nodeName    节点名称
+     * @param flowCreator 任务创建者
      */
-    boolean viewed(FlowCreator flowCreator, Long taskId);
+    boolean executeJump(Long taskId, String nodeName, FlowCreator flowCreator);
 
     /**
      * 执行流程任务

+ 30 - 1
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -62,7 +62,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     }
 
     @Override
-    public boolean viewed(FlowCreator flowCreator, Long taskId) {
+    public boolean viewed(Long taskId, FlowCreator flowCreator) {
         return flowLongEngine.taskService().viewTask(taskId, FlwTaskActor.ofFlowCreator(flowCreator));
     }
 
@@ -79,6 +79,35 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         return dto;
     }
 
+    @Override
+    public boolean transfer(Long taskId, FlwTaskActor taskActor, FlwTaskActor assigneeTaskActor) {
+        TaskService taskService = flowLongEngine.taskService();
+        return taskService.transferTask(taskId, taskActor, assigneeTaskActor);
+    }
+
+    @Override
+    public boolean delegate(Long taskId, FlwTaskActor taskActor, FlwTaskActor assigneeTaskActor) {
+        TaskService taskService = flowLongEngine.taskService();
+        return taskService.delegateTask(taskId, taskActor, assigneeTaskActor);
+    }
+
+    @Override
+    public boolean reclaim(Long taskId, FlowCreator flowCreator) {
+        TaskService taskService = flowLongEngine.taskService();
+        return taskService.reclaimTask(taskId, flowCreator).isPresent();
+    }
+
+    @Override
+    public boolean resume(Long taskId, FlowCreator flowCreator) {
+        TaskService taskService = flowLongEngine.taskService();
+        return null != taskService.resume(taskId, FlwTaskActor.ofFlowCreator(flowCreator));
+    }
+
+    @Override
+    public boolean executeJump(Long taskId, String nodeName, FlowCreator flowCreator) {
+        return flowLongEngine.executeJumpTask(taskId, nodeName, flowCreator);
+    }
+
     @Override
     public boolean execute(FlowCreator flowCreator, ExecuteTaskDTO dto) {
         return flowLongEngine.executeTask(dto.getTaskId(), flowCreator, dto.getArgs());