activiti审批历史查询

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;
        }

由于自己内部有封装,有问题可以私信我

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值