сессия шаг 5 контроль обязательств по возвратам: поиск DM*X и DM*T(info)
This commit is contained in:
parent
a14ee21fd6
commit
cba1772bf6
2 changed files with 16 additions and 75 deletions
|
|
@ -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.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryDm_tClrnPredicate;
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryDm_tClrnPredicate;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -28,19 +29,23 @@ public class RegistryManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Registry> searchDmx(Registry rgs) {
|
public Optional<Registry> 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(),
|
RegistryCodeSqlBuilder.getInstance(DM_X).build(),
|
||||||
rgs.getCounterPartyId());
|
rgs.getCounterPartyId(),
|
||||||
|
rgs.getContract());
|
||||||
Registry dmx = rgsImdg.getFirstObjectBySQL(sqlCondition);
|
Registry dmx = rgsImdg.getFirstObjectBySQL(sqlCondition);
|
||||||
return Optional.ofNullable(dmx);
|
return Optional.ofNullable(dmx);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Registry> searchDmtInfo(Registry rgs) {
|
public Optional<Registry> 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(),
|
RegistryCodeSqlBuilder.getInstance(DM_T).build(),
|
||||||
AccountType.Info.getKey(),
|
AccountType.Info.getKey(),
|
||||||
rgs.getCompanyId(),
|
rgs.getCompanyId(),
|
||||||
rgs.getCounterPartyId());
|
rgs.getCounterPartyId(),
|
||||||
|
rgs.getContract());
|
||||||
Registry dmt = rgsImdg.getFirstObjectBySQL(sqlCondition);
|
Registry dmt = rgsImdg.getFirstObjectBySQL(sqlCondition);
|
||||||
return Optional.ofNullable(dmt);
|
return Optional.ofNullable(dmt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
|
|
@ -24,6 +25,7 @@ import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
||||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
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 Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private SessionType sessionType;
|
private SessionType sessionType;
|
||||||
|
private final RegistryManager rgsMng;
|
||||||
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);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public InspectionObligationsDepositReturn(ImdgProvider imdgProvider) {
|
public InspectionObligationsDepositReturn(ImdgProvider imdgProvider, RegistryManager rgsMng) {
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
this.rgsMng = rgsMng;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -123,7 +83,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
}
|
}
|
||||||
|
|
||||||
//вторая часть сделки - возврат депозита
|
//вторая часть сделки - возврат депозита
|
||||||
Optional<Registry> dmx = searchDmx(omtRgs);
|
Optional<Registry> dmx = rgsMng.searchDmx(omtRgs);
|
||||||
if (dmx.isPresent()) {
|
if (dmx.isPresent()) {
|
||||||
BigDecimal dmxBalance = safeBD(dmx.get().getBalance());
|
BigDecimal dmxBalance = safeBD(dmx.get().getBalance());
|
||||||
log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}",
|
log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}",
|
||||||
|
|
@ -152,7 +112,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
Registry amfAsset = amfAssetO.get();
|
Registry amfAsset = amfAssetO.get();
|
||||||
log.debug("groupId={}, AM*F.id={}", entry.getKey(), amfAsset.getId());
|
log.debug("groupId={}, AM*F.id={}", entry.getKey(), amfAsset.getId());
|
||||||
BigDecimal amfBalance = safeBD(amfAsset.getBalance());
|
BigDecimal amfBalance = safeBD(amfAsset.getBalance());
|
||||||
Optional<Registry> dmtInfo = searchDmtInfo(omtRgs);
|
Optional<Registry> dmtInfo = rgsMng.searchDmtInfo(omtRgs);
|
||||||
if (dmtInfo.isPresent()) {
|
if (dmtInfo.isPresent()) {
|
||||||
BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance());
|
BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance());
|
||||||
log.debug("OM*T.id={} -> DM*T(INFO).id={}, dmtBalance={}, omtBalance={}, amfBalance={}",
|
log.debug("OM*T.id={} -> DM*T(INFO).id={}, dmtBalance={}, omtBalance={}, amfBalance={}",
|
||||||
|
|
@ -196,30 +156,6 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
registryImdg.update(registry);
|
registryImdg.update(registry);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Если УК зачисляет средства на ТБС Инициатора
|
|
||||||
*/
|
|
||||||
private Optional<Registry> 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<Registry> 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Если УК зачисляет средства на свой ТБС
|
* Если УК зачисляет средства на свой ТБС
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue