SUPPORT-8937:add recruitment-sort for combik

This commit is contained in:
adel.kalimullin 2025-02-19 11:02:27 +03:00
parent 546c0c4cd4
commit 99359431b9
2 changed files with 16 additions and 4 deletions

View file

@ -31,11 +31,17 @@ public class RecruitmentDao {
var recruitmentHierarchy = DSL.name("recruitment_hierarchy");
var cte = dslContext.withRecursive(recruitmentHierarchy).as(
dslContext.select(Recruitment.RECRUITMENT.IDM_ID)
dslContext.select(
Recruitment.RECRUITMENT.IDM_ID,
DSL.inline(1).as("depth")
)
.from(Recruitment.RECRUITMENT)
.where(DSL.field(field).eq(value))
.unionAll(
dslContext.select(Recruitment.RECRUITMENT.IDM_ID)
dslContext.select(
Recruitment.RECRUITMENT.IDM_ID,
DSL.field(DSL.name("recruitment_hierarchy", "depth"), Integer.class).add(1)
)
.from(Recruitment.RECRUITMENT)
.join(DSL.table(recruitmentHierarchy))
.on(Recruitment.RECRUITMENT.PARENT_ID.eq(
@ -48,6 +54,7 @@ public class RecruitmentDao {
return cte
.select(DSL.field(DSL.name("recruitment_hierarchy", "idm_id"), String.class))
.from(DSL.table(recruitmentHierarchy))
.orderBy(DSL.field(DSL.name("recruitment_hierarchy", "depth")).asc())
.fetchInto(String.class);
}
}

View file

@ -90,8 +90,13 @@ public class RecruitmentComboBoxService extends ComboBoxServiceImpl {
loadOptions.addSortField(this.displayColumn, SortOrder.ASC);
}
List<TableRow> loadedData = this.loadDao.load(this.getColumnsToLoad(), loadOptions);
return loadedData.stream()
Map<String, TableRow> dataMap = this.loadDao.load(this.getColumnsToLoad(), loadOptions)
.stream()
.collect(Collectors.toMap(row -> (String)row.get(this.businessIdColumn), row -> row));
return recruitmentIds.stream()
.map(dataMap::get)
.filter(Objects::nonNull)
.map(this::convertToComboBoxModel)
.collect(Collectors.toList());
}