From ade79ed6c6d4a143e95c32bf643c0c0c0276767d Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 6 Apr 2023 19:09:41 +0300 Subject: [PATCH] CompanySymbolNotExistRule added --- .../validation/CompanyValidationConfig.java | 17 ++++++--- .../clearing/company/error/CompanyErrors.java | 1 + .../validation/CompanySymbolNotExistRule.java | 35 +++++++++++++++++++ .../platform/enumeration/CompanySymbol.java | 2 +- 4 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java 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 6e90cdbee..b31127875 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 @@ -5,14 +5,17 @@ import org.springframework.context.annotation.Configuration; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.platform.dictionary.*; import ru.spcex.clearing.company.error.CompanyErrors; +import ru.spcex.clearing.company.validation.CompanySymbolNotExistRule; 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; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; +import ru.spcex.clearing.validation.common.rules.EnumPresentRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -32,28 +35,32 @@ public class CompanyValidationConfig { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(companyNewRequest); Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + addImdg.accept(IMDGDistributedNames.Map_CompanySymbols); addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary); addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_Company); - return new ValidatorImpl<>(context - , + return new ValidatorImpl<>(context, FieldRequiredRule.instance("shortName", CompanyNewRequest::getShortName, CompanyErrors.RequiredFieldEmpty), FieldRequiredRule.instance("companySymbol", CompanyNewRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty), FieldRequiredRule.instance("companySymbolValue", CompanyNewRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty), -// FieldRequiredRule.instance("workflowStatus", CompanyNewRequest::getWorkflowStatus, CompanyErrors.RequiredFieldEmpty), - DictionaryPresentRule.instance("workflowStatus", CompanyNewRequest::getWorkflowStatus, IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class, CompanyErrors.RequiredFieldEmpty, CompanyErrors.WrongFieldValue), + EnumPresentRule.instance("companySymbol", + CompanyNewRequest::getCompanySymbol, + CompanySymbol.values(), + CompanyErrors.WrongFieldValue, + CompanyErrors.RequiredFieldEmpty), DictionaryPresentRule.instance("companySymbol", CompanyNewRequest::getCompanySymbol, IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class, CompanyErrors.RequiredFieldEmpty, - CompanyErrors.WrongFieldValue) + CompanyErrors.WrongFieldValue), + new CompanySymbolNotExistRule() ); }; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java index 02ad9886e..d36d2104f 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java @@ -20,6 +20,7 @@ public enum CompanyErrors implements IErrorEnumId { CategoryNotFound(3016L), // Категория компании %s не найдена. CategoryAlreadySet(3017L), // Компании %s уже присвоена категория %s. CompanyAlreadyHasLiabilities(3018L), // У компании %s присутствуют обязательства. + CompanyWithCompanySymbolAlreadyExist(3019L), // Компания с %s = %s уже создана" (где первый %s - companySymbol, второй %s - companySymbolValue) EditCompanySymbols(3020L), // Тип реквизита компании %s не может быть изменен. EditContactType(3021L) // Тип контакта компании %s не может быть изменен. ; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java new file mode 100644 index 000000000..8ecb5706c --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java @@ -0,0 +1,35 @@ +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.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.Collection; +import java.util.Optional; + +/** + * Проверка наличия компании с переданными в запросе companySymbol и companySymbolCode (реквизиты) + */ +public class CompanySymbolNotExistRule implements IValidationRule> { + @Override + public Optional validate(ImdgValidationContext context) { + CompanyNewRequest request = context.getValidatedObject(); + String companySymbolCode = request.getCompanySymbol(); + String companySymbolValue = request.getCompanySymbolValue(); + Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + ImdgPredicateBuilder pb = companySymbolsImdg.predicateBuilder(); + ImdgPredicate companySymbolPredicate = pb.equals("companySymbol", companySymbolCode); + ImdgPredicate companySymbolValuePredicate = pb.equals("companySymbolValue", companySymbolValue); + ImdgPredicate andPredicate = pb.and(companySymbolPredicate, companySymbolValuePredicate); + Collection companySymbols = companySymbolsImdg.getCollectionObjectsByPredicate(andPredicate); + if (companySymbols.isEmpty()) return Optional.empty(); + return of(CompanyErrors.CompanyWithCompanySymbolAlreadyExist, companySymbolCode, companySymbolValue); + } +} diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java index fe03542c9..7cd2eee6e 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum CompanySymbol implements IEnumKey { - INN("INN"), BIC("BIC"), + INN("INN"), BIC("BIC"), CIO("CIO"), UUID("UUID"), TRDC("TRDC"), CLRC("CLRC"), RGRC("RGRC"); private final String key;