From 5a995556b3b319f6276ec019b714e0f4288ba5b9 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 02 Jan 2023 10:15:52 +0800
Subject: [PATCH] 添加申请撤销逻辑,删除撤销申请包

---
 src/main/java/org/springblade/flow/business/controller/WorkController.java |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/springblade/flow/business/controller/WorkController.java b/src/main/java/org/springblade/flow/business/controller/WorkController.java
index 5020192..441b727 100644
--- a/src/main/java/org/springblade/flow/business/controller/WorkController.java
+++ b/src/main/java/org/springblade/flow/business/controller/WorkController.java
@@ -16,17 +16,22 @@
  */
 package org.springblade.flow.business.controller;
 
+import com.aliyun.oss.ServiceException;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
+import org.flowable.engine.impl.RuntimeServiceImpl;
+import org.springblade.common.constant.AuditStatusConstant;
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.flow.business.service.FlowBusinessService;
@@ -34,6 +39,12 @@
 import org.springblade.flow.core.utils.TaskUtil;
 import org.springblade.flow.engine.entity.FlowProcess;
 import org.springblade.flow.engine.service.FlowEngineService;
+import org.springblade.modules.application.entity.ApplicationEntity;
+import org.springblade.modules.application.service.IApplicationService;
+import org.springblade.modules.applicationCarChange.entity.ApplicationCarChangeEntity;
+import org.springblade.modules.applicationCarChange.service.IApplicationCarChangeService;
+import org.springblade.modules.applicationDelay.entity.ApplicationDelayEntity;
+import org.springblade.modules.applicationDelay.service.IApplicationDelayService;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.Duration;
@@ -50,10 +61,15 @@
 public class WorkController {
 
 	private final TaskService taskService;
+	private final RuntimeService runtimeService;
 	private final FlowEngineService flowEngineService;
 	private final FlowBusinessService flowBusinessService;
 
 	private final BladeRedis bladeRedis;
+
+	private final IApplicationService applicationService;
+	private final IApplicationDelayService applicationDelayService;
+	private final IApplicationCarChangeService applicationCarChangeService;
 
 	/**
 	 * 发起事务列表页
@@ -156,15 +172,37 @@
 	@PostMapping("withdraw-task")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "撤销任务", notes = "传入流程信息")
-	public R withdraw(String userId){
-		int times = Func.toInt(bladeRedis.get("AUDIT-CANCEL" + userId), 1);
+	public R withdraw(@RequestBody BladeFlow bladeFlow){
+		int times = Func.toInt(bladeRedis.get("AUDIT-CANCEL" + AuthUtil.getUser().getUserId()), 1);
 		if (times>3){
-			return R.success("撤销任务失败");
+			return R.fail("撤销任务失败");
 		}
 
-		bladeRedis.setEx("AUDIT-CANCEL"+userId,times+1, Duration.ofDays(1));
+		bladeRedis.setEx("AUDIT-CANCEL"+AuthUtil.getUser().getUserId(),times+1, Duration.ofDays(1));
 		//撤销任务操作
+		runtimeService.deleteProcessInstance(bladeFlow.getProcessInstanceId(),"自己撤销");
 
+		switch (bladeFlow.getProcessDefinitionKey()){
+			case "Leave":
+				break;
+			case "Audit":
+				ApplicationEntity applicationEntity = applicationService.getById(bladeFlow.getBusinessId());
+				applicationEntity.setStatus(AuditStatusConstant.SELF_CANCEL);
+				applicationService.updateById(applicationEntity);
+				break;
+			case "delayAudit":
+				ApplicationDelayEntity applicationDelayEntity = applicationDelayService.getById(bladeFlow.getBusinessId());
+				applicationDelayEntity.setStatus(AuditStatusConstant.SELF_CANCEL);
+				applicationDelayService.updateById(applicationDelayEntity);
+				break;
+			case "carChangeAudit":
+				ApplicationCarChangeEntity applicationCarChangeEntity = applicationCarChangeService.getById(bladeFlow.getBusinessId());
+				applicationCarChangeEntity.setStatus(AuditStatusConstant.SELF_CANCEL);
+				applicationCarChangeService.updateById(applicationCarChangeEntity);
+				break;
+			default:
+				break;
+		}
 
 		return R.success("撤销任务成功");
 	}

--
Gitblit v1.9.3