CompanySymbolNotExistRule added

This commit is contained in:
akulikov 2023-04-06 19:09:41 +03:00
parent cd2c49b9d9
commit ade79ed6c6
4 changed files with 49 additions and 6 deletions

View file

@ -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<CompanyNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(companyNewRequest);
Consumer<String> 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()
);
};
}

View file

@ -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 не может быть изменен.
;

View file

@ -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<ImdgValidationContext<CompanyNewRequest>> {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<CompanyNewRequest> context) {
CompanyNewRequest request = context.getValidatedObject();
String companySymbolCode = request.getCompanySymbol();
String companySymbolValue = request.getCompanySymbolValue();
Imdg<CompanySymbols> 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> companySymbols = companySymbolsImdg.getCollectionObjectsByPredicate(andPredicate);
if (companySymbols.isEmpty()) return Optional.empty();
return of(CompanyErrors.CompanyWithCompanySymbolAlreadyExist, companySymbolCode, companySymbolValue);
}
}

View file

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