hubin преди 1 година
родител
ревизия
82c3f25266

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

@@ -130,17 +130,6 @@ 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")
@@ -169,6 +158,17 @@ public class ProcessTaskController extends ApiController {
         return processTaskService.appendNode(dto);
     }
 
+    @Operation(summary = "跳到指定节点任务")
+    @Parameters({
+            @Parameter(name = "taskId", description = "任务ID"),
+            @Parameter(name = "nodeName", description = "节点名称")
+    })
+    @Permission("flw:processTask:withdraw")
+    @PostMapping("/jump")
+    public boolean jump(@Validate @RequestBody TaskJumpDTO dto) {
+        return processTaskService.jump(dto);
+    }
+
     @Operation(summary = "查询流程实例ID的审批历史")
     @Permission("flw:processTask:reject")
     @PostMapping("/list-his-task/{instanceId}")

+ 31 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/dto/TaskJumpDTO.java

@@ -0,0 +1,31 @@
+package com.aizuda.boot.modules.flw.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.PositiveOrZero;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 流程任务审批 DTO
+ *
+ * @author 青苗
+ * @since 2024-03-13
+ */
+@Getter
+@Setter
+public class TaskJumpDTO {
+
+    @Schema(description = "流程任务ID")
+    @NotNull
+    @PositiveOrZero
+    private Long taskId;
+
+    @Schema(description = "节点名称")
+    private String nodeName;
+
+    @Schema(description = "意见评论")
+    private String content;
+
+
+}

+ 6 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwProcessApprovalService.java

@@ -4,6 +4,7 @@ import com.aizuda.boot.modules.flw.entity.FlwProcessApproval;
 import com.aizuda.boot.modules.flw.entity.dto.TaskAppendNodeDTO;
 import com.aizuda.boot.modules.flw.entity.dto.TaskApprovalDTO;
 import com.aizuda.boot.modules.flw.entity.dto.TaskAssigneeDTO;
+import com.aizuda.boot.modules.flw.entity.dto.TaskJumpDTO;
 import com.aizuda.service.service.IBaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
@@ -55,4 +56,9 @@ public interface IFlwProcessApprovalService extends IBaseService<FlwProcessAppro
      * 加签
      */
     boolean appendNode(Long instanceId, TaskAppendNodeDTO dto);
+
+    /**
+     * 跳转到指定节点
+     */
+    boolean jump(Long instanceId, TaskJumpDTO dto);
 }

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

@@ -86,14 +86,6 @@ public interface IProcessTaskService {
      */
     boolean withdraw(Long taskId, FlowCreator flowCreator);
 
-    /**
-     * 执行节点跳转任务
-     *
-     * @param taskId      任务ID
-     * @param nodeName    节点名称
-     */
-    boolean jump(Long taskId, String nodeName);
-
     /**
      * 执行流程任务
      */
@@ -136,4 +128,9 @@ public interface IProcessTaskService {
      * 加签
      */
     boolean appendNode(TaskAppendNodeDTO dto);
+
+    /**
+     * 执行节点跳转任务
+     */
+    boolean jump(TaskJumpDTO dto);
 }

+ 6 - 0
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessApprovalServiceImpl.java

@@ -4,6 +4,7 @@ import com.aizuda.boot.modules.flw.entity.FlwProcessApproval;
 import com.aizuda.boot.modules.flw.entity.dto.TaskAppendNodeDTO;
 import com.aizuda.boot.modules.flw.entity.dto.TaskApprovalDTO;
 import com.aizuda.boot.modules.flw.entity.dto.TaskAssigneeDTO;
+import com.aizuda.boot.modules.flw.entity.dto.TaskJumpDTO;
 import com.aizuda.boot.modules.flw.mapper.FlwProcessApprovalMapper;
 import com.aizuda.boot.modules.flw.service.IFlwProcessApprovalService;
 import com.aizuda.service.service.BaseServiceImpl;
@@ -71,4 +72,9 @@ public class FlwProcessApprovalServiceImpl extends BaseServiceImpl<FlwProcessApp
     public boolean appendNode(Long instanceId, TaskAppendNodeDTO dto) {
         return super.save(getFlwProcessApproval(instanceId, dto.getType(), dto.getContent()));
     }
+
+    @Override
+    public boolean jump(Long instanceId, TaskJumpDTO dto) {
+        return super.save(getFlwProcessApproval(instanceId, 6, dto.getContent()));
+    }
 }

+ 13 - 12
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -154,12 +154,6 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         return taskService.withdrawTask(taskId, flowCreator).isPresent();
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public boolean jump(Long taskId, String nodeName) {
-        return flowLongEngine.executeJumpTask(taskId, nodeName, FlowHelper.getFlowCreator());
-    }
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean execute(ExecuteTaskDTO dto) {
@@ -232,17 +226,24 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     @Override
     public boolean rejection(TaskApprovalDTO dto) {
         FlwTask flwTask = this.getFlwTask(dto.getTaskId());
-        TaskService taskService = flowLongEngine.taskService();
-        ApiAssert.fail(taskService.rejectTask(flwTask, FlowHelper.getFlowCreator()).isEmpty(), "执行驳回任务失败");
-        return flwProcessApprovalService.rejection(flwTask.getInstanceId(), dto);
+        ApiAssert.fail(!flwProcessApprovalService.rejection(flwTask.getInstanceId(), dto), "执行驳回任务失败");
+        return flowLongEngine.taskService().rejectTask(flwTask, FlowHelper.getFlowCreator()).isEmpty();
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean appendNode(TaskAppendNodeDTO dto) {
         FlwTask flwTask = this.getFlwTask(dto.getTaskId());
-        ApiAssert.fail(flowLongEngine.executeAppendNodeModel(flwTask.getId(), dto.toNodeModel("前置加签"),
-                FlowHelper.getFlowCreator(), dto.getType() == 9), "执行任务加签失败");
-        return flwProcessApprovalService.appendNode(flwTask.getInstanceId(), dto);
+        ApiAssert.fail(flwProcessApprovalService.appendNode(flwTask.getInstanceId(), dto), "执行任务加签失败");
+        return flowLongEngine.executeAppendNodeModel(flwTask.getId(), dto.toNodeModel("前置加签"),
+                FlowHelper.getFlowCreator(), dto.getType() == 9);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean jump(TaskJumpDTO dto) {
+        FlwTask flwTask = this.getFlwTask(dto.getTaskId());
+        ApiAssert.fail(!flwProcessApprovalService.jump(flwTask.getInstanceId(), dto), "执行回退失败");
+        return flowLongEngine.executeJumpTask(dto.getTaskId(), dto.getNodeName(), FlowHelper.getFlowCreator());
     }
 }