etreschenkov 2026-06-17 11:20:18 +03:00
parent 0aa623836f
commit c7644bc07e
2 changed files with 24 additions and 1 deletions

View file

@ -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<TkrAccount, ValidationResult> accountsAfterValidation, SendTkrRequest tkrRequest) {
Imdg<Registry> registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
for (Map.Entry<TkrAccount, ValidationResult> 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<Long> tkrListIds = tradingClearingRegistryListFacade.createTradingClearingRegistryList(tcrListNew, null);
for (Long accId : accIds) {
log.debug("Registries updated for account {}", accId);
ImdgPredicateBuilder predicateBuilder = registryImdg.predicateBuilder();
Collection<Registry> 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<Tkr> tkrReq = gatewayRequestCreator.createTkrGatewayReq(tradingClearingRegistry);
tkrReq.ifPresent(tkr -> tkrRequest.getTkrs().add(tkr));
}

View file

@ -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);