This commit is contained in:
AKurakin 2023-09-19 15:18:54 +03:00
parent e19cb6876e
commit a16fe442fa
3 changed files with 125 additions and 12 deletions

View file

@ -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<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
return companyRoleSetNewRequest -> {
ImdgValidationContext<CompanyRoleSetNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(companyRoleSetNewRequest);
Consumer<String> 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<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
return deleteRequest -> {
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(deleteRequest);
Consumer<String> 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;
})
);
};
}
}

View file

@ -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);

View file

@ -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<CompanyRoleSetNewRequest, IValidator> companyNewRequestValidator;
private Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator;
private Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator;
@Autowired
@ -48,17 +53,21 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
ImdgProvider imdgProvider,
RequestHelper requestHelper,
ValidationHelper validationHelper,
UserRoleVerification userRoleVerification
// @Qualifier("CompanyRoleSetRequestValidator")
// Function<CompanyRoleSetNewRequest, IValidator> companyNewRequestValidator,
UserRoleVerification userRoleVerification,
@Qualifier("CompanyRoleSetNewRequestValidator")
Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator,
@Qualifier("CompanyRoleSetDeleteRequestValidator")
Function<CommonDeleteRequest, IValidator> 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) {