From a57907dc9dfbacd6b0e0c8ff324355df52363463 Mon Sep 17 00:00:00 2001 From: aalehin Date: Fri, 2 Jun 2023 15:10:16 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-280 --- refactoring --- .../service/ExecutionRegisterService.java | 148 +++++++++++------- 1 file changed, 91 insertions(+), 57 deletions(-) diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExecutionRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExecutionRegisterService.java index ace5e593d..09335a330 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExecutionRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExecutionRegisterService.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.registry.service; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.common.quota.ClientQuotaAlteration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -16,6 +17,8 @@ import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.enumeration.CompanySymbol; +import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -23,6 +26,7 @@ import java.time.Instant; import java.time.LocalDate; import java.util.Collection; import java.util.Map; +import java.util.Optional; import static ru.spcex.clearing.imdg.IMDGDistributedNames.*; import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException; @@ -72,21 +76,87 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ private void insertExecutionRegister(Boolean isFond, ExecutionCommon common) { log.trace("Started generating ExecutionRegister entity..."); + String sellerClearingCode = null; + String sellerTradingClearingRegister = null; + String sellerMoneyAccount = null; + String sellerDepoAccount = null; + Long buyerId = common.getCompanyId(); + String buyerClearingCode = null; + String buyerTradingClearingRegister = null; + String buyerMoneyAccount = null; + String buyerDepoAccount = null; + String side = common.getSide(); + Optional companySymbolsByCLRSandCompanyId = getCompanySymbolsByCompanyIdAndCompanySymbol(CompanySymbol.CLRC.getKey(), common.getCompanyId()); + Optional tradingClearingRegistryByCodeOfCompanyId = getTradingClearingRegistryByCode(common.getCompanyId().toString()); + Optional companySymbolsByCLRSandCounterPartyId = getCompanySymbolsByCompanyIdAndCompanySymbol(CompanySymbol.CLRC.getKey(), common.getCounterPartyId()); + Optional tradingClearingRegistryByCodeOfCounterPartyId = getTradingClearingRegistryByCode(common.getCounterPartyId().toString()); + Optional tradingClearingRegistryByCompanyIdOfCounterPartyId = getTradingClearingRegistryByCompanyId(common.getCounterPartyId()); + if (side.equalsIgnoreCase(MoneyFlowSide.BUY.getKey())) { + if (companySymbolsByCLRSandCounterPartyId.isPresent()) { + sellerClearingCode = companySymbolsByCLRSandCounterPartyId.get().getCompanySymbolValue(); + } + if (tradingClearingRegistryByCompanyIdOfCounterPartyId.isPresent()) { + sellerTradingClearingRegister = tradingClearingRegistryByCompanyIdOfCounterPartyId.get().getCode(); + } + if (tradingClearingRegistryByCodeOfCounterPartyId.isPresent()) { + TradingClearingRegistry clearingRegistry = tradingClearingRegistryByCodeOfCounterPartyId.get(); + sellerMoneyAccount = clearingRegistry.getMoneyAccountId().toString(); + if (isFond) { + sellerDepoAccount = clearingRegistry.getDepoAccountId().toString(); + } + } + if (companySymbolsByCLRSandCompanyId.isPresent()) { + buyerClearingCode = companySymbolsByCLRSandCompanyId.get().getCompanySymbolValue(); + } + buyerTradingClearingRegister = common.getTradingClearingRegistryId().toString(); + if (tradingClearingRegistryByCodeOfCompanyId.isPresent()) { + TradingClearingRegistry clearingRegistry = tradingClearingRegistryByCodeOfCompanyId.get(); + buyerMoneyAccount = clearingRegistry.getMoneyAccountId().toString(); + if (isFond) { + buyerDepoAccount = clearingRegistry.getDepoAccountId().toString(); + } + } + } else if (side.equalsIgnoreCase(MoneyFlowSide.SELL.getKey())) { + if (companySymbolsByCLRSandCompanyId.isPresent()) { + sellerClearingCode = companySymbolsByCLRSandCompanyId.get().getCompanySymbolValue(); + } + sellerTradingClearingRegister = common.getTradingClearingRegistryId().toString(); + if (tradingClearingRegistryByCodeOfCompanyId.isPresent()) { + TradingClearingRegistry clearingRegistry = tradingClearingRegistryByCodeOfCompanyId.get(); + sellerMoneyAccount = clearingRegistry.getMoneyAccountId().toString(); + if (isFond) { + sellerDepoAccount = clearingRegistry.getDepoAccountId().toString(); + } + } + if (companySymbolsByCLRSandCounterPartyId.isPresent()) { + buyerClearingCode = companySymbolsByCLRSandCounterPartyId.get().getCompanySymbolValue(); + } + if (tradingClearingRegistryByCodeOfCounterPartyId.isPresent()) { + TradingClearingRegistry clearingRegistry = tradingClearingRegistryByCodeOfCounterPartyId.get(); + buyerMoneyAccount = clearingRegistry.getMoneyAccountId().toString(); + if (isFond) { + buyerDepoAccount = clearingRegistry.getDepoAccountId().toString(); + } + } + if (tradingClearingRegistryByCompanyIdOfCounterPartyId.isPresent()) { + buyerTradingClearingRegister = tradingClearingRegistryByCompanyIdOfCounterPartyId.get().getId().toString(); + } + } ExecutionRegister executionRegister = new ExecutionRegister(); executionRegister.setTradingDate(common.getTradingDate()); executionRegister.setExchangeExecutionId(common.getExchangeExecutionId()); executionRegister.setExchangeExecutionTime(common.getExchangeExecutionTime()); executionRegister.setSecurityId(common.getSecurityId()); executionRegister.setSellerId(common.getCompanyId()); - executionRegister.setSellerClearingCode(getSellerClearingCode(common)); - executionRegister.setSellerTradingClearingRegister(getSellerTradingClearingRegister(common)); - executionRegister.setSellerMoneyAccount(getSellerMoneyAccount(common)); - executionRegister.setSellerDepoAccount(getSellerDepoAccount(common)); - executionRegister.setBuyerId(common.getCompanyId()); - executionRegister.setBuyerClearingCode(getBuyerClearingCode(common)); - executionRegister.setBuyerTradingClearingRegister(getBuyerTradingClearingRegister(common)); - executionRegister.setBuyerMoneyAccount(getBuyerMoneyAccount(common)); - executionRegister.setBuyerDepoAccount(getBuyerDepoAccount(common)); + executionRegister.setSellerClearingCode(sellerClearingCode); + executionRegister.setSellerTradingClearingRegister(sellerTradingClearingRegister); + executionRegister.setSellerMoneyAccount(sellerMoneyAccount); + executionRegister.setSellerDepoAccount(sellerDepoAccount); + executionRegister.setBuyerId(buyerId); + executionRegister.setBuyerClearingCode(buyerClearingCode); + executionRegister.setBuyerTradingClearingRegister(buyerTradingClearingRegister); + executionRegister.setBuyerMoneyAccount(buyerMoneyAccount); + executionRegister.setBuyerDepoAccount(buyerDepoAccount); if (isFond) { executionRegister.setQuantity(common.getQuantity()); executionRegister.setAmount(((ExecutionFond) common).getSettlementAmount()); @@ -99,63 +169,27 @@ public class ExecutionRegisterService extends QueueConsumer implements Initializ log.debug("inserted successfully LiabilitiesRegister entity with id: {}", executionRegister.getId()); } - private String getSellerClearingCode(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("companySymbol", "CLRC", "companyId", common.getCounterPartyId()) : - Map.of("companySymbol", "CLRC", "companyId", common.getCompanyId())); + private Optional getCompanySymbolsByCompanyIdAndCompanySymbol(String companySymbol, Long companyId) { + Map> fieldValues = Map.of("companySymbol", companySymbol, "companyId", companyId); CompanySymbols companySymbols = companySymbolsMap.getSingleObjectByFieldValues(fieldValues); - return companySymbols != null ? companySymbols.getCompanySymbolValue() : null; + return Optional.ofNullable(companySymbols); } - private String getSellerTradingClearingRegister(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", common.getCounterPartyId())); - TradingClearingRegistry tradingClearingRegistryForSellerTradingClearingRegister = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return common.getSide().equalsIgnoreCase("BUY") ? tradingClearingRegistryForSellerTradingClearingRegister.getCode() : String.valueOf(common.getTradingClearingRegistryId()); - } - - private String getSellerMoneyAccount(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("code", common.getCounterPartyId()) : - Map.of("code", common.getCompanyId())); - TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return tradingClearingRegistry != null ? tradingClearingRegistry.getMoneyAccountId().toString() : null; - } - - private String getSellerDepoAccount(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("code", common.getCounterPartyId()) : - Map.of("code", common.getCompanyId())); - TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return tradingClearingRegistry != null ? tradingClearingRegistry.getDepoAccountId().toString() : null; - } - - private String getBuyerClearingCode(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("companySymbol", "CLRC", "companyId", common.getCompanyId()) : - Map.of("companySymbol", "CLRC", "companyId", common.getCounterPartyId())); + private Optional getCompanySymbolsByCompanyId(Long companyId) { + Map> fieldValues = Map.of("companyId", companyId); CompanySymbols companySymbols = companySymbolsMap.getSingleObjectByFieldValues(fieldValues); - return companySymbols != null ? companySymbols.getCompanySymbolValue() : null; + return Optional.ofNullable(companySymbols); } - private String getBuyerTradingClearingRegister(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", common.getCounterPartyId())); + private Optional getTradingClearingRegistryByCompanyId(Long companyId) { + Map> fieldValues = Map.of("companyId", companyId); TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return common.getSide().equalsIgnoreCase("BUY") ? common.getTradingClearingRegistryId().toString() : tradingClearingRegistry.getId().toString(); + return Optional.ofNullable(tradingClearingRegistry); } - private String getBuyerMoneyAccount(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("code", common.getCompanyId()) : - Map.of("code", common.getCounterPartyId())); + private Optional getTradingClearingRegistryByCode(String code) { + Map> fieldValues = Map.of("code", code); TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return tradingClearingRegistry != null ? tradingClearingRegistry.getMoneyAccountId().toString() : null; - } - - private String getBuyerDepoAccount(ExecutionCommon common) { - Map> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ? - Map.of("code", common.getCompanyId()) : - Map.of("code", common.getCounterPartyId())); - TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues); - return tradingClearingRegistry != null ? tradingClearingRegistry.getDepoAccountId().toString() : null; + return Optional.ofNullable(tradingClearingRegistry); } } \ No newline at end of file