etreschenkov 2026-05-28 11:50:15 +03:00
parent d112247628
commit 89cad0d718
2 changed files with 57 additions and 1 deletions

View file

@ -0,0 +1,55 @@
package ru.spcex.clearing.dflt.management.component.validation;
import java.util.Objects;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
import ru.spcex.clearing.dflt.management.config.ValidationConfig;
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyUpdateRequest;
import ru.spcex.platform.enumeration.CompanyRole;
import ru.spcex.platform.imdg.api.Imdg;
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;
public class OrderCurrencyChangeOnlyLccCompany
implements IValidationRule<ImdgValidationContext<OrderCompanyUpdateRequest>> {
private static final Logger log = LoggerFactory.getLogger(ValidationConfig.class);
public static OrderCurrencyChangeOnlyLccCompany getInstance() {
return new OrderCurrencyChangeOnlyLccCompany();
}
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyUpdateRequest> ctx) {
Imdg<CompanyRoleSet> cmpRoleImdg = ctx.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
Imdg<Company> companyImdg = ctx.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
ImdgPredicateBuilder cmpRolePb = cmpRoleImdg.predicateBuilder();
CompanyRoleSet companyRoleSet = cmpRoleImdg.getFirstObjectByPredicate(
cmpRolePb.equals("companyRole", CompanyRole.CLCC.getKey())
);
if (companyRoleSet == null) {
log.error("couldn't find companyRole CLCC");
return of(DefaultManagementErrors.RecordNotFound, "companyRole[CLCC]");
}
Company clccCmp = companyImdg.getSingleObjectByID(companyRoleSet.getCompanyId());
if (clccCmp == null) {
log.error("couldn't find company CLCC");
return of(DefaultManagementErrors.RecordNotFound, "company[CLCC]");
}
OrderCompanyUpdateRequest order = ctx.getValidatedObject();
if (Objects.equals(order.getCompanyId(), clccCmp.getId())) {
return of(DefaultManagementErrors.OperationNotAllowed);
}
return empty();
}
@Override
public String ruleName() {
return "OrderCurrencyOnlyLccCompany";
}
}

View file

@ -20,6 +20,7 @@ import ru.clearing.platform.dictionary.OrderStatusDictionary;
import ru.clearing.platform.dictionary.OvernightTypeDictionary;
import ru.clearing.platform.dictionary.SideDictionary;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyChangeOnlyLccCompany;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyCompanyNotChanged;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyOnlyLccCompany;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
@ -444,7 +445,7 @@ public class ValidationConfig {
//fixme проверить что tcr.getCompanyId() = companyId из запроса?
return new ValidatorImpl<>(ctx,
orderCurrencyPresent,
OrderCurrencyOnlyLccCompany.getInstance(),
OrderCurrencyChangeOnlyLccCompany.getInstance(),
companyPresentRule,
tcrPresent,
QuantityLotGreaterThanZero.INSTANCE,