diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java index fbaf1ce3c..e92192f73 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java @@ -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 { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -66,6 +80,7 @@ public class Sdf08Executor extends AbstractExecutor { private final AssetTBFProcessing assets; private final Imdg sdf09Imdg; private final IMessageResolver messageResolver; + private final SecuritySelector secSelector; public Sdf08Executor(@Qualifier("sdf08ValidatorNew") Function sDf08Validator, ImdgProvider imdgProvider, @@ -82,6 +97,7 @@ public class Sdf08Executor extends AbstractExecutor { 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 { 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 { 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()); }