diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/dao/RecruitmentDao.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/dao/RecruitmentDao.java new file mode 100644 index 00000000..1f194538 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/dao/RecruitmentDao.java @@ -0,0 +1,55 @@ +package ru.micord.ervu.account_applications.component.dao; + +import java.util.List; + +import org.jooq.DSLContext; +import org.jooq.TableField; +import org.jooq.impl.DSL; +import org.springframework.stereotype.Repository; +import ru.micord.ervu.account_applications.db_beans.public_.tables.Recruitment; + +/** + * @author Adel Kalimullin + */ +@Repository +public class RecruitmentDao { + private final DSLContext dslContext; + + public RecruitmentDao(DSLContext dslContext) { + this.dslContext = dslContext; + } + + public List getRecruitmentIdsWithParentByOrgCode(String orgCode) { + return getRecruitmentIdmIdsByParentId(orgCode, Recruitment.RECRUITMENT.IDM_ID); + } + + public List getRecruitmentIdsWithParentByRecruitmentId(String recruitmentId) { + return getRecruitmentIdmIdsByParentId(recruitmentId, Recruitment.RECRUITMENT.ID); + } + + private List getRecruitmentIdmIdsByParentId(String value, TableField field) { + var recruitmentHierarchy = DSL.name("recruitment_hierarchy"); + + var cte = dslContext.withRecursive(recruitmentHierarchy).as( + dslContext.select(Recruitment.RECRUITMENT.IDM_ID) + .from(Recruitment.RECRUITMENT) + .where(DSL.field(field).eq(value)) + .unionAll( + dslContext.select(Recruitment.RECRUITMENT.IDM_ID) + .from(Recruitment.RECRUITMENT) + .join(DSL.table(recruitmentHierarchy)) + .on(Recruitment.RECRUITMENT.PARENT_ID.eq( + DSL.field(DSL.name("recruitment_hierarchy", "idm_id"), String.class) + ) + ) + ) + ); + + return cte + .select(DSL.field(DSL.name("recruitment_hierarchy", "idm_id"), String.class)) + .from(DSL.table(recruitmentHierarchy)) + .fetchInto(String.class); + } +} + + diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentAutoCompleteService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentAutoCompleteService.java new file mode 100644 index 00000000..7115b180 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentAutoCompleteService.java @@ -0,0 +1,100 @@ +package ru.micord.ervu.account_applications.component.service; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import model.AutocompleteModel; +import org.springframework.stereotype.Service; +import property.enums.DisplayType; +import property.grid.ColumnSort; +import ru.micord.ervu.account_applications.component.dao.RecruitmentDao; +import service.field.AbstractAutocompleteService; +import utils.QueryUtils; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilterGroup; +import ru.cg.webbpm.modules.database.bean.filter.FilterOperation; +import ru.cg.webbpm.modules.security.api.runtime.SecurityContext; + +/** + * @author Adel Kalimullin + */ +@Service +public class RecruitmentAutoCompleteService extends AbstractAutocompleteService { + private final RecruitmentDao recruitmentDao; + private final SecurityContext securityContext; + + public RecruitmentAutoCompleteService(RecruitmentDao recruitmentDao, + SecurityContext securityContext) { + this.recruitmentDao = recruitmentDao; + this.securityContext = securityContext; + } + + protected AutocompleteModel convertToSearchModel(TableRow row) { + String dropdownLabel = this.getDropDownLabelValue(row); + String displayLabel = this.getDisplayLabelValue(row); + return new AutocompleteModel(row.get(QueryUtils.getIdField(this.loadDao)), + row.get(this.businessIdColumn), displayLabel, + (Boolean) row.get(this.loadDao.getValidEntityColumn()), dropdownLabel + ); + } + + protected List load(String inputString, Integer inputPage, + LoadOptions loadOptions) { + List recruitmentIds = getRecruitmentIdsForCurrentUser(); + loadOptions.getEntityFilters().add(getEntityFilterForRecruitmentIds(recruitmentIds)); + loadOptions.setLimit(this.valuesLimit); + loadOptions.setOffset(inputPage * this.valuesLimit); + if (this.columnSorts.length > 0) { + ColumnSort[] var4 = this.columnSorts; + int var5 = var4.length; + + for (int var6 = 0; var6 < var5; ++var6) { + ColumnSort columnSort = var4[var6]; + loadOptions.addSortField(columnSort.field, columnSort.sortOrder); + } + } + else if (this.displayType == DisplayType.MULTI_COLUMN) { + Arrays.stream(this.displayColumns).forEach((searchDisplayColumn) -> { + loadOptions.addSortField(searchDisplayColumn.getEntityColumn(), SortOrder.ASC); + }); + } + else if (this.displayType == DisplayType.ONE_COLUMN) { + loadOptions.addSortField(this.displayColumn, SortOrder.ASC); + } + + List searchStrings = this.getSearchString(inputString); + EntityFilterGroup entityFilterGroup = this.getEntityFilterGroup(searchStrings, loadOptions); + loadOptions.setEntityFilterGroup(entityFilterGroup); + List loadedData = this.loadDao.load(this.getColumnsToLoad(), loadOptions); + return (List) loadedData.stream().map(this::convertToSearchModel).collect(Collectors.toList()); + } + + private List getSearchString(String inputString) { + if (this.displayType == DisplayType.MULTI_COLUMN) { + return (List) Arrays.stream(inputString.trim().split(" ")).filter((token) -> { + return !token.isEmpty(); + }).collect(Collectors.toList()); + } + else if (this.displayType == DisplayType.ONE_COLUMN) { + return Collections.singletonList(inputString.trim()); + } + else { + throw new RuntimeException("Incorrect search column type " + this.displayType); + } + } + + private List getRecruitmentIdsForCurrentUser() { + String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode(); + return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode); + } + + private EntityFilter getEntityFilterForRecruitmentIds(List ids) { + return new EntityFilter(ids, FilterOperation.IN, this.businessIdColumn); + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentComboBoxService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentComboBoxService.java new file mode 100644 index 00000000..03b16b4f --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentComboBoxService.java @@ -0,0 +1,107 @@ +package ru.micord.ervu.account_applications.component.service; + + +import java.util.*; +import java.util.stream.Collectors; + +import model.ComboBoxModel; +import org.springframework.stereotype.Service; +import property.enums.DisplayType; +import property.grid.ColumnSort; +import ru.micord.ervu.account_applications.component.dao.RecruitmentDao; +import service.field.ComboBoxServiceImpl; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.database.bean.filter.FilterOperation; +import ru.cg.webbpm.modules.security.api.runtime.SecurityContext; + + +/** + * @author Adel Kalimullin + */ +@Service +public class RecruitmentComboBoxService extends ComboBoxServiceImpl { + private final RecruitmentDao recruitmentDao; + private final SecurityContext securityContext; + + public RecruitmentComboBoxService(RecruitmentDao recruitmentDao, + SecurityContext securityContext) { + this.recruitmentDao = recruitmentDao; + this.securityContext = securityContext; + } + + @Override + public List loadData() { + return load(new LoadOptions()); + } + + @Override + public List loadDataWithFilter(Object filterValue) { + LoadOptions loadOptions = new LoadOptions(); + EntityFilter entityFilter = getFilterColumnEntityFilter(filterValue); + loadOptions.setEntityFilters(Collections.singletonList(entityFilter)); + return load(loadOptions); + } + + @Override + public List loadDataByParentValueWithFilter(Object parentValue, + Object filterValue) { + LoadOptions loadOptions = new LoadOptions(); + List entityFilters = new ArrayList<>(); + entityFilters.add(getParentColumnEntityFilter(parentValue)); + if (filterValue != null) { + entityFilters.add(getFilterColumnEntityFilter(filterValue)); + } + loadOptions.setEntityFilters(entityFilters); + return load(loadOptions); + } + + private EntityFilter getParentColumnEntityFilter(Object parentValue) { + return parentValue instanceof Collection + ? new EntityFilter(parentValue, FilterOperation.IN, this.parentControlReference) + : new EntityFilter(parentValue, FilterOperation.EQUAL, this.parentControlReference); + } + + private EntityFilter getFilterColumnEntityFilter(Object filterValue) { + return new EntityFilter(filterValue, FilterOperation.EQUAL_IGNORE_CASE, this.filterColumn); + } + + private List load(LoadOptions loadOptions) { + List recruitmentIds = getRecruitmentIdsForCurrentUser(); + loadOptions.getEntityFilters().add(getEntityFilterForRecruitmentIds(recruitmentIds)); + if (this.columnSorts.length > 0) { + ColumnSort[] var2 = this.columnSorts; + int var3 = var2.length; + + for (int var4 = 0; var4 < var3; ++var4) { + ColumnSort columnSort = var2[var4]; + loadOptions.addSortField(columnSort.field, columnSort.sortOrder); + } + } + else if (this.displayType == DisplayType.MULTI_COLUMN) { + Arrays.stream(this.displayColumns).forEach((searchDisplayColumn) -> { + loadOptions.addSortField(searchDisplayColumn.getEntityColumn(), SortOrder.ASC); + }); + } + else if (this.displayType == DisplayType.ONE_COLUMN) { + loadOptions.addSortField(this.displayColumn, SortOrder.ASC); + } + + List loadedData = this.loadDao.load(this.getColumnsToLoad(), loadOptions); + return loadedData.stream() + .map(this::convertToComboBoxModel) + .collect(Collectors.toList()); + } + + private List getRecruitmentIdsForCurrentUser() { + String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode(); + return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode); + } + + private EntityFilter getEntityFilterForRecruitmentIds(List recruitmentIds) { + return new EntityFilter(recruitmentIds, FilterOperation.IN, this.businessIdColumn); + } +} \ No newline at end of file diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java new file mode 100644 index 00000000..26548cc6 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java @@ -0,0 +1,81 @@ +package ru.micord.ervu.account_applications.component.service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import component.field.persist.filter.FilterControl; +import model.Filter; +import model.grid.GridRows; +import model.grid.SortInfo; +import org.springframework.stereotype.Service; +import ru.micord.ervu.account_applications.component.dao.RecruitmentDao; +import service.GridV2ServiceImpl; + +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.bean.annotation.LocalGraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.database.bean.filter.FilterOperation; +import ru.cg.webbpm.modules.security.api.runtime.SecurityContext; +import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Adel Kalimullin + */ +@Service +public class RecruitmentGridService extends GridV2ServiceImpl { + private final RecruitmentDao recruitmentDao; + private final SecurityContext securityContext; + @ObjectRef + @NotNull + public FilterControl filterControlRef; + @LocalGraphSource(sourceFieldName = "loadDao") + public EntityColumn recruitmentColumn; + + public RecruitmentGridService(RecruitmentDao recruitmentDao, SecurityContext securityContext) { + this.recruitmentDao = recruitmentDao; + this.securityContext = securityContext; + } + + @Override + public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) { + List updatedFilters = new ArrayList<>(Arrays.asList(filters)); + Optional recruitmentFilterOpt = findRecruitmentFilter(updatedFilters); + + List recruitmentIds = recruitmentFilterOpt.map( + filter -> getChildRecruitmentIds(updatedFilters, filter)) + .orElseGet(this::getRecruitmentIdsForCurrentUser); + + LoadOptions options = getOptions(offset, limit, updatedFilters.toArray(new Filter[0]), + sortInfos + ); + options.getEntityFilters().add(getEntityFilterForRecruitmentIds(recruitmentIds)); + + return getGridRows(updatedFilters.toArray(new Filter[0]), options); + } + + private Optional findRecruitmentFilter(List filters) { + return filters.stream() + .filter(filter -> filterControlRef.getObjectId().equals(filter.componentGuid)) + .findFirst(); + } + + private List getChildRecruitmentIds(List filters, Filter recruitmentFilter) { + String selectedRecruitmentId = (String) recruitmentFilter.filterModels[0].getValue(); + filters.removeIf(filter -> filterControlRef.getObjectId().equals(filter.componentGuid)); + return recruitmentDao.getRecruitmentIdsWithParentByRecruitmentId(selectedRecruitmentId); + } + + private List getRecruitmentIdsForCurrentUser() { + String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode(); + return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode); + } + + private EntityFilter getEntityFilterForRecruitmentIds(List recruitmentIds) { + return new EntityFilter(recruitmentIds, FilterOperation.IN, this.recruitmentColumn); + } +} + diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page index 4485fc06..58e1941c 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page @@ -1656,6 +1656,29 @@ {"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"} + + columnSorts + + + + + +field + + {"schema":"public","table":"recruitment","entity":"recruitment","name":"fullname"} + + + +sortOrder + + "ASC" + + + + + + + displayColumn @@ -1682,6 +1705,10 @@ + + RecruitmentAutoCompleteService + ru.micord.ervu.account_applications.component.service + @@ -3283,7 +3310,6 @@ eff7bfda-85b7-4f80-817b-59d5cf192d93 Vbox_current_user true - false false @@ -3401,325 +3427,14 @@ 41fc9dcd-6e83-4886-9049-acbcbec7b99d Action Controller1 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"594569b5-8dfd-4576-91cb-57c900c46c60","packageName":"component.field","className":"TextField","type":"TS"} - - - - propertyName - - "valueChangeEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"594569b5-8dfd-4576-91cb-57c900c46c60","packageName":"component.field","className":"TextField","type":"TS"} - - - -method - - "getValue" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "onClick" - - - - value - - null - - - - - - - - - + true 98594cec-0a9b-4cef-af09-e1b71cb2ad9e 69e4bba9-688b-4273-a078-c6440233e07c Action Controller2 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - propertyName - - "clickEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - -method - - "getResult" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setValueByBusinessId" - - - - value - - - - objectValue - - - - argument - - null - - - - behavior - - {"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "getResult" - - - - - - - - - - - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setEnabled" - - - - value - - - - staticValue - - - boolean - - -false - - - - - - - - - - - - + true diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на блокировку.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на блокировку.page index 967301b2..873aa1ab 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на блокировку.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на блокировку.page @@ -1656,6 +1656,29 @@ {"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"} + + columnSorts + + + + + +field + + {"schema":"public","table":"recruitment","entity":"recruitment","name":"fullname"} + + + +sortOrder + + "ASC" + + + + + + + displayColumn @@ -1682,6 +1705,10 @@ + + RecruitmentAutoCompleteService + ru.micord.ervu.account_applications.component.service + @@ -3222,7 +3249,6 @@ 2b018a80-bc55-4815-b87c-0c507c750f18 Vbox_current_user true - false false @@ -3340,325 +3366,14 @@ 67d246f5-26b0-43f7-b9f9-e24d1820da8d Action Controller1 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"d901bfd2-e26d-45eb-b32a-1d241e762fca","packageName":"component.field","className":"TextField","type":"TS"} - - - - propertyName - - "valueChangeEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"d901bfd2-e26d-45eb-b32a-1d241e762fca","packageName":"component.field","className":"TextField","type":"TS"} - - - -method - - "getValue" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"06462f41-30b9-4b4e-bed5-6d828e32ed22","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "onClick" - - - - value - - null - - - - - - - - - + true 98594cec-0a9b-4cef-af09-e1b71cb2ad9e bb19d382-a3b8-4713-9d94-dabad5debf04 Action Controller2 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"06462f41-30b9-4b4e-bed5-6d828e32ed22","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - propertyName - - "clickEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"06462f41-30b9-4b4e-bed5-6d828e32ed22","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - -method - - "getResult" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setValueByBusinessId" - - - - value - - - - objectValue - - - - argument - - null - - - - behavior - - {"objectId":"06462f41-30b9-4b4e-bed5-6d828e32ed22","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "getResult" - - - - - - - - - - - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setEnabled" - - - - value - - - - staticValue - - - boolean - - -false - - - - - - - - - - - - + true diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page index 187661c3..cd311582 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page @@ -1663,6 +1663,29 @@ {"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"} + + columnSorts + + + + + +field + + {"schema":"public","table":"recruitment","entity":"recruitment","name":"fullname"} + + + +sortOrder + + "ASC" + + + + + + + displayColumn @@ -1689,6 +1712,10 @@ + + RecruitmentAutoCompleteService + ru.micord.ervu.account_applications.component.service + @@ -1939,6 +1966,7 @@ 6a35687d-bbb6-4094-86c8-2f414a1ca1e7 Vbox_3 true + false false @@ -3414,325 +3442,14 @@ 43a5c17a-717e-4539-bae5-6c13955e07ee Action Controller1 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"cde7064b-31a7-420c-9ed8-dd79214c1409","packageName":"component.field","className":"TextField","type":"TS"} - - - - propertyName - - "valueChangeEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"cde7064b-31a7-420c-9ed8-dd79214c1409","packageName":"component.field","className":"TextField","type":"TS"} - - - -method - - "getValue" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"7f57e95b-e9bb-49d3-b506-4f2cc9b278d8","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "onClick" - - - - value - - null - - - - - - - - - + true 98594cec-0a9b-4cef-af09-e1b71cb2ad9e f1c8b51e-1b04-49bd-b500-e6bf45ee3ef7 Action Controller2 false - false - - - - eventRefs - - - - - - behavior - - {"objectId":"7f57e95b-e9bb-49d3-b506-4f2cc9b278d8","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - propertyName - - "clickEvent" - - - - - - - - - ifCondition - - - - conditions - - - - - - _isGroupSelected - -false - - - - one - - - - conditionFirstPart - - - - objectValue - - - -behavior - - {"objectId":"7f57e95b-e9bb-49d3-b506-4f2cc9b278d8","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - -method - - "getResult" - - - - - - - - - - operation - - "IS_NOT_EMPTY" - - - - - - - - - - - - logicalOperation - - null - - - - - - - thenActions - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setValueByBusinessId" - - - - value - - - - objectValue - - - - argument - - null - - - - behavior - - {"objectId":"7f57e95b-e9bb-49d3-b506-4f2cc9b278d8","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} - - - - method - - "getResult" - - - - - - - - - - - - - - - - behavior - - {"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"} - - - - method - - "setEnabled" - - - - value - - - - staticValue - - - boolean - - -false - - - - - - - - - - - - + true diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page index 569dba61..2a033569 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page @@ -1159,6 +1159,29 @@ {"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"} + + columnSorts + + + + + + field + + {"schema":"public","table":"recruitment","entity":"recruitment","name":"fullname"} + + + + sortOrder + + "ASC" + + + + + + + displayColumn @@ -1179,6 +1202,10 @@ + + RecruitmentComboBoxService + ru.micord.ervu.account_applications.component.service + @@ -1702,41 +1729,7 @@ - - - - - behavior - -{"objectId":"d5c7ef33-6035-4963-aaa9-79868c2c3198","packageName":"component.filter","className":"FilterComboBox","type":"TS"} - - - - method - -"setEnabled" - - - - value - - - - staticValue - - - boolean - - - false - - - - - - - - + @@ -5979,6 +5972,12 @@ +filterControlRef + + {"objectId":"d5c7ef33-6035-4963-aaa9-79868c2c3198","packageName":"component.field.persist.filter","className":"FilterControl","type":"JAVA"} + + + loadDao @@ -5989,9 +5988,19 @@ + + + +recruitmentColumn + + {"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"} + + RecruitmentGridService + ru.micord.ervu.account_applications.component.service + @@ -6678,13 +6687,6 @@ - - 364c8faa-5e56-46cd-9203-d2ec6ef2dc74 - 729c7aac-ccde-4755-84fb-4238b88274f1 - IP адрес - false - true - 364c8faa-5e56-46cd-9203-d2ec6ef2dc74 ea2b5892-2391-4097-9e65-320c835c50cf