update - 修改查询流程实例的逻辑,采用本地 SQL 的方式
This commit is contained in:
parent
d3c84a890e
commit
6e430ee306
@ -347,25 +347,56 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAdminProcessInstancePage(BpmnProcessInstanceAdminPageReqVO dto) {
|
public BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAdminProcessInstancePage(BpmnProcessInstanceAdminPageReqVO dto) {
|
||||||
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
|
NativeHistoricProcessInstanceQuery query = historyService.createNativeHistoricProcessInstanceQuery();
|
||||||
|
String tableName = managementService.getTableName(HistoricProcessInstance.class);
|
||||||
|
StringBuilder baseQuerySql = new StringBuilder("SELECT RES.*, ")
|
||||||
|
.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(" 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())) {
|
if (StringUtils.isNotBlank(dto.getName())) {
|
||||||
query.processInstanceNameLike(dto.getName());
|
// query.processInstanceNameLike(dto.getName());
|
||||||
|
baseQuerySql.append(" AND RES.NAME_ LIKE #{name}");
|
||||||
|
query.parameter("name", "%" + dto.getName() + "%");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(dto.getCategory())) {
|
if (StringUtils.isNotBlank(dto.getCategory())) {
|
||||||
query.processDefinitionCategory(dto.getCategory());
|
// query.processDefinitionCategory(dto.getCategory());
|
||||||
|
baseQuerySql.append(" AND DEF.CATEGORY_ = #{category}");
|
||||||
|
query.parameter("category", dto.getCategory());
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(dto.getTenantId())) {
|
if (!CollectionUtils.isEmpty(dto.getTenantIds())) {
|
||||||
query.processInstanceTenantId(dto.getTenantId());
|
// query.processInstanceTenantId();
|
||||||
|
baseQuerySql.append(" AND RES.TENANT_ID_ IN (");
|
||||||
|
for (int i = 0; i < dto.getTenantIds().size(); i++) {
|
||||||
|
baseQuerySql.append("#{tenantId").append(i).append("}");
|
||||||
|
if (i < dto.getTenantIds().size() - 1) {
|
||||||
|
baseQuerySql.append(",");
|
||||||
|
}
|
||||||
|
query.parameter("tenantId" + i, dto.getTenantIds().get(i));
|
||||||
|
}
|
||||||
|
baseQuerySql.append(")");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(dto.getBusinessStatus())) {
|
if (StringUtils.isNotBlank(dto.getBusinessStatus())) {
|
||||||
query.processInstanceBusinessStatus(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())) {
|
if (Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getEndTime())) {
|
||||||
query.startedAfter(dto.getStartTime());
|
// query.startedAfter(dto.getStartTime());
|
||||||
query.startedBefore(dto.getEndTime());
|
baseQuerySql.append(" AND RES.START_TIME_ >= #{startedAfter}");
|
||||||
|
query.parameter("startedAfter", dto.getStartTime());
|
||||||
|
baseQuerySql.append(" AND RES.START_TIME_ <= #{startedBefore}");
|
||||||
|
query.parameter("startedBefore", dto.getEndTime());
|
||||||
}
|
}
|
||||||
List<HistoricProcessInstance> instances = query.orderByProcessInstanceStartTime().desc()
|
baseQuerySql.append(" ORDER BY RES.START_TIME_ DESC ");
|
||||||
.listPage((dto.getPageNo() - 1) * dto.getPageSize(), dto.getPageSize());
|
List<HistoricProcessInstance> instances = query.sql(baseQuerySql.toString())
|
||||||
|
.listPage((dto.getPageNo() - 1) * dto.getPageSize(),
|
||||||
|
dto.getPageSize());
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(instances)) {
|
if (CollectionUtils.isEmpty(instances)) {
|
||||||
return BpmPageResult.empty();
|
return BpmPageResult.empty();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user