diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java index 93932c385..aa30ef504 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java @@ -1,6 +1,8 @@ package ru.spcex.clearing.account.service.v2.listeners; +import java.time.Instant; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,6 +18,7 @@ import org.springframework.util.StringUtils; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.DepoAccount; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.account.model.TrkCreationResult; import ru.spcex.clearing.account.model.ValidationResult; @@ -45,6 +48,7 @@ import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.enumeration.TradingClearingRegistryType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.utils.collection.Pair; import ru.spcex.platform.utils.validation.IValidator; @@ -211,6 +215,7 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali } private void processUpdateEksAccount(Map accountsAfterValidation, SendTkrRequest tkrRequest) { + Imdg registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); for (Map.Entry entry : accountsAfterValidation.entrySet()) { TkrAccount tkrAccount = entry.getKey(); ValidationResult validationResult = entry.getValue(); @@ -225,6 +230,20 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali tcrListNew.setTradingClearingRegistryId(tradingClearingRegistry.getId()); tcrListNew.setCurrencyAccountList(accIds); List tkrListIds = tradingClearingRegistryListFacade.createTradingClearingRegistryList(tcrListNew, null); + + for (Long accId : accIds) { + log.debug("Registries updated for account {}", accId); + ImdgPredicateBuilder predicateBuilder = registryImdg.predicateBuilder(); + Collection registries = registryImdg.getCollectionObjectsByPredicate( + predicateBuilder.equals("accountId", accId) + ); + registries.forEach(registry -> { + registry.setTradingClearingRegistryId(tradingClearingRegistry.getId()); + registry.setTradingClearingRegistry(tradingClearingRegistry.getCode()); + registry.setUpdated(Instant.now()); + registryImdg.update(registry); + }); + } Optional tkrReq = gatewayRequestCreator.createTkrGatewayReq(tradingClearingRegistry); tkrReq.ifPresent(tkr -> tkrRequest.getTkrs().add(tkr)); } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayUpdateEksClientCodeValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayUpdateEksClientCodeValidationRule.java index 9e23868f2..9d0bf15da 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayUpdateEksClientCodeValidationRule.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayUpdateEksClientCodeValidationRule.java @@ -14,6 +14,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount; import ru.spcex.clearing.platform.messaging.domain.cud.gateway.MoneyAccountMsgRequest; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.CurrencyCode; +import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -30,7 +31,10 @@ public enum GatewayUpdateEksClientCodeValidationRule implements IValidationRule< ImdgPredicateBuilder predicate = tkrImdg.predicateBuilder(); String trkCode = validatedObject.getTkrCode(); TradingClearingRegistry existTkr = tkrImdg.getSingleObjectByPredicate( - predicate.equals("code", trkCode) + predicate.and( + predicate.equals("code", trkCode), + predicate.equals("status", Status.Active.getKey()) + ) ); if (existTkr == null) { return of(AccountError.TradingClearingRegistryNotFound, trkCode);