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 |   64 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 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 21addaf..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,23 +16,38 @@
  */
 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;
 import org.springblade.flow.core.entity.BladeFlow;
 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;
 
 /**
  * 流程事务通用接口
@@ -46,8 +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;
 
 	/**
 	 * 发起事务列表页
@@ -143,4 +165,46 @@
 		return R.success("删除任务成功");
 	}
 
+	/**
+	 * 撤销任务
+	 *
+	 */
+	@PostMapping("withdraw-task")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "撤销任务", notes = "传入流程信息")
+	public R withdraw(@RequestBody BladeFlow bladeFlow){
+		int times = Func.toInt(bladeRedis.get("AUDIT-CANCEL" + AuthUtil.getUser().getUserId()), 1);
+		if (times>3){
+			return R.fail("撤销任务失败");
+		}
+
+		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