company-service http://jira.mfd.msk:8088/browse/CLS-538 CompanyRoleSet
This commit is contained in:
parent
e19cb6876e
commit
a16fe442fa
3 changed files with 125 additions and 12 deletions
|
|
@ -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;
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue