account-service http://jira.mfd.msk:8088/browse/CLS-577 DATA.sql добавил ошибку 5025

This commit is contained in:
AKurakin 2023-11-01 12:30:43 +03:00
parent 2f54dcaccf
commit 286b3ace2c
5 changed files with 30 additions and 15 deletions

View file

@ -7,11 +7,13 @@ import ru.clearing.classes.statics.data.account.AccountSymbols;
import ru.spcex.clearing.account.errors.AccountError; import ru.spcex.clearing.account.errors.AccountError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountSymbolsNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountSymbolsNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.account.InformationAccountNewRequest;
import ru.spcex.clearing.validation.common.rules.FieldNotBlankRequiredRule; import ru.spcex.clearing.validation.common.rules.FieldNotBlankRequiredRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.validation.IValidationRule; import ru.spcex.platform.utils.validation.IValidationRule;
@ -25,8 +27,8 @@ import java.util.function.Function;
@Configuration @Configuration
public class AccountSymbolsValidationConfig { public class AccountSymbolsValidationConfig {
@Bean("accountSymbolsNewRequest") @Bean("accountSymbolsDepoNewRequest")
public Function<AccountSymbolsNewRequest, IValidator> correspondentAccountNewRequestValidator( public Function<AccountSymbolsNewRequest, IValidator> accountSymbolsDepoNewRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) { ) {
return accountSymbolsNewRequest -> { return accountSymbolsNewRequest -> {
@ -41,7 +43,15 @@ public class AccountSymbolsValidationConfig {
IMDGDistributedNames.Map_Account, IMDGDistributedNames.Map_Account,
Account.class, Account.class,
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
AccountError.CompanyNotFound AccountError.AccountNotFound,
true,
(Account account) -> {
if (AccountType.Depo.equalsByKey(account.getAccountType())) {
return null;
} else {
return AccountError.AccountDepoTypeRequired;//todo data.xml!!!
}
}
), ),
FieldNotBlankRequiredRule.instance("accountSymbolValue", FieldNotBlankRequiredRule.instance("accountSymbolValue",
AccountSymbolsNewRequest::getAccountSymbolValue, AccountSymbolsNewRequest::getAccountSymbolValue,
@ -57,17 +67,18 @@ public class AccountSymbolsValidationConfig {
AccountSymbolsNewRequest validatedObject = context.getValidatedObject(); AccountSymbolsNewRequest validatedObject = context.getValidatedObject();
Imdg<AccountSymbols> accountSymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class); Imdg<AccountSymbols> accountSymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class);
Map<String, Comparable<?>> query = new HashMap<>(); ImdgPredicateBuilder pb = accountSymbolsImdg.predicateBuilder();
query.put("accountId", validatedObject.getAccountId()); ImdgPredicate query = pb.or(
query.put("accountSymbolValue", validatedObject.getAccountSymbolValue()); pb.equals("accountId", validatedObject.getAccountId()),
pb.equals("accountSymbolValue", validatedObject.getAccountSymbolValue())
Collection<AccountSymbols> existAccSymbols = accountSymbolsImdg.getCollectionObjectsByFieldValues(query); );
Collection<AccountSymbols> existAccSymbols = accountSymbolsImdg.getCollectionObjectsByPredicate(query);
if (existAccSymbols.isEmpty()) { if (existAccSymbols.isEmpty()) {
return empty(); return empty();
} else { } else {
AccountSymbols existAS = existAccSymbols.iterator().next(); AccountSymbols existAS = existAccSymbols.iterator().next();
return of(AccountError.AccountAlreadyExist, existAS.getAccountId()); return of(AccountError.AccountAlreadyExist, existAS.getAccountId() + "," + existAS.getAccountSymbolValue());
} }
} }
} }

View file

@ -22,6 +22,7 @@ public enum AccountError implements IErrorEnumId {
ClearingCompanySymbolNotFound(5022L), // Для компании %s отсутствует клиринговый код». ClearingCompanySymbolNotFound(5022L), // Для компании %s отсутствует клиринговый код».
AccountForTradingClearingRegistryAlreadyUsed(5023L), AccountForTradingClearingRegistryAlreadyUsed(5023L),
AccountFieldNotSet(5024L), AccountFieldNotSet(5024L),
AccountDepoTypeRequired(5025L),
TradingClearingRegistryNotFound(3022L), TradingClearingRegistryNotFound(3022L),
; ;

View file

@ -52,7 +52,7 @@ public class AccountSymbolsService extends QueueConsumer implements Initializing
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
IMessageResolver messageResolver, IMessageResolver messageResolver,
RequestHelper requestHelper, RequestHelper requestHelper,
@Qualifier("accountSymbolsNewRequest") @Qualifier("accountSymbolsDepoNewRequest")
Function<AccountSymbolsNewRequest, IValidator> accountSymbolsNewRequestValidator Function<AccountSymbolsNewRequest, IValidator> accountSymbolsNewRequestValidator
) { ) {
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<meta version="3.5.0.14"> <meta version="3.9.0.13">
<enums> <enums>
<allowed id="1" code="ALWD" name="Разрешено"/> <allowed id="1" code="ALWD" name="Разрешено"/>
<allowed id="2" code="DEND" name="Запрещено"/> <allowed id="2" code="DEND" name="Запрещено"/>
@ -428,7 +428,8 @@
<errorCode id="5019" code="ACNT" name="Для компании %s отсутствует категория %s."/> <errorCode id="5019" code="ACNT" name="Для компании %s отсутствует категория %s."/>
<errorCode id="5022" code="ACNT" name="Для компании %s отсутствует клиринговый код."/> <errorCode id="5022" code="ACNT" name="Для компании %s отсутствует клиринговый код."/>
<errorCode id="5023" code="ACNT" name="Счет %s уже используется."/> <errorCode id="5023" code="ACNT" name="Счет %s уже используется."/>
<errorCode id="5024" code="ACNT" name="Не указан номер счета."/> <errorCode id="5024" code="ACNT" name="Не указан номер счета."/>
<errorCode id="5025" code="ACNT" name="Необходимо указать ДЕПО счет."/>
<!-- error code for balance-service --> <!-- error code for balance-service -->
<errorCode id="5200" code="BLNC" name="Общая ошибка модуля balance-service."/> <errorCode id="5200" code="BLNC" name="Общая ошибка модуля balance-service."/>
<errorCode id="5210" code="BLNC" name="Клиринговая сессия неактивна."/> <errorCode id="5210" code="BLNC" name="Клиринговая сессия неактивна."/>

View file

@ -1,5 +1,5 @@
-- DB version: 3.8.0.62 -- DB version: 3.9.0.64
-- DATA version: 3.5.0.14 -- DATA version: 3.9.0.13
/* Dictionaries */ /* Dictionaries */
@ -832,6 +832,8 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5023, 'ACNT', 'Сче
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5024, 'ACNT', 'Не указан номер счета.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME; INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5024, 'ACNT', 'Не указан номер счета.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5025, '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;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5210, 'BLNC', 'Клиринговая сессия неактивна.') 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;