diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java index 5133ec204..4f7992d6d 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java @@ -98,7 +98,7 @@ public class MultiCompanyService public void afterPropertiesSet() { callback(CompanyGatewayRequest.class) .setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request)) - .forDestination(Consts.DESTINATION_COMPANY_MULTIREQUEST, callbacks::put); + .forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put); init(); } 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 index a909afe51..2fd1fecf4 100644 --- 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 @@ -5,7 +5,6 @@ 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_fond.*; 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; @@ -18,18 +17,6 @@ import java.util.List; @Configuration public class ProcessorConfiguration { - @Qualifier("fondListingsRequestProcessor") - @Bean - public Processor fondListingsRequestProcessor(ImdgProvider imdgProvider, KafkaSender kafkaSender) { - Processor processor = new Processor<>(); - List> pipeline = new ArrayList<>(); - pipeline.add(new PrepareIncomeSecurities()); - pipeline.add(new PrepareIssuerCompanies()); - pipeline.add(new SendMessageToCompanyServiceWithIssuerCompanies(kafkaSender, imdgProvider)); - pipeline.add(new SendMessageToSecurityServiceWithFondSecurities(kafkaSender, imdgProvider)); - processor.setPipeline(pipeline); - return processor; - } @Qualifier("mmListingsRequestProcessor") @Bean 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 51285c91b..8cf7e7da1 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 @@ -19,9 +19,9 @@ 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_fond.FondListingsRequestParam; 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.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; @@ -37,22 +37,23 @@ public class GatewayController { private final Logger log = LoggerFactory.getLogger(getClass()); private final IMessageResolver messageResolver; - private final Processor fondListingsRequestProcessor; private final Processor mmListingsRequestProcessor; private final CompanyProcessor companiesProcessor; + private final ListingFondProcessor listingFondProcessor; private final ExecutorService executor; private List validTypes = Arrays.asList("DAY_START", "ON_DEMAND"); public GatewayController( IMessageResolver messageResolver, - @Qualifier("fondListingsRequestProcessor") Processor fondListingsRequestProcessor, @Qualifier("mmListingsRequestProcessor") Processor mmListingsRequestProcessor, - CompanyProcessor companiesProcessor, @Qualifier("gatewayExecutor") ExecutorService executor) { + CompanyProcessor companiesProcessor, + ListingFondProcessor listingFondProcessor, + @Qualifier("gatewayExecutor") ExecutorService executor) { this.messageResolver = messageResolver; - this.fondListingsRequestProcessor = fondListingsRequestProcessor; this.mmListingsRequestProcessor = mmListingsRequestProcessor; this.companiesProcessor = companiesProcessor; + this.listingFondProcessor = listingFondProcessor; this.executor = executor; } @@ -71,14 +72,7 @@ public class GatewayController { @ResponseBody public CommonResponse listingsFond(@RequestBody FondListingsRequest request) { // request.validate(validTypes, List.of(Section.FOND)); - FondListingsRequestParam requestParam = new FondListingsRequestParam(request); - executor.submit(() -> { - ProcessResult processResult = fondListingsRequestProcessor.process(requestParam); - if (processResult.getError() != null) { - log.warn("Exception while process listingFind: {}", processResult.getError()); - } - }); - + executor.submit(() -> listingFondProcessor.process(request)); return createResponse(request, true); } @@ -124,9 +118,7 @@ public class GatewayController { @ResponseBody public CommonResponse companies(@RequestBody CompaniesRequest request) { // request.validate(validTypes, Collections.emptyList()); - executor.submit(() -> { - companiesProcessor.process(request); - }); + executor.submit(() -> companiesProcessor.process(request)); return createResponse(request, true); } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/WithIssuerId.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/WithIssuerId.java new file mode 100644 index 000000000..80c5e0eaa --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/WithIssuerId.java @@ -0,0 +1,7 @@ +package ru.spcex.clearing.gatewayapi.controller.request; + +import java.util.UUID; + +public interface WithIssuerId { + UUID getIssuerId(); +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/listing/fond/FondSecurity.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/listing/fond/FondSecurity.java index 14b40d581..6ad5587b5 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/listing/fond/FondSecurity.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/request/listing/fond/FondSecurity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.annotations.ApiModelProperty; import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer; +import ru.spcex.clearing.gatewayapi.controller.request.WithIssuerId; import ru.spcex.clearing.gatewayapi.controller.request.WithMapId; import java.math.BigDecimal; @@ -13,7 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -public class FondSecurity extends WithMapId { +public class FondSecurity extends WithMapId implements WithIssuerId { @JsonProperty("id") @ApiModelProperty( value = "id (uuid)", @@ -208,6 +209,7 @@ public class FondSecurity extends WithMapId { this.instrumentType = instrumentType; } + @Override public UUID getIssuerId() { return issuerId; } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java deleted file mode 100644 index 90ba814ff..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java +++ /dev/null @@ -1,43 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondListingsRequest; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondSecurity; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompany; - -import java.util.ArrayList; -import java.util.List; - -public class FondListingsRequestParam { - private FondListingsRequest fondListingsRequest; - private List securities = new ArrayList<>(); - private List issuerCompanyList = new ArrayList<>(); - - public FondListingsRequestParam(FondListingsRequest fondListingsRequest) { - this.fondListingsRequest = fondListingsRequest; - } - - - public FondListingsRequest getRequest() { - return fondListingsRequest; - } - - public List getSecurities() { - return securities; - } - - public List getIssuerCompanyList() { - return issuerCompanyList; - } - - public void setListingsRequest(FondListingsRequest fondListingsRequest) { - this.fondListingsRequest = fondListingsRequest; - } - - public void setSecurities(List securities) { - this.securities = securities; - } - - public void setIssuerCompanyList(List issuerCompanyList) { - this.issuerCompanyList = issuerCompanyList; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIncomeSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIncomeSecurities.java deleted file mode 100644 index 90012f58c..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIncomeSecurities.java +++ /dev/null @@ -1,84 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.*; -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 PrepareIncomeSecurities extends Stage { - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Override - public ProcessResult process(FondListingsRequestParam param) { - List securities = param.getRequest().getSecurities(); - - Map securityMap = new HashMap<>(); - for (FondSecurity fondSecurity : securities) { - if (securityMap.containsKey(fondSecurity.getId())) { - log.warn("For security.id {} found > 1 element from request, use first", fondSecurity.getId()); - fondSecurity.setInvalidData(true); - continue; - } - securityMap.put(fondSecurity.getId(), fondSecurity); - } - - List couponSchedules = param.getRequest().getCouponSchedules(); - for (CouponSchedule couponSchedule : couponSchedules) { - UUID couponScheduleUUID = couponSchedule.getSecurityId(); - FondSecurity fondSecurity = securityMap.get(couponScheduleUUID); - if (fondSecurity == null) { - log.warn("For coupon_schedule.security_id {} not found security, skipped", couponScheduleUUID); - continue; - } - fondSecurity.getCouponScheduleList().add(couponSchedule); - } - - List currencyList = param.getRequest().getCurrencies(); - for (Currency currency : currencyList) { - UUID currencyUUID = currency.getId(); - // todo сделать после выяснения - } - - List listingList = param.getRequest().getListingList(); - for (IncomeListing listing : listingList) { - UUID listingUUID = listing.getSecurityId(); - FondSecurity fondSecurity = securityMap.get(listingUUID); - if (fondSecurity == null) { - log.warn("For listing.security_id {} not found security, skipped", listingUUID); - continue; - } - fondSecurity.getListingList().add(listing); - } - - List nominalList = param.getRequest().getNominalList(); - for (Nominal nominal : nominalList) { - UUID nominalUUID = nominal.getSecurityId(); - FondSecurity fondSecurity = securityMap.get(nominalUUID); - if (fondSecurity == null) { - log.warn("For nominal.security_id {} not found security, skipped", nominalUUID); - continue; - } - fondSecurity.getNominalList().add(nominal); - } - - List filteredIncomeSecurities = securities.stream() - .filter(incomeSecurity -> !incomeSecurity.isInvalidData()) - .collect(Collectors.toList()); - - if (filteredIncomeSecurities.isEmpty()) { - return new ProcessResult(GatewayError.SecurityNotFound, securities.stream().map(fondSecurity -> fondSecurity.getId().toString()).collect(Collectors.joining(", "))); - } - - param.setSecurities(filteredIncomeSecurities); - - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java deleted file mode 100644 index 10a6c51f0..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java +++ /dev/null @@ -1,99 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.*; -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 PrepareIssuerCompanies extends Stage { - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Override - public ProcessResult process(FondListingsRequestParam param) { - List issuerCompanyList = param.getRequest().getIssuerCompanyList(); - - Map issuerCompanyMap = new HashMap<>(); - for (IssuerCompany issuerCompany : issuerCompanyList) { - if (issuerCompanyMap.containsKey(issuerCompany.getId())) { - log.warn("For company.id {} found > 1 element from request, use first", issuerCompany.getId()); - issuerCompany.setInvalidData(true); - continue; - } - issuerCompanyMap.put(issuerCompany.getId(), issuerCompany); - } - - for (IssuerCompany issuerCompany : issuerCompanyList) { - if (issuerCompany.isInvalidData()) continue; - - UUID issuerCompanyId = issuerCompany.getId(); - boolean securityFoundForCompany = false; - for (FondSecurity fondSecurity : param.getSecurities()) { - if (fondSecurity.getIssuerId().equals(issuerCompanyId)) { - fondSecurity.setIssuerCompany(issuerCompany); - securityFoundForCompany = true; - break; - } - } - if (!securityFoundForCompany) { - log.warn("For company.id {} not found security", issuerCompanyId); - } - } - - List issuerCompanyInfoList = param.getRequest().getIssuerCompanyInfoList(); - for (IssuerCompanyInfo issuerCompanyInfo : issuerCompanyInfoList) { - UUID issuerCompanyInfoUUID = issuerCompanyInfo.getCompanyId(); - IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanyInfoUUID); - if (issuerCompany == null) { - log.warn("For company_info.company_id {} not found company, company_info skipped", issuerCompanyInfoUUID); - continue; - } - if (issuerCompany.getIssuerCompanyInfo() != null) { - log.warn("For company.id {} found > 1 company_info, use first", issuerCompanyInfoUUID); - continue; - } - issuerCompany.setIssuerCompanyInfo(issuerCompanyInfo); - } - - List issuerCompanySymbolsList = param.getRequest().getIssuerCompanySymbolsList(); - for (IssuerCompanySymbols issuerCompanySymbols : issuerCompanySymbolsList) { - UUID issuerCompanySymbolsUUID = issuerCompanySymbols.getCompanyId(); - IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanySymbolsUUID); - if (issuerCompany == null) { - log.warn("For company_symbols ({} = {}) not found company, company_symbols skipped", - issuerCompanySymbols.getCompanySymbol(), - issuerCompanySymbols.getCompanySymbolValue()); - issuerCompanySymbols.setInvalidData(true); - continue; - } - issuerCompany.getIssuerCompanySymbolsList().add(issuerCompanySymbols); - } - - List issuerContactList = param.getRequest().getIssuerContactList(); - for (IssuerContact issuerContact : issuerContactList) { - UUID issuerContactUUID = issuerContact.getCompanyId(); - IssuerCompany issuerCompany = issuerCompanyMap.get(issuerContactUUID); - if (issuerCompany == null) { - log.warn("For contact ({} = {}) not found company, contact skipped", - issuerContact.getContactType(), - issuerContact.getContactValue()); - issuerContact.setInvalidData(true); - continue; - } - issuerCompany.getIssuerContactList().add(issuerContact); - } - - List filteredIssuerCompany = issuerCompanyList.stream() - .filter(issuerCompany -> !issuerCompany.isInvalidData()) - .collect(Collectors.toList()); - - param.setIssuerCompanyList(filteredIssuerCompany); - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyServiceWithIssuerCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyServiceWithIssuerCompanies.java deleted file mode 100644 index d43764167..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyServiceWithIssuerCompanies.java +++ /dev/null @@ -1,125 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.clearing.classes.statics.data.company.Company; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompany; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanyInfo; -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.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.company.*; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.enumeration.CompanySymbol; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.util.List; -import java.util.Map; - -/** - * Отправка сообщения к company-service на создание/обновление company - * todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer - */ -public class SendMessageToCompanyServiceWithIssuerCompanies extends Stage { - private final Logger log = LoggerFactory.getLogger(getClass()); - - private final KafkaSender kafkaSender; - private final Imdg companyImdg; - - - public SendMessageToCompanyServiceWithIssuerCompanies(KafkaSender kafkaSender, ImdgProvider imdgProvider) { - this.kafkaSender = kafkaSender; - this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - } - - @Override - public ProcessResult process(FondListingsRequestParam param) { - List companyList = param.getIssuerCompanyList(); - for (IssuerCompany company : companyList) { - if (company.isInvalidData()) continue; - - CompanyNewRequest companyNewRequest = new CompanyNewRequest(); - if (company.isAlreadyExist()) companyNewRequest.setId(company.getMapId()); - companyNewRequest.setShortName(company.getShortName()); - companyNewRequest.setFullName(company.getFullName()); - companyNewRequest.setWorkflowStatus(company.getWorkflowStatus()); - companyNewRequest.setCompanySymbol(CompanySymbol.UUID.getKey()); - companyNewRequest.setCompanySymbolValue(company.getId().toString()); - - IssuerCompanyInfo companyInfo = company.getIssuerCompanyInfo(); - - if (company.isAlreadyExist()) { - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_UPDATE, companyNewRequest); - } else { - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_NEW, companyNewRequest); - Company companyFromImdg = companyImdg.getSingleObjectByFieldValues( - Map.of( - "shortName", company.getShortName(), - "fullName", company.getFullName(), - "workflowStatus", company.getWorkflowStatus() - ) - ); - if (companyFromImdg == null) { - log.warn("Can't insert company (id {}), skipped", company.getId()); - company.setInvalidData(true); - continue; - } - company.setAlreadyExist(true); - company.setMapId(companyFromImdg.getId()); - } - Long companyId = company.getMapId(); - - CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest(); - companyInfoUpdateRequest.setId(companyId); - if (companyInfo != null) { - companyInfoUpdateRequest.setCountryCode(companyInfo.getCountryCode()); - companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind()); - companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType()); - companyInfoUpdateRequest.setResidence(companyInfo.getResidence()); - companyInfoUpdateRequest.setShortNameEng(companyInfo.getShortNameEng()); - companyInfoUpdateRequest.setFullNameEng(companyInfo.getFullNameEng()); - } - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_INFO_UPDATE, companyInfoUpdateRequest); - - for (IssuerCompanySymbols companySymbols : company.getIssuerCompanySymbolsList()) { - if (companySymbols.isInvalidData()) continue; - if (!company.isAlreadyExist() || !companySymbols.isAlreadyExist()) { - CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest(); - companySymbolNewRequest.setCompanyId(companyId); - companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol()); - companySymbolNewRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_SYMBOL_NEW, companySymbolNewRequest); - } else { - CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest(); - companySymbolUpdateRequest.setId(companySymbols.getMapId()); - companySymbolUpdateRequest.setCompanyId(companyId); - companySymbolUpdateRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, companySymbolUpdateRequest); - } - } - - for (IssuerContact contact : company.getIssuerContactList()) { - if (contact.isInvalidData()) continue; - if (!company.isAlreadyExist() || !contact.isAlreadyExist()) { - ContactNewRequest contactNewRequest = new ContactNewRequest(); - contactNewRequest.setCompanyId(companyId); - contactNewRequest.setContactType(contact.getContactType()); - contactNewRequest.setContactValue(contact.getContactValue()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_CONTACT_NEW, contactNewRequest); - } else { - ContactUpdateRequest contactUpdateRequest = new ContactUpdateRequest(); - contactUpdateRequest.setId(contact.getMapId()); - contactUpdateRequest.setContactType(contact.getContactType()); - contactUpdateRequest.setContactValue(contact.getContactValue()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_CONTACT_UPDATE, contactUpdateRequest); - } - } - } - - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java deleted file mode 100644 index 235048727..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java +++ /dev/null @@ -1,244 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity; -import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.CouponSchedule; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondSecurity; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IncomeListing; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.Nominal; -import ru.spcex.clearing.gatewayapi.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.enumeration.CompanySymbol; -import ru.spcex.platform.enumeration.InstrumentType; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * Отправка сообщения к security-service на создание/обновление security - * todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer - */ -public class SendMessageToSecurityServiceWithFondSecurities extends Stage { - private final Logger log = LoggerFactory.getLogger(getClass()); - - private final KafkaSender kafkaSender; - private final Imdg fixedIncomeSecurityImdg; - private final Imdg equitySecurityImdg; - private final Imdg companySymbolsImdg; - private final Imdg companyImdg; - - - public SendMessageToSecurityServiceWithFondSecurities(KafkaSender kafkaSender, ImdgProvider imdgProvider) { - this.kafkaSender = kafkaSender; - this.fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class); - this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class); - this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - } - - @Override - public ProcessResult process(FondListingsRequestParam param) { - List securityList = param.getSecurities(); - for (FondSecurity security : securityList) { - if (security.isInvalidData()) continue; - Long companyId; - if (security.getIssuerCompany() == null || security.getIssuerCompany().getMapId() == null) { - // Пытаемся найти компанию по UUID - UUID companyUUID = security.getIssuerId(); - Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues( - Map.of( - "companySymbol", CompanySymbol.UUID.getKey(), - "companySymbolValue", companyUUID.toString() - ) - ); - if (companySymbols.isEmpty()) { - log.warn("Can't insert security.id {}, company not found for parameter issuerId", security.getId()); - security.setInvalidData(true); - continue; - } else if (companySymbols.size() > 1) { - log.warn("For {} = {} found > 1 company_symbol, use first", CompanySymbol.UUID.getKey(), companyUUID); - } - - // Проверяем, что в базе помимо реквизита есть компания - companyId = companySymbols.iterator().next().getCompanyId(); - Company company = companyImdg.getSingleObjectByID(companyId); - if (company == null) { - log.warn("Can't insert security: not found company with id {}", companyId); - security.setInvalidData(true); - continue; - } - } else { - companyId = security.getIssuerCompany().getMapId(); - } - Long securityId; - if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { - if (!security.isAlreadyExist()) { - FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = new FixedIncomeSecurityNewRequest(); - fixedIncomeSecurityNewRequest.setSecuritySymbol(security.getSecuritySymbol()); - fixedIncomeSecurityNewRequest.setShortName(security.getShortName()); - fixedIncomeSecurityNewRequest.setFullName(security.getFullName()); - fixedIncomeSecurityNewRequest.setIsin(security.getIsin()); - fixedIncomeSecurityNewRequest.setBondType(security.getBondType()); - fixedIncomeSecurityNewRequest.setNominalValue(security.getNominalValue()); - fixedIncomeSecurityNewRequest.setNominalCurrency(security.getNominalCurrency()); - fixedIncomeSecurityNewRequest.setMaturityDate(security.getMaturityDate()); - fixedIncomeSecurityNewRequest.setCouponFrequency(security.getCouponFrequency().longValue()); - fixedIncomeSecurityNewRequest.setIssuerId(companyId); - fixedIncomeSecurityNewRequest.setShortNameEng(security.getShortNameEng()); - fixedIncomeSecurityNewRequest.setFullNameEng(security.getFullNameEng()); - fixedIncomeSecurityNewRequest.setWorkflowStatus(security.getWorkflowStatus()); - fixedIncomeSecurityNewRequest.setInstrumentType(security.getInstrumentType()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_FIXED_INCOME_SECURITY_NEW, fixedIncomeSecurityNewRequest); - } else { - FixedIncomeSecurityUpdateRequest fixedIncomeSecurityUpdateRequest = new FixedIncomeSecurityUpdateRequest(); - fixedIncomeSecurityUpdateRequest.setId(security.getMapId()); - fixedIncomeSecurityUpdateRequest.setSecuritySymbol(security.getSecuritySymbol()); - fixedIncomeSecurityUpdateRequest.setShortName(security.getShortName()); - fixedIncomeSecurityUpdateRequest.setFullName(security.getFullName()); - fixedIncomeSecurityUpdateRequest.setIsin(security.getIsin()); - fixedIncomeSecurityUpdateRequest.setBondType(security.getBondType()); - fixedIncomeSecurityUpdateRequest.setNominalValue(security.getNominalValue()); - fixedIncomeSecurityUpdateRequest.setNominalCurrency(security.getNominalCurrency()); - fixedIncomeSecurityUpdateRequest.setMaturityDate(security.getMaturityDate()); - fixedIncomeSecurityUpdateRequest.setCouponFrequency(security.getCouponFrequency().longValue()); - fixedIncomeSecurityUpdateRequest.setIssuerId(companyId); - fixedIncomeSecurityUpdateRequest.setShortNameEng(security.getShortNameEng()); - fixedIncomeSecurityUpdateRequest.setFullNameEng(security.getFullNameEng()); - fixedIncomeSecurityUpdateRequest.setWorkflowStatus(security.getWorkflowStatus()); - fixedIncomeSecurityUpdateRequest.setInstrumentType(security.getInstrumentType()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE, fixedIncomeSecurityUpdateRequest); - } - } else { - if (!security.isAlreadyExist()) { - EquitySecurityNewRequest equitySecurityNewRequest = new EquitySecurityNewRequest(); - equitySecurityNewRequest.setSecuritySymbol(security.getSecuritySymbol()); - equitySecurityNewRequest.setShortName(security.getShortName()); - equitySecurityNewRequest.setFullName(security.getFullName()); - equitySecurityNewRequest.setIsin(security.getIsin()); - equitySecurityNewRequest.setShareType(security.getShareType()); - equitySecurityNewRequest.setIssuerId(companyId); - equitySecurityNewRequest.setShortNameEng(security.getShortNameEng()); - equitySecurityNewRequest.setFullNameEng(security.getFullNameEng()); - equitySecurityNewRequest.setWorkflowStatus(security.getWorkflowStatus()); - equitySecurityNewRequest.setInstrumentType(security.getInstrumentType()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_EQUITY_SECURITY_NEW, equitySecurityNewRequest); - } else { - EquitySecurityUpdateRequest equitySecurityUpdateRequest = new EquitySecurityUpdateRequest(); - equitySecurityUpdateRequest.setId(security.getMapId()); - equitySecurityUpdateRequest.setSecuritySymbol(security.getSecuritySymbol()); - equitySecurityUpdateRequest.setShortName(security.getShortName()); - equitySecurityUpdateRequest.setFullName(security.getFullName()); - equitySecurityUpdateRequest.setIsin(security.getIsin()); - equitySecurityUpdateRequest.setShareType(security.getShareType()); - equitySecurityUpdateRequest.setIssuerId(companyId); - equitySecurityUpdateRequest.setShortNameEng(security.getShortNameEng()); - equitySecurityUpdateRequest.setFullNameEng(security.getFullNameEng()); - equitySecurityUpdateRequest.setWorkflowStatus(security.getWorkflowStatus()); - equitySecurityUpdateRequest.setInstrumentType(security.getInstrumentType()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_EQUITY_SECURITY_UPDATE, equitySecurityUpdateRequest); - } - } - - if (!security.isAlreadyExist()) { - Map predicate = Map.of( - "instrumentType", security.getInstrumentType(), - "securitySymbol", security.getSecuritySymbol(), - "workflowStatus", security.getWorkflowStatus(), - "shortName", security.getShortName() - ); - if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { - FixedIncomeSecurity fixedIncomeSecurity = fixedIncomeSecurityImdg.getSingleObjectByFieldValues(predicate); - if (fixedIncomeSecurity != null) security.setMapId(fixedIncomeSecurity.getId()); - } else { - EquitySecurity equitySecurity = equitySecurityImdg.getSingleObjectByFieldValues(predicate); - if (equitySecurity != null) security.setMapId(equitySecurity.getId()); - } - if (security.getMapId() == null) { - log.warn("Can't insert security (id {}), skipped", security.getId()); - security.setInvalidData(true); - continue; - } - } - securityId = security.getMapId(); - - for (IncomeListing listing : security.getListingList()) { - if (listing.isInvalidData()) continue; - if (!security.isAlreadyExist() || !listing.isAlreadyExist()) { - ListingNewRequest listingNewRequest = new ListingNewRequest(); - listingNewRequest.setSecurityId(securityId); - listingNewRequest.setMarket(listing.getCode()); - listingNewRequest.setLotSize(listing.getLotSize()); - listingNewRequest.setTradingCurrency(listing.getTradingCurrency()); - listingNewRequest.setWorkflowStatus(listing.getWorkflowStatus()); - kafkaSender.sendRequestToQueue(Consts.LISTING_NEW, listingNewRequest); - } else { - ListingUpdateRequest listingUpdateRequest = new ListingUpdateRequest(); - listingUpdateRequest.setId(listing.getMapId()); - listingUpdateRequest.setSecurityId(securityId); - listingUpdateRequest.setMarket(listing.getCode()); - listingUpdateRequest.setLotSize(listing.getLotSize()); - listingUpdateRequest.setTradingCurrency(listing.getTradingCurrency()); - listingUpdateRequest.setWorkflowStatus(listing.getWorkflowStatus()); - kafkaSender.sendRequestToQueue(Consts.LISTING_UPDATE, listingUpdateRequest); - } - } - - for (CouponSchedule couponSchedule : security.getCouponScheduleList()) { - if (couponSchedule.isInvalidData()) continue; - if (!security.isAlreadyExist() || !couponSchedule.isAlreadyExist()) { - CouponPeriodNewRequest couponPeriodNewRequest = new CouponPeriodNewRequest(); - couponPeriodNewRequest.setSecurityId(securityId); - couponPeriodNewRequest.setCouponRate(couponSchedule.getCouponRate()); - couponPeriodNewRequest.setNumber(couponSchedule.getCouponNumber()); - couponPeriodNewRequest.setPeriodEndDate(couponSchedule.getPeriodEndDate()); - couponPeriodNewRequest.setPeriodStartDate(couponSchedule.getPeriodStartDate()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COUPON_PERIOD_NEW, couponPeriodNewRequest); - } else { - CouponPeriodUpdateRequest couponPeriodUpdateRequest = new CouponPeriodUpdateRequest(); - couponPeriodUpdateRequest.setId(couponSchedule.getMapId()); - couponPeriodUpdateRequest.setSecurityId(securityId); - couponPeriodUpdateRequest.setCouponRate(couponSchedule.getCouponRate()); - couponPeriodUpdateRequest.setNumber(couponSchedule.getCouponNumber()); - couponPeriodUpdateRequest.setPeriodEndDate(couponSchedule.getPeriodEndDate()); - couponPeriodUpdateRequest.setPeriodStartDate(couponSchedule.getPeriodStartDate()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COUPON_PERIOD_UPDATE, couponPeriodUpdateRequest); - } - } - - for (Nominal nominal : security.getNominalList()) { - if (nominal.isInvalidData()) continue; - if (!security.isAlreadyExist() || !nominal.isAlreadyExist()) { - FixedIncomeCashFlowNewRequest fixedIncomeCashFlowNewRequest = new FixedIncomeCashFlowNewRequest(); - fixedIncomeCashFlowNewRequest.setSecuritySymbol(security.getSecuritySymbol()); - fixedIncomeCashFlowNewRequest.setAccruedCoupon(nominal.getAccruedCoupon()); - fixedIncomeCashFlowNewRequest.setNominalValue(nominal.getNominal()); - fixedIncomeCashFlowNewRequest.setNumber(nominal.getCouponNumber()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_FIXED_INCOME_CASH_FLOW_NEW, fixedIncomeCashFlowNewRequest); - } else { - FixedIncomeCashFlowUpdateRequest fixedIncomeCashFlowUpdateRequest = new FixedIncomeCashFlowUpdateRequest(); - fixedIncomeCashFlowUpdateRequest.setId(nominal.getMapId()); - fixedIncomeCashFlowUpdateRequest.setSecuritySymbol(security.getSecuritySymbol()); - fixedIncomeCashFlowUpdateRequest.setAccruedCoupon(nominal.getAccruedCoupon()); - fixedIncomeCashFlowUpdateRequest.setNominalValue(nominal.getNominal()); - fixedIncomeCashFlowUpdateRequest.setNumber(nominal.getCouponNumber()); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_FIXED_INCOME_CASH_FLOW_UPDATE, fixedIncomeCashFlowUpdateRequest); - } - } - - } - - return null; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CompanyProcessor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CompanyProcessor.java index fe07899a9..cd06f3bf2 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CompanyProcessor.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CompanyProcessor.java @@ -63,7 +63,7 @@ public class CompanyProcessor { companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests); companyGatewayRequest.setClientCodes(clientCodeNewRequests); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_MULTIREQUEST, companyGatewayRequest); + kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest); } } 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 new file mode 100644 index 000000000..c6f9d0cd3 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java @@ -0,0 +1,65 @@ +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.WithCompanyId; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondListingsRequest; +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.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityMkrGatewayRequest; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +public class IssueCompanyService { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final SecurityMkrRequestAdapter securityMkrRequestAdapter; + private final KafkaSender kafkaSender; + + public IssueCompanyService(SecurityMkrRequestAdapter securityMkrRequestAdapter, + KafkaSender kafkaSender) { + this.securityMkrRequestAdapter = securityMkrRequestAdapter; + this.kafkaSender = kafkaSender; + } + + public void sendRequest(FondListingsRequest request) { + List issuerCompanyList = request.getIssuerCompanyList(); + for (IssuerCompany issuerCompany : issuerCompanyList) { + UUID companyId = issuerCompany.getId(); + log.debug("Grouping by companyId: {}", companyId); + List issuerCompanySymbolsList = groupByCompanyId(request.getIssuerCompanySymbolsList(), companyId); + List issuerContactList = groupByCompanyId(request.getIssuerContactList(), companyId); + + List companySymbolNewRequests = issuerCompanySymbolsList.stream(). + map(securityMkrRequestAdapter::toCompanySymbolRequest).toList(); + List contactNewRequests = issuerContactList.stream(). + map(securityMkrRequestAdapter::toContactRequest).toList(); + + SecurityMkrGatewayRequest securityMkrGatewayRequest = new SecurityMkrGatewayRequest(); + securityMkrGatewayRequest.setCompanyNewRequest(securityMkrRequestAdapter.toCompanyRequest(issuerCompany)); + securityMkrGatewayRequest.setCompanySymbolNewRequests(companySymbolNewRequests); + securityMkrGatewayRequest.setContactNewRequests(contactNewRequests); + request.getIssuerCompanyInfoList() + .stream() + .filter(info -> info.getCompanyId().equals(companyId)).findFirst() + .map(securityMkrRequestAdapter::toCompanyInfoRequest) + .ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest); + + kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest); + } + } + + private List groupByCompanyId(List listToProcess, UUID companyId) { + return listToProcess.stream().filter(t -> t.getCompanyId().equals(companyId)).collect(Collectors.toList()); + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingFondProcessor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingFondProcessor.java index d50e7879d..61c50229d 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingFondProcessor.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/ListingFondProcessor.java @@ -1,69 +1,20 @@ 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.WithSecurityId; -import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.*; -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; -import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityGatewayRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.enumeration.InstrumentType; - -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.FondListingsRequest; @Service public class ListingFondProcessor { - private final Logger log = LoggerFactory.getLogger(getClass()); + private final IssueCompanyService issueCompanyProcessor; + private final SecurityService securityService; - private final SecurityRequestAdapter securityRequestAdapter; - private final KafkaSender kafkaSender; - - public ListingFondProcessor(SecurityRequestAdapter securityRequestAdapter, - KafkaSender kafkaSender) { - this.securityRequestAdapter = securityRequestAdapter; - this.kafkaSender = kafkaSender; + public ListingFondProcessor(IssueCompanyService issueCompanyProcessor, SecurityService securityService) { + this.issueCompanyProcessor = issueCompanyProcessor; + this.securityService = securityService; } public void process(FondListingsRequest request) { - List securityList = request.getSecurities(); - for (FondSecurity security : securityList) { - UUID securityId = security.getId(); - log.debug("Grouping by securityId: {}", securityId); - List incomeListings = groupByCompanyId(request.getListingList(), securityId); - List couponSchedules = groupByCompanyId(request.getCouponSchedules(), securityId); - List nominals = groupByCompanyId(request.getNominalList(), securityId); - - List listingRequests = incomeListings.stream(). - map(securityRequestAdapter::toIncomeListing).toList(); - List couponPeriodRequests = couponSchedules.stream(). - map(securityRequestAdapter::toCouponPeriodRequest).toList(); - List cashFlowRequests = nominals.stream(). - map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList(); - - SecurityGatewayRequest securityGatewayRequest; - if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { - FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security); - securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest); - } else { - EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security); - securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest); - } - securityGatewayRequest.setListing(listingRequests); - securityGatewayRequest.setCouponPeriods(couponPeriodRequests); - securityGatewayRequest.setFixedIncomesCashFlow(cashFlowRequests); - - kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_MULTIREQUEST, securityGatewayRequest); - } - } - - private List groupByCompanyId(List listToProcess, UUID securityId) { - return listToProcess.stream().filter(t -> t.getSecurityId().equals(securityId)).collect(Collectors.toList()); + issueCompanyProcessor.sendRequest(request); + securityService.sendRequest(request); } } 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 new file mode 100644 index 000000000..d6b83fe6a --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java @@ -0,0 +1,69 @@ +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.WithSecurityId; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.*; +import ru.spcex.clearing.gatewayapi.service.adapter.SecurityFondRequestAdapter; +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; +import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityFondGatewayRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.InstrumentType; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +public class SecurityService { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final SecurityFondRequestAdapter securityRequestAdapter; + private final KafkaSender kafkaSender; + + public SecurityService(SecurityFondRequestAdapter securityRequestAdapter, + KafkaSender kafkaSender) { + this.securityRequestAdapter = securityRequestAdapter; + this.kafkaSender = kafkaSender; + } + + public void sendRequest(FondListingsRequest request) { + List securityList = request.getSecurities(); + for (FondSecurity security : securityList) { + UUID securityId = security.getId(); + log.debug("Grouping by securityId: {}", securityId); + List incomeListings = groupByCompanyId(request.getListingList(), securityId); + List couponSchedules = groupByCompanyId(request.getCouponSchedules(), securityId); + List nominals = groupByCompanyId(request.getNominalList(), securityId); + + List listingRequests = incomeListings.stream(). + map(securityRequestAdapter::toIncomeListing).toList(); + List couponPeriodRequests = couponSchedules.stream(). + map(securityRequestAdapter::toCouponPeriodRequest).toList(); + List cashFlowRequests = nominals.stream(). + map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList(); + + SecurityFondGatewayRequest securityGatewayRequest; + if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { + FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security); + securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest); + } else { + EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security); + securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest); + } + securityGatewayRequest.setListing(listingRequests); + securityGatewayRequest.setCouponPeriods(couponPeriodRequests); + securityGatewayRequest.setFixedIncomesCashFlow(cashFlowRequests); + + kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_MULTIREQUEST, securityGatewayRequest); + } + } + + private List groupByCompanyId(List listToProcess, UUID securityId) { + return listToProcess.stream().filter(t -> t.getSecurityId().equals(securityId)).collect(Collectors.toList()); + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.java similarity index 99% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.java index 85d398cef..068a1801e 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityFondRequestAdapter.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 SecurityRequestAdapter { +public class SecurityFondRequestAdapter { public FixedIncomeSecurityNewRequest toFixedIncomeSecurityRequest(FondSecurity fondSecurity) { FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = new FixedIncomeSecurityNewRequest(); 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/SecurityMkrRequestAdapter.java new file mode 100644 index 000000000..cd14556fa --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityMkrRequestAdapter.java @@ -0,0 +1,52 @@ +package ru.spcex.clearing.gatewayapi.service.adapter; + +import org.springframework.stereotype.Service; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompany; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanyInfo; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanySymbols; +import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerContact; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest; +import ru.spcex.platform.enumeration.CompanySymbol; + +@Service +public class SecurityMkrRequestAdapter { + + public CompanyNewRequest toCompanyRequest(IssuerCompany issuerCompany) { + CompanyNewRequest companyNewRequest = new CompanyNewRequest(); + companyNewRequest.setShortName(issuerCompany.getShortName()); + companyNewRequest.setFullName(issuerCompany.getFullName()); + companyNewRequest.setWorkflowStatus(issuerCompany.getWorkflowStatus()); + companyNewRequest.setCompanySymbol(CompanySymbol.UUID.getKey()); + companyNewRequest.setCompanySymbolValue(issuerCompany.getId().toString()); + return companyNewRequest; + } + + public CompanyInfoUpdateRequest toCompanyInfoRequest(IssuerCompanyInfo issuerCompanyInfo) { + CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest(); + companyInfoUpdateRequest.setCountryCode(issuerCompanyInfo.getCountryCode()); + companyInfoUpdateRequest.setLegalKind(issuerCompanyInfo.getLegalKind()); + companyInfoUpdateRequest.setOrganizationType(issuerCompanyInfo.getOrganizationType()); + companyInfoUpdateRequest.setResidence(issuerCompanyInfo.getResidence()); + companyInfoUpdateRequest.setShortNameEng(issuerCompanyInfo.getShortNameEng()); + companyInfoUpdateRequest.setFullNameEng(issuerCompanyInfo.getFullNameEng()); + return companyInfoUpdateRequest; + } + + public CompanySymbolNewRequest toCompanySymbolRequest(IssuerCompanySymbols issuerCompanySymbols) { + CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest(); + companySymbolNewRequest.setCompanySymbol(issuerCompanySymbols.getCompanySymbol()); + companySymbolNewRequest.setCompanySymbolValue(issuerCompanySymbols.getCompanySymbolValue()); + return companySymbolNewRequest; + } + + public ContactNewRequest toContactRequest(IssuerContact issuerContact) { + ContactNewRequest contactNewRequest = new ContactNewRequest(); + contactNewRequest.setContactType(issuerContact.getContactType()); + contactNewRequest.setContactValue(issuerContact.getContactValue()); + return contactNewRequest; + } + +} diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ListingFondRequestTest.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ListingFondRequestTest.java deleted file mode 100644 index d4a93dea6..000000000 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ListingFondRequestTest.java +++ /dev/null @@ -1,176 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.listings_fond; - - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity; -import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity; -import ru.spcex.clearing.gatewayapi.config.ProcessorConfiguration; -import ru.spcex.clearing.gatewayapi.config.TestConfiguration; -import ru.spcex.clearing.gatewayapi.logic.Processor; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.clearing.test.config.ImdgTestConfig; -import ru.spcex.clearing.test.config.KafkaTestConfig; -import ru.spcex.platform.enumeration.CompanySymbol; -import ru.spcex.platform.enumeration.InstrumentType; -import ru.spcex.platform.enumeration.WorkflowStatus; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -// Суть теста: прогоняем через pipeline запрос и в mockSender ловим переданные company и security сервисам запросы -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = { - ProcessorConfiguration.class, - TestConfiguration.class, - ImdgTestConfig.class, - KafkaTestConfig.class}) -class ListingFondRequestTest implements InitializingBean { - - // В этот объект будут помещаться отправленные сообщения - final Map> sentMessages = new HashMap<>(); - @Autowired - @Qualifier("testObjectMapper") - ObjectMapper objectMapper; - @Autowired - Processor processor; - @Autowired - ImdgProvider imdgProvider; - KafkaSender mockSender = Mockito.mock(KafkaSender.class); - Imdg companyImdg; - Imdg companySymbolsImdg; - Imdg fixedIncomeSecurityImdg; - Imdg equitySecurityImdg; - -// @Test -// public void test() throws IOException { -// File requestFile = new File(getClass().getClassLoader().getResource("requests/testFondSecuritiesRequest_1.json").getFile()); -// -// FondListingsRequest fondListingsRequest = objectMapper.readValue(requestFile, FondListingsRequest.class); -// FondListingsRequestParam param = new FondListingsRequestParam(fondListingsRequest); -// -// ProcessResult result = processor.process(param); -// -// // Проверяем только количество запросов, поскольку выполнение этих запросов зависит от security и company модулей -// // todo upd: поскольку будет производиться переход к полностью асинхронному запросам, этот тест возможно стоит тоже поправить -// Assertions.assertNull(result.getError()); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_NEW).size(), 1); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_INFO_UPDATE).size(), 2); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_UPDATE).size(), 1); -// Assertions.assertEquals(sentMessages.get(Consts.LISTING_NEW).size(), 4); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COUPON_PERIOD_NEW).size(), 1); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_SYMBOL_NEW).size(), 2); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE).size(), 2); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_CONTACT_NEW).size(), 2); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE).size(), 2); -// Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_EQUITY_SECURITY_UPDATE).size(), 2); -// } - - @Override - public void afterPropertiesSet() throws Exception { - companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class); - equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class); - - Company existCompany1 = new Company(); - CompanySymbols existCompany1Symbols = new CompanySymbols(); - Long company1Id = companyImdg.insert(existCompany1); - existCompany1Symbols.setCompanySymbol(CompanySymbol.UUID.getKey()); - existCompany1Symbols.setCompanySymbolValue("ef47f76c-bcea-11ed-afa1-0242ac120000"); - existCompany1Symbols.setCompanyId(company1Id); - companySymbolsImdg.insert(existCompany1Symbols); - - Company existCompany2 = new Company(); - CompanySymbols existCompany2Symbols = new CompanySymbols(); - Long company2Id = companyImdg.insert(existCompany2); - existCompany2Symbols.setCompanySymbol(CompanySymbol.UUID.getKey()); - existCompany2Symbols.setCompanySymbolValue("ef47f76c-bcea-11ed-afa1-0242ac120001"); - existCompany2Symbols.setCompanyId(company2Id); - companySymbolsImdg.insert(existCompany2Symbols); - - FixedIncomeSecurity fixedIncomeSecurity_1 = new FixedIncomeSecurity(); - fixedIncomeSecurity_1.setInstrumentType(InstrumentType.BOND.getKey()); - fixedIncomeSecurity_1.setSecuritySymbol("VTB_001P-06 TEST 3"); - fixedIncomeSecurity_1.setWorkflowStatus(WorkflowStatus.Active.getKey()); - fixedIncomeSecurity_1.setShortName("Биржевые облигации ВТБ TEST 3"); - fixedIncomeSecurityImdg.insert(fixedIncomeSecurity_1); - - EquitySecurity equitySecurity_1 = new EquitySecurity(); - equitySecurity_1.setInstrumentType(InstrumentType.EQTY.getKey()); - equitySecurity_1.setSecuritySymbol("VTB_001P-06 TEST 4"); - equitySecurity_1.setWorkflowStatus(WorkflowStatus.Active.getKey()); - equitySecurity_1.setShortName("Биржевые облигации ВТБ TEST 4"); - equitySecurityImdg.insert(equitySecurity_1); - - // мок kafkaSender, чтобы он лишь сохранял в мапу переданные аргументы - Mockito - .when(mockSender.sendRequestToQueue(Mockito.any(), Mockito.any())) - .thenAnswer( - invocation -> { - String destination = invocation.getArgument(0); - Object invocationArgument = invocation.getArgument(1); - if (invocationArgument instanceof CompanyNewRequest newRequest) { - Company company = new Company(); - company.setShortName(newRequest.getShortName()); - company.setFullName(newRequest.getFullName()); - company.setWorkflowStatus(newRequest.getWorkflowStatus()); - companyImdg.insert(company); - } - if (invocationArgument instanceof FixedIncomeSecurityNewRequest newRequest) { - FixedIncomeSecurity fixedIncomeSecurity = new FixedIncomeSecurity(); - fixedIncomeSecurity.setInstrumentType(newRequest.getInstrumentType()); - fixedIncomeSecurity.setSecuritySymbol(newRequest.getSecuritySymbol()); - fixedIncomeSecurity.setWorkflowStatus(newRequest.getWorkflowStatus()); - fixedIncomeSecurity.setShortName(newRequest.getShortName()); - fixedIncomeSecurityImdg.insert(fixedIncomeSecurity); - } - if (invocationArgument instanceof EquitySecurityNewRequest newRequest) { - EquitySecurity equitySecurity = new EquitySecurity(); - equitySecurity.setInstrumentType(newRequest.getInstrumentType()); - equitySecurity.setSecuritySymbol(newRequest.getSecuritySymbol()); - equitySecurity.setWorkflowStatus(newRequest.getWorkflowStatus()); - equitySecurity.setShortName(newRequest.getShortName()); - equitySecurityImdg.insert(equitySecurity); - } - - List currentMessageList = sentMessages.computeIfAbsent(destination, k -> new ArrayList<>()); - currentMessageList.add(invocationArgument); - - return 0L; - } - ); - - // в pipeline для processor заменяем стадии с отправкой сообщений - List> pipeline = processor.getPipeline(); - for (Stage stage : pipeline) { - if (stage instanceof SendMessageToSecurityServiceWithFondSecurities) { - int index = pipeline.indexOf(stage); - Stage mockedStage = new SendMessageToSecurityServiceWithFondSecurities(mockSender, imdgProvider); - pipeline.set(index, mockedStage); - } - if (stage instanceof SendMessageToCompanyServiceWithIssuerCompanies) { - int index = pipeline.indexOf(stage); - Stage mockedStage = new SendMessageToCompanyServiceWithIssuerCompanies(mockSender, imdgProvider); - pipeline.set(index, mockedStage); - } - } - } -} \ No newline at end of file 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 dd0b4cb30..ef1ba54c3 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 @@ -43,7 +43,8 @@ public interface Consts { String DESTINATION_PLANNER_UPDATE = "planner-update"; String DESTINATION_PLANNER_DELETE = "planner-delete"; - String DESTINATION_COMPANY_MULTIREQUEST = "company-multirequest-new"; + String DESTINATION_COMPANY_GATEWAY_REQUEST = "company-gateway-request"; + String DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST = "company-issuer-company-gateway-request"; String DESTINATION_SECURITY_MULTIREQUEST = "company-multirequest-new"; String DESTINATION_COMPANY_NEW = "company-new"; String DESTINATION_COMPANY_DELETE = "company-delete"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/EquitySecurityGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/EquitySecurityGatewayRequest.java index 71b1b07c9..fce6825ba 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/EquitySecurityGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/EquitySecurityGatewayRequest.java @@ -2,7 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.company; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest; -public class EquitySecurityGatewayRequest extends SecurityGatewayRequest { +public class EquitySecurityGatewayRequest extends SecurityFondGatewayRequest { public EquitySecurityGatewayRequest(EquitySecurityNewRequest request) { super(request); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/FixedIncomeGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/FixedIncomeGatewayRequest.java index a4dd23060..f84f41dbf 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/FixedIncomeGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/FixedIncomeGatewayRequest.java @@ -2,7 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.company; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest; -public class FixedIncomeGatewayRequest extends SecurityGatewayRequest { +public class FixedIncomeGatewayRequest extends SecurityFondGatewayRequest { public FixedIncomeGatewayRequest(FixedIncomeSecurityNewRequest request) { super(request); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityFondGatewayRequest.java similarity index 92% rename from platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityGatewayRequest.java rename to platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityFondGatewayRequest.java index 0b3c7080c..358e50a34 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityFondGatewayRequest.java @@ -10,7 +10,7 @@ import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol; import java.util.ArrayList; import java.util.List; -public abstract class SecurityGatewayRequest { +public abstract class SecurityFondGatewayRequest { @JsonProperty private String uuid; @@ -23,7 +23,7 @@ public abstract class SecurityGatewayRequest fixedIncomesCashFlow = new ArrayList<>(); - public SecurityGatewayRequest(T security) { + public SecurityFondGatewayRequest(T security) { this.security = security; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityMkrGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityMkrGatewayRequest.java new file mode 100644 index 000000000..92a6cf7aa --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/SecurityMkrGatewayRequest.java @@ -0,0 +1,58 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.ArrayList; +import java.util.List; + +public class SecurityMkrGatewayRequest { + @JsonProperty + private String uuid; + @JsonProperty + private CompanyNewRequest companyNewRequest; + private CompanyInfoUpdateRequest companyInfoUpdateRequest; + @JsonProperty + private List companySymbolNewRequests = new ArrayList<>(); + @JsonProperty + private List contactNewRequests = new ArrayList<>(); + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public CompanyNewRequest getCompanyNewRequest() { + return companyNewRequest; + } + + public void setCompanyNewRequest(CompanyNewRequest companyNewRequest) { + this.companyNewRequest = companyNewRequest; + } + + public CompanyInfoUpdateRequest getCompanyInfoUpdateRequest() { + return companyInfoUpdateRequest; + } + + public void setCompanyInfoUpdateRequest(CompanyInfoUpdateRequest companyInfoUpdateRequest) { + this.companyInfoUpdateRequest = companyInfoUpdateRequest; + } + + public List getCompanySymbolNewRequests() { + return companySymbolNewRequests; + } + + public void setCompanySymbolNewRequests(List companySymbolNewRequests) { + this.companySymbolNewRequests = companySymbolNewRequests; + } + + public List getContactNewRequests() { + return contactNewRequests; + } + + public void setContactNewRequests(List contactNewRequests) { + this.contactNewRequests = contactNewRequests; + } +}