parent
6139772966
commit
a57907dc9d
1 changed files with 91 additions and 57 deletions
|
|
@ -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<CompanySymbols> companySymbolsByCLRSandCompanyId = getCompanySymbolsByCompanyIdAndCompanySymbol(CompanySymbol.CLRC.getKey(), common.getCompanyId());
|
||||
Optional<TradingClearingRegistry> tradingClearingRegistryByCodeOfCompanyId = getTradingClearingRegistryByCode(common.getCompanyId().toString());
|
||||
Optional<CompanySymbols> companySymbolsByCLRSandCounterPartyId = getCompanySymbolsByCompanyIdAndCompanySymbol(CompanySymbol.CLRC.getKey(), common.getCounterPartyId());
|
||||
Optional<TradingClearingRegistry> tradingClearingRegistryByCodeOfCounterPartyId = getTradingClearingRegistryByCode(common.getCounterPartyId().toString());
|
||||
Optional<TradingClearingRegistry> 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<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ?
|
||||
Map.of("companySymbol", "CLRC", "companyId", common.getCounterPartyId()) :
|
||||
Map.of("companySymbol", "CLRC", "companyId", common.getCompanyId()));
|
||||
private Optional<CompanySymbols> getCompanySymbolsByCompanyIdAndCompanySymbol(String companySymbol, Long companyId) {
|
||||
Map<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ?
|
||||
Map.of("companySymbol", "CLRC", "companyId", common.getCompanyId()) :
|
||||
Map.of("companySymbol", "CLRC", "companyId", common.getCounterPartyId()));
|
||||
private Optional<CompanySymbols> getCompanySymbolsByCompanyId(Long companyId) {
|
||||
Map<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", common.getCounterPartyId()));
|
||||
private Optional<TradingClearingRegistry> getTradingClearingRegistryByCompanyId(Long companyId) {
|
||||
Map<String, ? extends Comparable<?>> 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<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(common.getSide().equalsIgnoreCase("BUY") ?
|
||||
Map.of("code", common.getCompanyId()) :
|
||||
Map.of("code", common.getCounterPartyId()));
|
||||
private Optional<TradingClearingRegistry> getTradingClearingRegistryByCode(String code) {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = Map.of("code", code);
|
||||
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryMap.getSingleObjectByFieldValues(fieldValues);
|
||||
return tradingClearingRegistry != null ? tradingClearingRegistry.getMoneyAccountId().toString() : null;
|
||||
}
|
||||
|
||||
private String getBuyerDepoAccount(ExecutionCommon common) {
|
||||
Map<String, ? extends Comparable<?>> 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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue