From 343277caa371c24ec6078ec51fe0e9a5592efaa3 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 12 Jul 2023 18:48:16 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3=D0=B8=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B9=20=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...learingMemberCategoryValidationConfig.java | 7 +-- .../ClearingMemberCategoryService.java | 5 +- .../company/service/CompanyService.java | 28 ++++++----- .../company/service/MultiCompanyService.java | 46 +++++++++++++++++-- .../gatewayapi/service/SecurityService.java | 28 +++++++---- .../adapter/CompanyRequestAdapter.java | 8 ++++ .../adapter/SecurityRequestAdapter.java | 4 +- .../service/processor/CompanyProcessor.java | 8 ++-- .../service/cud/GatewaySecurityService.java | 19 ++------ .../cud/company/CompanyGatewayRequest.java | 9 ++++ 10 files changed, 108 insertions(+), 54 deletions(-) diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ClearingMemberCategoryValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ClearingMemberCategoryValidationConfig.java index 23270a5d8..d9366cb2d 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ClearingMemberCategoryValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ClearingMemberCategoryValidationConfig.java @@ -2,8 +2,8 @@ package ru.spcex.clearing.company.config.validation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; +import ru.clearing.classes.statics.data.company.Company; import ru.clearing.platform.dictionary.ClearingCategoryDictionary; import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -11,10 +11,8 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest; import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; -import ru.spcex.clearing.validation.common.rules.EnumPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.platform.classes.base.SpcexObjectBase; -import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -44,8 +42,7 @@ public class ClearingMemberCategoryValidationConfig { IMDGDistributedNames.Map_Company, Company.class, CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound, - company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled), + CompanyErrors.CompanyNotFound), DictionaryPresentRule.instance("clearingMemberCategory", ClearingMemberCategoryNewRequest::getClearingMemberCategory, IMDGDistributedNames.Map_ClearingCategoryDictionary, diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java index dc5fa5e39..af6ca5c70 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java @@ -28,11 +28,8 @@ import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.validation.IValidator; -import java.util.Objects; import java.util.function.Function; -import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; - @Service public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -85,7 +82,7 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init init(); } - private RequestInfoUpdate clearingMemberCategoryNew(BaseRequest userRequest) { + protected RequestInfoUpdate clearingMemberCategoryNew(BaseRequest userRequest) { log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId()); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java index 50d275afa..427df3c9b 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java @@ -21,7 +21,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; -import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.validation.common.ValidationHelper; @@ -66,11 +65,11 @@ public class CompanyService extends QueueConsumer implements InitializingBean { ValidationHelper validationHelper, UserRoleVerification userRoleVerification, @Qualifier("companyNewRequestValidator") - Function companyNewRequestValidator, + Function companyNewRequestValidator, @Qualifier("companyUpdateRequestValidator") - Function companyUpdateRequestValidator, + Function companyUpdateRequestValidator, @Qualifier("CompanyDeleteRequestValidator") - Function companyDeleteRequestValidator, + Function companyDeleteRequestValidator, CompanySymbolService companySymbolService, AccountNotificationHelper accountNotification, RelationService relationService) { @@ -127,7 +126,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean { } create(companyNewRequest); } - case UPDATE -> update((CompanyNewRequest) request.getRequestPayload()); + case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true); } return requestInfoUpdate; } @@ -144,7 +143,11 @@ public class CompanyService extends QueueConsumer implements InitializingBean { company.setTradingCode(companyNewRequest.getTradingCode()); company.setClearingCode(companyNewRequest.getClearingCode()); company.setRegistrationCode(companyNewRequest.getRegistrationCode()); - company.setWorkflowStatus(companyNewRequest.getWorkflowStatus()); + if (companyNewRequest.getWorkflowStatus() != null) { + company.setWorkflowStatus(companyNewRequest.getWorkflowStatus()); + } else { + company.setWorkflowStatus(WorkflowStatus.Active.getKey()); + } fillNewCompanyInfo(company, companyNewRequest); ImdgTransaction transaction = imdgProvider.newTransaction(); @@ -178,13 +181,14 @@ public class CompanyService extends QueueConsumer implements InitializingBean { return company.getId(); } - public synchronized void update(CompanyNewRequest updateRequest) throws ValidationException { - IValidator validator = companyUpdateRequestValidator.apply(updateRequest); - Optional error = validator.tillFirstError(); - if (error.isPresent()) { - throw new ValidationException(error.get()); + public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException { + if (validationIsEnable) { + IValidator validator = companyUpdateRequestValidator.apply(updateRequest); + Optional error = validator.tillFirstError(); + if (error.isPresent()) { + throw new ValidationException(error.get()); + } } - ImdgTransaction transaction = imdgProvider.newTransaction(); transaction.beginTransaction(); boolean txOk = false; 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 244eaeb0f..d6ecd0ac4 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 @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.profile.Contact; @@ -54,12 +55,14 @@ public class MultiCompanyService final ContactService contactService; final AccountNotificationHelper accountNotification; final RelationService relationService; + final ClearingMemberCategoryService clearingMemberCategoryService; final ImdgProvider imdgProvider; final Imdg companyIMap; final Imdg companySymbolsImdg; final Imdg profileDocumentImdg; final Imdg contactImdg; + final Imdg clearingMemberCategoryImdg; @Autowired public MultiCompanyService(Consumer kafkaQueue, Producer kafkaProducer, @@ -74,8 +77,8 @@ public class MultiCompanyService AccountNotificationHelper accountNotification, RelationService relationService, ValidationHelper validationHelper, - UserRoleVerification userRoleVerification - ) { + UserRoleVerification userRoleVerification, + ClearingMemberCategoryService clearingMemberCategoryService) { super(kafkaQueue, kafkaProducer); this.imdgProvider = imdgProvider; this.requestHelper = requestHelper.setLogger(log); @@ -92,6 +95,8 @@ public class MultiCompanyService companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + this.clearingMemberCategoryService = clearingMemberCategoryService; } @Override @@ -123,7 +128,7 @@ public class MultiCompanyService fillCompanyId(req, companyId); } else { fillCompanyId(req, companyId); - companyService.update(req.getCompany()); + companyService.update(req.getCompany(), false); } RequestInfoUpdate replyI; @@ -171,6 +176,20 @@ public class MultiCompanyService validateReply(companyId, "contactUpdate", replyI); } } + + for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) { + ClearingMemberCategory existCategory = findCategory(partRequest); + if (existCategory == null) { + log.trace("For company[{}] do new category", companyId); + replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW)); + validateReply(companyId, "contactNew", replyI); + } else { + log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId()); + ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest); + replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE)); + validateReply(companyId, "categoryUpdate", replyI); + } + } txOk = true; } catch (ValidationException vex) { log.error("For companyId={} error: {}", companyId, ExceptionUtils.getStackTrace(vex)); @@ -229,6 +248,17 @@ public class MultiCompanyService return allCS.iterator().next(); } + ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) { + Map> query = new HashMap<>(); + query.put("companyId", partRequest.getCompanyId()); + Collection allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query); + if (allCS.isEmpty()) + return null; + if (allCS.size() > 1) + log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query); + return allCS.iterator().next(); + } + ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) { ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest(); r.setId(existDocument.getId()); @@ -264,6 +294,13 @@ public class MultiCompanyService return r; } + ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) { + ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest(); + r.setId(existCategory.getId()); + r.setClearingMemberCategory(partRequest.getClearingMemberCategory()); + return r; + } + Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr) { CompanySymbols companySymbol = null; if (StringUtils.isNotEmpty(uuid)) { @@ -339,5 +376,8 @@ public class MultiCompanyService for (ContactNewRequest c : req.getContacts()) { c.setCompanyId(companyId); } + for (ClearingMemberCategoryNewRequest c : req.getCategories()) { + c.setCompanyId(companyId); + } } } 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 9b3902494..3685c037d 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 @@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityFondGatew 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 ru.spcex.platform.utils.log.ExceptionUtils; import java.util.List; import java.util.UUID; @@ -34,6 +35,7 @@ public class SecurityService { public void sendRequest(FondListingsRequest request) { List securityList = request.getSecurities(); for (FondSecurity security : securityList) { + log.debug("process security uuid: {}", security.getId()); UUID securityId = security.getId(); log.debug("Grouping by securityId: {}", securityId); List incomeListings = groupByCompanyId(request.getListingList(), securityId); @@ -48,16 +50,22 @@ public class SecurityService { map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList(); SecurityFondGatewayRequest securityGatewayRequest; - if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { - FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security); - securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest); - fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_BOND_GATEWAY, securityGatewayRequest); - } else { - EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security); - securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest); - fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); - kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest); + try { + if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { + FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security); + securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest); + fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); + log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY"); + kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_BOND_GATEWAY, securityGatewayRequest); + } else { + EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security); + securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest); + fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); + log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY"); + kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest); + } + } catch (Throwable e) { + log.error("{}", ExceptionUtils.getStackTrace(e)); } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java index f49255a17..93b5ed1f8 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java @@ -5,6 +5,7 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.company.*; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.*; import ru.spcex.platform.enumeration.CompanySymbol; +import ru.spcex.platform.enumeration.WorkflowStatus; @Service public class CompanyRequestAdapter { @@ -19,6 +20,7 @@ public class CompanyRequestAdapter { companyNewRequest.setClearingCode(company.getClearingCode()); companyNewRequest.setRegistrationCode(company.getRegistrationCode()); companyNewRequest.setInitiatorCode(company.getInitiatorCode()); + companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey()); return companyNewRequest; } @@ -64,4 +66,10 @@ public class CompanyRequestAdapter { clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId()); return clientCodeNewRequest; } + + public ClearingMemberCategoryNewRequest toCategoryRequest(CompanyClearingCategory companyClearingCategory) { + ClearingMemberCategoryNewRequest categoryNewRequest = new ClearingMemberCategoryNewRequest(); + categoryNewRequest.setClearingMemberCategory(companyClearingCategory.getCategory()); + return categoryNewRequest; + } } 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/SecurityRequestAdapter.java index 2cbc428f3..8e197ba44 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/SecurityRequestAdapter.java @@ -20,7 +20,9 @@ public class SecurityRequestAdapter { fixedIncomeSecurityNewRequest.setNominalValue(fondSecurity.getNominalValue()); fixedIncomeSecurityNewRequest.setNominalCurrency(fondSecurity.getNominalCurrency()); fixedIncomeSecurityNewRequest.setMaturityDate(fondSecurity.getMaturityDate()); - fixedIncomeSecurityNewRequest.setCouponFrequency(fondSecurity.getCouponFrequency().longValue()); + if (fondSecurity.getCouponFrequency() != null) { + fixedIncomeSecurityNewRequest.setCouponFrequency(fondSecurity.getCouponFrequency().longValue()); + } fixedIncomeSecurityNewRequest.setShortNameEng(fondSecurity.getShortNameEng()); fixedIncomeSecurityNewRequest.setFullNameEng(fondSecurity.getFullNameEng()); fixedIncomeSecurityNewRequest.setWorkflowStatus(fondSecurity.getWorkflowStatus()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/CompanyProcessor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/CompanyProcessor.java index 823ae9bd8..eead7f7ec 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/CompanyProcessor.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/CompanyProcessor.java @@ -8,10 +8,7 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.company.*; import ru.spcex.clearing.gatewayapi.service.adapter.CompanyRequestAdapter; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest; -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.ProfileDocumentNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.*; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import java.util.List; @@ -50,6 +47,8 @@ public class CompanyProcessor { map(companyRequestAdapter::toProfileDocumentRequest).toList(); List clientCodeNewRequests = clients.stream(). map(companyRequestAdapter::toClientRequest).toList(); + List categories = companyClearingCategories.stream(). + map(companyRequestAdapter::toCategoryRequest).toList(); CompanyGatewayRequest companyGatewayRequest = new CompanyGatewayRequest(); companyGatewayRequest.setCompany(companyRequestAdapter.toCompanyRequest(memberCompany)); @@ -62,6 +61,7 @@ public class CompanyProcessor { companyGatewayRequest.setContacts(contactNewRequests); companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests); companyGatewayRequest.setClientCodes(clientCodeNewRequests); + companyGatewayRequest.setCategories(categories); kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest); } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java index 2619be4f6..055f86433 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.securities.service.cud; +import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; import org.slf4j.Logger; @@ -150,6 +151,9 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } T findSecurityBySecuritySymbol(Imdg imdg, String securitySymbol) { + if (StringUtils.isEmpty(securitySymbol)) { + return null; + } Collection securities = imdg.getCollectionObjectsByFieldValues( Map.of("securitySymbol", securitySymbol) ); @@ -194,21 +198,6 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest); } } - if (InstrumentType.EQTY.equalsByKey(req.getSecurityType())) { - EquitySecurityGatewayRequest equitySecurityGatewayRequest = (EquitySecurityGatewayRequest) req; - EquitySecurityNewRequest equityRequest = equitySecurityGatewayRequest.getSecurity(); - equityRequest.setIssuerId(companyId); - log.trace("EquitySecurityNewRequest - FOND"); - String securitySymbol = equityRequest.getSecuritySymbol(); - security = findSecurityBySecuritySymbol(equitySecurityImdg, securitySymbol); - - if (security == null) { - security = equitySecurityService.newEquity0(equityRequest); - } else { - EquitySecurityUpdateRequest updateRequest = toUpdateRequest(security, equityRequest); - security = equitySecurityService.updateEquity0(updateRequest); - } - } } catch (ValidationException expected) { log.warn("Error create or update issue: {}", expected.toString()); return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyGatewayRequest.java index 4441eef1c..a42072103 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyGatewayRequest.java @@ -22,6 +22,7 @@ public class CompanyGatewayRequest { List contacts = new ArrayList<>(); @JsonProperty List clientCodes = new ArrayList<>(); + List categories = new ArrayList<>(); public String getUuid() { return uuid; @@ -78,4 +79,12 @@ public class CompanyGatewayRequest { public void setClientCodes(List clientCodes) { this.clientCodes = clientCodes; } + + public List getCategories() { + return categories; + } + + public void setCategories(List categories) { + this.categories = categories; + } } From 97322f6e0f63a69697b4175867295f36ec4fc1a8 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 12 Jul 2023 18:56:46 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3=D0=B8=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/cud/GatewaySecurityService.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java index 055f86433..9ea5dfa50 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java @@ -186,6 +186,11 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin if (InstrumentType.BOND.equalsByKey(req.getSecurityType())) { FixedIncomeGatewayRequest fixedIncomeGatewayRequest = (FixedIncomeGatewayRequest) req; FixedIncomeSecurityNewRequest fixedIncomeRequest = fixedIncomeGatewayRequest.getSecurity(); + if (StringUtils.isEmpty(fixedIncomeRequest.getSecuritySymbol())){ + log.warn("Skip creating eqtySecurtity without securityId: uuid: {}", req.getUuid()); + return null; + } + log.debug("Processed request with securitySymbol: {}", fixedIncomeRequest.getSecuritySymbol()); fixedIncomeRequest.setIssuerId(companyId); log.trace("FixedIncomeSecurityNewRequest - BOND"); String securitySymbol = fixedIncomeRequest.getSecuritySymbol(); @@ -198,6 +203,26 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest); } } + if (InstrumentType.EQTY.equalsByKey(req.getSecurityType())) { + EquitySecurityGatewayRequest equitySecurityGatewayRequest = (EquitySecurityGatewayRequest) req; + EquitySecurityNewRequest equityRequest = equitySecurityGatewayRequest.getSecurity(); + if (StringUtils.isEmpty(equityRequest.getSecuritySymbol())){ + log.warn("Skip creating eqtySecurtity without securityId: uuid: {}", req.getUuid()); + return null; + } + log.debug("Processed request with securitySymbol: {}", equityRequest.getSecuritySymbol()); + equityRequest.setIssuerId(companyId); + log.trace("EquitySecurityNewRequest - FOND"); + String securitySymbol = equityRequest.getSecuritySymbol(); + security = findSecurityBySecuritySymbol(equitySecurityImdg, securitySymbol); + + if (security == null) { + security = equitySecurityService.newEquity0(equityRequest); + } else { + EquitySecurityUpdateRequest updateRequest = toUpdateRequest(security, equityRequest); + security = equitySecurityService.updateEquity0(updateRequest); + } + } } catch (ValidationException expected) { log.warn("Error create or update issue: {}", expected.toString()); return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());