From be7e9b2ee0d813f737b22cafa393847a7ff87abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B0=D1=83=D1=84=20=D0=9B=D0=B0=D1=82=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Fri, 21 Mar 2025 17:05:33 +0300 Subject: [PATCH 1/7] SUPPORT-9020: fix from SUPPORT-8968 --- .../ts/component/field/DropdownTreeViewComponent.ts | 1 + .../component/filter/FilterGroupDelegate.ts | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/ts/component/field/DropdownTreeViewComponent.ts b/frontend/src/ts/component/field/DropdownTreeViewComponent.ts index e6a56c7..c946e03 100644 --- a/frontend/src/ts/component/field/DropdownTreeViewComponent.ts +++ b/frontend/src/ts/component/field/DropdownTreeViewComponent.ts @@ -59,6 +59,7 @@ export class DropdownTreeViewComponent extends InputControl { this.i18n.selectedItem = rootItem; this.value = rootItem ? rootItem.value : rootItem; this.doCollapseLevel(); + this.onValueChange(this.value); this.cd.markForCheck(); }); } diff --git a/frontend/src/ts/ervu_business_metrics/component/filter/FilterGroupDelegate.ts b/frontend/src/ts/ervu_business_metrics/component/filter/FilterGroupDelegate.ts index f03fdc1..e794948 100644 --- a/frontend/src/ts/ervu_business_metrics/component/filter/FilterGroupDelegate.ts +++ b/frontend/src/ts/ervu_business_metrics/component/filter/FilterGroupDelegate.ts @@ -55,12 +55,12 @@ export class FilterGroupDelegate extends BaseComponent { @Visible() public triggerFilter(): void { let filters = this.filterComponents - .map(filter => filter.getFilter()) - .filter(filterModel => filterModel != null); + .map(filterComponent => filterComponent.getFilter()) + .filter(filter => filter != null); this.filterComponents - .filter(filter => filter.getFilter() == null) - .forEach(filter => this.filterable.removeFilter(filter.getObjectId())); + .filter(filterComponent => filterComponent.getFilter() == null) + .forEach(filterComponent => this.filterable.removeFilter(filterComponent.getObjectId())); return this.reload(filters); } @@ -104,4 +104,4 @@ export class FilterGroupDelegate extends BaseComponent { } }); } -} \ No newline at end of file +} From 528f1f58e07ef3cd6868a333a14ab047f900d9ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B0=D1=83=D1=84=20=D0=9B=D0=B0=D1=82=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Fri, 21 Mar 2025 18:57:14 +0300 Subject: [PATCH 2/7] SUPPORT-9033: only backend from SUPPORT-8639 --- .../java/component/model/TreeItemDto.java | 1 + .../component/rpc/TreeItemRpcService.java | 5 +++ .../component/service/TreeItemService.java | 41 +++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/backend/src/main/java/component/model/TreeItemDto.java b/backend/src/main/java/component/model/TreeItemDto.java index eec98ff..d62eb04 100644 --- a/backend/src/main/java/component/model/TreeItemDto.java +++ b/backend/src/main/java/component/model/TreeItemDto.java @@ -12,6 +12,7 @@ public class TreeItemDto { public String label; public TreeItemDto[] children; public Object businessId; + public String domainId; public TreeItemDto(Object id, Object parentId, String label) { this.id = id; diff --git a/backend/src/main/java/component/rpc/TreeItemRpcService.java b/backend/src/main/java/component/rpc/TreeItemRpcService.java index bb9819d..a50c5a0 100644 --- a/backend/src/main/java/component/rpc/TreeItemRpcService.java +++ b/backend/src/main/java/component/rpc/TreeItemRpcService.java @@ -20,4 +20,9 @@ public class TreeItemRpcService extends Behavior { public List loadTreeData() { return treeItemService.loadTreeData(); } + + @RpcCall + public List loadTreeDataByDomainId(String token, String[] roles) { + return treeItemService.loadTreeDataByDomainId(token, roles); + } } diff --git a/backend/src/main/java/component/service/TreeItemService.java b/backend/src/main/java/component/service/TreeItemService.java index 64f4faf..d4e5b5a 100644 --- a/backend/src/main/java/component/service/TreeItemService.java +++ b/backend/src/main/java/component/service/TreeItemService.java @@ -1,6 +1,7 @@ package component.service; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -11,6 +12,9 @@ import java.util.Set; import component.model.TreeItemDto; import component.rpc.TreeItemRpcService; import database.dao.DefaultLoadDao; +import ervu_business_metrics.security.model.jwt.UserSession; +import ervu_business_metrics.security.service.ErvuJwtTokenService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import ru.cg.webbpm.modules.database.api.bean.TableRow; @@ -28,6 +32,9 @@ import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; */ @Service public class TreeItemService { + @Autowired + private ErvuJwtTokenService ervuJwtTokenService; + @NotNull public DefaultLoadDao loadDao; @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) @@ -42,6 +49,8 @@ public class TreeItemService { public EntityColumn labelColumn; @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) public EntityColumn businessIdColumn; + @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) + public EntityColumn domainIdColumn; @AdvancedProperty @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) public EntityColumn sortColumn; @@ -51,11 +60,40 @@ public class TreeItemService { public List loadTreeData() { List loadedTreeItems = loadTreeItems(); + loadedTreeItems.forEach(item -> item.domainId = null); return loadedTreeItems.stream() .filter(item -> item.parentId == null) .toList(); } + public List loadTreeDataByDomainId(String token, String[] roles) { + UserSession session = ervuJwtTokenService.getUserSession(token); + boolean hasMainRole = session.roles() + .stream() + .anyMatch( + ervuRoleAuthority -> Arrays.asList(roles).contains(ervuRoleAuthority.getAuthority())); + + String domainId = session.recruitmentId(); + if (hasMainRole || domainId == null || domainIdColumn == null) { + return loadTreeData(); + } + List filteredTreeItems = loadTreeItems().stream() + .filter(item -> item.domainId.equalsIgnoreCase(domainId)) + .toList(); + filteredTreeItems.forEach(this::setDomainIdToNull); + return filteredTreeItems; + } + + private void setDomainIdToNull(TreeItemDto treeItem) { + treeItem.domainId = null; + TreeItemDto[] treeItemChildren = treeItem.children; + if (treeItemChildren != null && treeItemChildren.length > 0) { + for (TreeItemDto child : treeItemChildren) { + setDomainIdToNull(child); + } + } + } + private List loadTreeItems() { LoadOptions loadOptions = new LoadOptions(); if (sortColumn != null && sortOrder != null) { @@ -107,6 +145,9 @@ public class TreeItemService { if (businessIdColumn != null) { treeItemDto.businessId = tableRow.get(businessIdColumn); } + if (domainIdColumn != null) { + treeItemDto.domainId = String.valueOf(tableRow.get(domainIdColumn)); + } return treeItemDto; } } From d16ee0ca0c1da0b00f86f4265fa99c8f56d87a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B0=D1=83=D1=84=20=D0=9B=D0=B0=D1=82=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Tue, 25 Mar 2025 16:26:46 +0300 Subject: [PATCH 3/7] SUPPORT-8811: container value loader multiple parameters support --- .../ContainerValueLoaderServiceImpl.java | 126 ++++++++++++++++++ .../register_subpoenas.page | 73 ++++++++-- 2 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java diff --git a/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java b/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java new file mode 100644 index 0000000..4702a2e --- /dev/null +++ b/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java @@ -0,0 +1,126 @@ +package service.loading; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import component.field.dataconvert.DataConverter; +import component.field.dataconvert.DataConverterProvider; +import component.field.loading.FieldValueByContainer; +import component.field.loading.LoadType; +import model.FieldData; +import service.loading.ContainerValueLoaderService; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +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.webkit.beans.Behavior; +import ru.cg.webbpm.modules.webkit.beans.PageObjectNotFoundException; + +/** + * @author Eduard Tihomirov + */ +public class ContainerValueLoaderServiceImpl extends Behavior + implements ContainerValueLoaderService { + + public LoadDao loadDao; + @LocalGraphSource(sourceFieldName = "loadDao") + public EntityColumn[] entityColumns; + + @Override + public List loadOnEventData(Object[] params, List guids) { + if (params.length > 1 && (entityColumns == null || params.length != entityColumns.length)) { + throw new UnsupportedOperationException( + "Can't support multiple params without matching entity columns"); + } + return new ArrayList<>(loadValuesByParamAndColumn(params, guids)); + } + + private List loadValuesByParamAndColumn(Object[] params, List guids) { + Map> byColumnMapping = getScriptsMapping(guids, + fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN + ); + if (byColumnMapping.isEmpty()) { + throw new IllegalArgumentException("No control data to load"); + } + Map idToColumnMapping = byColumnMapping.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + entry -> entry.getValue().getValueColumn() + ) + ); + return loadData(params, idToColumnMapping); + } + + private List loadData(Object[] params, Map idToColumnMapping) { + + if (loadDao == null || params == null || params.length == 0) { + return Collections.emptyList(); + } + + Set columns = new HashSet<>(idToColumnMapping.values()); + Map columnToDataMapping; + if (entityColumns == null || entityColumns.length == 0) { + columnToDataMapping = loadDao.loadByPK( + columns, + params[0].toString() + ).getColumnToDataMap(); + } + else { + LoadOptions loadOptions = new LoadOptions(); + List entityFilters = new ArrayList<>(); + for(int i = 0; i < entityColumns.length; i++) { + entityFilters.add(new EntityFilter(params[i], FilterOperation.EQUAL, entityColumns[i])); + } + loadOptions.setEntityFilters(entityFilters); + List tableRows = loadDao.load(columns, loadOptions); + columnToDataMapping = tableRows.size() > 0 + ? tableRows.get(0).getColumnToDataMap() + : Collections.emptyMap(); + } + + return idToColumnMapping.entrySet().stream() + .map(entry -> { + DataConverter dataConverter = DataConverterProvider.getDataConverter( + entry.getValue().getType()); + Object convertedValue = dataConverter.convertValueForLoad( + columnToDataMapping.get(entry.getValue())); + return new FieldData(entry.getKey(), convertedValue); + }) + .collect(Collectors.toList()); + } + + private Map> getScriptsMapping(List guids, + final Predicate> predicate) { + return guids.stream() + .map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid))) + .filter(entry -> entry.getValue() != null) + .filter(entry -> predicate.test(entry.getValue())) + .collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue)); + } + + private FieldValueByContainer getFieldOnEventValueScript(String guid) { + try { + return getScriptInObject(guid, FieldValueByContainer.class); + } + catch (PageObjectNotFoundException e) { + return null; + } + } + + @Override + public void start() { + super.start(); + } +} + diff --git a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page index 3924971..5dee7f0 100644 --- a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page +++ b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page @@ -3566,7 +3566,6 @@ 18ecb7c6-2148-4eb0-a18c-97af5e73cac7 ГК Второй ряд true - false false @@ -3680,6 +3679,24 @@ + + + + + behavior + + {"objectId":"7085eb05-5251-41dd-8484-8d24ee839f76","packageName":"component.field","className":"ComboBox","type":"TS"} + + + + propertyName + + "valueChangeEvent" + + + + + @@ -3706,6 +3723,37 @@ method + + "getBusinessId" + + + + + + + + + + + + + objectValue + + + +argument + + null + + + +behavior + + {"objectId":"7085eb05-5251-41dd-8484-8d24ee839f76","packageName":"component.field","className":"ComboBox","type":"TS"} + + + +method "getBusinessId" @@ -3727,6 +3775,21 @@ containerValueLoaderService + + entityColumns + + + + {"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"} + + + + + {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"} + + + + loadDao @@ -3744,15 +3807,9 @@ - - replacePkColumn - - {"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"} - - - ContainerByPkValueLoaderServiceImpl + ContainerValueLoaderServiceImpl service.loading From 200313eeac351456fe1d6af4f046321f7d0d4154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D0=BE=D0=B0=D1=82=20=D0=A1=D0=B0=D0=BB=D1=8F=D1=85?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Tue, 25 Mar 2025 17:18:07 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../register_subpoenas.page | 59 +++++++++++++++---- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page index 5dee7f0..395d81b 100644 --- a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page +++ b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page @@ -132,12 +132,6 @@ - - visible - -false - - @@ -149,13 +143,13 @@ businessIdColumn - {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"region_id"} + {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"} idColumn - {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"region_id"} + {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"} @@ -180,7 +174,7 @@ parentIdColumn - {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"region_id"} + {"schema":"metrics","table":"recruitment","entity":"recruitment","name":"parent_id"} @@ -205,7 +199,6 @@ FilterComponent component.filter - true @@ -281,6 +274,12 @@ + + visible + +false + + @@ -3411,7 +3410,6 @@ 9f9c5c62-0ba7-447e-8d37-3eafef87fca1 ГК Выпадающий список true - false false @@ -3446,6 +3444,7 @@ f4c97cf8-64a1-497e-9ffb-75a39c6f9b0e DropdownTreeView false + false false @@ -3590,7 +3589,6 @@ 5339daad-eeab-4b2a-9c0a-f8e79ff3da61 ВК Количество сформированных повесток true - false false @@ -4712,6 +4710,7 @@ ervu_business_metrics.component.filter true + true filterComponents @@ -4721,6 +4720,11 @@ {"objectId":"f4c97cf8-64a1-497e-9ffb-75a39c6f9b0e","packageName":"component.filter","className":"FilterComponent","type":"TS"} + + + {"objectId":"77ed2116-8a9e-4480-93d7-43ccf7b7aa7a","packageName":"component.filter","className":"FilterComponent","type":"TS"} + + @@ -4743,6 +4747,7 @@ ervu_business_metrics.component.filter true + true references @@ -4766,6 +4771,34 @@ table "formed_summonses" + + + + + StaticFilterReference + ervu_business_metrics.component.filter + + + + + + + +column + + "idm_id" + + + +filterComponent + + {"objectId":"77ed2116-8a9e-4480-93d7-43ccf7b7aa7a","packageName":"component.rpc","className":"TreeItemRpcService","type":"JAVA"} + + + +table + + "recruitment" @@ -6569,6 +6602,7 @@ 26143289-a790-4678-9410-680cd152dafe ВК Явка в военный комиссариат true + false false @@ -11869,6 +11903,7 @@ 8ccf3815-9f26-4892-9c46-f78f72f8b019 ГК Четвертый ряд true + false false From 9593171588d9ee507ff2330c80d2dea10760b844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D0=BE=D0=B0=D1=82=20=D0=A1=D0=B0=D0=BB=D1=8F=D1=85?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Tue, 25 Mar 2025 17:57:11 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ervu-business-metrics/register_subpoenas.page | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page index 395d81b..1cb9ab0 100644 --- a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page +++ b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page @@ -3683,7 +3683,7 @@ behavior - {"objectId":"7085eb05-5251-41dd-8484-8d24ee839f76","packageName":"component.field","className":"ComboBox","type":"TS"} + {"objectId":"77ed2116-8a9e-4480-93d7-43ccf7b7aa7a","packageName":"component.field","className":"DropdownTreeViewComponent","type":"TS"} @@ -3747,7 +3747,7 @@ behavior - {"objectId":"7085eb05-5251-41dd-8484-8d24ee839f76","packageName":"component.field","className":"ComboBox","type":"TS"} + {"objectId":"77ed2116-8a9e-4480-93d7-43ccf7b7aa7a","packageName":"component.field","className":"DropdownTreeViewComponent","type":"TS"} @@ -3966,7 +3966,6 @@ - false chartService From 52bbb1e66a14bd5a63a05fd32cd5685f11defad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B0=D1=83=D1=84=20=D0=9B=D0=B0=D1=82=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Tue, 25 Mar 2025 20:48:19 +0300 Subject: [PATCH 6/7] =?UTF-8?q?SUPPORT-8811:=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ContainerValueLoaderServiceBase.java | 109 ++++++++++++++++ .../ContainerValueLoaderServiceImpl.java | 117 +++--------------- 2 files changed, 125 insertions(+), 101 deletions(-) create mode 100644 backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java diff --git a/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java b/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java new file mode 100644 index 0000000..536a9fc --- /dev/null +++ b/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java @@ -0,0 +1,109 @@ +package service.loading; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import component.field.dataconvert.DataConverter; +import component.field.dataconvert.DataConverterProvider; +import component.field.loading.FieldValueByContainer; +import component.field.loading.LoadType; +import model.FieldData; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.webkit.beans.Behavior; +import ru.cg.webbpm.modules.webkit.beans.PageObjectNotFoundException; + +/** + * @author r.latypov + */ +public abstract class ContainerValueLoaderServiceBase extends Behavior + implements ContainerValueLoaderService { + + public LoadDao loadDao; + + @Override + public List loadOnEventData(Object[] params, List guids) { + if (loadDao == null || params == null || params.length == 0) { + return Collections.emptyList(); + } + validateParametersNumber(params.length); + return new ArrayList<>(loadData(params, idToColumnMapping(guids))); + } + + protected abstract void validateParametersNumber(int parametersLength); + + protected abstract boolean loadByPkCondition(); + + protected abstract List createEntityFilters(Object[] params); + + private Map idToColumnMapping(List guids) { + Map> byColumnMapping = getScriptsMapping(guids, + fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN + ); + if (byColumnMapping.isEmpty()) { + throw new IllegalArgumentException("No control data to load"); + } + Map idToColumnMapping = byColumnMapping.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + entry -> entry.getValue().getValueColumn() + ) + ); + return idToColumnMapping; + } + + private List loadData(Object[] params, Map idToColumnMapping) { + Set columns = new HashSet<>(idToColumnMapping.values()); + Map columnToDataMapping; + if (loadByPkCondition()) { + columnToDataMapping = loadDao.loadByPK(columns, params[0].toString()).getColumnToDataMap(); + } + else { + LoadOptions loadOptions = new LoadOptions(); + loadOptions.setEntityFilters(createEntityFilters(params)); + List tableRows = loadDao.load(columns, loadOptions); + columnToDataMapping = tableRows.size() > 0 + ? tableRows.get(0).getColumnToDataMap() + : Collections.emptyMap(); + } + + return idToColumnMapping.entrySet().stream() + .map(entry -> { + DataConverter dataConverter = DataConverterProvider.getDataConverter( + entry.getValue().getType()); + Object convertedValue = dataConverter.convertValueForLoad( + columnToDataMapping.get(entry.getValue())); + return new FieldData(entry.getKey(), convertedValue); + }) + .collect(Collectors.toList()); + } + + private Map> getScriptsMapping(List guids, + final Predicate> predicate) { + return guids.stream() + .map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid))) + .filter(entry -> entry.getValue() != null) + .filter(entry -> predicate.test(entry.getValue())) + .collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue)); + } + + private FieldValueByContainer getFieldOnEventValueScript(String guid) { + try { + return getScriptInObject(guid, FieldValueByContainer.class); + } + catch (PageObjectNotFoundException e) { + return null; + } + } +} diff --git a/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java b/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java index 4702a2e..ab201a2 100644 --- a/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java +++ b/backend/src/main/java/service/loading/ContainerValueLoaderServiceImpl.java @@ -1,126 +1,41 @@ package service.loading; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import component.field.dataconvert.DataConverter; -import component.field.dataconvert.DataConverterProvider; -import component.field.loading.FieldValueByContainer; -import component.field.loading.LoadType; -import model.FieldData; -import service.loading.ContainerValueLoaderService; - -import ru.cg.webbpm.modules.database.api.bean.TableRow; -import ru.cg.webbpm.modules.database.api.dao.LoadDao; -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.webkit.beans.Behavior; -import ru.cg.webbpm.modules.webkit.beans.PageObjectNotFoundException; /** - * @author Eduard Tihomirov + * @author r.latypov */ -public class ContainerValueLoaderServiceImpl extends Behavior - implements ContainerValueLoaderService { - - public LoadDao loadDao; +public class ContainerValueLoaderServiceImpl extends ContainerValueLoaderServiceBase { @LocalGraphSource(sourceFieldName = "loadDao") public EntityColumn[] entityColumns; @Override - public List loadOnEventData(Object[] params, List guids) { - if (params.length > 1 && (entityColumns == null || params.length != entityColumns.length)) { + protected void validateParametersNumber(int parametersLength) { + if (entityColumns != null && entityColumns.length > 0 + && parametersLength > entityColumns.length) { throw new UnsupportedOperationException( "Can't support multiple params without matching entity columns"); } - return new ArrayList<>(loadValuesByParamAndColumn(params, guids)); - } - - private List loadValuesByParamAndColumn(Object[] params, List guids) { - Map> byColumnMapping = getScriptsMapping(guids, - fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN - ); - if (byColumnMapping.isEmpty()) { - throw new IllegalArgumentException("No control data to load"); - } - Map idToColumnMapping = byColumnMapping.entrySet().stream() - .collect(Collectors.toMap( - Map.Entry::getKey, - entry -> entry.getValue().getValueColumn() - ) - ); - return loadData(params, idToColumnMapping); - } - - private List loadData(Object[] params, Map idToColumnMapping) { - - if (loadDao == null || params == null || params.length == 0) { - return Collections.emptyList(); - } - - Set columns = new HashSet<>(idToColumnMapping.values()); - Map columnToDataMapping; - if (entityColumns == null || entityColumns.length == 0) { - columnToDataMapping = loadDao.loadByPK( - columns, - params[0].toString() - ).getColumnToDataMap(); - } - else { - LoadOptions loadOptions = new LoadOptions(); - List entityFilters = new ArrayList<>(); - for(int i = 0; i < entityColumns.length; i++) { - entityFilters.add(new EntityFilter(params[i], FilterOperation.EQUAL, entityColumns[i])); - } - loadOptions.setEntityFilters(entityFilters); - List tableRows = loadDao.load(columns, loadOptions); - columnToDataMapping = tableRows.size() > 0 - ? tableRows.get(0).getColumnToDataMap() - : Collections.emptyMap(); - } - - return idToColumnMapping.entrySet().stream() - .map(entry -> { - DataConverter dataConverter = DataConverterProvider.getDataConverter( - entry.getValue().getType()); - Object convertedValue = dataConverter.convertValueForLoad( - columnToDataMapping.get(entry.getValue())); - return new FieldData(entry.getKey(), convertedValue); - }) - .collect(Collectors.toList()); - } - - private Map> getScriptsMapping(List guids, - final Predicate> predicate) { - return guids.stream() - .map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid))) - .filter(entry -> entry.getValue() != null) - .filter(entry -> predicate.test(entry.getValue())) - .collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue)); - } - - private FieldValueByContainer getFieldOnEventValueScript(String guid) { - try { - return getScriptInObject(guid, FieldValueByContainer.class); - } - catch (PageObjectNotFoundException e) { - return null; - } } @Override - public void start() { - super.start(); + protected boolean loadByPkCondition() { + return entityColumns == null || entityColumns.length == 0; + } + + @Override + protected List createEntityFilters(Object[] params) { + List entityFilters = new ArrayList<>(); + for (int i = 0; i < params.length; i++) { + entityFilters.add(new EntityFilter(params[i], FilterOperation.EQUAL, entityColumns[i])); + } + return entityFilters; } } From 18301115e3fbce8f4bbfac303c4ce3618703eaec Mon Sep 17 00:00:00 2001 From: Foat Saliakhov Date: Wed, 26 Mar 2025 12:48:51 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ervu-business-metrics/register_subpoenas.page | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page index 1cb9ab0..3034a52 100644 --- a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page +++ b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas.page @@ -3631,7 +3631,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":541.0,"y":276.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":118.0,"y":223.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":132.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} @@ -3795,7 +3795,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":548.0,"y":242.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":94.0,"y":207.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":337.0,"y":95.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} @@ -3996,7 +3996,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":55.0,"y":106.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":313.0,"y":86.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null],[{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null]],"mainNodeIndex":1} @@ -4830,7 +4830,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,null,null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"view_formed_summonses":{"tableName":"view_formed_summonses","schemaName":"summonses_list","x":511.0,"y":150.0,"alias":"view_formed_summonses","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"metrics","x":79.0,"y":184.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"},"operation":"EQUAL","typeCode":"CONST","values":["\"00\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"formed_summonses":{"tableName":"formed_summonses","schemaName":"summonses_list","x":270.0,"y":112.0,"alias":"formed_summonses","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"summonses_reason_id"},"operation":"EQUAL","typeCode":"CONST","values":["1"]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,null,{"refOnEntityName":"formed_summonses","refToEntityName":"recruitment","refToColumns":[{"schema":"metrics","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[{"refOnEntityName":"view_formed_summonses","refToEntityName":"formed_summonses","refToColumns":[{"schema":"summonses_list","table":"formed_summonses","entity":"formed_summonses","name":"formed_summonses_id"}],"refOnColumns":[{"schema":"summonses_list","table":"view_formed_summonses","entity":"view_formed_summonses","name":"formed_summonses_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null,null],[null,null,null]],"mainNodeIndex":0}