ialbert 2025-05-29 12:22:01 +03:00
parent ed6daedece
commit feb989a85b

View file

@ -1,5 +1,12 @@
package ru.spcex.clearing.service.executors;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
@ -28,12 +35,27 @@ import ru.spcex.clearing.service.registry.AssetTBFProcessing;
import ru.spcex.clearing.service.registry.RegistryManager;
import ru.spcex.clearing.service.validation.ValidationStored;
import ru.spcex.clearing.session.stage.util.RegistryUtil;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.enumeration.BalanceDimension;
import ru.spcex.platform.enumeration.InOutDirection;
import ru.spcex.platform.enumeration.InOutSDfType;
import ru.spcex.platform.enumeration.OperationStatus;
import ru.spcex.platform.enumeration.RegistryCapacity;
import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.enumeration.RegistryInstrumentType;
import ru.spcex.platform.enumeration.RegistryStatus;
import ru.spcex.platform.enumeration.RegistryTradingParams;
import ru.spcex.platform.enumeration.RegistryUnit;
import ru.spcex.platform.enumeration.SdfResult;
import ru.spcex.platform.enumeration.SdfTable;
import ru.spcex.platform.enumeration.Sender;
import ru.spcex.platform.enumeration.StatementType;
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.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
@ -42,14 +64,6 @@ import ru.spcex.platform.utils.number.BigDecimalUtil;
import ru.spcex.platform.utils.text.TextUtil;
import ru.spcex.platform.utils.validation.IValidator;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
@Service
public class Sdf08Executor extends AbstractExecutor<SDf08> {
private final Logger log = LoggerFactory.getLogger(getClass());
@ -66,6 +80,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
private final AssetTBFProcessing assets;
private final Imdg<SDf09> sdf09Imdg;
private final IMessageResolver messageResolver;
private final SecuritySelector<Security> secSelector;
public Sdf08Executor(@Qualifier("sdf08ValidatorNew") Function<SDf08, IValidator> sDf08Validator,
ImdgProvider imdgProvider,
@ -82,6 +97,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
this.sDf08Validator = sDf08Validator;
this.assets = assets;
this.messageResolver = messageResolver;
this.secSelector = new SecuritySelector<>(imdgProvider, Security.class);
}
@Override
@ -280,10 +296,8 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
stmt.setInSDfId(sdf08.getId());
stmt.setInOutSDfType(InOutSDfType.type08.getKey());
stmt.setClearingDate(LocalDate.now());
Security security = fixedIncomeSecurityImdg.getFirstObjectByFieldValues(Map.of("securitySymbol", sdf08.getSecurityCode()));
if (security == null) {
security = equitySecurityImdg.getFirstObjectByFieldValues(Map.of("securitySymbol", sdf08.getSecurityCode()));
}
Security security = secSelector.selectSecurityBySymbol(sdf08.getSecurityCode());
if (security != null) {
stmt.setSecurityId(security.getId());
}
@ -348,10 +362,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
rgs.setRegistryStatus(RegistryStatus.PROC.getKey());
rgs.setSecurityId(statement.getSecurityId());
if (statement.getSecurityId() != null) {
Security security = fixedIncomeSecurityImdg.getSingleObjectByID(statement.getSecurityId());
if (security == null) {
security = equitySecurityImdg.getSingleObjectByID(statement.getSecurityId());
}
Security security = secSelector.selectSecurityById(statement.getSecurityId());
if (security != null) {
rgs.setSecuritySymbol(security.getSecuritySymbol());
}