工作流程审核不通过、预告警单处理、终端周期检测等需求

1、提交了主pom,因为需要引入达梦数据量;
2、提交了gateway的配置文件,因为部分接口没有添加到权限中,待后续增加后再注释
This commit is contained in:
2024-09-13 20:31:32 +08:00
parent 06493c07c3
commit ba6762587f
50 changed files with 1144 additions and 110 deletions

View File

@@ -1,16 +1,25 @@
package com.njcn.bpm.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.bpm.pojo.dto.PageResult;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstancePageParam;
import com.njcn.bpm.pojo.param.task.*;
import com.njcn.bpm.pojo.po.BpmCategory;
import com.njcn.bpm.pojo.po.BpmForm;
import com.njcn.bpm.pojo.vo.TodoVO;
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.IBpmFormService;
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.BpmTaskConvert;
import com.njcn.bpm.utils.CollectionUtils;
import com.njcn.bpm.utils.TodoVOConvert;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -30,6 +39,7 @@ import io.swagger.annotations.ApiOperation;
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.flowable.task.api.TaskInfo;
@@ -42,6 +52,7 @@ import javax.annotation.Resource;
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;
@@ -74,6 +85,12 @@ public class BpmTaskController extends BaseController {
@Resource
private DeptFeignClient deptFeignClient;
@Resource
private IBpmProcessDefinitionService processDefinitionService;
@Resource
private IBpmCategoryService categoryService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/todoList")
@@ -100,6 +117,82 @@ public class BpmTaskController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/todoAllList")
@ApiOperation("获取所有待办任务")
public HttpResult<List<BpmTaskVO>> todoAllList() {
String methodDescribe = getMethodDescribe("todoAllList");
List<Task> pageResult = taskService.todoAllList(RequestUtil.getUserIndex());
if (CollUtil.isEmpty(pageResult)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, new ArrayList<>(), methodDescribe);
}
// 拼接数据
Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap(
convertSet(pageResult, Task::getProcessInstanceId));
List<UserVO> userList = userFeignClient.getUserVOByIdList(convertList(processInstanceMap.values(), ProcessInstance::getStartUserId)).getData();
Map<String, UserVO> userMap = CollectionUtils.convertMap(userList, UserVO::getId);
List<BpmTaskVO> bpmTaskVOPageResult = BpmTaskConvert.INSTANCE.buildTodoTaskList(pageResult, processInstanceMap, userMap,businessCommonFeignClient);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, bpmTaskVOPageResult, methodDescribe);
}
/**
* 获取全部待办任务
* 1. 待办工作流程
* 2. 审核不通过的流程,需重新编辑并发起
* 3. 预告警事件待办
* 4. 终端周期到期待检测
* 5. todo... 可能电能质量问题后续也要想办法搜集进来
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/allTodoList")
@ApiOperation("获取全部待办任务")
@ApiImplicitParam(name = "bpmTaskQueryParam", value = "查询参数", required = true)
public HttpResult<List<TodoVO>> allTodoList() {
String methodDescribe = getMethodDescribe("allTodoList");
List<TodoVO> result = new ArrayList<>();
// 获取当前用户所有待办工作流程
HttpResult<List<BpmTaskVO>> todoAllList = this.todoAllList();
if(CollectionUtil.isNotEmpty(todoAllList.getData())){
// 转为统一的todoVO3
result.addAll(TodoVOConvert.convertByBpmTaskVO(todoAllList.getData()));
}
// 获取当前用户所有不通过的工作流程
List<BpmProcessInstanceVO> rejectProcessInstanceList = getRejectProcessInstanceList();
if(CollectionUtil.isNotEmpty(rejectProcessInstanceList)){
// 转为统一的todoVO3
result.addAll(TodoVOConvert.convertByBpmProcessInstance(rejectProcessInstanceList));
}
// 获取没有流程的一些待办信息
result.addAll(businessCommonFeignClient.getTodoBusiness().getData());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* 获取当前用户所有的不通过流程
*/
private List<BpmProcessInstanceVO> getRejectProcessInstanceList() {
// 先获取当前用户所有审核不通过的流程实例ID
Set<String> instanceIdSet = businessCommonFeignClient.getAllRejectInstanceId().getData();
if(CollUtil.isEmpty(instanceIdSet)){
return new ArrayList<>();
}
List<HistoricProcessInstance> instances = processInstanceService.getRejectProcessInstanceList(RequestUtil.getUserIndex(),instanceIdSet);
if (CollUtil.isEmpty(instances)) {
return new ArrayList<>();
}
// 拼接返回
Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(
convertList(instances, HistoricProcessInstance::getId));
Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
convertSet(instances, HistoricProcessInstance::getProcessDefinitionId));
Map<String, BpmCategory> categoryMap = categoryService.getCategoryMap(
convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
return BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(instances, processDefinitionMap, categoryMap, taskMap, null, null,businessCommonFeignClient);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/doneList")