etreschenkov 2024-06-20 11:49:32 +03:00
parent edce8ee854
commit d2f7ca572d
5 changed files with 20 additions and 11 deletions

View file

@ -210,9 +210,19 @@ public class TradingClearingRegistryListValidationConfig {
// Проверка отсутствия других TradingClearingRegistryList с этими счетами // Проверка отсутствия других TradingClearingRegistryList с этими счетами
Imdg<TradingClearingRegistryList> tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); Imdg<TradingClearingRegistryList> tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class);
Long tkrId = tkrIdGetter.apply(validatedObject);
ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder(); ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder();
Collection<TradingClearingRegistryList> 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( ImdgPredicate query = pb.and(
pb.equals("tradingClearingRegistryId", tkrId),
pb.equals("status", WorkflowStatus.Active.getKey()), pb.equals("status", WorkflowStatus.Active.getKey()),
pb.equals("currency", byIdObject.getCurrency())); pb.equals("currency", byIdObject.getCurrency()));
if (idGetter != null) { if (idGetter != null) {
@ -227,7 +237,7 @@ public class TradingClearingRegistryListValidationConfig {
// .map(tradingClearingRegistryList -> // .map(tradingClearingRegistryList ->
// accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount()) // accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount())
// .collect(Collectors.toSet()); // .collect(Collectors.toSet());
return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); // (5023) «Счет %s уже используется» return of(AccountError.CurrencyForTradingClearingRegistryListAlreadyUsed, byIdObject.getCurrency(), fieldName); // (5023) «Данная валюта %s уже используется»
} }
} }
} }

View file

@ -29,9 +29,7 @@ public enum AccountError implements IErrorEnumId {
TCR_NOT_FOUND_GTW(5028L), TCR_NOT_FOUND_GTW(5028L),
ACCOUNT_NOT_FOUND_GTW(5029L), ACCOUNT_NOT_FOUND_GTW(5029L),
COMPANY_NOT_FOUND_GTW(5030L), COMPANY_NOT_FOUND_GTW(5030L),
TCR_ALREADY_EXIST_GTW(5031L), CurrencyForTradingClearingRegistryListAlreadyUsed(5031L),
DEPO_ACCOUNT_NOT_FOUND_GTW(5032L),
TCR_LIST_ALREADY_EXIST_GTW(5033L),
TradingClearingRegistryNotFound(3022L), TradingClearingRegistryNotFound(3022L),
CurrencyNotFound(1016L), CurrencyNotFound(1016L),
; ;

View file

@ -55,7 +55,7 @@ public enum BackendClientCodeValidationRule implements IValidationRule<ImdgValid
"status", Status.Active.getKey() "status", Status.Active.getKey()
)); ));
if (tcrByMoneyAccount != null) { if (tcrByMoneyAccount != null) {
return of(AccountError.TCR_ALREADY_EXIST_GTW); return of(AccountError.TradingClearingRegistryAlreadyExist);
} }
for (Long id : currencyIds) { for (Long id : currencyIds) {
@ -65,7 +65,7 @@ public enum BackendClientCodeValidationRule implements IValidationRule<ImdgValid
"status", Status.Active.getKey() "status", Status.Active.getKey()
)); ));
if (tcrList != null) { if (tcrList != null) {
return of(AccountError.TCR_LIST_ALREADY_EXIST_GTW); return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed);
} }
} }

View file

@ -99,7 +99,7 @@ public enum GatewayClientCodeValidationRule implements IValidationRule<ImdgValid
); );
if (depoAccount == null) { if (depoAccount == null) {
context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty()); context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty());
return of(AccountError.DEPO_ACCOUNT_NOT_FOUND_GTW, "depo_account"); return of(AccountError.DepoAccountNotFound, "depo_account");
} }
context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, depoAccount); context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, depoAccount);
@ -124,7 +124,7 @@ public enum GatewayClientCodeValidationRule implements IValidationRule<ImdgValid
) )
); );
if (tcr != null) { if (tcr != null) {
return of(AccountError.TCR_ALREADY_EXIST_GTW, tcr.getCode(), "code"); return of(AccountError.TradingClearingRegistryAlreadyExist, tcr.getCode(), "code");
} }
return Optional.empty(); return Optional.empty();
} }
@ -149,7 +149,7 @@ public enum GatewayClientCodeValidationRule implements IValidationRule<ImdgValid
predicateBuilder.equals("status", Status.Active.getKey()) predicateBuilder.equals("status", Status.Active.getKey())
)); ));
if (!tcrList.isEmpty()) { if (!tcrList.isEmpty()) {
return of(AccountError.TCR_ALREADY_EXIST_GTW, tcrList.iterator().next().getCurrency(), "currency"); return of(AccountError.TradingClearingRegistryAlreadyExist, tcrList.iterator().next().getCurrency(), "currency");
} }
return Optional.empty(); return Optional.empty();
} }

View file

@ -1,4 +1,4 @@
-- DB version: 3.12.0.91 -- DB version: 3.12
-- DATA version: 3.12.0.91 -- DATA version: 3.12.0.91
@ -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 (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 (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 (5200, 'BLNC', 'Общая ошибка модуля balance-service.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;