Merge branch 'refs/heads/feature/REQ-2090' into 1.3.1-SNAPSHOT

This commit is contained in:
wangli 2024-04-08 11:37:36 +08:00
commit 921d0513ca

View File

@ -1,5 +1,6 @@
package cn.axzo.workflow.core.service.impl; 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.enums.BpmnFlowNodeMode;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO; 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.BpmnProcessInstanceQueryDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.HistoricProcessInstanceSearchDTO; 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.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.BpmPageResult;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO; import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceAdminPageItemVO; import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceAdminPageItemVO;
@ -367,6 +369,13 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
@Override @Override
public BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAdminProcessInstancePage(BpmnProcessInstanceAdminPageReqVO dto) { public BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAdminProcessInstancePage(BpmnProcessInstanceAdminPageReqVO dto) {
List<String> 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(); NativeHistoricProcessInstanceQuery query = historyService.createNativeHistoricProcessInstanceQuery();
String tableName = managementService.getTableName(HistoricProcessInstance.class); String tableName = managementService.getTableName(HistoricProcessInstance.class);
StringBuilder baseQuerySql = new StringBuilder("SELECT RES.*, ") StringBuilder baseQuerySql = new StringBuilder("SELECT RES.*, ")
@ -385,10 +394,21 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
baseQuerySql.append(" AND RES.NAME_ LIKE #{name}"); baseQuerySql.append(" AND RES.NAME_ LIKE #{name}");
query.parameter("name", "%" + dto.getName() + "%"); query.parameter("name", "%" + dto.getName() + "%");
} }
if (StringUtils.isNotBlank(dto.getCategory())) { if (!CollectionUtils.isEmpty(dictValues)) {
baseQuerySql.append(" AND DEF.CATEGORY_ = #{category}"); baseQuerySql.append(" AND DEF.CATEGORY_ IN (");
query.parameter("category", dto.getCategory()); 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())) { if (!CollectionUtils.isEmpty(dto.getTenantIds())) {
baseQuerySql.append(" AND RES.TENANT_ID_ IN ("); baseQuerySql.append(" AND RES.TENANT_ID_ IN (");
for (int i = 0; i < dto.getTenantIds().size(); i++) { for (int i = 0; i < dto.getTenantIds().size(); i++) {
@ -433,10 +453,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
// 实例对应的当前运行到的节点 // 实例对应的当前运行到的节点
Map<String, ActivityInstance> liveActivityMap = getInstanceCurrentActivity(processingInstanceIds, false); Map<String, ActivityInstance> liveActivityMap = getInstanceCurrentActivity(processingInstanceIds, false);
// Map<String, ActivityInstance> liveActivityMap = new HashMap<>();
// 实例对应的最后一个已经完成的节点 // 实例对应的最后一个已经完成的节点
Map<String, ActivityInstance> leastEndActivityMap = getInstanceLastActivity(processingInstanceIds); Map<String, ActivityInstance> leastEndActivityMap = getInstanceLastActivity(processingInstanceIds);
// Map<String, ActivityInstance> leastEndActivityMap = new HashMap<>();
List<String> categories = instances.stream().map(HistoricProcessInstance::getProcessDefinitionKey) List<String> categories = instances.stream().map(HistoricProcessInstance::getProcessDefinitionKey)
.distinct().collect(Collectors.toList()); .distinct().collect(Collectors.toList());