diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionCurrencyLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionCurrencyLoader.java index 9a070bfc0..52c68c5bd 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionCurrencyLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionCurrencyLoader.java @@ -24,6 +24,8 @@ import static ru.spcex.clearing.registry.reports.ReportUtils.getLocalDateFromSql @Component public class ExecutionCurrencyLoader extends IDBLoader { + static final Long COMPANY_LKC_ID = 5L; + public ExecutionCurrencyLoader(AProperties properties, NamedParameterJdbcTemplate clearingJdbc) { super(properties.getPeriod(), clearingJdbc); } @@ -48,6 +50,7 @@ public class ExecutionCurrencyLoader extends IDBLoader { } Map tradingClearingRegistryById = new HashMap<>(); + TradingClearingRegistry tcrForCompanyLKC = null; { Set tkrIds = executionCurrencys.stream() .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) // оптимизация; @@ -70,6 +73,22 @@ public class ExecutionCurrencyLoader extends IDBLoader { tradingClearingRegistryById.put(tkr.getId(), tkr); } } + { + MapSqlParameterSource parameterSource = new MapSqlParameterSource(); + parameterSource.addValue("ids", COMPANY_LKC_ID); + List tradingClearingRegistries = clearingJdbc.query( + "select ID, CODE from TRADING_CLEARING_REGISTRY where COMPANY_ID = :ids", + parameterSource, new TradingClearingRegistryRowMapper() + ); + for (TradingClearingRegistry tcr5 : tradingClearingRegistries) { + if (tcrForCompanyLKC != null) + log.warn("Has many TCR for company {}: another {}", COMPANY_LKC_ID, tcrForCompanyLKC.getCode()); + tcrForCompanyLKC = tcr5; + } + if (tcrForCompanyLKC == null) { + log.warn("TCR for companyId={} not found", COMPANY_LKC_ID); + } + } } Map> companySymbolsForCompanyIdMap; @@ -153,16 +172,28 @@ public class ExecutionCurrencyLoader extends IDBLoader { } } - executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( + if (COMPANY_LKC_ID.equals(executionCurrency.getCounterPartyId())) { // 800 ЛЦК 5 + if (tcrForCompanyLKC != null) { + executionCurrency.setBuyerTkrCode(tcrForCompanyLKC.getCode()); + } + } else { + executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( executionCurrency.getCounterPartyTradingClearingRegistry(), // В execution Currency они заполнены executionCurrency.getCounterPartyTradingClearingRegistryId(), tradingClearingRegistryById - )); - executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getTradingClearingRegistryId(), - tradingClearingRegistryById - )); + )); + } + if (COMPANY_LKC_ID.equals(executionCurrency.getCompanyId())) { // 800 ЛЦК 5 + if (tcrForCompanyLKC != null) { + executionCurrency.setSellerTkrCode(tcrForCompanyLKC.getCode()); + } + } else { + executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( + executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены + executionCurrency.getTradingClearingRegistryId(), + tradingClearingRegistryById + )); + } } else if (MoneyFlowSide.BUY.equalsByKey(side) || Side.BUY.equalsByKey(side)) { if (companyByCompanyId != null) { executionCurrency.setBuyer(companyByCompanyId.getShortName()); @@ -184,16 +215,28 @@ public class ExecutionCurrencyLoader extends IDBLoader { executionCurrency.setSellerCode(companySymbols.getCompanySymbolValue()); } } - executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getTradingClearingRegistryId(), - tradingClearingRegistryById - )); - executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getCounterPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById - )); + if (COMPANY_LKC_ID.equals(executionCurrency.getCompanyId())) { // 800 ЛЦК 5 + if (tcrForCompanyLKC != null) { + executionCurrency.setBuyerTkrCode(tcrForCompanyLKC.getCode()); + } + } else { + executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( + executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены + executionCurrency.getTradingClearingRegistryId(), + tradingClearingRegistryById + )); + } + if (COMPANY_LKC_ID.equals(executionCurrency.getCounterPartyId())) { // 800 ЛЦК 5 + if (tcrForCompanyLKC != null) { + executionCurrency.setSellerTkrCode(tcrForCompanyLKC.getCode()); + } + } else { + executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( + executionCurrency.getCounterPartyTradingClearingRegistry(), // В execution Currency они заполнены + executionCurrency.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById + )); + } } else { log.warn("Unknown executionCurrency[{}].side={}", executionCurrency.getId(), executionCurrency.getSide()); }