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 318eaf8a1..3a682555f 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 @@ -1,5 +1,6 @@ package cn.axzo.workflow.core.service.impl; +import cn.axzo.workflow.common.constant.BpmnConstants; import cn.axzo.workflow.common.enums.BpmnFlowNodeMode; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO; @@ -11,6 +12,7 @@ import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceMyP import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.process.HistoricProcessInstanceSearchDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import cn.axzo.workflow.common.model.request.category.CategorySearchDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO; import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceAdminPageItemVO; @@ -367,6 +369,13 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic @Override public BpmPageResult getAdminProcessInstancePage(BpmnProcessInstanceAdminPageReqVO dto) { + List dictValues = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getCategory())) { + CategorySearchDTO searchDTO = new CategorySearchDTO(); + searchDTO.setDictType(BpmnConstants.BPM_MODEL_CATEGORY); + searchDTO.setLabel(dto.getCategory()); + dictValues.addAll(categoryService.list(searchDTO).stream().map(CategoryItemVO::getValue).distinct().collect(Collectors.toList())); + } NativeHistoricProcessInstanceQuery query = historyService.createNativeHistoricProcessInstanceQuery(); String tableName = managementService.getTableName(HistoricProcessInstance.class); StringBuilder baseQuerySql = new StringBuilder("SELECT RES.*, ") @@ -385,10 +394,21 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic baseQuerySql.append(" AND RES.NAME_ LIKE #{name}"); query.parameter("name", "%" + dto.getName() + "%"); } - if (StringUtils.isNotBlank(dto.getCategory())) { - baseQuerySql.append(" AND DEF.CATEGORY_ = #{category}"); - query.parameter("category", dto.getCategory()); + if (!CollectionUtils.isEmpty(dictValues)) { + baseQuerySql.append(" AND DEF.CATEGORY_ IN ("); + for (int i = 0; i < dictValues.size(); i++) { + baseQuerySql.append("#{category").append(i).append("}"); + if (i < dictValues.size() - 1) { + baseQuerySql.append(","); + } + query.parameter("category" + i, dictValues.get(i)); + } + baseQuerySql.append(")"); } +// if (StringUtils.isNotBlank(dto.getCategory())) { +// baseQuerySql.append(" AND DEF.CATEGORY_ = #{category}"); +// query.parameter("category", dto.getCategory()); +// } if (!CollectionUtils.isEmpty(dto.getTenantIds())) { baseQuerySql.append(" AND RES.TENANT_ID_ IN ("); for (int i = 0; i < dto.getTenantIds().size(); i++) { @@ -433,10 +453,8 @@ 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());