From f1982ef5da20e851d9d54ad1108d5ddbb381b093 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 18 Jun 2024 19:34:36 +0300 Subject: [PATCH 1/4] http://jira.mfd.msk:8088/browse/CLS-690 --- .../TradingClearingRegistryListValidationConfig.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java index 4600e646b..da8916a37 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java @@ -223,11 +223,11 @@ public class TradingClearingRegistryListValidationConfig { } Collection inOtherLists = tradingClearingRegistryListImdg.getCollectionObjectsByPredicate(query); if (!inOtherLists.isEmpty()) { - Collection duplicateAccounts = inOtherLists.stream() - .map(tradingClearingRegistryList -> - accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount()) - .collect(Collectors.toSet()); - return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, fieldName); // (5023) «Счет %s уже используется» +// Collection duplicateAccounts = inOtherLists.stream() +// .map(tradingClearingRegistryList -> +// accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount()) +// .collect(Collectors.toSet()); + return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); // (5023) «Счет %s уже используется» } } } From edce8ee854d9dc56248e48deb893d896772ad8d3 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 18 Jun 2024 21:29:28 +0300 Subject: [PATCH 2/4] disable EndStageNotification for UnitedSession --- .../spcex/clearing/session/stage/UnitedSession.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java index d216e3bac..1d462e70d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java @@ -31,7 +31,6 @@ import ru.spcex.clearing.session.stage.impl.compound.CompoundStageDealsPrepare; import ru.spcex.clearing.session.stage.monitor.SessionMonitor; import ru.spcex.clearing.session.stage.monitor.SessionMonitorFactory; import ru.spcex.clearing.session.stage.task.DealsPreparePayload; -import ru.spcex.clearing.session.stage.task.EndStageNotificationPayload; import ru.spcex.clearing.session.stage.task.FinishingSessionPayload; import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionPayload; import ru.spcex.clearing.session.stage.task.FormingRegistersOnOSPayload; @@ -281,10 +280,13 @@ public class UnitedSession extends AbstractSession implements InitializingBean { } //stage 11 { - EndStageNotificationPayload payload = new EndStageNotificationPayload(); - payload.setSection(currSession.getSection()); - payload.setSessionId(currSession.getId()); - runStage(TaskType.EndStageNotification, payload, endStageNotification); + //Убрал этот шаг по требованию Насти, 18.06.2024 + //выпадало на строчке EndStageNotification:101 + // throw new IllegalArgumentException("Unsupported section " + section); +// EndStageNotificationPayload payload = new EndStageNotificationPayload(); +// payload.setSection(currSession.getSection()); +// payload.setSessionId(currSession.getId()); +// runStage(TaskType.EndStageNotification, payload, endStageNotification); endSession(); } } catch (StageException e) { From d2f7ca572d2997ac232d08da1af41f8e4d116b8f Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Thu, 20 Jun 2024 11:49:32 +0300 Subject: [PATCH 3/4] http://jira.mfd.msk:8088/browse/CLS-690 --- ...radingClearingRegistryListValidationConfig.java | 14 ++++++++++++-- .../clearing/account/errors/AccountError.java | 4 +--- .../BackendClientCodeValidationRule.java | 4 ++-- .../GatewayClientCodeValidationRule.java | 6 +++--- .../db-scripts/src/main/resources/db/DATA.sql | 3 ++- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java index da8916a37..837836244 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java @@ -210,9 +210,19 @@ public class TradingClearingRegistryListValidationConfig { // Проверка отсутствия других TradingClearingRegistryList с этими счетами Imdg tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); - Long tkrId = tkrIdGetter.apply(validatedObject); ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder(); + + Collection listWithAccountId = tradingClearingRegistryListImdg.getCollectionObjectsByPredicate( + pb.and( + pb.equals("accountId", accountId), + pb.equals("status", WorkflowStatus.Active.getKey()) + )); + if (!listWithAccountId.isEmpty()){ + return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); // (5023) «Данная счет %s уже используется» + } + Long tkrId = tkrIdGetter.apply(validatedObject); ImdgPredicate query = pb.and( + pb.equals("tradingClearingRegistryId", tkrId), pb.equals("status", WorkflowStatus.Active.getKey()), pb.equals("currency", byIdObject.getCurrency())); if (idGetter != null) { @@ -227,7 +237,7 @@ public class TradingClearingRegistryListValidationConfig { // .map(tradingClearingRegistryList -> // accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount()) // .collect(Collectors.toSet()); - return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); // (5023) «Счет %s уже используется» + return of(AccountError.CurrencyForTradingClearingRegistryListAlreadyUsed, byIdObject.getCurrency(), fieldName); // (5023) «Данная валюта %s уже используется» } } } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java index 47031a218..23f3cfd0d 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java @@ -29,9 +29,7 @@ public enum AccountError implements IErrorEnumId { TCR_NOT_FOUND_GTW(5028L), ACCOUNT_NOT_FOUND_GTW(5029L), COMPANY_NOT_FOUND_GTW(5030L), - TCR_ALREADY_EXIST_GTW(5031L), - DEPO_ACCOUNT_NOT_FOUND_GTW(5032L), - TCR_LIST_ALREADY_EXIST_GTW(5033L), + CurrencyForTradingClearingRegistryListAlreadyUsed(5031L), TradingClearingRegistryNotFound(3022L), CurrencyNotFound(1016L), ; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/BackendClientCodeValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/BackendClientCodeValidationRule.java index 87d86b05c..b78f2f0d1 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/BackendClientCodeValidationRule.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/BackendClientCodeValidationRule.java @@ -55,7 +55,7 @@ public enum BackendClientCodeValidationRule implements IValidationRule Date: Thu, 20 Jun 2024 13:19:51 +0300 Subject: [PATCH 4/4] meta 3.12.0.94, data 3.12.0.92 --- clearing-parent/backend-api/src/main/resources/meta/data.xml | 5 +++-- .../backend-api/src/main/resources/meta/meta.json | 4 ++-- clearing-parent/backend-api/src/main/resources/meta/meta.xml | 4 ++-- clearing-parent/backend-api/src/test/resources/meta.json | 4 ++-- clearing-parent/db-scripts/src/main/resources/db/DATA.sql | 5 +++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/data.xml b/clearing-parent/backend-api/src/main/resources/meta/data.xml index 144ea737f..ac1bab32d 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/data.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml @@ -1,5 +1,5 @@ - + @@ -9,7 +9,7 @@
-
+
@@ -459,6 +459,7 @@ + diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.json b/clearing-parent/backend-api/src/main/resources/meta/meta.json index ad37e5070..9f45f5642 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.json +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.json @@ -1,6 +1,6 @@ { - "version": "3.12.0.93", + "version": "3.12.0.94", "enums": { @@ -4607,7 +4607,7 @@ "destination": "registries/identificationFunds", - "confirmation": "balance,tradingClearingRegistryId", + "confirmation": "securitySymbol,balance,tradingClearingRegistryId", "class": "ru.spcex.clearing.backendapi.controller.request.cud.registry.IdentificationFundsActionNew", diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index b6ada0a84..3a423ccc6 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -1069,7 +1069,7 @@ - + diff --git a/clearing-parent/backend-api/src/test/resources/meta.json b/clearing-parent/backend-api/src/test/resources/meta.json index ad37e5070..9f45f5642 100644 --- a/clearing-parent/backend-api/src/test/resources/meta.json +++ b/clearing-parent/backend-api/src/test/resources/meta.json @@ -1,6 +1,6 @@ { - "version": "3.12.0.93", + "version": "3.12.0.94", "enums": { @@ -4607,7 +4607,7 @@ "destination": "registries/identificationFunds", - "confirmation": "balance,tradingClearingRegistryId", + "confirmation": "securitySymbol,balance,tradingClearingRegistryId", "class": "ru.spcex.clearing.backendapi.controller.request.cud.registry.IdentificationFundsActionNew", diff --git a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql index 85054cafd..7ba3386d5 100644 --- a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql +++ b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql @@ -1,5 +1,5 @@ -- DB version: 3.12 --- DATA version: 3.12.0.91 +-- DATA version: 3.12.0.92 /* Dictionaries */ @@ -20,7 +20,7 @@ INSERT INTO SECTION_DICTIONARY(ID, CODE, NAME) values (2, 'FOND', 'Фондов INSERT INTO SECTION_DICTIONARY(ID, CODE, NAME) values (3, 'CURR', 'Валютная секция') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; -INSERT INTO SECTION_DICTIONARY(ID, CODE, NAME) values (4, 'MULT', 'Многосекционный клиринг') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; +INSERT INTO SECTION_DICTIONARY(ID, CODE, NAME) values (4, 'MULT', 'Единая') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; INSERT INTO USER_ROLE_DICTIONARY(ID, CODE, NAME) values (1, 'ADMN', 'Администратор Клиринга МКР') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; @@ -893,6 +893,7 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5028, 'ACNT', 'Ука INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5029, 'ACNT', 'Счет %s не найден в клиринговой системе.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5030, 'ACNT', 'Компания %s не найдена в клиринговой системе.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; + INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5031, 'ACNT', 'Для данной валюты в ТКР уже задан счет.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5200, 'BLNC', 'Общая ошибка модуля balance-service.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;