流转工作流程

This commit is contained in:
2024-05-12 16:15:34 +08:00
parent 1a9beeed93
commit eb9818dd7f
71 changed files with 3810 additions and 302 deletions

View File

@@ -0,0 +1,41 @@
package com.njcn.bpm.controller;
import com.njcn.bpm.pojo.vo.task.BpmActivityVO;
import com.njcn.bpm.service.task.IBpmActivityService;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Tag(name = "管理后台 - 流程活动实例")
@RestController
@RequestMapping("/bpm/activity")
@Validated
public class BpmActivityController extends BaseController {
@Resource
private IBpmActivityService activityService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/list")
@ApiOperation("生成指定流程实例的高亮流程图")
@ApiImplicitParam(name = "processInstanceId", value = "查询参数", required = true)
public HttpResult<List<BpmActivityVO>> getActivityList(String processInstanceId) {
String methodDescribe = getMethodDescribe("getActivityList");
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, activityService.getActivityListByProcessInstanceId(processInstanceId), methodDescribe);
}
}

View File

@@ -0,0 +1,195 @@
package com.njcn.bpm.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO;
import com.njcn.bpm.pojo.dto.PageResult;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCreateParam;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstancePageParam;
import com.njcn.bpm.pojo.po.BpmCategory;
import com.njcn.bpm.pojo.po.BpmProcessDefinitionInfo;
import com.njcn.bpm.pojo.vo.instance.BpmProcessInstanceVO;
import com.njcn.bpm.pojo.vo.task.BpmTaskVO;
import com.njcn.bpm.service.IBpmCategoryService;
import com.njcn.bpm.service.IBpmProcessDefinitionService;
import com.njcn.bpm.service.task.IBpmProcessInstanceService;
import com.njcn.bpm.service.task.IBpmTaskService;
import com.njcn.bpm.utils.BpmProcessInstanceConvert;
import com.njcn.bpm.utils.BpmnModelUtils;
import com.njcn.bpm.utils.CollectionUtils;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.user.pojo.vo.UserVO;
import com.njcn.web.controller.BaseController;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.utils.RequestUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
import static com.njcn.bpm.utils.CollectionUtils.convertList;
import static com.njcn.bpm.utils.CollectionUtils.convertSet;
@RestController
@RequestMapping("/bpm/processInstance")
@Validated
@Slf4j
@Api(tags = "管理后台 - 流程实例")
@RequiredArgsConstructor
public class BpmProcessInstanceController extends BaseController {
@Resource
private IBpmProcessInstanceService processInstanceService;
@Resource
private IBpmTaskService taskService;
@Resource
private IBpmProcessDefinitionService processDefinitionService;
@Resource
private IBpmCategoryService categoryService;
@Resource
private UserFeignClient userFeignClient;
@Resource
private DeptFeignClient deptFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/myPage")
@ApiOperation("获得我的实例分页列表")
public HttpResult<Page<BpmProcessInstanceVO>> getProcessInstanceMyPage(@Validated @RequestBody BpmProcessInstancePageParam bpmProcessInstancePageParam) {
String methodDescribe = getMethodDescribe("getProcessInstanceMyPage");
PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage(RequestUtil.getUserIndex(), bpmProcessInstancePageParam);
if (CollUtil.isEmpty(pageResult.getList())) {
Page<BpmProcessInstanceVO> result = new Page<>();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// 拼接返回
Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(
convertList(pageResult.getList(), HistoricProcessInstance::getId));
Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
Map<String, BpmCategory> categoryMap = categoryService.getCategoryMap(
convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
PageResult<BpmProcessInstanceVO> bpmProcessInstanceVOPageResult = BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult, processDefinitionMap, categoryMap, taskMap, null, null);
//封装调整为当前系统的格式
Page<BpmProcessInstanceVO> page = new Page<>();
page.setRecords(bpmProcessInstanceVOPageResult.getList());
page.setTotal(bpmProcessInstanceVOPageResult.getTotal());
page.setSize(PageFactory.getPageSize(bpmProcessInstancePageParam));
page.setCurrent(PageFactory.getPageNum(bpmProcessInstancePageParam));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/managerPage")
@ApiOperation("获得管理流程实例的分页列表")
public HttpResult<Page<BpmProcessInstanceVO>> getProcessInstanceManagerPage(@Validated @RequestBody BpmProcessInstancePageParam bpmProcessInstancePageParam) {
String methodDescribe = getMethodDescribe("getProcessInstanceManagerPage");
PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage(
null, bpmProcessInstancePageParam);
if (CollUtil.isEmpty(pageResult.getList())) {
Page<BpmProcessInstanceVO> result = new Page<>();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// 拼接返回
Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(
convertList(pageResult.getList(), HistoricProcessInstance::getId));
Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
Map<String, BpmCategory> categoryMap = categoryService.getCategoryMap(
convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
// 发起人信息
List<UserVO> userList = userFeignClient.getUserVOByIdList(convertList(pageResult.getList(), HistoricProcessInstance::getStartUserId)).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
List<Dept> deptList = deptFeignClient.getDeptInfoListByIds(convertList(userMap.values(), UserVO::getDeptId)).getData();
Map<String, Dept> deptMap = CollectionUtils.convertMap(deptList, Dept::getId);
PageResult<BpmProcessInstanceVO> bpmProcessInstanceVOPageResult = BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
processDefinitionMap, categoryMap, taskMap, userMap, deptMap);
//封装调整为当前系统的格式
Page<BpmProcessInstanceVO> page = new Page<>();
page.setRecords(bpmProcessInstanceVOPageResult.getList());
page.setTotal(bpmProcessInstanceVOPageResult.getTotal());
page.setSize(PageFactory.getPageSize(bpmProcessInstancePageParam));
page.setCurrent(PageFactory.getPageNum(bpmProcessInstancePageParam));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/create")
@ApiOperation("新建流程实例")
public HttpResult<String> createProcessInstance(@Validated @RequestBody BpmProcessInstanceCreateReqDTO bpmProcessInstanceCreateReqDTO) {
String methodDescribe = getMethodDescribe("createProcessInstance");
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, processInstanceService.createProcessInstance(RequestUtil.getUserIndex(), bpmProcessInstanceCreateReqDTO), methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/get")
@ApiOperation("获得指定流程实例")
public HttpResult<BpmProcessInstanceVO> getProcessInstance(String id) {
String methodDescribe = getMethodDescribe("getProcessInstance");
HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(id);
if (processInstance == null) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
// 拼接返回
ProcessDefinition processDefinition = processDefinitionService.getProcessDefinition(
processInstance.getProcessDefinitionId());
BpmProcessDefinitionInfo processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo(
processInstance.getProcessDefinitionId());
String bpmnXml = BpmnModelUtils.getBpmnXml(
processDefinitionService.getProcessDefinitionBpmnModel(processInstance.getProcessDefinitionId()));
UserVO startUser = userFeignClient.getUserById(processInstance.getStartUserId()).getData();
Dept dept = null;
if (startUser != null) {
dept = deptFeignClient.getDeptById(startUser.getDeptId()).getData();
}
BpmProcessInstanceVO bpmProcessInstanceVO = BpmProcessInstanceConvert.INSTANCE.buildProcessInstance(processInstance,
processDefinition, processDefinitionInfo, bpmnXml, startUser, dept);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, bpmProcessInstanceVO, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/cancelByStartUser")
@ApiOperation("用户取消流程实例")
public HttpResult<Boolean> cancelProcessInstanceByStartUser(@Valid @RequestBody BpmProcessInstanceCancelParam cancelReqVO) {
String methodDescribe = getMethodDescribe("cancelProcessInstanceByStartUser");
processInstanceService.cancelProcessInstanceByStartUser(RequestUtil.getUserIndex(), cancelReqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/cancelByAdmin")
@ApiOperation("管理员取消流程实例")
public HttpResult<Boolean> cancelProcessInstanceByManager(
@Valid @RequestBody BpmProcessInstanceCancelParam cancelReqVO) {
String methodDescribe = getMethodDescribe("cancelProcessInstanceByManager");
processInstanceService.cancelProcessInstanceByAdmin(RequestUtil.getUserIndex(), cancelReqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -0,0 +1,302 @@
package com.njcn.bpm.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.bpm.pojo.dto.PageResult;
import com.njcn.bpm.pojo.param.task.*;
import com.njcn.bpm.pojo.po.BpmForm;
import com.njcn.bpm.pojo.vo.task.BpmTaskVO;
import com.njcn.bpm.service.IBpmFormService;
import com.njcn.bpm.service.task.IBpmTaskService;
import com.njcn.bpm.utils.BpmTaskConvert;
import com.njcn.bpm.utils.CollectionUtils;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.user.pojo.po.User;
import com.njcn.user.pojo.vo.UserVO;
import com.njcn.web.controller.BaseController;
import com.njcn.web.factory.PageFactory;
import com.njcn.web.utils.RequestUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskInfo;
import org.flowable.bpmn.model.UserTask;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.njcn.bpm.service.task.IBpmProcessInstanceService;
import org.flowable.task.api.history.HistoricTaskInstance;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.njcn.bpm.utils.CollectionUtils.*;
@RestController
@RequestMapping("/bpm/task")
@Validated
@Slf4j
@Api(tags = "管理后台 - 流程任务实例")
@RequiredArgsConstructor
public class BpmTaskController extends BaseController {
@Resource
private IBpmTaskService taskService;
@Resource
private IBpmProcessInstanceService processInstanceService;
@Resource
private IBpmFormService formService;
@Resource
private UserFeignClient userFeignClient;
@Resource
private DeptFeignClient deptFeignClient;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/todoList")
@ApiOperation("获取待办任务分页")
public HttpResult<Page<BpmTaskVO>> getTaskTodoPage(@Validated @RequestBody BpmTaskParam.BpmTaskQueryParam bpmTaskQueryParam) {
String methodDescribe = getMethodDescribe("getTaskTodoPage");
PageResult<Task> pageResult = taskService.getTaskTodoPage(RequestUtil.getUserIndex(), bpmTaskQueryParam);
if (CollUtil.isEmpty(pageResult.getList())) {
Page<BpmTaskVO> result = new Page<>();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// 拼接数据
Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap(
convertSet(pageResult.getList(), Task::getProcessInstanceId));
List<UserVO> userList = userFeignClient.getUserVOByIdList(convertList(processInstanceMap.values(), ProcessInstance::getStartUserId)).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
PageResult<BpmTaskVO> bpmTaskVOPageResult = BpmTaskConvert.INSTANCE.buildTodoTaskPage(pageResult, processInstanceMap, userMap);
//封装调整为当前系统的格式
Page<BpmTaskVO> page = new Page<>();
page.setRecords(bpmTaskVOPageResult.getList());
page.setTotal(bpmTaskVOPageResult.getTotal());
page.setSize(PageFactory.getPageSize(bpmTaskQueryParam));
page.setCurrent(PageFactory.getPageNum(bpmTaskQueryParam));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/doneList")
@ApiOperation("获取已办任务分页")
@ApiImplicitParam(name = "bpmTaskQueryParam", value = "查询参数", required = true)
public HttpResult<Page<BpmTaskVO>> getTaskDonePage(@Validated @RequestBody BpmTaskParam.BpmTaskQueryParam bpmTaskQueryParam) {
String methodDescribe = getMethodDescribe("getTaskDonePage");
PageResult<HistoricTaskInstance> pageResult = taskService.getTaskDonePage(RequestUtil.getUserIndex(), bpmTaskQueryParam);
if (CollUtil.isEmpty(pageResult.getList())) {
Page<BpmTaskVO> result = new Page<>();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// 拼接数据
Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
List<UserVO> userList = userFeignClient.getUserVOByIdList(convertList(processInstanceMap.values(), HistoricProcessInstance::getStartUserId)).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
PageResult<BpmTaskVO> bpmTaskRespVOPageResult = BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null);
//封装调整为当前系统的格式
Page<BpmTaskVO> page = new Page<>();
page.setRecords(bpmTaskRespVOPageResult.getList());
page.setTotal(bpmTaskRespVOPageResult.getTotal());
page.setSize(PageFactory.getPageSize(bpmTaskQueryParam));
page.setCurrent(PageFactory.getPageNum(bpmTaskQueryParam));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/AllList")
@ApiOperation("获取全部任务的分页")
@ApiImplicitParam(name = "bpmTaskQueryParam", value = "查询参数", required = true)
public HttpResult<Page<BpmTaskVO>> getTaskManagerPage(@Validated @RequestBody BpmTaskParam.BpmTaskQueryParam bpmTaskQueryParam) {
String methodDescribe = getMethodDescribe("getTaskManagerPage");
PageResult<HistoricTaskInstance> pageResult = taskService.getTaskPage(RequestUtil.getUserIndex(), bpmTaskQueryParam);
if (CollUtil.isEmpty(pageResult.getList())) {
Page<BpmTaskVO> result = new Page<>();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
// 拼接数据
Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
// 获得 User 和 Dept Map
List<String> userIds = convertList(processInstanceMap.values(), HistoricProcessInstance::getStartUserId);
userIds.addAll(convertSet(pageResult.getList(), TaskInfo::getAssignee));
List<UserVO> userList = userFeignClient.getUserVOByIdList(userIds).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
List<Dept> deptList = deptFeignClient.getDeptInfoListByIds(convertList(userMap.values(), UserVO::getDeptId)).getData();
Map<String, Dept> deptMap = CollectionUtils.convertMap(deptList, Dept::getId);
PageResult<BpmTaskVO> bpmTaskVOPageResult = BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap);
//封装调整为当前系统的格式
Page<BpmTaskVO> page = new Page<>();
page.setRecords(bpmTaskVOPageResult.getList());
page.setTotal(bpmTaskVOPageResult.getTotal());
page.setSize(PageFactory.getPageSize(bpmTaskQueryParam));
page.setCurrent(PageFactory.getPageNum(bpmTaskQueryParam));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/listByProcessInstanceId")
@ApiOperation("获得指定流程实例的任务列表")
@ApiImplicitParam(name = "processInstanceId", value = "查询参数", required = true)
public HttpResult<List<BpmTaskVO>> getTaskListByProcessInstanceId(String processInstanceId) {
String methodDescribe = getMethodDescribe("getTaskListByProcessInstanceId");
List<HistoricTaskInstance> taskList = taskService.getTaskListByProcessInstanceId(processInstanceId);
if (CollUtil.isEmpty(taskList)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
// 拼接数据
HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(processInstanceId);
// 获得 User 和 Dept Map
List<String> userIds = convertListByFlatMap(taskList, task -> Stream.of(task.getAssignee(), task.getOwner()));
userIds.add(processInstance.getStartUserId());
List<UserVO> userList = userFeignClient.getUserVOByIdList(userIds).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
List<Dept> deptList = deptFeignClient.getDeptInfoListByIds(convertList(userMap.values(), UserVO::getDeptId)).getData();
Map<String, Dept> deptMap = CollectionUtils.convertMap(deptList, Dept::getId);
// 获得 Form Map
Map<String, BpmForm> formMap = formService.getFormMap(convertSet(taskList, TaskInfo::getFormKey));
List<BpmTaskVO> bpmTaskRespVOS = BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, processInstance,
formMap, userMap, deptMap);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, bpmTaskRespVOS, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/approve")
@ApiOperation("通过任务")
@ApiImplicitParam(name = "bpmTaskApproveParam", value = "查询参数", required = true)
public HttpResult<Boolean> approveTask(@Validated @RequestBody BpmTaskApproveParam bpmTaskApproveParam) {
String methodDescribe = getMethodDescribe("approveTask");
taskService.approveTask(RequestUtil.getUserIndex(), bpmTaskApproveParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/reject")
@ApiOperation("不通过任务")
@ApiImplicitParam(name = "bpmTaskRejectParam", value = "查询参数", required = true)
public HttpResult<Boolean> rejectTask(@Validated @RequestBody BpmTaskRejectParam bpmTaskRejectParam) {
String methodDescribe = getMethodDescribe("rejectTask");
taskService.rejectTask(RequestUtil.getUserIndex(), bpmTaskRejectParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/listByReturn")
@ApiOperation("获取所有可回退的节点")
@ApiImplicitParam(name = "taskId", value = "查询参数", required = true)
public HttpResult<List<BpmTaskVO>> getTaskListByReturn(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getTaskListByReturn");
List<UserTask> userTaskList = taskService.getUserTaskListByReturn(id);
List<BpmTaskVO> taskList = userTaskList.stream().map(userTask -> {
BpmTaskVO bpmTaskVO = new BpmTaskVO();
bpmTaskVO.setName(userTask.getName());
bpmTaskVO.setTaskDefinitionKey(userTask.getId());
return bpmTaskVO;
}).collect(Collectors.toList());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, taskList, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/return")
@ApiOperation("回退任务")
@ApiImplicitParam(name = "bpmTaskReturnParam", value = "查询参数", required = true)
public HttpResult<Boolean> returnTask(@Validated @RequestBody BpmTaskReturnParam bpmTaskReturnParam) {
String methodDescribe = getMethodDescribe("returnTask");
taskService.returnTask(RequestUtil.getUserIndex(), bpmTaskReturnParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/delegate")
@ApiOperation("委派任务")
@ApiImplicitParam(name = "reqVO", value = "查询参数", required = true)
public HttpResult<Boolean> delegateTask(@Validated @RequestBody BpmTaskDelegateParam reqVO) {
String methodDescribe = getMethodDescribe("delegateTask");
taskService.delegateTask(RequestUtil.getUserIndex(), reqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/transfer")
@ApiOperation("转派任务")
@ApiImplicitParam(name = "reqVO", value = "查询参数", required = true)
public HttpResult<Boolean> transferTask(@Validated @RequestBody BpmTaskTransferParam reqVO) {
String methodDescribe = getMethodDescribe("transferTask");
taskService.transferTask(RequestUtil.getUserIndex(), reqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/createSign")
@ApiOperation("加签")
@ApiImplicitParam(name = "reqVO", value = "查询参数", required = true)
public HttpResult<Boolean> createSignTask(@Validated @RequestBody BpmTaskSignCreateParam reqVO) {
String methodDescribe = getMethodDescribe("createSignTask");
taskService.createSignTask(RequestUtil.getUserIndex(), reqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/deleteSign")
@ApiOperation("减签")
@ApiImplicitParam(name = "reqVO", value = "查询参数", required = true)
public HttpResult<Boolean> deleteSignTask(@Validated @RequestBody BpmTaskSignDeleteParam reqVO) {
String methodDescribe = getMethodDescribe("createSignTask");
taskService.deleteSignTask(RequestUtil.getUserIndex(), reqVO);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/listByParentTaskId")
@ApiOperation("获得指定父级任务的子任务列表")
@ApiImplicitParam(name = "parentTaskId", value = "查询参数", required = true)
public HttpResult<List<BpmTaskVO>> getTaskListByParentTaskId(String parentTaskId) {
String methodDescribe = getMethodDescribe("getTaskListByParentTaskId");
List<Task> taskList = taskService.getTaskListByParentTaskId(parentTaskId);
if (CollUtil.isEmpty(taskList)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, new ArrayList<>(), methodDescribe);
}
List<String> userIds = convertListByFlatMap(taskList, user -> Stream.of(user.getAssignee(),user.getOwner()));
userIds = userIds.stream().distinct().collect(Collectors.toList());
List<UserVO> userList = userFeignClient.getUserVOByIdList(userIds).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
List<Dept> deptList = deptFeignClient.getDeptInfoListByIds(convertList(userMap.values(), UserVO::getDeptId)).getData();
Map<String, Dept> deptMap = CollectionUtils.convertMap(deptList, Dept::getId);
List<BpmTaskVO> bpmTaskVOS = BpmTaskConvert.INSTANCE.buildTaskListByParentTaskId(taskList, userMap, deptMap);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, bpmTaskVOS, methodDescribe);
}
}