etreschenkov 2026-05-22 09:58:27 +03:00
parent f3503bfc24
commit c8f1610eba
3 changed files with 21 additions and 19 deletions

View file

@ -13,6 +13,7 @@ import ru.clearing.platform.dictionary.ServiceStatusDictionary;
import ru.spcex.clearing.account.errors.AccountError; import ru.spcex.clearing.account.errors.AccountError;
import ru.spcex.clearing.account.validation.BackendClientCodeValidationRule; import ru.spcex.clearing.account.validation.BackendClientCodeValidationRule;
import ru.spcex.clearing.account.validation.GatewayClientCodeValidationRule; import ru.spcex.clearing.account.validation.GatewayClientCodeValidationRule;
import ru.spcex.clearing.account.validation.GatewayEksClientCodeValidationRule;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeUpdateRequest;
@ -196,9 +197,9 @@ public class ClientCodeValidationConfig {
addImdg.accept(IMDGDistributedNames.Map_DepoAccount); addImdg.accept(IMDGDistributedNames.Map_DepoAccount);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
FieldRequiredRule.instance("client_code", TkrAccount::getClientCode, AccountError.RequiredFieldEmpty), FieldRequiredRule.instance("client_code", TkrAccount::getClientCode, AccountError.RequiredFieldEmpty),
GatewayClientCodeValidationRule.CompanyPresent, GatewayEksClientCodeValidationRule.CompanyPresent,
// GatewayClientCodeValidationRule.AllAccountsPresent, // GatewayClientCodeValidationRule.AllAccountsPresent,
GatewayClientCodeValidationRule.DepoAccountsPresent GatewayEksClientCodeValidationRule.DepoAccountsPresent
// GatewayClientCodeValidationRule.TcrIsNotPresent, // GatewayClientCodeValidationRule.TcrIsNotPresent,
// GatewayClientCodeValidationRule.TcrListIsNotPresent // GatewayClientCodeValidationRule.TcrListIsNotPresent
); );

View file

@ -7,8 +7,6 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountSymbols;
import ru.clearing.classes.statics.data.account.DepoAccount;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList; import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList;
@ -98,18 +96,9 @@ public enum GatewayClientCodeValidationRule implements IValidationRule<ImdgValid
return empty(); return empty();
} }
Imdg<AccountSymbols> accountSymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class); Imdg<Account> imdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
ImdgPredicateBuilder predicateBuilder = accountSymbolsImdg.predicateBuilder(); Account depoAccount = imdg.getFirstObjectByFieldValues(
AccountSymbols accountSymbols = accountSymbolsImdg.getSingleObjectByPredicate( Map.of("account", depoAccountVal)
predicateBuilder.equals("accountSymbolValue", depoAccountVal)
);
if (accountSymbols == null) {
return of(AccountError.DepoAccountNotFound, "depo_account");
}
Imdg<DepoAccount> imdg = context.obtainMap(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
DepoAccount depoAccount = imdg.getFirstObjectByPredicate(
predicateBuilder.equals("accountId", accountSymbols.getAccountId())
); );
if (depoAccount == null) { if (depoAccount == null) {
context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty()); context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty());

View file

@ -8,6 +8,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountSymbols;
import ru.clearing.classes.statics.data.account.DepoAccount;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
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;
@ -15,6 +17,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount;
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.MoneyAccountMsgRequest; import ru.spcex.clearing.platform.messaging.domain.cud.gateway.MoneyAccountMsgRequest;
import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
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;
@ -75,9 +78,18 @@ public enum GatewayEksClientCodeValidationRule implements IValidationRule<ImdgVa
return empty(); return empty();
} }
Imdg<Account> imdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); Imdg<AccountSymbols> accountSymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class);
Account depoAccount = imdg.getFirstObjectByFieldValues( ImdgPredicateBuilder predicateBuilder = accountSymbolsImdg.predicateBuilder();
Map.of("account", depoAccountVal) AccountSymbols accountSymbols = accountSymbolsImdg.getSingleObjectByPredicate(
predicateBuilder.equals("accountSymbolValue", depoAccountVal)
);
if (accountSymbols == null) {
return of(AccountError.DepoAccountNotFound, "depo_account");
}
Imdg<DepoAccount> imdg = context.obtainMap(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
DepoAccount depoAccount = imdg.getFirstObjectByPredicate(
predicateBuilder.equals("accountId", accountSymbols.getAccountId())
); );
if (depoAccount == null) { if (depoAccount == null) {
context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty()); context.storeObject(ClientCodeStoreObjects.DEPO_ACCOUNT, Optional.empty());