diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java index f6e4c2722..baab4ae63 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java @@ -12,6 +12,7 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryAssetPredicate; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryDm_tClrnPredicate; import ru.spcex.platform.utils.enumeration.IEnumKey; +import ru.spcex.platform.utils.text.TextUtil; import java.util.Optional; @@ -28,19 +29,23 @@ public class RegistryManager { } public Optional searchDmx(Registry rgs) { - String sqlCondition = String.format("(%s) and companyId = %d", + if (TextUtil.isEmpty(rgs.getContract())) return Optional.empty(); + String sqlCondition = String.format("(%s) and companyId = %d and contract = '%s'", RegistryCodeSqlBuilder.getInstance(DM_X).build(), - rgs.getCounterPartyId()); + rgs.getCounterPartyId(), + rgs.getContract()); Registry dmx = rgsImdg.getFirstObjectBySQL(sqlCondition); return Optional.ofNullable(dmx); } public Optional searchDmtInfo(Registry rgs) { - String sqlCondition = String.format("(%s) and accountType='%s' and companyId = %d and counterPartyId = %d", + if (TextUtil.isEmpty(rgs.getContract())) return Optional.empty(); + String sqlCondition = String.format("(%s) and accountType='%s' and companyId = %d and counterPartyId = %d and contract = '%s'", RegistryCodeSqlBuilder.getInstance(DM_T).build(), AccountType.Info.getKey(), rgs.getCompanyId(), - rgs.getCounterPartyId()); + rgs.getCounterPartyId(), + rgs.getContract()); Registry dmt = rgsImdg.getFirstObjectBySQL(sqlCondition); return Optional.ofNullable(dmt); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java index 744a352bf..95556413d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java @@ -8,6 +8,7 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.service.RegistryManager; import ru.spcex.clearing.session.stage.ISessionStage; import ru.spcex.clearing.session.stage.StageResult; import ru.spcex.clearing.session.stage.Task; @@ -24,6 +25,7 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import static ru.spcex.platform.enumeration.RegistryTradingParams.*; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @@ -33,54 +35,12 @@ public class InspectionObligationsDepositReturn implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg registryImdg; private SessionType sessionType; - - private final static RegistryTradingParams OS_T; - private final static RegistryTradingParams OM_T; - private final static RegistryTradingParams TS_T; - private final static RegistryTradingParams TM_T; - private final static RegistryTradingParams DM_X; - private final static RegistryTradingParams DM_T; - private final static RegistryTradingParams AM_F; - - static { - OS_T = new RegistryTradingParams(RegistryDesignation.O, - RegistryInstrumentType.S, - null, - RegistryUnit.T); - - OM_T = new RegistryTradingParams(RegistryDesignation.O, - RegistryInstrumentType.M, - null, - RegistryUnit.T); - - TS_T = new RegistryTradingParams(RegistryDesignation.T, - RegistryInstrumentType.S, - null, - RegistryUnit.T); - - TM_T = new RegistryTradingParams(RegistryDesignation.T, - RegistryInstrumentType.M, - null, - RegistryUnit.T); - DM_X = new RegistryTradingParams(RegistryDesignation.D, - RegistryInstrumentType.M, - null, - RegistryUnit.X); - DM_T = new RegistryTradingParams(RegistryDesignation.D, - RegistryInstrumentType.M, - null, - RegistryUnit.T); - AM_F = new RegistryTradingParams(RegistryDesignation.A, - RegistryInstrumentType.M, - null, - RegistryUnit.F); - - - } + private final RegistryManager rgsMng; @Autowired - public InspectionObligationsDepositReturn(ImdgProvider imdgProvider) { + public InspectionObligationsDepositReturn(ImdgProvider imdgProvider, RegistryManager rgsMng) { this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.rgsMng = rgsMng; } @Override @@ -123,7 +83,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { } //вторая часть сделки - возврат депозита - Optional dmx = searchDmx(omtRgs); + Optional dmx = rgsMng.searchDmx(omtRgs); if (dmx.isPresent()) { BigDecimal dmxBalance = safeBD(dmx.get().getBalance()); log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}", @@ -152,7 +112,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { Registry amfAsset = amfAssetO.get(); log.debug("groupId={}, AM*F.id={}", entry.getKey(), amfAsset.getId()); BigDecimal amfBalance = safeBD(amfAsset.getBalance()); - Optional dmtInfo = searchDmtInfo(omtRgs); + Optional dmtInfo = rgsMng.searchDmtInfo(omtRgs); if (dmtInfo.isPresent()) { BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance()); log.debug("OM*T.id={} -> DM*T(INFO).id={}, dmtBalance={}, omtBalance={}, amfBalance={}", @@ -196,30 +156,6 @@ public class InspectionObligationsDepositReturn implements ISessionStage { registryImdg.update(registry); } - /** - * Если УК зачисляет средства на ТБС Инициатора - */ - private Optional searchDmx(Registry rgs) { - String sqlCondition = String.format("(%s) and companyId = %d", - RegistryCodeSqlBuilder.getInstance(DM_X).build(), - rgs.getCounterPartyId()); - Registry dmx = registryImdg.getFirstObjectBySQL(sqlCondition); - return Optional.ofNullable(dmx); - } - - /** - * Если УК зачисляет средства на свой регистр на КС - */ - private Optional searchDmtInfo(Registry rgs) { - String sqlCondition = String.format("(%s) and accountType='%s' and companyId = %d and counterPartyId = %d", - RegistryCodeSqlBuilder.getInstance(DM_T).build(), - AccountType.Info.getKey(), - rgs.getCompanyId(), - rgs.getCounterPartyId()); - Registry dmt = registryImdg.getFirstObjectBySQL(sqlCondition); - return Optional.ofNullable(dmt); - } - /** * Если УК зачисляет средства на свой ТБС */