From e821423e68043ed0c9ac0547a50bb8f2a8d68ff1 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 7 Apr 2023 18:09:08 +0300 Subject: [PATCH] =?UTF-8?q?company-service=20CompanySymbolValidationConfig?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=BE=20=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanySymbolValidationConfig.java | 5 ++- .../company/service/CompanySymbolService.java | 15 ++++---- ...ySymbolOfSymbolNewRequestNotExistRule.java | 38 +++++++++++++++++++ 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java index 3277c69ef..8c747cfef 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java @@ -7,6 +7,7 @@ import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.platform.dictionary.*; import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.company.validation.CompanySymbolNotExistRule; +import ru.spcex.clearing.company.validation.CompanySymbolOfSymbolNewRequestNotExistRule; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest; @@ -56,8 +57,8 @@ public class CompanySymbolValidationConfig { CompanySymbolDictionary.class, CompanyErrors.RequiredFieldEmpty, CompanyErrors.WrongFieldValue, - false) - // , new CompanySymbolNotExistRule() чтобы применить это правило, необходимо сделать дополнительный тип в его методе + false), + new CompanySymbolOfSymbolNewRequestNotExistRule() ); }; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java index fce285051..85c0469f8 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java @@ -34,7 +34,6 @@ import java.util.function.Function; public class CompanySymbolService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final ImdgProvider imdgProvider; - // private final Imdg companySymbolsMap; private final ImdgId idSequence; protected CompanyService companyService; @@ -105,8 +104,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB transaction.beginTransaction(); boolean txOk = false; try { - Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - companySymbolsMap.update(companySymbols); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbolsTMap.update(companySymbols); try { companyService.updateCompanyBySymbol(transaction, companySymbols); } catch (ClearingBaseException e) { @@ -140,11 +139,11 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB transaction.beginTransaction(); boolean txOk = false; try { - Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - companySymbols = companySymbolsMap.getSingleObjectByID(req.getId()); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId()); // companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении companySymbols.setCompanySymbolValue(req.getCompanySymbolValue()); - companySymbolsMap.update(companySymbols); + companySymbolsTMap.update(companySymbols); try { companyService.updateCompanyBySymbol(transaction, companySymbols); } catch (ClearingBaseException e) { @@ -172,8 +171,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB newSymbol.setCompanySymbolValue(companySymbolValue); log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId); if (transaction == null) { - Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - companySymbolsMap.insert(newSymbol); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbolsTMap.insert(newSymbol); } else { Imdg tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); tMap.insert(newSymbol); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java new file mode 100644 index 000000000..1e15c4986 --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java @@ -0,0 +1,38 @@ +package ru.spcex.clearing.company.validation; + +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.spcex.clearing.company.error.CompanyErrors; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest; +import ru.spcex.platform.enumeration.CompanySymbol; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; + +/** + * Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId + */ +public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule> { + @Override + public Optional validate(ImdgValidationContext context) { + CompanySymbolUpdateRequest request = context.getValidatedObject(); + + Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + + Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues(Map.of( + "companyId", request.getCompanyId(), + "companySymbol", request.getCompanySymbol() + )); + if (companySymbols.isEmpty()) return Optional.empty(); + return of(CompanyErrors.RecordAlreadyExist, request.getCompanyId(), request.getCompanySymbol()); + } +}