ialbert 2025-09-10 17:17:02 +03:00
parent 8b7e0faf95
commit 59ab5145a8
2 changed files with 39 additions and 30 deletions

View file

@ -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<Registry> registryImdg;
private final List<String> validStatus = List.of(ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey());
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private final SecuritySelector<Security> 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<String> 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<Registry> registries) {
if (registries == null || registries.isEmpty()) return BigDecimal.ZERO;
BigDecimal result = BigDecimal.ZERO;

View file

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