сессия шаг 5 контроль обязательств по возвратам: поиск DM*X и DM*T(info)

This commit is contained in:
ialbert 2023-07-20 13:39:13 +03:00
parent a14ee21fd6
commit cba1772bf6
2 changed files with 16 additions and 75 deletions

View file

@ -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<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(),
rgs.getCounterPartyId());
rgs.getCounterPartyId(),
rgs.getContract());
Registry dmx = rgsImdg.getFirstObjectBySQL(sqlCondition);
return Optional.ofNullable(dmx);
}
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(),
AccountType.Info.getKey(),
rgs.getCompanyId(),
rgs.getCounterPartyId());
rgs.getCounterPartyId(),
rgs.getContract());
Registry dmt = rgsImdg.getFirstObjectBySQL(sqlCondition);
return Optional.ofNullable(dmt);
}

View file

@ -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<Registry> 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<Registry> dmx = searchDmx(omtRgs);
Optional<Registry> 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<Registry> dmtInfo = searchDmtInfo(omtRgs);
Optional<Registry> 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<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);
}
/**
* Если УК зачисляет средства на свой ТБС
*/