etreschenkov 2023-05-31 14:51:42 +03:00
parent 8255f4a1eb
commit e641510e7c
2 changed files with 28 additions and 20 deletions

View file

@ -5,8 +5,10 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.ClearingAccount; import ru.clearing.classes.statics.data.account.DepoAccount;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.sdf.SDf08; import ru.clearing.classes.statics.data.sdf.SDf08;
@ -48,9 +50,10 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
private final Imdg<Statement> statementImdg; private final Imdg<Statement> statementImdg;
private final ImdgProvider imdgProvider; private final ImdgProvider imdgProvider;
private final Imdg<Registry> registryImdg; private final Imdg<Registry> registryImdg;
private final Imdg<Security> securityImdg; private final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
private final Imdg<EquitySecurity> equitySecurityImdg;
private final Function<SDf08, IValidator> sDf08Validator; private final Function<SDf08, IValidator> sDf08Validator;
private final Imdg<ClearingAccount> clearingAccountImdg; private final Imdg<DepoAccount> depoAccountImdg;
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg; private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private final Imdg<Company> companyImdg; private final Imdg<Company> companyImdg;
private final Imdg<SDf09> sdf09Imdg; private final Imdg<SDf09> sdf09Imdg;
@ -62,8 +65,9 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); this.fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class); this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
this.depoAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.sdf09Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf09, SDf09.class); this.sdf09Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf09, SDf09.class);
@ -164,7 +168,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
Statement stmt = new Statement(); Statement stmt = new Statement();
stmt.setAddresseeId(account.getCompanyId()); stmt.setAddresseeId(account.getCompanyId());
stmt.setSenderId(Sender.Rdc.getId()); stmt.setSenderId(Sender.Rdc.getId());
stmt.setStatementType(StatementType.incr.getKey()); stmt.setStatementType(StatementType.full.getKey());
stmt.setAccountId(account.getId()); stmt.setAccountId(account.getId());
stmt.setAccount(account.getAccount()); stmt.setAccount(account.getAccount());
stmt.setInOutDirection(InOutDirection.in.getKey()); stmt.setInOutDirection(InOutDirection.in.getKey());
@ -173,9 +177,12 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
} }
stmt.setOperationStatus(OperationStatus.Pending.getKey()); stmt.setOperationStatus(OperationStatus.Pending.getKey());
stmt.setInSDfId(sdf08.getId()); stmt.setInSDfId(sdf08.getId());
stmt.setInOutSDfType(InOutSDfType.type1.getKey()); stmt.setInOutSDfType(InOutSDfType.type08.getKey());
stmt.setClearingDate(LocalDate.now()); stmt.setClearingDate(LocalDate.now());
Security security = securityImdg.getSingleObjectByFieldValues(Map.of("securitySymbol", sdf08.getSecurityCode())); Security security = fixedIncomeSecurityImdg.getSingleObjectByFieldValues(Map.of("securitySymbol", sdf08.getSecurityCode()));
if (security == null) {
security = equitySecurityImdg.getSingleObjectByFieldValues(Map.of("securitySymbol", sdf08.getSecurityCode()));
}
if (security != null) { if (security != null) {
stmt.setSecurityId(security.getId()); stmt.setSecurityId(security.getId());
} }
@ -208,14 +215,14 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
rgs.setAccount(account.getAccount()); rgs.setAccount(account.getAccount());
rgs.setRegistryDesignation(RegistryDesignation.A.getKey()); rgs.setRegistryDesignation(RegistryDesignation.A.getKey());
rgs.setRegistryInstrumentType(RegistryInstrumentType.S.getKey()); rgs.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
ClearingAccount accountForStatement = clearingAccountImdg.getSingleObjectByID(statement.getAccountId()); DepoAccount depoAccount = depoAccountImdg.getSingleObjectByID(statement.getAccountId());
if (accountForStatement != null) { if (depoAccount != null) {
rgs.setRegistryCapacity(accountForStatement.getClearingAccountType()); rgs.setRegistryCapacity(depoAccount.getDepoAccountType());
} }
rgs.setRegistryUnit(RegistryUnit.T.getKey()); rgs.setRegistryUnit(RegistryUnit.T.getKey());
rgs.setRegistryCode(RegistryUtil.clearingCode(rgs)); rgs.setRegistryCode(RegistryUtil.clearingCode(rgs));
Collection<TradingClearingRegistry> tcrsByAccount = tradingClearingRegistryImdg.getCollectionObjectsByFieldValues(Map.of( Collection<TradingClearingRegistry> tcrsByAccount = tradingClearingRegistryImdg.getCollectionObjectsByFieldValues(Map.of(
"moneyAccountId", statement.getAccountId(), "depoAccountId", statement.getAccountId(),
"companyId", statement.getAddresseeId() "companyId", statement.getAddresseeId()
)); ));
if (!tcrsByAccount.isEmpty()) { if (!tcrsByAccount.isEmpty()) {
@ -227,19 +234,20 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
rgs.setRegistryStatus(RegistryStatus.PROC.getKey()); rgs.setRegistryStatus(RegistryStatus.PROC.getKey());
rgs.setSecurityId(statement.getSecurityId()); rgs.setSecurityId(statement.getSecurityId());
if (statement.getSecurityId() != null) { if (statement.getSecurityId() != null) {
Security security = securityImdg.getSingleObjectByID(statement.getSecurityId()); Security security = fixedIncomeSecurityImdg.getSingleObjectByID(statement.getSecurityId());
if (security == null) {
security = equitySecurityImdg.getSingleObjectByID(statement.getSecurityId());
}
if (security != null) { if (security != null) {
rgs.setSecuritySymbol(security.getSecuritySymbol()); rgs.setSecuritySymbol(security.getSecuritySymbol());
} }
} }
rgs.setCheckBalance(BigDecimalUtil.safeBD(statement.getAmount())); rgs.setCheckBalance(BigDecimalUtil.safeBD(statement.getAmount()));
rgs.setDiffBalance(rgs.getCheckBalance().negate()); rgs.setBalance(BigDecimalUtil.safeBD(statement.getAmount()));
rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки rgs.setDiffBalance(rgs.getBalance().subtract(rgs.getCheckBalance()));
//fixme !rgs.setSettlementCode(); rgs.setBalanceDimension(BalanceDimension.MONY.getKey());
rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ? rgs.setTradingDate(statement.getSettlementDate());
rgs.setClearingDate(LocalDate.now()); rgs.setClearingDate(LocalDate.now());
//fixme rgs.setRefundDate();
//fixme rgs.setValueDate();
//создается на базе stmt, companyCred, accountDeb //создается на базе stmt, companyCred, accountDeb
rgs.setCounterPartyId(statement.getAddresseeId()); rgs.setCounterPartyId(statement.getAddresseeId());
rgs.setCreated(Instant.now()); rgs.setCreated(Instant.now());

View file

@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IEnumKey;
public enum InOutSDfType implements IEnumKey { public enum InOutSDfType implements IEnumKey {
type1("0102"), type16("1617"), type9("0910"), type57("57"); type1("0102"), type16("1617"), type9("0910"), type57("57"), type08("0809");
private final String key; private final String key;