activiti审批历史查询
提示:以下是本篇文章正文内容,下面案例可供参考
一、activiti审批历史查询
//通过businesskey查出正在运行中流程的实例ID
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();
//定义返回结果集
ActTasksInfo result = new ActTasksInfo();
if (ObjectUtils.isNotEmpty(processInstance) && StringUtils.isNotEmpty(processInstance.getProcessInstanceId())) {
//根据流程实例ID找到所有正在运行的任务
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).list();
if (ObjectUtils.isNotEmpty(tasks)) {
result.setBasStatus(ActivitiConstants.QUERY_SUCCESS);
result.setProcessStatus("运行中");
List<BasTask> basTasks = new ArrayList<>();
for (int i = 0; i < tasks.size(); i++) {
BasTask basTask = new BasTask();
basTask.setTaskName(tasks.get(i).getName());
basTask.setTaskStatus("运行任务");
basTask.setApprovalStatus("待审批");
basTask.setStartTime(tasks.get(i).getCreateTime());
List<String> collect = taskService.getIdentityLinksForTask(tasks.get(i).getId())
.stream().filter(p->p.getUserId()!=null).map(IdentityLink::getUserId).distinct().collect(Collectors.toList());
basTask.setNowTaskUserCode(collect);
basTasks.add(basTask);
}
result.setNowTasks(basTasks);
//组装正运行流程的历史节点
List<HistoricTaskInstance> list = processEngine.getHistoryService().createHistoricTaskInstanceQuery()
.processInstanceId(processInstance.getProcessInstanceId()).orderByHistoricTaskInstanceEndTime().asc().list();
List<HistoricTaskInstance> collect = list.stream().filter(a -> a.getEndTime() != null).distinct().collect(Collectors.toList());
List<BasTask> historyTasks = new ArrayList<>();
for (int i = 0; i < collect.size(); i++) {
BasTask basTask = new BasTask();
basTask.setStartTime(collect.get(i).getStartTime());
basTask.setApprovalStatus(collect.get(i).getDescription());
basTask.setTaskStatus("已结束任务");
UserQuery param = new UserQuery();
if(ObjectUtils.isNotEmpty(collect)&& ObjectUtils.isNotEmpty(collect.get(i))&&StringUtils.isNotEmpty(collect.get(i).getAssignee())){
param.setUserCode(collect.get(i).getAssignee());
Result<List<SysUser>> listResult = iUserFeign.selectUserListByUserId(param);
if(ObjectUtils.isNotEmpty(listResult.getData())&&ObjectUtils.isNotEmpty(listResult.getData().get(0))
&&StringUtils.isNotEmpty(listResult.getData().get(0).getUserName())){
basTask.setActualAssignee(listResult.getData().get(0).getUserName());
}
}
basTask.setTaskName(collect.get(i).getName());
basTask.setEndTime(collect.get(i).getEndTime());
if (ObjectUtils.isNotEmpty(taskService.getTaskComments(collect.get(i).getId())) &&
ObjectUtils.isNotEmpty(taskService.getTaskComments(collect.get(i).getId()).get(0)) &&
ObjectUtils.isNotEmpty(taskService.getTaskComments(collect.get(i).getId()).get(0).getFullMessage())) {
basTask.setProposal(taskService.getTaskComments(collect.get(i).getId()).get(0).getFullMessage());
}
historyTasks.add(basTask);
}
result.setHistoryTasks(historyTasks);
return result;
}
} else {
//组装已结束流程的所有节点
HistoricProcessInstance historicProcessInstance = processEngine.getHistoryService().createHistoricProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();
List<HistoricTaskInstance> list = processEngine.getHistoryService().createHistoricTaskInstanceQuery().processInstanceId(((HistoricProcessInstanceEntityImpl) historicProcessInstance).getProcessInstanceId()).list();
List<BasTask> historyTasks = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
BasTask basTask = new BasTask();
basTask.setStartTime(list.get(i).getStartTime());
basTask.setTaskStatus("已结束任务");
UserQuery param = new UserQuery();
if(ObjectUtils.isNotEmpty(list)&& ObjectUtils.isNotEmpty(list.get(i))&&StringUtils.isNotEmpty(list.get(i).getAssignee())){
param.setUserCode(list.get(i).getAssignee());
Result<List<SysUser>> listResult = iUserFeign.selectUserListByUserId(param);
if(ObjectUtils.isNotEmpty(listResult.getData())&&ObjectUtils.isNotEmpty(listResult.getData().get(0))
&&StringUtils.isNotEmpty(listResult.getData().get(0).getUserName())){
basTask.setActualAssignee(listResult.getData().get(0).getUserName());
}
}
basTask.setApprovalStatus(list.get(i).getDescription());
basTask.setTaskName(list.get(i).getName());
basTask.setEndTime(list.get(i).getEndTime());
if (ObjectUtils.isNotEmpty(taskService.getTaskComments(list.get(i).getId())) &&
ObjectUtils.isNotEmpty(taskService.getTaskComments(list.get(i).getId()).get(0)) &&
ObjectUtils.isNotEmpty(taskService.getTaskComments(list.get(i).getId()).get(0).getFullMessage())) {
basTask.setProposal(taskService.getTaskComments(list.get(i).getId()).get(0).getFullMessage());
}
historyTasks.add(basTask);
}
result.setHistoryTasks(historyTasks);
result.setBasStatus(ActivitiConstants.QUERY_SUCCESS);
result.setProcessStatus("已结束");
List<HistoricTaskInstance> list1 = processEngine.getHistoryService().createHistoricTaskInstanceQuery().processInstanceBusinessKey(businessKey).orderByDeleteReason().desc().list();
//已结束流程记录结束原因
if (ObjectUtils.isNotEmpty(list1) && StringUtils.isNotEmpty(list1.get(0).getDeleteReason())) {
result.setDeleteReason(list1.get(0).getDeleteReason());
}
return result;
}
由于自己内部有封装,有问题可以私信我