From 501a160f142cda178dbf49d725471c46ee36bd63 Mon Sep 17 00:00:00 2001 From: akulikov Date: Sun, 4 Jun 2023 14:24:02 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-301 --- ...geToCompanyServiceWithMemberCompanies.java | 6 ++- ...geToCompanyServiceWithIssuerCompanies.java | 20 ++++++--- ...geToSecurityServiceWithFondSecurities.java | 8 +++- ...sageToSecurityServiceWithMMSecurities.java | 4 ++ .../gatewayapi/service/GatewayService.java | 34 ++++++++++++-- .../listings_fond/ListingFondRequestTest.java | 45 +++++-------------- 6 files changed, 68 insertions(+), 49 deletions(-) diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/SendMessageToCompanyServiceWithMemberCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/SendMessageToCompanyServiceWithMemberCompanies.java index 80e8a5354..f095ea803 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/SendMessageToCompanyServiceWithMemberCompanies.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/SendMessageToCompanyServiceWithMemberCompanies.java @@ -22,6 +22,10 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; import java.util.List; import java.util.Map; +/** + * Отправка сообщения к company-service на создание/обновление company + * todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer + */ public class SendMessageToCompanyServiceWithMemberCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -61,7 +65,7 @@ public class SendMessageToCompanyServiceWithMemberCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -51,7 +55,7 @@ public class SendMessageToCompanyServiceWithIssuerCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -96,7 +100,7 @@ public class SendMessageToSecurityServiceWithFondSecurities extends Stage { private final KafkaSender kafkaSender; 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 08b3a9cfe..21f773059 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 @@ -5,18 +5,25 @@ import org.apache.kafka.clients.producer.Producer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import ru.spcex.clearing.gatewayapi.config.GatewayApiSettings; import ru.spcex.clearing.gatewayapi.config.InboundServerSettings; +import ru.spcex.clearing.gatewayapi.request.InboundRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.cud.gateway.GatewayTaskRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.util.security.UserRoleVerification; +import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.enumeration.Task; +import java.time.Instant; import java.util.Map; +import java.util.UUID; @Service public class GatewayService extends QueueConsumer implements InitializingBean { @@ -57,7 +64,15 @@ public class GatewayService extends QueueConsumer implements InitializingBean { logUnknownProperties(userRequest); String url = formingInboundUrl(inboundServerSettings.getPathLOCM()); - String response = restTemplate.getForObject(url, String.class); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + InboundRequest inboundRequest = new InboundRequest(); + inboundRequest.setId(UUID.randomUUID()); + inboundRequest.setType("MEMBER_ON_DEMAND"); + inboundRequest.setDatetime(Instant.now()); + HttpEntity request = new HttpEntity<>(inboundRequest, httpHeaders); + + String response = restTemplate.postForObject(url, request, String.class); log.debug("LOCM task complete, response: {}", response); return null; @@ -71,10 +86,21 @@ public class GatewayService extends QueueConsumer implements InitializingBean { logUnknownProperties(userRequest); - String url = formingInboundUrl(inboundServerSettings.getPathLOSC()); - String response = restTemplate.getForObject(url, String.class); + String url = formingInboundUrl(inboundServerSettings.getPathLOCM()); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + InboundRequest inboundRequest = new InboundRequest(); + inboundRequest.setId(UUID.randomUUID()); + inboundRequest.setType("ON_DEMAND"); + // todo здесь возникла проблема: место обработки LOCM одно, но в этом месте могут быть сформированы запросы с разными + // section, нужно уточнить как определять какой именно section отправлять в запросе + inboundRequest.setSection(Section.FOND.getKey()); + inboundRequest.setDatetime(Instant.now()); + HttpEntity request = new HttpEntity<>(inboundRequest, httpHeaders); - log.debug("LOSC task complete, response: {}", response); + String response = restTemplate.postForObject(url, request, String.class); + + log.debug("LOCM task complete, response: {}", response); return null; } 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 index 09eb95410..0c4e96edb 100644 --- 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 @@ -76,17 +76,18 @@ class ListingFondRequestTest implements InitializingBean { ProcessResult result = processor.process(param); // Проверяем только количество запросов, поскольку выполнение этих запросов зависит от security и company модулей + // todo upd: поскольку будет производиться переход к полностью асинхронному запросам, этот тест возможно стоит тоже поправить Assertions.assertNull(result.getError()); - Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_NEW).size(), 2); - Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_COMPANY_UPDATE).size(), 2); + 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(), 4); + 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_NEW).size(), 1); - Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE).size(), 1); - Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_EQUITY_SECURITY_NEW).size(), 1); - Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_EQUITY_SECURITY_UPDATE).size(), 1); + Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE).size(), 2); + Assertions.assertEquals(sentMessages.get(Consts.DESTINATION_EQUITY_SECURITY_UPDATE).size(), 2); } @Override @@ -112,13 +113,6 @@ class ListingFondRequestTest implements InitializingBean { existCompany2Symbols.setCompanyId(company2Id); companySymbolsImdg.insert(existCompany2Symbols); - /* - "instrumentType", security.getInstrumentType(), - "securitySymbol", security.getSecuritySymbol(), - "workflowStatus", security.getWorkflowStatus(), - "shortName", security.getShortName() - */ - FixedIncomeSecurity fixedIncomeSecurity_1 = new FixedIncomeSecurity(); fixedIncomeSecurity_1.setInstrumentType(InstrumentType.BOND.getKey()); fixedIncomeSecurity_1.setSecuritySymbol("VTB_001P-06 TEST 3"); @@ -136,26 +130,6 @@ class ListingFondRequestTest implements InitializingBean { // мок kafkaSender, чтобы он лишь сохранял в мапу переданные аргументы Mockito .when(mockSender.sendRequestToQueue(Mockito.any(), Mockito.any())) - .thenAnswer( - invocation -> { - String destination = invocation.getArgument(0); - Object message = invocation.getArgument(1); - List currentMessageList = sentMessages.computeIfAbsent(destination, k -> new ArrayList<>()); - currentMessageList.add(message); - if (message instanceof CompanyNewRequest companyNewRequest) { - Company company = new Company(); - company.setFullName(companyNewRequest.getFullName()); - company.setShortName(companyNewRequest.getShortName()); - company.setWorkflowStatus(companyNewRequest.getWorkflowStatus()); - Long companyId = companyImdg.insert(company); - return companyId; - } - - return 0L; - } - ); - Mockito - .when(mockSender.sendToQueueWaitForAnswer(Mockito.any(), Mockito.any())) .thenAnswer( invocation -> { String destination = invocation.getArgument(0); @@ -186,7 +160,8 @@ class ListingFondRequestTest implements InitializingBean { List currentMessageList = sentMessages.computeIfAbsent(destination, k -> new ArrayList<>()); currentMessageList.add(invocationArgument); - return "ok"; + + return 0L; } );