diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/ProcessorConfiguration.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/ProcessorConfiguration.java deleted file mode 100644 index 2fd1fecf4..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/ProcessorConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package ru.spcex.clearing.gatewayapi.config; - -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import ru.spcex.clearing.gatewayapi.logic.Processor; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam; -import ru.spcex.clearing.gatewayapi.logic.listings_mm.PrepareExchangeInstruments; -import ru.spcex.clearing.gatewayapi.logic.listings_mm.SendMessageToSecurityServiceWithMMSecurities; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.util.ArrayList; -import java.util.List; - -@Configuration -public class ProcessorConfiguration { - - - @Qualifier("mmListingsRequestProcessor") - @Bean - public Processor mmListingsRequestProcessor(ImdgProvider imdgProvider, KafkaSender kafkaSender) { - Processor processor = new Processor<>(); - List> pipeline = new ArrayList<>(); - pipeline.add(new PrepareExchangeInstruments()); - pipeline.add(new SendMessageToSecurityServiceWithMMSecurities(kafkaSender)); - processor.setPipeline(pipeline); - return processor; - } - -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index 8cf7e7da1..517b74609 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -17,11 +17,9 @@ import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondListings import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.MMListingsRequest; import ru.spcex.clearing.gatewayapi.controller.response.CommonResponse; import ru.spcex.clearing.gatewayapi.exception.GatewayException; -import ru.spcex.clearing.gatewayapi.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Processor; -import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam; import ru.spcex.clearing.gatewayapi.service.CompanyProcessor; import ru.spcex.clearing.gatewayapi.service.ListingFondProcessor; +import ru.spcex.clearing.gatewayapi.service.ListingMMProcessor; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; @@ -37,23 +35,22 @@ public class GatewayController { private final Logger log = LoggerFactory.getLogger(getClass()); private final IMessageResolver messageResolver; - private final Processor mmListingsRequestProcessor; private final CompanyProcessor companiesProcessor; private final ListingFondProcessor listingFondProcessor; + private final ListingMMProcessor listingMMProcessor; private final ExecutorService executor; private List validTypes = Arrays.asList("DAY_START", "ON_DEMAND"); - public GatewayController( - IMessageResolver messageResolver, - @Qualifier("mmListingsRequestProcessor") Processor mmListingsRequestProcessor, - CompanyProcessor companiesProcessor, - ListingFondProcessor listingFondProcessor, - @Qualifier("gatewayExecutor") ExecutorService executor) { + public GatewayController(IMessageResolver messageResolver, + CompanyProcessor companiesProcessor, + ListingFondProcessor listingFondProcessor, + ListingMMProcessor listingMMProcessor, + @Qualifier("gatewayExecutor") ExecutorService executor) { this.messageResolver = messageResolver; - this.mmListingsRequestProcessor = mmListingsRequestProcessor; this.companiesProcessor = companiesProcessor; this.listingFondProcessor = listingFondProcessor; + this.listingMMProcessor = listingMMProcessor; this.executor = executor; } @@ -91,15 +88,7 @@ public class GatewayController { @ResponseBody public CommonResponse listingsMM(@RequestBody MMListingsRequest request) { // request.validate(validTypes, List.of(Section.MKR)); - MMListingsRequestParam requestParam = new MMListingsRequestParam(request); - executor.submit(() -> { - ProcessResult processResult = mmListingsRequestProcessor.process(requestParam); - if (processResult.getError() != null) { - log.warn("Exception while process listing_mm: {}", processResult.getError()); - } - }); - - + executor.submit(() -> listingMMProcessor.process(request)); return createResponse(request, true); } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java deleted file mode 100644 index a4609aa8c..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic; - -import ru.spcex.clearing.gatewayapi.errors.GatewayError; - -public class ProcessResult { - private GatewayError error = null; - private Object[] errorArgs; - - public ProcessResult() { - - } - - public ProcessResult(GatewayError error, Object ... errorArgs) { - this.error = error; - } - - public GatewayError getError() { - return error; - } - - public void setError(GatewayError error) { - this.error = error; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java deleted file mode 100644 index 798aed552..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java +++ /dev/null @@ -1,34 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic; - -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.spcex.clearing.gatewayapi.errors.GatewayError; - -import java.util.List; - -public class Processor { - private final Logger log = LoggerFactory.getLogger(getClass()); - private List> pipeline; - - public ProcessResult process(T param) { - for (Stage stage : pipeline) { - try { - ProcessResult processResult = stage.process(param); - if (processResult != null) return processResult; - } catch (RuntimeException e) { - log.warn("Stage : {} have not been complete successful: {}", stage.getClass(), ExceptionUtils.getMessage(e)); - return new ProcessResult(GatewayError.InternalError); - } - } - return new ProcessResult(); - } - - public List> getPipeline() { - return pipeline; - } - - public void setPipeline(List> pipeline) { - this.pipeline = pipeline; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java deleted file mode 100644 index 3439e051c..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java +++ /dev/null @@ -1,5 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic; - -public abstract class Stage { - public abstract ProcessResult process(T param); -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/MMListingsRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/MMListingsRequestParam.java deleted file mode 100644 index b04b797b0..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/MMListingsRequestParam.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_mm; - -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.ExchangeInstrument; -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.MMListingsRequest; - -import java.util.List; - -public class MMListingsRequestParam { - private final MMListingsRequest request; - private List exchangeInstrumentsList; - - public MMListingsRequestParam(MMListingsRequest request) { - this.request = request; - } - - - public MMListingsRequest getRequest() { - return request; - } - - public List getExchangeInstrumentsList() { - return exchangeInstrumentsList; - } - - public void setExchangeInstrumentsList(List exchangeInstrumentsList) { - this.exchangeInstrumentsList = exchangeInstrumentsList; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/PrepareExchangeInstruments.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/PrepareExchangeInstruments.java deleted file mode 100644 index 1bd30ae07..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/PrepareExchangeInstruments.java +++ /dev/null @@ -1,108 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_mm; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.DirAuctionBiddingType; -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.DirTradingModeMkr; -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.ExchangeInstrument; -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.TradingMode; -import ru.spcex.clearing.gatewayapi.errors.GatewayError; -import ru.spcex.clearing.gatewayapi.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Stage; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.stream.Collectors; - -public class PrepareExchangeInstruments extends Stage { - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Override - public ProcessResult process(MMListingsRequestParam param) { - List exchangeInstrumentList = param.getExchangeInstrumentsList(); - - // Проверяем что в exchange_instrument нет объектов с одинаковым id - Map exchangeInstrumentMap = new HashMap<>(); - for (ExchangeInstrument exchangeInstrument : exchangeInstrumentList) { - if (exchangeInstrumentMap.containsKey(exchangeInstrument.getId())) { - log.warn("For exchange_instrument.UUID {} found > 1 element from request, use first", exchangeInstrument.getId()); - exchangeInstrument.setInvalidData(true); - continue; - } - exchangeInstrumentMap.put(exchangeInstrument.getId(), exchangeInstrument); - } - - // Находим для exchange_instrument соответствующий trading_mode по условию: - // exchange_instrument.id = trading_mode.exchange_instrument_id - List tradingModeList = param.getRequest().getTradingModeList(); - Map tradingModeMap = new HashMap<>(); - for (TradingMode tradingMode : tradingModeList) { - if (tradingModeMap.containsKey(tradingMode.getTradingModeId())) { - log.warn("For trading_mode.UUID {} found > 1 element from request, use first", tradingMode.getTradingModeId()); - continue; - } - tradingModeMap.put(tradingMode.getTradingModeId(), tradingMode); - UUID exchangeInstrumentId = tradingMode.getExchangeInstrumentId(); - ExchangeInstrument exchangeInstrument = exchangeInstrumentMap.get(exchangeInstrumentId); - if (exchangeInstrument != null) { - if (exchangeInstrument.getTradingMode() != null) { - log.warn("For exchange_instrument.id {} found > 1 trading_mode, use first", tradingMode.getExchangeInstrumentId()); - continue; - } - exchangeInstrument.setTradingMode(tradingMode); - } else { - log.warn("For trading_mode.exchange_instrument_id {} not found exchange_instrument, trading_mode skipped", exchangeInstrumentId); - } - } - - // Находим для exchange_instrument соответсвующий dir_auction_bidding_type по условию: - // exchange_instrument.auction_bidding_type_id = dir_auction_bidding_type.id - Map dirAuctionBiddingTypeMap = new HashMap<>(); - for (DirAuctionBiddingType dirAuctionBiddingType : param.getRequest().getDirAuctionBiddingTypeList()) { - if (dirAuctionBiddingTypeMap.containsKey(dirAuctionBiddingType.getId())) { - log.warn("For dir_auction_bidding_type.id {} found > 1 element from request, use first", dirAuctionBiddingType.getId()); - continue; - } - dirAuctionBiddingTypeMap.put(dirAuctionBiddingType.getId(), dirAuctionBiddingType); - } - for (ExchangeInstrument exchangeInstrument : exchangeInstrumentList) { - if (exchangeInstrument.isInvalidData()) continue; - DirAuctionBiddingType dirAuctionBiddingType = dirAuctionBiddingTypeMap.get(exchangeInstrument.getAuctionBiddingTypeId()); - if (dirAuctionBiddingType == null) { - log.warn("For exchange_instrument.id {} not found dir_auction_bidding_type", exchangeInstrument.getId()); - continue; - } - exchangeInstrument.setDirAuctionBiddingType(dirAuctionBiddingType); - } - - // Находим для trading_mode соответствующий dir_trading_mode_mkr по условию: - // trading_mode.trading_mode_id = dir_trading_mode_mkr.id - List dirTradingModeMkrList = param.getRequest().getDirTradingModeMkrList(); - for (DirTradingModeMkr dirTradingModeMkr : dirTradingModeMkrList) { - UUID tradingModeUUID = dirTradingModeMkr.getId(); - TradingMode tradingMode = tradingModeMap.get(tradingModeUUID); - if (tradingMode != null) { - if (tradingMode.getDirTradingModeMkr() != null) { - log.warn("For trading_mode.trading_more_id {} found > 1 dir_trading_mode_mkr, use first", tradingModeUUID); - continue; - } - tradingMode.setDirTradingModeMkr(dirTradingModeMkr); - } else { - log.warn("For dir_trading_mode_mkr.id {} not found trading_mode (for trading_mode_id), dir_trading_mode skipped", tradingModeUUID); - } - } - - List filteredExchangeInstrument = exchangeInstrumentList.stream() - .filter(exchangeInstrument -> !exchangeInstrument.isInvalidData()) - .collect(Collectors.toList()); - - if (filteredExchangeInstrument.isEmpty()) { - return new ProcessResult(GatewayError.SecurityNotFound, exchangeInstrumentList.stream().map(fondSecurity -> fondSecurity.getId().toString()).collect(Collectors.joining(", "))); - } - - param.setExchangeInstrumentsList(filteredExchangeInstrument); - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/SendMessageToSecurityServiceWithMMSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/SendMessageToSecurityServiceWithMMSecurities.java deleted file mode 100644 index 34f8ddc7e..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_mm/SendMessageToSecurityServiceWithMMSecurities.java +++ /dev/null @@ -1,58 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_mm; - -import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.ExchangeInstrument; -import ru.spcex.clearing.gatewayapi.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.enumeration.InstrumentType; - -import java.util.List; - -/** - * Отправка сообщения к company-service на создание/обновление company - * todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer - */ -public class SendMessageToSecurityServiceWithMMSecurities extends Stage { - private final KafkaSender kafkaSender; - - public SendMessageToSecurityServiceWithMMSecurities(KafkaSender kafkaSender) { - this.kafkaSender = kafkaSender; - } - - @Override - public ProcessResult process(MMListingsRequestParam param) { - List exchangeInstrumentList = param.getExchangeInstrumentsList(); - for (ExchangeInstrument exchangeInstrument : exchangeInstrumentList) { - if (exchangeInstrument.isInvalidData()) continue; - - if (!exchangeInstrument.isAlreadyExist()) { - MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = new MoneyMarketSecurityNewRequest(); - moneyMarketSecurityNewRequest.setNominalCurrency(exchangeInstrument.getSettlementCurrencyLetterCode()); - moneyMarketSecurityNewRequest.setInstrumentType(InstrumentType.RATE.getKey()); - moneyMarketSecurityNewRequest.setShortName(exchangeInstrument.getName()); - moneyMarketSecurityNewRequest.setSecuritySymbol(exchangeInstrument.getSecuritySymbol()); - moneyMarketSecurityNewRequest.setLotSize(exchangeInstrument.getLot()); - moneyMarketSecurityNewRequest.setTermType(exchangeInstrument.getBankDepositAgreementType()); - moneyMarketSecurityNewRequest.setIssuerId(exchangeInstrument.getIssuerId()); - moneyMarketSecurityNewRequest.setWorkflowStatus(exchangeInstrument.getWorkflowStatus()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW, moneyMarketSecurityNewRequest); - } else { - MoneyMarketSecurityUpdateRequest moneyMarketSecurityUpdateRequest = new MoneyMarketSecurityUpdateRequest(); - moneyMarketSecurityUpdateRequest.setId(exchangeInstrument.getMapId()); - moneyMarketSecurityUpdateRequest.setNominalCurrency(exchangeInstrument.getSettlementCurrencyLetterCode()); - moneyMarketSecurityUpdateRequest.setInstrumentType(InstrumentType.RATE.getKey()); - moneyMarketSecurityUpdateRequest.setShortName(exchangeInstrument.getName()); - moneyMarketSecurityUpdateRequest.setSecuritySymbol(exchangeInstrument.getSecuritySymbol()); - moneyMarketSecurityUpdateRequest.setLotSize(exchangeInstrument.getLot()); - moneyMarketSecurityUpdateRequest.setTermType(exchangeInstrument.getBankDepositAgreementType()); - moneyMarketSecurityUpdateRequest.setIssuerId(exchangeInstrument.getIssuerId()); - moneyMarketSecurityUpdateRequest.setWorkflowStatus(exchangeInstrument.getWorkflowStatus()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW, moneyMarketSecurityUpdateRequest); - } - } - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java index e2223e9d5..b84cb4a7c 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java @@ -147,8 +147,8 @@ public class GatewayService extends QueueConsumer implements InitializingBean { "amount", assetOperationRequest.getAmount(), "quantity", assetOperationRequest.getQuantity(), "code", assetOperationRequest.getCode(), - "asset", assetOperationRequest.getAsset(), - "firm_id", assetOperationRequest.getFirmId()); + "asset", assetOperationRequest.getSecuritySymbol(), + "firm_id", assetOperationRequest.getTradingCode()); OutboundRequest outboundRequest = OutboundRequestBuilder.builder() .section(Section.MKR.getKey()) diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java index c6f9d0cd3..64fd1eebb 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java @@ -8,7 +8,7 @@ import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondListings import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompany; import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanySymbols; import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerContact; -import ru.spcex.clearing.gatewayapi.service.adapter.SecurityMkrRequestAdapter; +import ru.spcex.clearing.gatewayapi.service.adapter.IssuerCompanyRequestAdapter; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest; @@ -23,12 +23,12 @@ import java.util.stream.Collectors; public class IssueCompanyService { private final Logger log = LoggerFactory.getLogger(getClass()); - private final SecurityMkrRequestAdapter securityMkrRequestAdapter; + private final IssuerCompanyRequestAdapter issuerCompanyRequestAdapter; private final KafkaSender kafkaSender; - public IssueCompanyService(SecurityMkrRequestAdapter securityMkrRequestAdapter, + public IssueCompanyService(IssuerCompanyRequestAdapter issuerCompanyRequestAdapter, KafkaSender kafkaSender) { - this.securityMkrRequestAdapter = securityMkrRequestAdapter; + this.issuerCompanyRequestAdapter = issuerCompanyRequestAdapter; this.kafkaSender = kafkaSender; } @@ -41,18 +41,18 @@ public class IssueCompanyService { List issuerContactList = groupByCompanyId(request.getIssuerContactList(), companyId); List companySymbolNewRequests = issuerCompanySymbolsList.stream(). - map(securityMkrRequestAdapter::toCompanySymbolRequest).toList(); + map(issuerCompanyRequestAdapter::toCompanySymbolRequest).toList(); List contactNewRequests = issuerContactList.stream(). - map(securityMkrRequestAdapter::toContactRequest).toList(); + map(issuerCompanyRequestAdapter::toContactRequest).toList(); SecurityMkrGatewayRequest securityMkrGatewayRequest = new SecurityMkrGatewayRequest(); - securityMkrGatewayRequest.setCompanyNewRequest(securityMkrRequestAdapter.toCompanyRequest(issuerCompany)); + securityMkrGatewayRequest.setCompanyNewRequest(issuerCompanyRequestAdapter.toCompanyRequest(issuerCompany)); securityMkrGatewayRequest.setCompanySymbolNewRequests(companySymbolNewRequests); securityMkrGatewayRequest.setContactNewRequests(contactNewRequests); request.getIssuerCompanyInfoList() .stream() .filter(info -> info.getCompanyId().equals(companyId)).findFirst() - .map(securityMkrRequestAdapter::toCompanyInfoRequest) + .map(issuerCompanyRequestAdapter::toCompanyInfoRequest) .ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest); kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingMMProcessor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingMMProcessor.java new file mode 100644 index 000000000..a206e79f2 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingMMProcessor.java @@ -0,0 +1,41 @@ +package ru.spcex.clearing.gatewayapi.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.ExchangeInstrument; +import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.MMListingsRequest; +import ru.spcex.clearing.gatewayapi.service.adapter.MoneyMarketSecurityRequestAdapter; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; + +import java.util.List; +import java.util.UUID; + +@Service +public class ListingMMProcessor { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final MoneyMarketSecurityRequestAdapter moneyMarketSecurityRequestAdapter; + private final KafkaSender kafkaSender; + + public ListingMMProcessor(MoneyMarketSecurityRequestAdapter moneyMarketSecurityRequestAdapter, + KafkaSender kafkaSender) { + this.moneyMarketSecurityRequestAdapter = moneyMarketSecurityRequestAdapter; + this.kafkaSender = kafkaSender; + } + + public void process(MMListingsRequest request) { + List exchangeInstrumentList = request.getExchangeInstrumentList(); + for (ExchangeInstrument exchangeInstrument : exchangeInstrumentList) { + UUID exchangeInstrumentId = exchangeInstrument.getId(); + log.debug("Process exchangeInstrumentId : {}", exchangeInstrumentId); + + MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = moneyMarketSecurityRequestAdapter + .toMoneyMarketSecurityNewRequest(exchangeInstrument); + + kafkaSender.sendRequestToQueue(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, moneyMarketSecurityNewRequest); + } + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java index d6b83fe6a..b5977caf3 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java @@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.spcex.clearing.gatewayapi.controller.request.WithSecurityId; import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.*; -import ru.spcex.clearing.gatewayapi.service.adapter.SecurityFondRequestAdapter; +import ru.spcex.clearing.gatewayapi.service.adapter.SecurityRequestAdapter; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.company.EquitySecurityGatewayRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.FixedIncomeGatewayRequest; @@ -22,10 +22,10 @@ import java.util.stream.Collectors; public class SecurityService { private final Logger log = LoggerFactory.getLogger(getClass()); - private final SecurityFondRequestAdapter securityRequestAdapter; + private final SecurityRequestAdapter securityRequestAdapter; private final KafkaSender kafkaSender; - public SecurityService(SecurityFondRequestAdapter securityRequestAdapter, + public SecurityService(SecurityRequestAdapter securityRequestAdapter, KafkaSender kafkaSender) { this.securityRequestAdapter = securityRequestAdapter; this.kafkaSender = kafkaSender; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityMkrRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/IssuerCompanyRequestAdapter.java similarity index 98% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityMkrRequestAdapter.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/IssuerCompanyRequestAdapter.java index cd14556fa..5a893b42b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityMkrRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/IssuerCompanyRequestAdapter.java @@ -12,7 +12,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest import ru.spcex.platform.enumeration.CompanySymbol; @Service -public class SecurityMkrRequestAdapter { +public class IssuerCompanyRequestAdapter { public CompanyNewRequest toCompanyRequest(IssuerCompany issuerCompany) { CompanyNewRequest companyNewRequest = new CompanyNewRequest(); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/MoneyMarketSecurityRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/MoneyMarketSecurityRequestAdapter.java new file mode 100644 index 000000000..4fdbeae65 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/MoneyMarketSecurityRequestAdapter.java @@ -0,0 +1,23 @@ +package ru.spcex.clearing.gatewayapi.service.adapter; + +import org.springframework.stereotype.Service; +import ru.spcex.clearing.gatewayapi.controller.request.listing.mkr.ExchangeInstrument; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; +import ru.spcex.platform.enumeration.InstrumentType; + +@Service +public class MoneyMarketSecurityRequestAdapter { + + public MoneyMarketSecurityNewRequest toMoneyMarketSecurityNewRequest(ExchangeInstrument exchangeInstrument) { + MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = new MoneyMarketSecurityNewRequest(); + moneyMarketSecurityNewRequest.setNominalCurrency(exchangeInstrument.getSettlementCurrencyLetterCode()); + moneyMarketSecurityNewRequest.setInstrumentType(InstrumentType.RATE.getKey()); + moneyMarketSecurityNewRequest.setShortName(exchangeInstrument.getName()); + moneyMarketSecurityNewRequest.setSecuritySymbol(exchangeInstrument.getSecuritySymbol()); + moneyMarketSecurityNewRequest.setLotSize(exchangeInstrument.getLot()); + moneyMarketSecurityNewRequest.setTermType(exchangeInstrument.getBankDepositAgreementType()); + moneyMarketSecurityNewRequest.setIssuerId(exchangeInstrument.getIssuerId()); + moneyMarketSecurityNewRequest.setWorkflowStatus(exchangeInstrument.getWorkflowStatus()); + return moneyMarketSecurityNewRequest; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java similarity index 99% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java index 068a1801e..85d398cef 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java @@ -8,7 +8,7 @@ import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.Nominal; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; @Service -public class SecurityFondRequestAdapter { +public class SecurityRequestAdapter { public FixedIncomeSecurityNewRequest toFixedIncomeSecurityRequest(FondSecurity fondSecurity) { FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = new FixedIncomeSecurityNewRequest(); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index ef1ba54c3..ee7b1972d 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain; public interface Consts { String DESTINATION_MONEY_MARKET_SECURITY_NEW = "money-market-security-new"; + String DESTINATION_GATEWAY_MONEY_MARKET_SECURITY = "money-gateway-market-security"; String DESTINATION_MONEY_MARKET_SECURITY_UPDATE = "money-market-security-update"; String DESTINATION_MONEY_MARKET_SECURITY_DELETE = "money-market-security-delete"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/AssetOperationRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/AssetOperationRequest.java index f661327fc..d2d7a9c25 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/AssetOperationRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/AssetOperationRequest.java @@ -5,9 +5,9 @@ import java.math.BigDecimal; public class AssetOperationRequest { private BigDecimal amount; private BigDecimal quantity; - private String asset; + private String securitySymbol; private String code; - private String firmId; + private String tradingCode; public BigDecimal getAmount() { return amount; @@ -25,12 +25,12 @@ public class AssetOperationRequest { this.quantity = quantity; } - public String getAsset() { - return asset; + public String getSecuritySymbol() { + return securitySymbol; } - public void setAsset(String asset) { - this.asset = asset; + public void setSecuritySymbol(String securitySymbol) { + this.securitySymbol = securitySymbol; } public String getCode() { @@ -41,11 +41,11 @@ public class AssetOperationRequest { this.code = code; } - public String getFirmId() { - return firmId; + public String getTradingCode() { + return tradingCode; } - public void setFirmId(String firmId) { - this.firmId = firmId; + public void setTradingCode(String tradingCode) { + this.tradingCode = tradingCode; } }