diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java index 28971ac45..24a99b7bb 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java @@ -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 clearingAccountImdg; private final Imdg tradingClearingRegistryImdg; private final Imdg securityImdg; + private final Imdg fixedIncomeSecurityImdg; + private final Imdg moneyMarketSecurityImdg; + private final Imdg equitySecurityImdg; + private final Imdg 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; + } }