From 2ab03e6fcc6d914c4c1b4b5d3066e23afc62a304 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 30 Mar 2026 14:47:01 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-945 --- .../services/AbstractExporterService.java | 23 +++++++++++++++++++ .../services/MoneyExporterService.java | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java index 59fb09121..c51f70b7b 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java @@ -12,6 +12,7 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; +import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.security.Security; @@ -24,6 +25,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNew import ru.spcex.clearing.platform.messaging.serialization.LogFormatter; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.AccountStatus; import ru.spcex.platform.enumeration.ObjectType; import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.Section; @@ -39,7 +41,9 @@ public abstract class AbstractExporterService { private final Logger log = LoggerFactory.getLogger(getClass()); protected final Imdg registryImdg; private final List validStatus = List.of(ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey()); + private final List validAccountStatus = List.of(AccountStatus.ACTIVE.getKey(), AccountStatus.CLOSE.getKey()); private final Imdg tradingClearingRegistryImdg; + private final Imdg accountImdg; private final SecuritySelector securitySelector; private final DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private final SFTPConfig.LimGateway gateway; @@ -51,6 +55,7 @@ public abstract class AbstractExporterService { this.kafkaSender = kafkaSender; this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class); } @@ -144,6 +149,24 @@ public abstract class AbstractExporterService { safeBD(registry.getBalance()).compareTo(BigDecimal.ZERO) != 0; } + protected boolean checkNotBlockedMoneyRegistry(Registry registry) { + if (registry.getTradingClearingRegistryId() == null) return false; + TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(registry.getTradingClearingRegistryId()); + if (tradingClearingRegistry == null) { + log.warn("For registry.id={} not exist tradingClearingRegistry.id={}", registry.getId(), registry.getTradingClearingRegistryId()); + return false; + } + if (validStatus.contains(tradingClearingRegistry.getStatus())) { + return false; + } + if (registry.getBalance().equals(BigDecimal.ZERO)) { + return false; + } + + Account account = accountImdg.getSingleObjectByID(tradingClearingRegistry.getMoneyAccountId()); + return !validAccountStatus.contains(account.getAccount()); + } + protected BigDecimal sumNegativeABS(Collection registries) { if (registries == null || registries.isEmpty()) return BigDecimal.ZERO; BigDecimal result = BigDecimal.ZERO; diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java index 54dea16af..22b5b7a46 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java @@ -80,7 +80,7 @@ public class MoneyExporterService extends AbstractExporterService { stlmntDtPrdct ); for (Registry registry : registriesA) { - if (checkNotBlocked(registry)) { + if (checkNotBlockedMoneyRegistry(registry)) { BigDecimal dmtSumElement = BigDecimal.ZERO; BigDecimal omtSumElementToday = BigDecimal.ZERO; BigDecimal tmtSumElementToday = BigDecimal.ZERO;