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"