/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package com.vci.ubcs.flow.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.flow.business.service.FlowBusinessService; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.core.utils.TaskUtil; import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.service.FlowEngineService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.flowable.engine.RepositoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.repository.Deployment; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 流程事务通用接口 * * @author Chill */ @NonDS @RestController @AllArgsConstructor @RequestMapping("work") @Api(value = "流程事务通用接口", tags = "流程事务通用接口") public class WorkController { private final TaskService taskService; private final FlowEngineService flowEngineService; private final FlowBusinessService flowBusinessService; /** * 发起事务列表页 */ @GetMapping("start-list") @ApiOperationSupport(order = 1) @ApiOperation(value = "发起事务列表页", notes = "传入流程类型") public R> startList(@ApiParam("流程类型") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) { IPage pages = flowEngineService.selectProcessPage(Condition.getPage(query), category, mode); return R.data(pages); } /** * 待签事务列表页 */ @GetMapping("claim-list") @ApiOperationSupport(order = 2) @ApiOperation(value = "待签事务列表页", notes = "传入流程信息") public R> claimList(@ApiParam("流程信息") BladeFlow bladeFlow, Query query) { IPage pages = flowBusinessService.selectClaimPage(Condition.getPage(query), bladeFlow); return R.data(pages); } /** * 待办事务列表页 */ @GetMapping("todo-list") @ApiOperationSupport(order = 3) @ApiOperation(value = "待办事务列表页", notes = "传入流程信息") public R> todoList(@ApiParam("流程信息") BladeFlow bladeFlow, Query query) { IPage pages = flowBusinessService.selectTodoPage(Condition.getPage(query), bladeFlow); return R.data(pages); } /** * 已发事务列表页 */ @GetMapping("send-list") @ApiOperationSupport(order = 4) @ApiOperation(value = "已发事务列表页", notes = "传入流程信息") public R> sendList(@ApiParam("流程信息") BladeFlow bladeFlow, Query query) { IPage pages = flowBusinessService.selectSendPage(Condition.getPage(query), bladeFlow); return R.data(pages); } /** * 办结事务列表页 */ @GetMapping("done-list") @ApiOperationSupport(order = 5) @ApiOperation(value = "办结事务列表页", notes = "传入流程信息") public R> doneList(@ApiParam("流程信息") BladeFlow bladeFlow, Query query) { IPage pages = flowBusinessService.selectDonePage(Condition.getPage(query), bladeFlow); return R.data(pages); } /** * 签收事务 * * @param taskId 任务id */ @PostMapping("claim-task") @ApiOperationSupport(order = 6) @ApiOperation(value = "签收事务", notes = "传入流程信息") public R claimTask(@ApiParam("任务id") String taskId) { taskService.claim(taskId, TaskUtil.getTaskUser()); return R.success("签收事务成功"); } /** * 完成任务 * * @param flow 请假信息 */ @PostMapping("complete-task") @ApiOperationSupport(order = 7) @ApiOperation(value = "完成任务", notes = "传入流程信息") public R completeTask(@ApiParam("任务信息") @RequestBody BladeFlow flow) { return R.status(flowBusinessService.completeTask(flow)); } /** * 删除任务 * * @param taskId 任务id * @param reason 删除原因 */ @PostMapping("delete-task") @ApiOperationSupport(order = 8) @ApiOperation(value = "删除任务", notes = "传入流程信息") public R deleteTask(@ApiParam("任务id") String taskId, @ApiParam("删除原因") String reason) { taskService.deleteTask(taskId, reason); return R.success("删除任务成功"); } }