From a16fe442fabe8fc7baaa877bfb1a60c0eac3ac04 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Tue, 19 Sep 2023 15:18:54 +0300 Subject: [PATCH] company-service http://jira.mfd.msk:8088/browse/CLS-538 CompanyRoleSet --- .../CompanyRoleSetValidationConfig.java | 98 +++++++++++++++++++ .../config/validation/ValidationConfig.java | 4 + .../service/CompanyRoleSetService.java | 35 ++++--- 3 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java new file mode 100644 index 000000000..1a40dcc4c --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java @@ -0,0 +1,98 @@ +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.CompanyRoleSet; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.platform.dictionary.CompanyRoleDictionary; +import ru.clearing.platform.dictionary.CompanySymbolDictionary; +import ru.clearing.platform.dictionary.WorkflowStatusDictionary; +import ru.spcex.clearing.company.error.CompanyErrors; +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.CompanyRoleSetNewRequest; +import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; +import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; +import ru.spcex.clearing.validation.common.rules.IdPresentRule; +import ru.spcex.clearing.validation.common.rules.specific.IdPresentSpecificRule; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidator; +import ru.spcex.platform.utils.validation.ValidatorImpl; + +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; + +@Configuration +public class CompanyRoleSetValidationConfig { + + @Bean("CompanyRoleSetNewRequestValidator") + public Function companyRoleSetNewRequestValidator(Map> imdgForValidation) { + return companyRoleSetNewRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(companyRoleSetNewRequest); + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); +// addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet); + addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary); + addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary); + addImdg.accept(IMDGDistributedNames.Map_Company); + return new ValidatorImpl<>(context, +// FieldRequiredRule.instance("companyId", CompanyRoleSetNewRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), + IdPresentRule.instance("companyId", + CompanyRoleSetNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + false), + DictionaryPresentRule.instance("companyRole", + CompanyRoleSetNewRequest::getCompanyRole, + IMDGDistributedNames.Map_CompanyRoleDictionary, + CompanyRoleDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.WrongFieldValue, + false), + DictionaryPresentRule.instance("workflowStatus", + CompanyRoleSetNewRequest::getWorkflowStatus, + IMDGDistributedNames.Map_WorkflowStatusDictionary, + WorkflowStatusDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.WrongFieldValue, + false) + ); + }; + } + + + @Bean("CompanyRoleSetDeleteRequestValidator") + public Function companyRoleSetDeleteRequestValidator(Map> imdgForValidation) { + return deleteRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(deleteRequest); + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet); + addImdg.accept(IMDGDistributedNames.Map_Company); + return new ValidatorImpl<>(context, + IdPresentSpecificRule.instance("id", + CommonDeleteRequest::getId, + IMDGDistributedNames.Map_CompanyRoleSet, + CompanyRoleSet.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + true, crs -> { + if (crs.getCompanyId() != null) { + Company existCompany = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class).getSingleObjectByID(crs.getCompanyId()); + if (existCompany == null) + return new EnumMessage(CompanyErrors.CompanyNotFound, crs.getCompanyId()); + } + return null; + }) + ); + }; + } +} diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ValidationConfig.java index d4e84bd42..65ff86aa1 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ValidationConfig.java @@ -5,6 +5,7 @@ import org.springframework.context.annotation.Configuration; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.ClientCode; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanyRoleSet; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.company.relation.Relation; @@ -40,6 +41,9 @@ public class ValidationConfig { addImdg.accept(IMDGDistributedNames.Map_Contact, Contact.class); addImdg.accept(IMDGDistributedNames.Map_Relation, Relation.class); + addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); + addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary, CompanyRoleDictionary.class); + addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary, ServiceStatusDictionary.class); addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class); addImdg.accept(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java index add089451..0854d7332 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java @@ -6,7 +6,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +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.company.CompanyRoleSet; import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -24,8 +26,10 @@ import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.error.ValidationException; +import ru.spcex.platform.utils.validation.IValidator; import java.util.Map; +import java.util.function.Function; @Service public class CompanyRoleSetService extends QueueConsumer implements InitializingBean { @@ -40,7 +44,8 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing protected IMessageResolver messageResolver; private ValidationHelper validationHelper; -// private Function companyNewRequestValidator; + private Function companyRoleSetNewRequestValidator; + private Function companyRoleSetDeleteRequestValidator; @Autowired @@ -48,17 +53,21 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing ImdgProvider imdgProvider, RequestHelper requestHelper, ValidationHelper validationHelper, - UserRoleVerification userRoleVerification -// @Qualifier("CompanyRoleSetRequestValidator") -// Function companyNewRequestValidator, + UserRoleVerification userRoleVerification, + @Qualifier("CompanyRoleSetNewRequestValidator") + Function companyRoleSetNewRequestValidator, + @Qualifier("CompanyRoleSetDeleteRequestValidator") + Function companyRoleSetDeleteRequestValidator ) { super(kafkaQueue, kafkaProducer); this.imdgProvider = imdgProvider; this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); +// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.idSequence = imdgProvider.getImdgIdGenerator(); this.userRoleVerification = userRoleVerification; this.validationHelper = validationHelper; -// this.companyDeleteRequestValidator = companyDeleteRequestValidator; + this.companyRoleSetNewRequestValidator = companyRoleSetNewRequestValidator; + this.companyRoleSetDeleteRequestValidator = companyRoleSetDeleteRequestValidator; this.requestHelper = requestHelper.setLogger(log); } @@ -83,10 +92,9 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing { // Валидация, ValidationException RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleNewRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; -// RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyNewRequestValidator); -// if (requestInfoUpdate != null) return requestInfoUpdate; + requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyRoleSetNewRequestValidator); + if (requestInfoUpdate != null) return requestInfoUpdate; } - //todo какие проверки нужны? 1. есть компания, 2. есть справочники CompanyRoleSet newRole = companyRoleSetMap.getFirstObjectByFieldValues(Map.of( "companyId", req.getCompanyId(), "companyRole", req.getCompanyRole() @@ -102,7 +110,11 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing } else { isNew = false; log.trace("Update exist CompanyRoleSet[{}] for company {}", newRole.getId(), req.getCompanyId()); -// return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.RecordAlreadyExist, newRole.getId()); + return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.RecordAlreadyExist, newRole.getId()); +// if (newRole.getCompanyId() != null && req.getCompanyId() != null && !newRole.getCompanyId().equals(req.getCompanyId())) { +//// нельзя сменить компанию +// return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId"); +// } } newRole.setCompanyRole(req.getCompanyRole()); newRole.setWorkflowStatus(req.getWorkflowStatus()); @@ -120,9 +132,8 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing { // Валидация, ValidationException RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleSetDeleteRequest); if (requestInfoUpdate != null) return requestInfoUpdate; - if (request.getId() == null) { - return requestHelper.makeErrorResponse(companyRoleSetDeleteRequest, CompanyErrors.RequiredFieldEmpty, "id"); - } + requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleSetDeleteRequest, companyRoleSetDeleteRequestValidator); + if (requestInfoUpdate != null) return requestInfoUpdate; } CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(request.getId()); if (role == null) {