заполнение registry#securitySymbol при обработке SDF01/57

This commit is contained in:
ialbert 2023-07-19 11:31:21 +03:00
parent aea33dcd13
commit bfca0aadf5

View file

@ -3,8 +3,12 @@ package ru.spcex.clearing.service.builder;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.ClearingAccount;
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.misc.Currency;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -30,6 +34,11 @@ public class RegistryBuilder {
private final Imdg<ClearingAccount> clearingAccountImdg;
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private final Imdg<Security> securityImdg;
private final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
private final Imdg<MoneyMarketSecurity> moneyMarketSecurityImdg;
private final Imdg<EquitySecurity> equitySecurityImdg;
private final Imdg<Currency> currencyImdg;
public static RegistryBuilder builder(ImdgProvider imdgProvider) {
return new RegistryBuilder(imdgProvider);
@ -40,6 +49,10 @@ public class RegistryBuilder {
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
this.securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
this.fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
this.moneyMarketSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
}
public RegistryBuilder statement(Statement statement) {
@ -101,10 +114,8 @@ public class RegistryBuilder {
rgs.setRegistryStatus(RegistryStatus.PROC.getKey());
rgs.setSecurityId(statement.getSecurityId());
if (statement.getSecurityId() != null) {
Security security = securityImdg.getSingleObjectByID(statement.getSecurityId());
if (security != null) {
rgs.setSecuritySymbol(security.getSecuritySymbol());
}
String securitySymbol = obtainSecuritySymbol(statement.getSecurityId());
rgs.setSecuritySymbol(securitySymbol);
}
//fixme !rgs.setSettlementCode();
rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ?
@ -124,4 +135,16 @@ public class RegistryBuilder {
rgs.setCheckBalance(BigDecimal.ZERO);
return rgs;
}
private String obtainSecuritySymbol(Long securityId) {
Security security = fixedIncomeSecurityImdg.getSingleObjectByID(securityId);
if (security != null) return security.getSecuritySymbol();
security = moneyMarketSecurityImdg.getSingleObjectByID(securityId);
if (security != null) return security.getSecuritySymbol();
security = equitySecurityImdg.getSingleObjectByID(securityId);
if (security != null) return security.getSecuritySymbol();
Currency currency = currencyImdg.getSingleObjectByID(securityId);
if (currency != null) return currency.getCurrencyCode();
return null;
}
}