From 263b77598dc06c7669420cbbc399d7b57e444381 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 22 Apr 2026 14:47:37 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-952 --- ...derCurrencyByCompanyAndTcrAlreadyPresent.java | 16 +++++++++++----- .../validation/OrderCurrencyPLBLCheck.java | 5 ++--- .../validation/QuantityLotGreaterThanZero.java | 10 +++++----- .../dflt/management/config/ValidationConfig.java | 8 ++++---- .../classes/base/interfaces/WithCompanyId.java | 5 +++++ .../classes/base/interfaces/WithQuantityLot.java | 5 +++++ .../classes/base/interfaces/WithTcrId.java | 5 +++++ .../domain/cud/order/OrderCompanyNewRequest.java | 5 ++++- .../cud/order/OrderCompanyUpdateRequest.java | 5 ++++- 9 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithCompanyId.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithQuantityLot.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithTcrId.java diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyByCompanyAndTcrAlreadyPresent.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyByCompanyAndTcrAlreadyPresent.java index 4ce2f42d1..6108f2a39 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyByCompanyAndTcrAlreadyPresent.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyByCompanyAndTcrAlreadyPresent.java @@ -5,19 +5,25 @@ import java.util.Optional; import ru.clearing.classes.statics.data.misc.OrderCurrency; import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest; +import ru.spcex.platform.classes.base.interfaces.WithCompanyId; +import ru.spcex.platform.classes.base.interfaces.WithTcrId; 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 OrderCurrencyByCompanyAndTcrAlreadyPresent implements IValidationRule> { - public static final OrderCurrencyByCompanyAndTcrAlreadyPresent INSTANCE = new OrderCurrencyByCompanyAndTcrAlreadyPresent(); +public class OrderCurrencyByCompanyAndTcrAlreadyPresent + implements IValidationRule> { + + public static + OrderCurrencyByCompanyAndTcrAlreadyPresent getInstance(Class clazz) { + return new OrderCurrencyByCompanyAndTcrAlreadyPresent<>(); + } @Override - public Optional validate(ImdgValidationContext ctx) { - OrderCompanyNewRequest validatedObject = ctx.getValidatedObject(); + public Optional validate(ImdgValidationContext ctx) { + T validatedObject = ctx.getValidatedObject(); Imdg imdg = ctx.obtainMap(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class); ImdgPredicateBuilder pb = imdg.predicateBuilder(); Collection orders = imdg.getCollectionObjectsByPredicate( diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyPLBLCheck.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyPLBLCheck.java index 01c61237c..682f003cd 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyPLBLCheck.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OrderCurrencyPLBLCheck.java @@ -3,17 +3,16 @@ package ru.spcex.clearing.dflt.management.component.validation; import java.util.Optional; import ru.clearing.classes.statics.data.misc.OrderCurrency; import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors; -import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest; import ru.spcex.platform.enumeration.OrderAffil; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.validation.IValidationRule; -public class OrderCurrencyPLBLCheck implements IValidationRule> { +public class OrderCurrencyPLBLCheck implements IValidationRule> { public static final OrderCurrencyPLBLCheck INSTANCE = new OrderCurrencyPLBLCheck(); @Override - public Optional validate(ImdgValidationContext ctx) { + public Optional validate(ImdgValidationContext ctx) { OrderCurrency order = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency); if (!OrderAffil.PLBL.equalsByKey(order.getType())) { return of(DefaultManagementErrors.OnlyBalancingOrdersAllowed); diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/QuantityLotGreaterThanZero.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/QuantityLotGreaterThanZero.java index e79b3d26d..af9099f09 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/QuantityLotGreaterThanZero.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/QuantityLotGreaterThanZero.java @@ -2,17 +2,17 @@ package ru.spcex.clearing.dflt.management.component.validation; import java.util.Optional; import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors; -import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyNewRequest; +import ru.spcex.platform.classes.base.interfaces.WithQuantityLot; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.validation.IValidationRule; -public class QuantityLotGreaterThanZero implements IValidationRule> { - public static final QuantityLotGreaterThanZero INSTANCE = new QuantityLotGreaterThanZero(); +public class QuantityLotGreaterThanZero implements IValidationRule> { + public static final QuantityLotGreaterThanZero INSTANCE = new QuantityLotGreaterThanZero<>(); @Override - public Optional validate(ImdgValidationContext ctx) { - OrderCompanyNewRequest validatedObject = ctx.getValidatedObject(); + public Optional validate(ImdgValidationContext ctx) { + T validatedObject = ctx.getValidatedObject(); if (validatedObject.getQuantityLot() == null || validatedObject.getQuantityLot() < 0) { return of(DefaultManagementErrors.RequiredFieldIsEmpty, "quantityLot"); } 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 6d0ae8032..9bd449df6 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 @@ -177,7 +177,7 @@ public class ValidationConfig { OvernightTypeChanged.INSTANCE, DictionaryPresentRule.instance( "overnightType", - OvernightSettingsNewRequest::getOvernightType, + OrderCurrencyUpdateRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, @@ -292,7 +292,7 @@ public class ValidationConfig { companyPresentRule, tcrPresent, QuantityLotGreaterThanZero.INSTANCE, - OrderCurrencyByCompanyAndTcrAlreadyPresent.INSTANCE, + OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyNewRequest.class), OrderCurrencyPLBLCheck.INSTANCE, counterTcrPresent); }; @@ -328,7 +328,7 @@ public class ValidationConfig { var tcrPresent = PresentByPredicate .builder(new IdEqualPredicate<>( tcrImdg.predicateBuilder(), - OrderCompanyNewRequest::getTradingClearingRegistryId) + OrderCompanyUpdateRequest::getTradingClearingRegistryId) ) .mapName(IMDGDistributedNames.Map_TradingClearingRegistry) .errorProvider(r -> recordNotFound("tcr.id=" + r.getTradingClearingRegistryId())) @@ -357,7 +357,7 @@ public class ValidationConfig { companyPresentRule, tcrPresent, QuantityLotGreaterThanZero.INSTANCE, - OrderCurrencyByCompanyAndTcrAlreadyPresent.INSTANCE, + OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyUpdateRequest.class), OrderCurrencyPLBLCheck.INSTANCE, counterOrderPresent); }; diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithCompanyId.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithCompanyId.java new file mode 100644 index 000000000..2312fc2f7 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithCompanyId.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithCompanyId { + Long getCompanyId(); +} diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithQuantityLot.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithQuantityLot.java new file mode 100644 index 000000000..ae723e339 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithQuantityLot.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithQuantityLot { + Long getQuantityLot(); +} diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithTcrId.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithTcrId.java new file mode 100644 index 000000000..670aaee90 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithTcrId.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithTcrId { + Long getTradingClearingRegistryId(); +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyNewRequest.java index 9eea34508..5653de50c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyNewRequest.java @@ -1,8 +1,11 @@ package ru.spcex.clearing.platform.messaging.domain.cud.order; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.platform.classes.base.interfaces.WithCompanyId; +import ru.spcex.platform.classes.base.interfaces.WithQuantityLot; +import ru.spcex.platform.classes.base.interfaces.WithTcrId; -public class OrderCompanyNewRequest { +public class OrderCompanyNewRequest implements WithQuantityLot, WithTcrId, WithCompanyId { @JsonProperty private Long orderId; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyUpdateRequest.java index 17d83d582..ca4dfc79e 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCompanyUpdateRequest.java @@ -1,9 +1,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.order; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.platform.classes.base.interfaces.WithCompanyId; import ru.spcex.platform.classes.base.interfaces.WithId; +import ru.spcex.platform.classes.base.interfaces.WithQuantityLot; +import ru.spcex.platform.classes.base.interfaces.WithTcrId; -public class OrderCompanyUpdateRequest implements WithId { +public class OrderCompanyUpdateRequest implements WithId, WithQuantityLot, WithTcrId, WithCompanyId { @JsonProperty private Long id; @JsonProperty