package com.dl.web.controller.workflow;
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.dl.common.core.domain.R;
|
import com.dl.workflow.domain.bo.WfTaskBo;
|
import com.dl.workflow.service.IWfTaskService;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.imageio.ImageIO;
|
import javax.servlet.http.HttpServletResponse;
|
import java.awt.image.BufferedImage;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
|
/**
|
* 工作流任务管理
|
*
|
* @author KonBAI
|
* @createTime 2022/3/10 00:12
|
*/
|
@Slf4j
|
@RequiredArgsConstructor
|
@RestController
|
@RequestMapping("/workflow/task")
|
public class WfTaskController {
|
|
private final IWfTaskService flowTaskService;
|
|
/**
|
* 取消流程
|
*/
|
@PostMapping(value = "/stopProcess")
|
@SaCheckPermission("workflow:process:cancel")
|
public R stopProcess(@RequestBody WfTaskBo bo) {
|
flowTaskService.stopProcess(bo);
|
return R.ok();
|
}
|
|
/**
|
* 撤回流程
|
*/
|
@PostMapping(value = "/revokeProcess")
|
@SaCheckPermission("workflow:process:revoke")
|
public R revokeProcess(@RequestBody WfTaskBo bo) {
|
flowTaskService.revokeProcess(bo);
|
return R.ok();
|
}
|
|
/**
|
* 获取流程变量
|
* @param taskId 流程任务Id
|
*/
|
@GetMapping(value = "/processVariables/{taskId}")
|
@SaCheckPermission("workflow:process:query")
|
public R processVariables(@PathVariable(value = "taskId") String taskId) {
|
return R.ok(flowTaskService.getProcessVariables(taskId));
|
}
|
|
/**
|
* 审批任务
|
*/
|
@PostMapping(value = "/complete")
|
@SaCheckPermission("workflow:process:approval")
|
public R complete(@RequestBody WfTaskBo bo) {
|
flowTaskService.complete(bo);
|
return R.ok();
|
}
|
|
/**
|
* 拒绝任务
|
*/
|
@PostMapping(value = "/reject")
|
@SaCheckPermission("workflow:process:approval")
|
public R taskReject(@RequestBody WfTaskBo taskBo) {
|
flowTaskService.taskReject(taskBo);
|
return R.ok();
|
}
|
|
/**
|
* 退回任务
|
*/
|
@PostMapping(value = "/return")
|
@SaCheckPermission("workflow:process:approval")
|
public R taskReturn(@RequestBody WfTaskBo bo) {
|
flowTaskService.taskReturn(bo);
|
return R.ok();
|
}
|
|
/**
|
* 获取所有可回退的节点
|
*/
|
@PostMapping(value = "/returnList")
|
@SaCheckPermission("workflow:process:query")
|
public R findReturnTaskList(@RequestBody WfTaskBo bo) {
|
return R.ok(flowTaskService.findReturnTaskList(bo));
|
}
|
|
/**
|
* 删除任务
|
*/
|
@DeleteMapping(value = "/delete")
|
@SaCheckPermission("workflow:process:approval")
|
public R delete(@RequestBody WfTaskBo bo) {
|
flowTaskService.deleteTask(bo);
|
return R.ok();
|
}
|
|
/**
|
* 认领/签收任务
|
*/
|
@PostMapping(value = "/claim")
|
@SaCheckPermission("workflow:process:claim")
|
public R claim(@RequestBody WfTaskBo bo) {
|
flowTaskService.claim(bo);
|
return R.ok();
|
}
|
|
/**
|
* 取消认领/签收任务
|
*/
|
@PostMapping(value = "/unClaim")
|
@SaCheckPermission("workflow:process:claim")
|
public R unClaim(@RequestBody WfTaskBo bo) {
|
flowTaskService.unClaim(bo);
|
return R.ok();
|
}
|
|
/**
|
* 委派任务
|
*/
|
@PostMapping(value = "/delegate")
|
@SaCheckPermission("workflow:process:approval")
|
public R delegate(@RequestBody WfTaskBo bo) {
|
if (ObjectUtil.hasNull(bo.getTaskId(), bo.getUserId())) {
|
return R.fail("参数错误!");
|
}
|
flowTaskService.delegateTask(bo);
|
return R.ok();
|
}
|
|
/**
|
* 转办任务
|
*/
|
@PostMapping(value = "/transfer")
|
@SaCheckPermission("workflow:process:approval")
|
public R transfer(@RequestBody WfTaskBo bo) {
|
if (ObjectUtil.hasNull(bo.getTaskId(), bo.getUserId())) {
|
return R.fail("参数错误!");
|
}
|
flowTaskService.transferTask(bo);
|
return R.ok();
|
}
|
|
/**
|
* 生成流程图
|
*
|
* @param processId 任务ID
|
*/
|
@RequestMapping("/diagram/{processId}")
|
public void genProcessDiagram(HttpServletResponse response,
|
@PathVariable("processId") String processId) {
|
InputStream inputStream = flowTaskService.diagram(processId);
|
OutputStream os = null;
|
BufferedImage image = null;
|
try {
|
image = ImageIO.read(inputStream);
|
response.setContentType("image/png");
|
os = response.getOutputStream();
|
if (image != null) {
|
ImageIO.write(image, "png", os);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
if (os != null) {
|
os.flush();
|
os.close();
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|