update - 修改查询流程实例的逻辑,采用本地 SQL 的方式
This commit is contained in:
parent
6e430ee306
commit
879368f663
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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<HistoricProcessInstance> 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<String, ActivityInstance> liveActivityMap = getInstanceCurrentActivity(processingInstanceIds, false);
|
||||
// Map<String, ActivityInstance> liveActivityMap = new HashMap<>();
|
||||
// 实例对应的最后一个已经完成的节点
|
||||
Map<String, ActivityInstance> leastEndActivityMap = getInstanceLastActivity(processingInstanceIds);
|
||||
// Map<String, ActivityInstance> leastEndActivityMap = new HashMap<>();
|
||||
|
||||
List<String> categories = instances.stream().map(HistoricProcessInstance::getProcessDefinitionKey)
|
||||
.distinct().collect(Collectors.toList());
|
||||
@ -424,7 +423,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
List<BpmnProcessInstanceAdminPageItemVO> vos = instanceAdminPageItemConverter.toVos(instances,
|
||||
instanceFlowElementMap, liveActivityMap, leastEndActivityMap,
|
||||
categoryLabelMap);
|
||||
return new BpmPageResult<>(vos, query.count());
|
||||
return new BpmPageResult<>(vos, countSqlQuery.count());
|
||||
}
|
||||
|
||||
private Map<String, ActivityInstance> getInstanceLastActivity(List<String> processInstanceIds) {
|
||||
|
||||
@ -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());
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user