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 3547187f0..b1413cc49 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 @@ -1,26 +1,5 @@ package ru.spcex.clearing.lim.exporter.services; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; -import ru.clearing.classes.statics.data.registry.Registry; -import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.lim.exporter.config.SFTPConfig; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.utilities.LimExportedRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest; -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.ObjectType; -import ru.spcex.platform.enumeration.Priority; -import ru.spcex.platform.enumeration.Section; -import ru.spcex.platform.enumeration.ServiceStatus; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.utils.log.ExceptionUtils; - import java.io.File; import java.io.IOException; import java.math.BigDecimal; @@ -30,14 +9,37 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.List; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.clearing.classes.statics.data.security.Security; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.lim.exporter.config.SFTPConfig; +import ru.spcex.clearing.platform.messaging.domain.Consts; import static ru.spcex.clearing.platform.messaging.domain.Consts.LIM_EXPORTED; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.LimExportedRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest; +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.ObjectType; +import ru.spcex.platform.enumeration.Priority; +import ru.spcex.platform.enumeration.Section; +import ru.spcex.platform.enumeration.ServiceStatus; +import ru.spcex.platform.enumeration.WorkflowStatus; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector; +import ru.spcex.platform.utils.log.ExceptionUtils; 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 Imdg tradingClearingRegistryImdg; + private final SecuritySelector securitySelector; private final DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private final SFTPConfig.LimGateway gateway; private final KafkaSender kafkaSender; @@ -48,6 +50,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.securitySelector = new SecuritySelector<>(imdgProvider, Security.class); } public abstract Collection getLimFileRows(); @@ -125,6 +128,14 @@ public abstract class AbstractExporterService { return false; } + protected boolean checkNotBlockedAndBalanceNonZero(Registry registry) { + if (!checkNotBlocked(registry)) return false; + Security security = securitySelector.selectSecurityById(registry.getSecurityId()); + return security == null + || !WorkflowStatus.Active.equalsByKey(security.getWorkflowStatus()) + || !registry.getBalance().equals(BigDecimal.ZERO); + } + 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/SecurityExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java index b7fa7ba2a..cdcd71d66 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java @@ -1,5 +1,9 @@ package ru.spcex.clearing.lim.exporter.services; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -7,18 +11,12 @@ import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.lim.exporter.config.LimFormat; import ru.spcex.clearing.lim.exporter.config.SFTPConfig; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import static ru.spcex.platform.enumeration.RegistryTradingParams.AS_F; import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static ru.spcex.platform.enumeration.RegistryTradingParams.AS_F; - @Service public class SecurityExporterService extends AbstractExporterService { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -51,7 +49,7 @@ public class SecurityExporterService extends AbstractExporterService { log.debug("Selected {} registriesA.", registriesA.size()); for (Registry registry : registriesA) { - if (checkNotBlocked(registry)) { + if (checkNotBlockedAndBalanceNonZero(registry)) { limFileRows.add(getRow(registry)); } }