diff --git a/backend/pom.xml b/backend/pom.xml index b7650dd9..1cb2ab63 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -248,6 +248,10 @@ org.apache.kafka kafka-clients + + org.lz4 + lz4-java + ${project.parent.artifactId} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java new file mode 100644 index 00000000..954a4cc5 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java @@ -0,0 +1,40 @@ +package ru.micord.ervu.account_applications.component.service; + + +import component.complex.FilterableByPKGridService; +import model.Filter; +import model.grid.GridRows; +import model.grid.SortInfo; +import ru.micord.ervu.account_applications.component.util.GridUtils; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + +/** + * @author Adel Kalimullin + */ +public class IpFilterableGridService extends FilterableByPKGridService { + private static final String IP_FIELD = "ip_directory$ip_address"; + + @Override + public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) { + GridRows gridRows = super.loadData(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } + + @Override + public GridRows loadDataWithRowCount(Integer offset, Integer limit, Filter[] filters, + SortInfo[] sortInfos) { + GridRows gridRows = super.loadDataWithRowCount(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } +} \ No newline at end of file diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java new file mode 100644 index 00000000..e0d3bb81 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java @@ -0,0 +1,41 @@ +package ru.micord.ervu.account_applications.component.service; + + +import model.Filter; +import model.grid.GridRows; +import model.grid.SortInfo; +import ru.micord.ervu.account_applications.component.util.GridUtils; +import service.GridV2ServiceImpl; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + + +/** + * @author Adel Kalimullin + */ +public class IpGridV2Service extends GridV2ServiceImpl { + private static final String IP_FIELD = "link_user_application_ip_address$ip_address"; + + @Override + public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) { + GridRows gridRows = super.loadData(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } + + @Override + public GridRows loadDataWithRowCount(Integer offset, Integer limit, Filter[] filters, + SortInfo[] sortInfos) { + GridRows gridRows = super.loadDataWithRowCount(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java new file mode 100644 index 00000000..d11937be --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java @@ -0,0 +1,34 @@ +package ru.micord.ervu.account_applications.component.util; + +import java.util.Arrays; + +import model.grid.GridRow; +import model.grid.GridRows; +import ru.micord.ervu.account_applications.util.IpAddressUtils; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + +/** + * @author Adel Kalimullin + */ +public final class GridUtils { + + private GridUtils() {} + + public static void sortByIp(GridRows gridRows, SortOrder sortOrder, String columnName) { + if (gridRows == null || gridRows.getRows() == null) { + return; + } + + GridRow[] rows = gridRows.getRows(); + + Arrays.sort(rows, (row1, row2) -> { + String ip1 = (String) row1.get(columnName); + String ip2 = (String) row2.get(columnName); + + int comparison = IpAddressUtils.compareIpAddresses(ip1, ip2); + + return sortOrder == SortOrder.DESC ? -comparison : comparison; + }); + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java b/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java index f9a8b0c7..4503bf5a 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java @@ -1,11 +1,11 @@ package ru.micord.ervu.account_applications.service; import java.net.URI; -import java.util.Map; -import java.util.List; -import java.util.Set; -import java.util.HashMap; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -30,6 +30,7 @@ import ru.micord.ervu.account_applications.component.model.dto.SearchRequest; import ru.micord.ervu.account_applications.component.model.dto.SearchResponse; import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.service.constant.PathConstant; +import ru.micord.ervu.account_applications.util.IpAddressUtils; import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef; @@ -196,9 +197,15 @@ public class AccountFetchService implements EntityFetchService { } private GridRows convertIpAddressesToGridRows(List ipList) { + List sortedList = new ArrayList<>(ipList); + sortedList.sort((ip1, ip2) -> { + String ip1Str = ip1 != null ? ip1.toString() : ""; + String ip2Str = ip2 != null ? ip2.toString() : ""; + return IpAddressUtils.compareIpAddresses(ip1Str, ip2Str); + }); + List rows = new ArrayList<>(); - int i = 0; - for (Object ip : ipList) { + for (Object ip : sortedList) { GridRow row = new GridRow(); row.put("row_uid", ip); row.put( diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java b/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java new file mode 100644 index 00000000..7232eb44 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java @@ -0,0 +1,28 @@ +package ru.micord.ervu.account_applications.util; + +/** + * @author Adel Kalimullin + */ +public final class IpAddressUtils { + + private IpAddressUtils() {} + + public static int compareIpAddresses(String ip1, String ip2) { + long ip1Long = ipToLong(ip1); + long ip2Long = ipToLong(ip2); + return Long.compare(ip1Long, ip2Long); + } + + private static long ipToLong(String ip) { + if (ip == null || ip.isEmpty() || !ip.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")) { + return 0L; + } + + String[] parts = ip.split("\\."); + long result = 0; + for (int i = 0; i < 4; i++) { + result = result * 256 + Integer.parseInt(parts[i]); + } + return result; + } +} diff --git a/frontend/src/ts/account_applications/component/button/UserManagementService.ts b/frontend/src/ts/account_applications/component/button/UserManagementService.ts index 2ae9e95f..4320326c 100644 --- a/frontend/src/ts/account_applications/component/button/UserManagementService.ts +++ b/frontend/src/ts/account_applications/component/button/UserManagementService.ts @@ -49,6 +49,7 @@ export class UserManagementService extends Behavior { private rpc: UserApplicationListRpcService; private authService: AuthorizationService; private statusUpdateService: StatusUpdateService; + private formJson: any; initialize() { super.initialize(); @@ -61,24 +62,25 @@ export class UserManagementService extends Behavior { @Visible() public processDeclaration(): void { - if (!this.authService.hasPermission(ErvuPermission.APPROVER) || !this.sendToErvu) { + if (!this.authService.hasPermission(ErvuPermission.APPROVER) + || !this.sendToErvu + || !this.formJson) { return; } const kind = this.applicationKind.getValue(); - const formJson = this.collectData(); - const appNumber = formJson['appNumber']; - const accountId = formJson['accountId']; - const personId = formJson['idPerson']; - const login = formJson['login']; + const appNumber = this.formJson['appNumber']; + const accountId = this.formJson['accountId']; + const personId = this.formJson['idPerson']; + const login = this.formJson['login']; let request; switch (kind) { case ApplicationKind.CREATE_USER: let createData = new CreateAccountData(); - createData.account = this.populateDto(new Account(), formJson); - createData.person = this.populateDto(new Person(), formJson); + createData.account = this.populateDto(new Account(), this.formJson); + createData.person = this.populateDto(new Person(), this.formJson); let roles = new Roles(); - roles.add = formJson['rolesList'].map(id => { + roles.add = this.formJson['rolesList'].map(id => { let role = new Role(); role.id = id; return role; @@ -93,8 +95,8 @@ export class UserManagementService extends Behavior { let editPersonData = new EditPersonData(); editPersonData.accountId = accountId; editPersonData.personId = personId; - editPersonData.organizationId = formJson['idDomain']; - editPersonData.personData = this.populateDto(new Person(), formJson); + editPersonData.organizationId = this.formJson['idDomain']; + editPersonData.personData = this.populateDto(new Person(), this.formJson); request = new ProcessRequest(); request.data = editPersonData; request.processKey = ProcessKey.EDIT_PERSON; @@ -102,7 +104,7 @@ export class UserManagementService extends Behavior { break; case ApplicationKind.EDIT_USER_ACCOUNT: let editAccountData = new EditAccountData(); - let account = this.populateDto(new Account(), formJson); + let account = this.populateDto(new Account(), this.formJson); editAccountData.account = account; editAccountData.accountId = accountId; request = new ProcessRequest(); @@ -112,7 +114,7 @@ export class UserManagementService extends Behavior { break; case ApplicationKind.EDIT_USER_ROLES: let editRolesAccount = new EditRolesAccount(); - let rolesList = formJson['rolesList']; + let rolesList = this.formJson['rolesList']; editRolesAccount.accountId = accountId; let roles2 = new Roles(); roles2.add = rolesList.map(id => { @@ -144,7 +146,7 @@ export class UserManagementService extends Behavior { break; case ApplicationKind.UNBLOCK_USER: let unblockingData = new UnblockingData(); - let blockedRegion = formJson['blockedRegion']; + let blockedRegion = this.formJson['blockedRegion']; switch (blockedRegion) { case BlockedRegion.ACCOUNT: @@ -187,6 +189,7 @@ export class UserManagementService extends Behavior { @Visible() public allowSendToErvu(): void { + this.formJson = this.collectData(); this.sendToErvu = true; } diff --git a/pom.xml b/pom.xml index 351b9d96..22b9d3f2 100644 --- a/pom.xml +++ b/pom.xml @@ -344,8 +344,18 @@ org.xerial.snappy snappy-java + + org.lz4 + lz4-java + + + org.lz4 + lz4-java + 1.8.1 + runtime + diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page index cf3d3ea5..c3347978 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page @@ -2011,7 +2011,6 @@ eaaf9ba1-feca-4c41-9944-e321eee27a58 Hbox true - false false @@ -3057,7 +3056,6 @@ 4b6acb44-bdc9-4015-872b-238d45ce643f Vbox_3 true - false false @@ -3438,18 +3436,48 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + + IpGridV2Service + ru.micord.ervu.account_applications.component.service + + + + + + + + +columnSorts + + + + + + field + + {"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"} + + + + sortOrder + + "ASC" + + + + + - GridFormField @@ -4534,27 +4562,6 @@ false true - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - e200392b-c9e6-4197-8fb4-3255508f58d3 - AC_processor - false - true - - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - 73a8ad00-8906-4677-a7b6-04942a3e9679 - AC_creator - false - true - - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - 86b06492-e4d1-45f5-97d0-cde7209d1add - AC_creator - false - true - 133ca212-09a6-413a-ac66-e2f6ce188f1f 9e772048-b43f-42f1-a370-2519dd4f6ad7 diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page index 7f3f8a7a..4c88e5b7 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page @@ -941,7 +941,6 @@ d4485ba1-6ebe-4745-b661-8685332cfc22 Tab container true - false false @@ -1604,7 +1603,6 @@ 4b6acb44-bdc9-4015-872b-238d45ce643f Vbox_3 true - false false @@ -1662,18 +1660,48 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + + IpGridV2Service + ru.micord.ervu.account_applications.component.service + + + + + + + + + columnSorts + + + + + + field + +{"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"} + + + + sortOrder + +"ASC" + + + + + - GridFormField diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page index 34b94f05..e4a97c2a 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page @@ -3329,7 +3329,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} @@ -3342,6 +3342,10 @@ + + IpFilterableGridService + ru.micord.ervu.account_applications.component.service + diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page index 75c341e9..8bf2d7c3 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page @@ -6306,7 +6306,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} @@ -6319,6 +6319,10 @@ + + IpFilterableGridService + ru.micord.ervu.account_applications.component.service + diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на сброс пароля.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на сброс пароля.page index c9621869..46220e51 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на сброс пароля.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на сброс пароля.page @@ -2663,7 +2663,7 @@ fieldName - "ipAddresses" + "person.ipAddresses"