Pārlūkot izejas kodu

新增支持任务撤回接口

hubin 1 gadu atpakaļ
vecāks
revīzija
35ea24d99d

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

@@ -114,6 +114,13 @@ public class ProcessTaskController extends ApiController {
         return processTaskService.claim(taskId, FlowHelper.getFlowCreator());
     }
 
+    @Operation(summary = "发起人撤回任务")
+    @Permission("flw:processTask:withdraw")
+    @PostMapping("/withdraw-{taskId}")
+    public boolean withdraw(@PathVariable("taskId") Long taskId) {
+        return processTaskService.withdraw(taskId, FlowHelper.getFlowCreator());
+    }
+
     @Operation(summary = "转交任务")
     @Permission("flw:processTask:transfer")
     @PostMapping("/transfer")

+ 3 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/dto/TaskApprovalDTO.java

@@ -21,6 +21,9 @@ public class TaskApprovalDTO {
     @PositiveOrZero
     private Long taskId;
 
+    @Schema(description = "流程表单JSON内容")
+    private String processForm;
+
     @Schema(description = "意见评论")
     private String content;
 

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

@@ -71,6 +71,14 @@ public interface IProcessTaskService {
      */
     boolean claim(Long taskId, FlowCreator flowCreator);
 
+    /**
+     * 发起人撤回任务
+     *
+     * @param taskId      任务ID
+     * @param flowCreator 任务创建者
+     */
+    boolean withdraw(Long taskId, FlowCreator flowCreator);
+
     /**
      * 执行节点跳转任务
      *

+ 8 - 0
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -139,6 +139,13 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         return null != taskService.claim(taskId, flowCreator);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean withdraw(Long taskId, FlowCreator flowCreator) {
+        TaskService taskService = flowLongEngine.taskService();
+        return taskService.withdrawTask(taskId, flowCreator).isPresent();
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean executeJump(Long taskId, String nodeName) {
@@ -209,6 +216,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     public boolean consent(TaskApprovalDTO dto) {
         FlwTask flwTask = this.getFlwTask(dto.getTaskId());
         ApiAssert.fail(!flowLongEngine.executeTask(dto.getTaskId(), FlowHelper.getFlowCreator()), "执行任务审批失败");
+        ApiAssert.fail(!flwProcessFormService.saveForm(flwTask.getInstanceId(), dto.getProcessForm()), "保存保单内容失败");
         return flwProcessApprovalService.consent(flwTask.getInstanceId(), dto);
     }