caixiaofeng 5 miesięcy temu
rodzic
commit
3c6fcf09a8

+ 1 - 1
flow-common/flow-common-flowable-starter/src/main/java/com/flow/flowable/cmd/ReCreateProcessInstanceCmd.java

@@ -28,7 +28,7 @@ public class ReCreateProcessInstanceCmd implements Command<ProcessInstance> {
         if (Objects.isNull(processInstance)) {
             throw new FlowableException("流程实例不存在或已结束");
         }
-        // 不是流程发起人不能撤流程
+        // 不是流程发起人不能撤流程
         String authenticatedUserId = Authentication.getAuthenticatedUserId();
         if (!processInstance.getStartUserId().equals(authenticatedUserId)) {
             throw new FlowableException("非流程发起人不能撤销流程");

+ 6 - 0
flow-workflow/flow-workflow-api/src/main/java/com/flow/service/FlowTaskService.java

@@ -76,6 +76,12 @@ public interface FlowTaskService extends BaseService<FlowTask> {
      */
     void reject(RejectTaskForm taskForm);
 
+    /**
+     * 撤回
+     * @param taskForm
+     */
+    void retract(TaskForm taskForm);
+
     /**
      * 拒绝
      * @param taskForm

+ 7 - 7
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowInstanceServiceImpl.java

@@ -166,22 +166,22 @@ public class FlowInstanceServiceImpl extends BaseServiceImpl<FlowInstanceDao, Fl
         for (String instanceId : instanceIds) {
             FlowInstance instance = this.getInstance(instanceId);
             if (instance.getStatus() != ProcessStatus.RUNNING) {
-                throw new BaseException("流程已结束,不能撤");
+                throw new BaseException("流程已结束,不能撤");
             }
             Integer cancelDays = instance.getCancelDays();
             if (cancelDays <= 0) {
-                throw new BaseException("无法撤流程");
+                throw new BaseException("无法撤流程");
             }
             LocalDateTime startTime = instance.getStartTime();
             if (LocalDateTime.now().isAfter(startTime.plusDays(cancelDays))) {
-                throw new BaseException("流程撤时间已过");
+                throw new BaseException("流程撤时间已过");
             }
             taskService.createTaskQuery().processInstanceId(instanceId).list().forEach(task -> {
-                flowTaskService.updateStatus(task.getId(), ProcessStatus.CANCELED);
+                flowTaskService.updateStatus(task.getId(), ProcessStatus.REVOKE);
             });
-            runtimeService.updateBusinessStatus(instanceId, ProcessStatus.CANCELED.toString());
-            runtimeService.deleteProcessInstance(instanceId, "撤");
-            FlowInstance flowInstance = FlowInstance.buildStatus(instanceId, ProcessStatus.CANCELED);
+            runtimeService.updateBusinessStatus(instanceId, ProcessStatus.REVOKE.toString());
+            runtimeService.deleteProcessInstance(instanceId, "撤");
+            FlowInstance flowInstance = FlowInstance.buildStatus(instanceId, ProcessStatus.REVOKE);
             this.updateById(flowInstance);
         }
     }

+ 7 - 4
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowTaskServiceImpl.java

@@ -18,10 +18,7 @@ import com.flow.entity.node.FieldProperty;
 import com.flow.entity.node.Node;
 import com.flow.entity.node.RootNode;
 import com.flow.enums.ProcessStatus;
-import com.flow.flowable.cmd.AddTaskExecutionCmd;
-import com.flow.flowable.cmd.CopyProcessInstanceCmd;
-import com.flow.flowable.cmd.DeleteTaskExecutionCmd;
-import com.flow.flowable.cmd.JumpActivityCmd;
+import com.flow.flowable.cmd.*;
 import com.flow.flowable.utils.ProcessElementUtil;
 import com.flow.model.*;
 import com.flow.service.FlowDefineService;
@@ -205,6 +202,12 @@ public class FlowTaskServiceImpl extends BaseServiceImpl<FlowTaskDao, FlowTask>
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void retract(TaskForm taskForm) {
+        managementService.executeCommand(new TaskRecallCmd(taskForm.getTaskId()));
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void refuse(TaskForm taskForm) {

+ 6 - 0
flow-workflow/flow-workflow-controller/src/main/java/com/flow/controller/FlowTaskController.java

@@ -40,6 +40,12 @@ public class FlowTaskController {
         return Result.success();
     }
 
+    @PostMapping("/retract")
+    public Result<?> retract(@RequestBody TaskForm taskForm) {
+        flowTaskService.retract(taskForm);
+        return Result.success();
+    }
+
     @PostMapping("/refuse")
     public Result<?> refuse(@RequestBody TaskForm taskForm) {
         flowTaskService.refuse(taskForm);

+ 1 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/constant/FlowStatusConstant.java

@@ -6,7 +6,7 @@ public interface FlowStatusConstant {
     // 已完成
     Integer COMPLETED = 1;
     // 已撤销
-    Integer CANCELED = 2;
+    Integer REVOKE = 2;
     // 拒绝
     Integer REFUSE = 3;
     // 驳回/回退

+ 1 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/enums/ProcessStatus.java

@@ -11,7 +11,7 @@ import lombok.Getter;
 public enum ProcessStatus {
     RUNNING(0, "进行中"),
     COMPLETED(1, "通过"),
-    CANCELED(2, "撤回"),
+    REVOKE(2, "撤销"),
     REFUSE(3, "拒绝"),
     REJECT(4, "回退"),
     HANGUP(5, "挂起");

+ 2 - 2
flow-workflow/flow-workflow-entity/src/main/java/com/flow/model/FormInfo.java

@@ -30,9 +30,9 @@ public class FormInfo {
     private ProcessStatus status;
     // 发起人
     private String startUserId;
-    // 撤天数
+    // 撤天数
     private Integer cancelDays;
-    // 是否可撤
+    // 是否可撤
     private Boolean isCancel = false;
     // 发起时间
     private LocalDateTime startTime;

+ 1 - 1
sql/flow.sql

@@ -71,7 +71,7 @@ DROP TABLE IF EXISTS `flow_instance`;
 CREATE TABLE `flow_instance`  (
   `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id',
   `status` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态',
-  `cancel_days` int unsigned NOT NULL DEFAULT '0' COMMENT '撤天数',
+  `cancel_days` int unsigned NOT NULL DEFAULT '0' COMMENT '撤天数',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;