From 93392ef394a8a66df7a6658d182bcf0da8e6d8aa Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 27 May 2026 14:21:28 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-1038 --- .../OrderCurrencyOnlyLccCompany.java | 56 +++++++++++++++++++ .../management/config/ValidationConfig.java | 36 +----------- 2 files changed, 59 insertions(+), 33 deletions(-) create mode 100644 clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyOnlyLccCompany.java diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyOnlyLccCompany.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyOnlyLccCompany.java new file mode 100644 index 000000000..fc643fde7 --- /dev/null +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyOnlyLccCompany.java @@ -0,0 +1,56 @@ +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.clearing.classes.statics.data.misc.OrderCurrency; +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.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 OrderCurrencyOnlyLccCompany + implements IValidationRule> { + private static final Logger log = LoggerFactory.getLogger(ValidationConfig.class); + public static + OrderCurrencyOnlyLccCompany getInstance() { + return new OrderCurrencyOnlyLccCompany(); + } + + @Override + public Optional validate(ImdgValidationContext ctx) { + Imdg cmpRoleImdg = ctx.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); + Imdg 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]"); + } + OrderCurrency order = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency); + if (!Objects.equals(order.getCounterPartyId(), clccCmp.getId())) { + return of(DefaultManagementErrors.OperationNotAllowed); + } + return empty(); + } + + @Override + public String ruleName() { + return "OrderCurrencyOnlyLccCompany"; + } +} diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java index 56472460e..b81d54cb0 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/config/ValidationConfig.java @@ -1,7 +1,6 @@ package ru.spcex.clearing.dflt.management.config; import java.util.Arrays; -import java.util.Objects; import java.util.Optional; import java.util.function.Function; import org.slf4j.Logger; @@ -22,6 +21,7 @@ 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.OrderCurrencyCompanyNotChanged; +import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyOnlyLccCompany; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored; import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent; @@ -38,7 +38,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCurrencyUpdate import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.SpecialIdPresentRule; -import ru.spcex.platform.enumeration.CompanyRole; import ru.spcex.platform.enumeration.OrderAffil; import ru.spcex.platform.enumeration.OrderStatus; import ru.spcex.platform.imdg.api.Imdg; @@ -343,36 +342,6 @@ public class ValidationConfig { .store(OrderCurrencyValidationStored.OrderCurrency) .build(); - var clccOrderOnly = new IValidationRule> () { - - @Override - public Optional validate(ImdgValidationContext context) { - 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]"); - } - OrderCurrency order = context.getStoredObject(OrderCurrencyValidationStored.OrderCurrency); - if (!Objects.equals(order.getCounterPartyId(), clccCmp.getId())) { - return of(DefaultManagementErrors.OperationNotAllowed); - } - return empty(); - } - - @Override - public String ruleName() { - return "clccOrderOnly"; - } - }; - var companyPresentRule = PresentByPredicate .builder(new IdEqualPredicate<>( companyImdg.predicateBuilder(), @@ -410,7 +379,7 @@ public class ValidationConfig { //fixme проверить что tcr.getCompanyId() = companyId из запроса? return new ValidatorImpl<>(ctx, orderCurrencyPresent, - clccOrderOnly, + OrderCurrencyOnlyLccCompany.getInstance(), companyPresentRule, tcrPresent, QuantityLotGreaterThanZero.INSTANCE, @@ -472,6 +441,7 @@ public class ValidationConfig { //fixme проверить что tcr.getCompanyId() = companyId из запроса? return new ValidatorImpl<>(ctx, orderCurrencyPresent, + OrderCurrencyOnlyLccCompany.getInstance(), companyPresentRule, tcrPresent, QuantityLotGreaterThanZero.INSTANCE,