diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnProcessInstanceAdminPageItemConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnProcessInstanceAdminPageItemConverter.java index 3d4af2481..5033f2b7a 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnProcessInstanceAdminPageItemConverter.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnProcessInstanceAdminPageItemConverter.java @@ -59,11 +59,13 @@ public interface BpmnProcessInstanceAdminPageItemConverter extends EntityConvert // 进行中的节点 ActivityInstance activityInstance = liveActivityMap.get(i.getId()); - for (int j = 0; j < flowElements.size(); j++) { - if (Objects.equals(flowElements.get(j).getId(), activityInstance.getActivityId())) { - vo.setCurrentNodeCount(j + 1); - vo.setCurrentActivityId(activityInstance.getActivityId()); - vo.setCurrentActivityName(activityInstance.getActivityName()); + if (Objects.nonNull(activityInstance)) { + for (int j = 0; j < flowElements.size(); j++) { + if (Objects.equals(flowElements.get(j).getId(), activityInstance.getActivityId())) { + vo.setCurrentNodeCount(j + 1); + vo.setCurrentActivityId(activityInstance.getActivityId()); + vo.setCurrentActivityName(activityInstance.getActivityName()); + } } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 41d20462a..c0e0ca239 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -353,24 +353,20 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic .append("DEF.KEY_ as PROC_DEF_KEY_,") .append("DEF.NAME_ as PROC_DEF_NAME_,") .append("DEF.VERSION_ as PROC_DEF_VERSION_,") - .append("DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_ FROM ") + .append("DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_") .append(" FROM ").append(tableName) .append(" RES LEFT OUTER JOIN ACT_RE_PROCDEF DEF ON RES.PROC_DEF_ID_ = DEF.ID_") .append(" WHERE 1 = 1"); - // HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery(); if (StringUtils.isNotBlank(dto.getName())) { - // query.processInstanceNameLike(dto.getName()); baseQuerySql.append(" AND RES.NAME_ LIKE #{name}"); query.parameter("name", "%" + dto.getName() + "%"); } if (StringUtils.isNotBlank(dto.getCategory())) { - // query.processDefinitionCategory(dto.getCategory()); baseQuerySql.append(" AND DEF.CATEGORY_ = #{category}"); query.parameter("category", dto.getCategory()); } if (!CollectionUtils.isEmpty(dto.getTenantIds())) { - // query.processInstanceTenantId(); baseQuerySql.append(" AND RES.TENANT_ID_ IN ("); for (int i = 0; i < dto.getTenantIds().size(); i++) { baseQuerySql.append("#{tenantId").append(i).append("}"); @@ -382,22 +378,23 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic baseQuerySql.append(")"); } if (StringUtils.isNotBlank(dto.getBusinessStatus())) { - // query.processInstanceBusinessStatus(dto.getBusinessStatus()); baseQuerySql.append(" AND RES.BUSINESS_STATUS_ = #{businessStatus}'"); query.parameter("businessStatus", dto.getBusinessStatus()); } if (Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getEndTime())) { - // query.startedAfter(dto.getStartTime()); baseQuerySql.append(" AND RES.START_TIME_ >= #{startedAfter}"); query.parameter("startedAfter", dto.getStartTime()); baseQuerySql.append(" AND RES.START_TIME_ <= #{startedBefore}"); query.parameter("startedBefore", dto.getEndTime()); } baseQuerySql.append(" ORDER BY RES.START_TIME_ DESC "); + List instances = query.sql(baseQuerySql.toString()) .listPage((dto.getPageNo() - 1) * dto.getPageSize(), dto.getPageSize()); + baseQuerySql.replace(7, 163, "count(1)"); + NativeHistoricProcessInstanceQuery countSqlQuery = query.sql(baseQuerySql.toString()); if (CollectionUtils.isEmpty(instances)) { return BpmPageResult.empty(); } @@ -413,8 +410,10 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic // 实例对应的当前运行到的节点 Map liveActivityMap = getInstanceCurrentActivity(processingInstanceIds, false); + // Map liveActivityMap = new HashMap<>(); // 实例对应的最后一个已经完成的节点 Map leastEndActivityMap = getInstanceLastActivity(processingInstanceIds); + // Map leastEndActivityMap = new HashMap<>(); List categories = instances.stream().map(HistoricProcessInstance::getProcessDefinitionKey) .distinct().collect(Collectors.toList()); @@ -424,7 +423,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic List vos = instanceAdminPageItemConverter.toVos(instances, instanceFlowElementMap, liveActivityMap, leastEndActivityMap, categoryLabelMap); - return new BpmPageResult<>(vos, query.count()); + return new BpmPageResult<>(vos, countSqlQuery.count()); } private Map getInstanceLastActivity(List processInstanceIds) { diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/support/FlowNodeForecastService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/support/FlowNodeForecastService.java index dded5fc08..d85543af3 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/support/FlowNodeForecastService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/support/FlowNodeForecastService.java @@ -116,7 +116,8 @@ public class FlowNodeForecastService implements InitializingBean { throw new WorkflowEngineException(PROCESS_INSTANCE_NOT_EXISTS); } else { instance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId) - .includeProcessVariables().singleResult(); + // .includeProcessVariables() + .singleResult(); } BpmnModel bpmnModel = repositoryService.getBpmnModel(instance.getProcessDefinitionId());