大件运输联网系统后端代码
guoshilong
2023-01-02 c864fec5f798a1aabcde877469886dd0dc90d092
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("撤销任务成功");
   }
}