diff --git a/quotation-admin/src/main/java/net/ferrum/web/controller/workflow/WfProcessController.java b/quotation-admin/src/main/java/net/ferrum/web/controller/workflow/WfProcessController.java index b6fa90a..57576b7 100644 --- a/quotation-admin/src/main/java/net/ferrum/web/controller/workflow/WfProcessController.java +++ b/quotation-admin/src/main/java/net/ferrum/web/controller/workflow/WfProcessController.java @@ -142,6 +142,21 @@ public class WfProcessController extends BaseController { ExcelUtil.exportExcel(listVo, "我拥有流程", WfOwnTaskExportVo.class, response); } + /** + * 导出我拥有流程列表 + */ + @SaCheckPermission("workflow:process:allExport") + @Log(title = "所有流程", businessType = BusinessType.EXPORT) + @PostMapping("/allExport") + public void allExport(@Validated ProcessQuery processQuery, HttpServletResponse response) { + List list = processService.selectAllProcessList(processQuery); + List listVo = BeanUtil.copyToList(list, WfOwnTaskExportVo.class); + for (WfOwnTaskExportVo exportVo : listVo) { + exportVo.setStatus(ObjectUtil.isNull(exportVo.getFinishTime()) ? "进行中" : "已完成"); + } + ExcelUtil.exportExcel(listVo, "所有流程", WfOwnTaskExportVo.class, response); + } + /** * 导出待办流程列表 */ diff --git a/quotation-system/src/main/java/net/ferrum/workflow/domain/bo/WfTaskBo.java b/quotation-system/src/main/java/net/ferrum/workflow/domain/bo/WfTaskBo.java index 86c6262..5cb260c 100644 --- a/quotation-system/src/main/java/net/ferrum/workflow/domain/bo/WfTaskBo.java +++ b/quotation-system/src/main/java/net/ferrum/workflow/domain/bo/WfTaskBo.java @@ -61,4 +61,14 @@ public class WfTaskBo { * 下一节点审批人 */ private String nextUserIds; + + /** + * 批次 + */ + private String specBatch; + + /** + * 规格名称 + */ + private String specName; } diff --git a/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java b/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java index 5e0dfbf..e1eb00b 100644 --- a/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java +++ b/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java @@ -12,6 +12,7 @@ import org.flowable.task.api.TaskQuery; import org.springframework.stereotype.Component; import java.lang.reflect.Field; +import java.util.List; /** * 流程节点携带参数记录监听类 @@ -38,7 +39,17 @@ public class VariablePublishListener implements ExecutionListener { .taskCandidateOrAssigned(TaskUtils.getUserId()) .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) .processDefinitionId(delegateExecution.getProcessDefinitionId()) - .orderByTaskCreateTime().desc(); + .processInstanceBusinessKey(delegateExecution.getProcessInstanceBusinessKey()) + ; + //.orderByTaskCreateTime(); + //.desc(); + System.out.println("userid =" + TaskUtils.getUserId()); + System.out.println("getCandidateGroup =" + TaskUtils.getCandidateGroup()); + System.out.println("getProcessDefinitionId =" + delegateExecution.getProcessDefinitionId()); + + long n = taskQuery.count(); + List taskQueryList = taskQuery.list(); + Task task = taskQuery.singleResult(); if (task == null) { throw new ServiceException("任务没找到"); diff --git a/quotation-system/src/main/java/net/ferrum/workflow/service/impl/WfProcessServiceImpl.java b/quotation-system/src/main/java/net/ferrum/workflow/service/impl/WfProcessServiceImpl.java index 38bbd59..ce921d1 100644 --- a/quotation-system/src/main/java/net/ferrum/workflow/service/impl/WfProcessServiceImpl.java +++ b/quotation-system/src/main/java/net/ferrum/workflow/service/impl/WfProcessServiceImpl.java @@ -155,36 +155,59 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce return definitionVoList; } - @Override - public TableDataInfo selectPageAllProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + private HistoricProcessInstanceQuery getAllHistoricProcessInstanceQuery(ProcessQuery processQuery){ HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() //.startedBy(TaskUtils.getUserId()) .orderByProcessInstanceStartTime() .desc(); - Page page = getHistProcessList(historicProcessInstanceQuery,processQuery,pageQuery); + // 构建搜索条件 + ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); + return historicProcessInstanceQuery; + } + + @Override + public TableDataInfo selectPageAllProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + HistoricProcessInstanceQuery historicProcessInstanceQuery = getAllHistoricProcessInstanceQuery(processQuery); + Page page = getHistProcessPageList(historicProcessInstanceQuery,processQuery,pageQuery); return TableDataInfo.build(page); } - Page getHistProcessList(HistoricProcessInstanceQuery historicProcessInstanceQuery,ProcessQuery processQuery, PageQuery pageQuery){ - Page page = new Page<>(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); - int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); - List historicProcessInstances = historicProcessInstanceQuery - .listPage(offset, pageQuery.getPageSize()); - page.setTotal(historicProcessInstanceQuery.count()); + @Override + public List selectAllProcessList(ProcessQuery processQuery) { + HistoricProcessInstanceQuery historicProcessInstanceQuery = getAllHistoricProcessInstanceQuery(processQuery); + List historicProcessInstances = historicProcessInstanceQuery.list(); + List taskVoList = getHistProcessList(historicProcessInstances,processQuery); + + return taskVoList; + } + + private Map getHistProcessvariablesMap(HistoricProcessInstance hisIns){ + // 获取流程 Variables , 为了方便查询,将其放入 Map 中 + List historicVariableInstances = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(hisIns.getId()) + .list(); + Map variablesMap = new HashMap<>(); + for (HistoricVariableInstance hvi : historicVariableInstances) { + variablesMap.put(hvi.getVariableName(), hvi.getValue()); + } + return variablesMap; + } + + private void setSpecParaToTaskVo(Map variablesMap,WfTaskVo taskVo){ + Object var2Value = variablesMap.get(ProcessConstants.PROCESS_BATCH ); //批次 + String specBatch = Convert.toStr(var2Value); + taskVo.setSpecBatch(specBatch); + + Object var3Value = variablesMap.get(ProcessConstants.PROCESS_SPEC_NAME); // 规格名称 + String specName = Convert.toStr(var3Value); + taskVo.setSpecName(specName); + } + private List getHistProcessList(List historicProcessInstances,ProcessQuery processQuery){ List taskVoList = new ArrayList<>(); for (HistoricProcessInstance hisIns : historicProcessInstances) { WfTaskVo taskVo = new WfTaskVo(); - // 获取流程 Variables , 为了方便查询,将其放入 Map 中 - List historicVariableInstances = historyService.createHistoricVariableInstanceQuery() - .processInstanceId(hisIns.getId()) - .list(); - Map variablesMap = new HashMap<>(); - for (HistoricVariableInstance hvi : historicVariableInstances) { - variablesMap.put(hvi.getVariableName(), hvi.getValue()); - } + Map variablesMap = getHistProcessvariablesMap(hisIns); // 获取流程状态 Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY); @@ -210,13 +233,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce taskVo.setFinishTime(hisIns.getEndTime()); taskVo.setProcInsId(hisIns.getId()); - Object var2Value = variablesMap.get(ProcessConstants.PROCESS_BATCH ); //批次 - String specBatch = Convert.toStr(var2Value); - taskVo.setSpecBatch(specBatch); - - Object var3Value = variablesMap.get(ProcessConstants.PROCESS_SPEC_NAME); // 规格名称 - String specName = Convert.toStr(var3Value); - taskVo.setSpecName(specName); + setSpecParaToTaskVo(variablesMap,taskVo); // 计算耗时 if (Objects.nonNull(hisIns.getEndTime())) { @@ -239,83 +256,49 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } taskVoList.add(taskVo); } + return taskVoList; + } + private Page getHistProcessPageList(HistoricProcessInstanceQuery historicProcessInstanceQuery,ProcessQuery processQuery, PageQuery pageQuery){ + Page page = new Page<>(); + // 构建搜索条件 + ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); + int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); + List historicProcessInstances = historicProcessInstanceQuery + .listPage(offset, pageQuery.getPageSize()); + page.setTotal(historicProcessInstanceQuery.count()); + List taskVoList = getHistProcessList(historicProcessInstances,processQuery); + page.setRecords(taskVoList); return page; } - @Override - public TableDataInfo selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + private HistoricProcessInstanceQuery getOwnHistoricProcessInstanceQuery(ProcessQuery processQuery){ HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() .startedBy(TaskUtils.getUserId()) .orderByProcessInstanceStartTime() .desc(); - Page page = getHistProcessList(historicProcessInstanceQuery,processQuery,pageQuery); + // 构建搜索条件 + ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); + return historicProcessInstanceQuery; + } + + @Override + public TableDataInfo selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + HistoricProcessInstanceQuery historicProcessInstanceQuery = getOwnHistoricProcessInstanceQuery(processQuery); + Page page = getHistProcessPageList(historicProcessInstanceQuery,processQuery,pageQuery); return TableDataInfo.build(page); } @Override public List selectOwnProcessList(ProcessQuery processQuery) { - HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery() - .startedBy(TaskUtils.getUserId()) - .orderByProcessInstanceStartTime() - .desc(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery); + HistoricProcessInstanceQuery historicProcessInstanceQuery = getOwnHistoricProcessInstanceQuery(processQuery); List historicProcessInstances = historicProcessInstanceQuery.list(); - List taskVoList = new ArrayList<>(); - for (HistoricProcessInstance hisIns : historicProcessInstances) { - WfTaskVo taskVo = new WfTaskVo(); - taskVo.setCreateTime(hisIns.getStartTime()); - taskVo.setFinishTime(hisIns.getEndTime()); - taskVo.setProcInsId(hisIns.getId()); + List taskVoList = getHistProcessList(historicProcessInstances,processQuery); - // 计算耗时 - if (Objects.nonNull(hisIns.getEndTime())) { - taskVo.setDuration(DateUtils.getDatePoor(hisIns.getEndTime(), hisIns.getStartTime())); - } else { - taskVo.setDuration(DateUtils.getDatePoor(DateUtils.getNowDate(), hisIns.getStartTime())); - } - // 流程部署实例信息 - Deployment deployment = repositoryService.createDeploymentQuery() - .deploymentId(hisIns.getDeploymentId()).singleResult(); - taskVo.setDeployId(hisIns.getDeploymentId()); - taskVo.setProcDefId(hisIns.getProcessDefinitionId()); - taskVo.setProcDefName(hisIns.getProcessDefinitionName()); - taskVo.setProcDefVersion(hisIns.getProcessDefinitionVersion()); - taskVo.setCategory(deployment.getCategory()); - - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(hisIns.getId(),spec); - taskVo.setSpecBatch(spec[0]); - taskVo.setSpecName(spec[1]); - //add end for test --tzx - - // 当前所处流程 - List taskList = taskService.createTaskQuery().processInstanceId(hisIns.getId()).includeIdentityLinks().list(); - if (CollUtil.isNotEmpty(taskList)) { - taskVo.setTaskName(taskList.stream().map(Task::getName).filter(StringUtils::isNotEmpty).collect(Collectors.joining(","))); - } - taskVoList.add(taskVo); - } return taskVoList; } - @Override - public TableDataInfo selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery) { - Page page = new Page<>(); - TaskQuery taskQuery = taskService.createTaskQuery() - .active() - .includeProcessVariables() - .taskCandidateOrAssigned(TaskUtils.getUserId()) - .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) - .orderByTaskCreateTime().desc(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(taskQuery, processQuery); - page.setTotal(taskQuery.count()); - int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); - List taskList = taskQuery.listPage(offset, pageQuery.getPageSize()); + private List getTaskProcessList(List taskList){ List flowList = new ArrayList<>(); for (Task task : taskList) { WfTaskVo flowTask = new WfTaskVo(); @@ -343,77 +326,53 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce flowTask.setStartUserId(userId); flowTask.setStartUserName(nickName); - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(task.getProcessInstanceId(),spec); - flowTask.setSpecBatch(spec[0]); - flowTask.setSpecName(spec[1]); - //add end for test --tzx + Map variablesMap = getHistProcessvariablesMap(historicProcessInstance); + setSpecParaToTaskVo(variablesMap,flowTask); // 流程变量 flowTask.setProcVars(task.getProcessVariables()); flowList.add(flowTask); } + return flowList; + } + + private TaskQuery getTodoTaskQuery(ProcessQuery processQuery){ + TaskQuery taskQuery = taskService.createTaskQuery() + .active() + .includeProcessVariables() + .taskAssignee(TaskUtils.getUserId()) + //.taskCandidateOrAssigned(TaskUtils.getUserId()) + //.taskCandidateGroupIn(TaskUtils.getCandidateGroup()) + .orderByTaskCreateTime().desc(); + // 构建搜索条件 + ProcessUtils.buildProcessSearch(taskQuery, processQuery); + return taskQuery; + } + + @Override + public TableDataInfo selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + Page page = new Page<>(); + TaskQuery taskQuery = getTodoTaskQuery(processQuery); + page.setTotal(taskQuery.count()); + int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); + List taskList = taskQuery.listPage(offset, pageQuery.getPageSize()); + List flowList = getTaskProcessList(taskList); + page.setRecords(flowList); return TableDataInfo.build(page); } @Override public List selectTodoProcessList(ProcessQuery processQuery) { - TaskQuery taskQuery = taskService.createTaskQuery() - .active() - .includeProcessVariables() - .taskCandidateOrAssigned(TaskUtils.getUserId()) - .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) - .orderByTaskCreateTime().desc(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(taskQuery, processQuery); + TaskQuery taskQuery = getTodoTaskQuery(processQuery); List taskList = taskQuery.list(); - List taskVoList = new ArrayList<>(); - for (Task task : taskList) { - WfTaskVo taskVo = new WfTaskVo(); - // 当前流程信息 - taskVo.setTaskId(task.getId()); - taskVo.setTaskDefKey(task.getTaskDefinitionKey()); - taskVo.setCreateTime(task.getCreateTime()); - taskVo.setProcDefId(task.getProcessDefinitionId()); - taskVo.setTaskName(task.getName()); - // 流程定义信息 - ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(task.getProcessDefinitionId()) - .singleResult(); - taskVo.setDeployId(pd.getDeploymentId()); - taskVo.setProcDefName(pd.getName()); - taskVo.setProcDefVersion(pd.getVersion()); - taskVo.setProcInsId(task.getProcessInstanceId()); + List taskVoList = getTaskProcessList(taskList); - // 流程发起人信息 - HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() - .processInstanceId(task.getProcessInstanceId()) - .singleResult(); - Long userId = Long.parseLong(historicProcessInstance.getStartUserId()); - String nickName = userService.selectNickNameById(userId); - taskVo.setStartUserId(userId); - taskVo.setStartUserName(nickName); - - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(task.getProcessInstanceId(),spec); - taskVo.setSpecBatch(spec[0]); - taskVo.setSpecName(spec[1]); - //add end for test --tzx - - taskVoList.add(taskVo); - } return taskVoList; } - @Override - public TableDataInfo selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery) { - Page page = new Page<>(); + private TaskQuery getClaimedTaskQuery(ProcessQuery processQuery){ TaskQuery taskQuery = taskService.createTaskQuery() .active() .includeProcessVariables() @@ -422,104 +381,32 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce .orderByTaskCreateTime().desc(); // 构建搜索条件 ProcessUtils.buildProcessSearch(taskQuery, processQuery); + return taskQuery; + } + + @Override + public TableDataInfo selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + Page page = new Page<>(); + TaskQuery taskQuery = getClaimedTaskQuery(processQuery); page.setTotal(taskQuery.count()); int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); List taskList = taskQuery.listPage(offset, pageQuery.getPageSize()); - List flowList = new ArrayList<>(); - for (Task task : taskList) { - WfTaskVo flowTask = new WfTaskVo(); - // 当前流程信息 - flowTask.setTaskId(task.getId()); - flowTask.setTaskDefKey(task.getTaskDefinitionKey()); - flowTask.setCreateTime(task.getCreateTime()); - flowTask.setProcDefId(task.getProcessDefinitionId()); - flowTask.setTaskName(task.getName()); - // 流程定义信息 - ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(task.getProcessDefinitionId()) - .singleResult(); - flowTask.setDeployId(pd.getDeploymentId()); - flowTask.setProcDefName(pd.getName()); - flowTask.setProcDefVersion(pd.getVersion()); - flowTask.setProcInsId(task.getProcessInstanceId()); + List flowList = getTaskProcessList(taskList); - // 流程发起人信息 - HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() - .processInstanceId(task.getProcessInstanceId()) - .singleResult(); - Long userId = Long.parseLong(historicProcessInstance.getStartUserId()); - String nickName = userService.selectNickNameById(userId); - flowTask.setStartUserId(userId); - flowTask.setStartUserName(nickName); - - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(task.getProcessInstanceId(),spec); - flowTask.setSpecBatch(spec[0]); - flowTask.setSpecName(spec[1]); - //add end for test --tzx - - flowList.add(flowTask); - } page.setRecords(flowList); return TableDataInfo.build(page); } @Override public List selectClaimProcessList(ProcessQuery processQuery) { - TaskQuery taskQuery = taskService.createTaskQuery() - .active() - .includeProcessVariables() - .taskCandidateUser(TaskUtils.getUserId()) - .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) - .orderByTaskCreateTime().desc(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(taskQuery, processQuery); + TaskQuery taskQuery = getClaimedTaskQuery(processQuery); List taskList = taskQuery.list(); - List flowList = new ArrayList<>(); - for (Task task : taskList) { - WfTaskVo flowTask = new WfTaskVo(); - // 当前流程信息 - flowTask.setTaskId(task.getId()); - flowTask.setTaskDefKey(task.getTaskDefinitionKey()); - flowTask.setCreateTime(task.getCreateTime()); - flowTask.setProcDefId(task.getProcessDefinitionId()); - flowTask.setTaskName(task.getName()); - // 流程定义信息 - ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(task.getProcessDefinitionId()) - .singleResult(); - flowTask.setDeployId(pd.getDeploymentId()); - flowTask.setProcDefName(pd.getName()); - flowTask.setProcDefVersion(pd.getVersion()); - flowTask.setProcInsId(task.getProcessInstanceId()); + List flowList = getTaskProcessList(taskList); - // 流程发起人信息 - HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() - .processInstanceId(task.getProcessInstanceId()) - .singleResult(); - Long userId = Long.parseLong(historicProcessInstance.getStartUserId()); - String nickName = userService.selectNickNameById(userId); - flowTask.setStartUserId(userId); - flowTask.setStartUserName(nickName); - - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(task.getProcessInstanceId(),spec); - flowTask.setSpecBatch(spec[0]); - flowTask.setSpecName(spec[1]); - //add end for test --tzx - - flowList.add(flowTask); - } return flowList; } - @Override - public TableDataInfo selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) { - Page page = new Page<>(); + private HistoricTaskInstanceQuery getFinishedTaskInstanceQuery(ProcessQuery processQuery){ HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .includeProcessVariables() .finished() @@ -528,8 +415,10 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce .desc(); // 构建搜索条件 ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery); - int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); - List historicTaskInstanceList = taskInstanceQuery.listPage(offset, pageQuery.getPageSize()); + return taskInstanceQuery; + } + + private List getFinishedTaskProcessList(List historicTaskInstanceList){ List hisTaskList = new ArrayList<>(); for (HistoricTaskInstance histTask : historicTaskInstanceList) { WfTaskVo flowTask = new WfTaskVo(); @@ -565,80 +454,36 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce // 流程变量 flowTask.setProcVars(histTask.getProcessVariables()); - //add for test --tzx + Map variablesMap = getHistProcessvariablesMap(historicProcessInstance); + setSpecParaToTaskVo(variablesMap,flowTask); - String spec[] = new String[2]; - getHistSpecInfo(histTask.getId(),spec); - flowTask.setSpecBatch(spec[0]); - flowTask.setSpecName(spec[1]); - //add end for test --tzx hisTaskList.add(flowTask); } + return hisTaskList; + } + @Override + public TableDataInfo selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) { + + HistoricTaskInstanceQuery taskInstanceQuery = getFinishedTaskInstanceQuery(processQuery); + + int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); + List historicTaskInstanceList = taskInstanceQuery.listPage(offset, pageQuery.getPageSize()); + List hisTaskList = getFinishedTaskProcessList(historicTaskInstanceList); + + Page page = new Page<>(); page.setTotal(taskInstanceQuery.count()); page.setRecords(hisTaskList); -// Map result = new HashMap<>(); -// result.put("result",page); -// result.put("finished",true); + return TableDataInfo.build(page); } @Override public List selectFinishedProcessList(ProcessQuery processQuery) { - HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() - .includeProcessVariables() - .finished() - .taskAssignee(TaskUtils.getUserId()) - .orderByHistoricTaskInstanceEndTime() - .desc(); - // 构建搜索条件 - ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery); + HistoricTaskInstanceQuery taskInstanceQuery = getFinishedTaskInstanceQuery(processQuery); List historicTaskInstanceList = taskInstanceQuery.list(); - List hisTaskList = new ArrayList<>(); - for (HistoricTaskInstance histTask : historicTaskInstanceList) { - WfTaskVo flowTask = new WfTaskVo(); - // 当前流程信息 - flowTask.setTaskId(histTask.getId()); - // 审批人员信息 - flowTask.setCreateTime(histTask.getCreateTime()); - flowTask.setFinishTime(histTask.getEndTime()); - flowTask.setDuration(DateUtil.formatBetween(histTask.getDurationInMillis(), BetweenFormatter.Level.SECOND)); - flowTask.setProcDefId(histTask.getProcessDefinitionId()); - flowTask.setTaskDefKey(histTask.getTaskDefinitionKey()); - flowTask.setTaskName(histTask.getName()); + List hisTaskList = getFinishedTaskProcessList(historicTaskInstanceList); - // 流程定义信息 - ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() - .processDefinitionId(histTask.getProcessDefinitionId()) - .singleResult(); - flowTask.setDeployId(pd.getDeploymentId()); - flowTask.setProcDefName(pd.getName()); - flowTask.setProcDefVersion(pd.getVersion()); - flowTask.setProcInsId(histTask.getProcessInstanceId()); - flowTask.setHisProcInsId(histTask.getProcessInstanceId()); - - // 流程发起人信息 - HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() - .processInstanceId(histTask.getProcessInstanceId()) - .singleResult(); - Long userId = Long.parseLong(historicProcessInstance.getStartUserId()); - String nickName = userService.selectNickNameById(userId); - flowTask.setStartUserId(userId); - flowTask.setStartUserName(nickName); - - // 流程变量 - flowTask.setProcVars(histTask.getProcessVariables()); - - //add for test --tzx - - String spec[] = new String[2]; - getHistSpecInfo(histTask.getId(),spec); - flowTask.setSpecBatch(spec[0]); - flowTask.setSpecName(spec[1]); - //add end for test --tzx - - hisTaskList.add(flowTask); - } return hisTaskList; } @@ -1156,14 +1001,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce // 获取流程实例 - List historicVariableInstances = historyService.createHistoricVariableInstanceQuery() - .processInstanceId(hisIns.getProcessDefinitionId()) - .list(); - - Map variablesMap = new HashMap<>(); - for (HistoricVariableInstance hvi : historicVariableInstances) { - variablesMap.put(hvi.getVariableName(), hvi.getValue()); - } + Map variablesMap = getHistProcessvariablesMap(hisIns); // 获取流程状态 Object var1Value = variablesMap.get(ProcessConstants.PROCESS_STATUS_KEY);