Browse Source

新增支持任务退回接口

hubin 1 year ago
parent
commit
f6c95e03a6

+ 20 - 0
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessTaskController.java

@@ -9,6 +9,8 @@ import com.aizuda.core.api.PageParam;
 import com.baomidou.kisso.annotation.Permission;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import org.simpleframework.xml.core.Validate;
@@ -72,6 +74,13 @@ public class ProcessTaskController extends ApiController {
         return processTaskService.approvalInfo(taskId);
     }
 
+    @Operation(summary = "以前的节点名称列表")
+    @Permission("flw:processTask:approval")
+    @PostMapping("/previous-node-names/{taskId}")
+    public List<String> previousNodeNames(@PathVariable("taskId") Long taskId) {
+        return processTaskService.listPreviousNodeNames(taskId);
+    }
+
     @Operation(summary = "审批评论")
     @Permission("flw:processTask:approval")
     @PostMapping("/comment")
@@ -121,6 +130,17 @@ public class ProcessTaskController extends ApiController {
         return processTaskService.withdraw(taskId, FlowHelper.getFlowCreator());
     }
 
+    @Operation(summary = "跳到指定节点任务")
+    @Parameters({
+            @Parameter(name = "taskId", description = "任务ID"),
+            @Parameter(name = "nodeName", description = "节点名称")
+    })
+    @Permission("flw:processTask:withdraw")
+    @PostMapping("/jump-{taskId}")
+    public boolean jump(@PathVariable("taskId") Long taskId, @RequestParam String nodeName) {
+        return processTaskService.jump(taskId, nodeName);
+    }
+
     @Operation(summary = "转交任务")
     @Permission("flw:processTask:transfer")
     @PostMapping("/transfer")

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

@@ -48,6 +48,13 @@ public interface IProcessTaskService {
      */
     TaskApprovalVO approvalInfo(Long taskId);
 
+    /**
+     * 根据任务ID查询以前的节点名称列表
+     *
+     * @param taskId 任务ID
+     */
+    List<String> listPreviousNodeNames(Long taskId);
+
     /**
      * 设置任务为已阅状态
      *
@@ -85,7 +92,7 @@ public interface IProcessTaskService {
      * @param taskId      任务ID
      * @param nodeName    节点名称
      */
-    boolean executeJump(Long taskId, String nodeName);
+    boolean jump(Long taskId, String nodeName);
 
     /**
      * 执行流程任务

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

@@ -17,6 +17,7 @@ import com.flowlong.bpm.engine.TaskService;
 import com.flowlong.bpm.engine.core.FlowCreator;
 import com.flowlong.bpm.engine.entity.FlwExtInstance;
 import com.flowlong.bpm.engine.entity.FlwTask;
+import com.flowlong.bpm.engine.model.ModelHelper;
 import com.flowlong.bpm.engine.model.NodeModel;
 import com.flowlong.bpm.engine.model.ProcessModel;
 import com.flowlong.bpm.mybatisplus.mapper.FlwExtInstanceMapper;
@@ -107,6 +108,13 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         return vo;
     }
 
+    @Override
+    public List<String> listPreviousNodeNames(Long taskId) {
+        FlwTask flwTask = this.getFlwTask(taskId);
+        ProcessModel processModel = flowLongEngine.runtimeService().getProcessModelByInstanceId(flwTask.getInstanceId());
+        return ModelHelper.getAllPreviousNodeNames(processModel.getNode(flwTask.getTaskName()));
+    }
+
     @Override
     public boolean viewed(Long taskId) {
         return flowLongEngine.taskService().viewTask(taskId, FlowHelper.getFlwTaskActor());
@@ -148,7 +156,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public boolean executeJump(Long taskId, String nodeName) {
+    public boolean jump(Long taskId, String nodeName) {
         return flowLongEngine.executeJumpTask(taskId, nodeName, FlowHelper.getFlowCreator());
     }