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..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) { @@ -223,11 +233,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.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 - + @@ -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/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 4164ed414..33df5af56 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) { 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 27a38fde7..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.0.91 --- DATA version: 3.12.0.91 +-- DB version: 3.12 +-- 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; @@ -894,6 +894,8 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5029, 'ACNT', 'Сче 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; INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5210, 'BLNC', 'Клиринговая сессия неактивна.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;