From 42c0b6b9d132af041bb2d9927149b53d20819761 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 1 Sep 2025 19:50:56 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-901 --- .../validation/CompanyValidationConfig.java | 11 ++++++++-- .../company/service/CompanyInfoService.java | 18 ++++++++++++----- .../company/service/MultiCompanyService.java | 5 +---- .../adapter/CompanyRequestAdapter.java | 20 +++++++++++-------- .../businessevent/CompanyHistoryMapStore.java | 2 +- .../imdg/businessobject/CompanyMapStore.java | 2 +- .../cud/company/CompanyInfoUpdateRequest.java | 10 ++++++++++ 7 files changed, 47 insertions(+), 21 deletions(-) diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java index d6d5ef4fe..4fa70c837 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java @@ -158,13 +158,20 @@ public class CompanyValidationConfig { CorporationSoleTypeDictionary.class, CompanyErrors.RequiredFieldEmpty, CompanyErrors.DictionaryNotFound, false), - DictionaryPresentRule.instance("CountryCode", - CompanyInfoUpdateRequest::getCountryCode, + IdPresentRule.instance("CountryCodeId", + CompanyInfoUpdateRequest::getCountryCodeId, IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class, CompanyErrors.RequiredFieldEmpty, CompanyErrors.DictionaryNotFound, false), + DictionaryPresentRule.instance("CountryCode", + CompanyInfoUpdateRequest::getCountryCode, + IMDGDistributedNames.Map_CountryCodeDictionary, + CountryCodeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), DictionaryPresentRule.instance("ProfessionalSign", CompanyInfoUpdateRequest::getProfessionalSign, IMDGDistributedNames.Map_AllowedDictionary, diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java index fccbe1798..13b4362a5 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java @@ -1,5 +1,8 @@ package ru.spcex.clearing.company.service; +import java.time.Instant; +import java.util.Objects; +import java.util.function.Function; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; @@ -11,6 +14,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.profile.CompanyInfo; +import ru.clearing.platform.dictionary.CountryCodeDictionary; import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; @@ -27,15 +31,12 @@ import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.utils.error.ValidationException; import ru.spcex.platform.utils.validation.IValidator; -import java.time.Instant; -import java.util.Objects; -import java.util.function.Function; - @Service public class CompanyInfoService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final ImdgProvider imdgProvider; private final Imdg companyMap; + private final Imdg countryCodeDictionaryImdg; protected final CompanyService companyService; private final RequestHelper requestHelper; private final ValidationHelper validationHelper; @@ -53,6 +54,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea this.companyService = companyService; this.imdgProvider = imdgProvider; this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.countryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class); this.validationHelper = validationHelper; this.userRoleVerification = userRoleVerification; this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator; @@ -87,6 +89,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea log.trace("Company {} not found", req.getId()); return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId()); } + company.setUpdated(Instant.now()); if (StringUtils.isNotEmpty(req.getShortName())) company.setShortName(req.getShortName()); @@ -94,7 +97,12 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea company.setFullName(req.getFullName()); CompanyInfo companyInfo = company.getProfile(); - companyInfo.setCountryCode(req.getCountryCode()); + String countryCode = req.getCountryCode(); + if (req.getCountryCodeId() != null) { + CountryCodeDictionary countryCodeDictionary = countryCodeDictionaryImdg.getSingleObjectByID(req.getCountryCodeId()); + countryCode = countryCodeDictionary.getCode(); + } + companyInfo.setCountryCode(countryCode); companyInfo.setProfessionalSign(req.getProfessionalSign()); companyInfo.setLegalKind(req.getLegalKind()); companyInfo.setOrganizationType(req.getOrganizationType()); 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 4e03ee945..22dc30751 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 @@ -161,10 +161,7 @@ public class MultiCompanyService } } - List companySymbolNewRequests = req.getCompanySymbols().stream() - .filter(companySymbolNewRequest -> !companySymbolNewRequest.getCompanySymbol().equals("TAXN")) - .toList(); - for (CompanySymbolNewRequest partRequest : companySymbolNewRequests) { + for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) { CompanySymbols existSymbol = findCompanySymbols(partRequest); if (existSymbol == null) { log.trace("For company[{}] do new companySymbol", companyId); 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 4b93c8f8a..6ec2e0833 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 @@ -44,17 +44,21 @@ public class CompanyRequestAdapter { public CompanyInfoUpdateRequest toCompanyInfoRequest(CompanyInfo companyInfo) { CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest(); - String resCountryCode; - switch (companyInfo.getCountryCode()) { - case 643 -> resCountryCode = "RUS"; - case 998 -> resCountryCode = "WRLD"; - default -> resCountryCode = "XTRN"; - } - companyInfoUpdateRequest.setCountryCode(resCountryCode); + Long counterCodeId = Long.valueOf(companyInfo.getCountryCode()); + companyInfoUpdateRequest.setCountryCodeId(counterCodeId); companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign()); companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind()); companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType()); - companyInfoUpdateRequest.setResidence(companyInfo.getResidence()); + + String residence; + if (counterCodeId == 643L) { + residence = "RUS"; + } else if (counterCodeId == 998L) { + residence = "WRLD"; + } else { + residence = "XTRN"; + } + companyInfoUpdateRequest.setResidence(residence); return companyInfoUpdateRequest; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java index 980680214..f21b477c7 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java @@ -81,7 +81,7 @@ public class CompanyHistoryMapStore extends BusinessEventMapStore { } } batchInsertUpdate(insertStatement, batchArgs); - batchInsertUpdate(insertCompanyInfoStatement, batchCompanyInfoArgs); + batchInsertUpdate(insertCompanyInfoStatement, batchCompanyInfoArgs, "COMPANY_INFO", getFieldsForCompanyInfo()); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java index b465ec317..307a27bd3 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java @@ -16,6 +16,8 @@ public class CompanyInfoUpdateRequest { @JsonProperty private String countryCode; @JsonProperty + private Long countryCodeId; + @JsonProperty private String description; @JsonProperty private String professionalSign; @@ -66,6 +68,14 @@ public class CompanyInfoUpdateRequest { this.countryCode = countryCode; } + public Long getCountryCodeId() { + return countryCodeId; + } + + public void setCountryCodeId(Long countryCodeId) { + this.countryCodeId = countryCodeId; + } + public String getDescription() { return description; }