流转工作流程
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user