From a406b6e54024faf69d1aa9d61d1a6b4604cbe158 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 27 Apr 2026 14:07:36 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-952 comment: 74391 [6;7] --- .../dflt/management/config/ValidationConfig.java | 9 +++++++++ .../dflt/management/listener/OrderCurrencyListener.java | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) 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 93117ecfe..1eeeb986c 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 @@ -58,6 +58,8 @@ public class ValidationConfig { private final Imdg marketImdg; private final Imdg osTypeDictionaryImdg; private final Imdg orderCurrencyImdg; + private final Imdg sideDictionaryImdg; + private final Imdg orderStatusDictionaryImdg; private final Imdg rgsImdg; private final SecuritySelector secSelector; @@ -68,6 +70,8 @@ public class ValidationConfig { this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); this.osTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class); this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class); + this.sideDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SideDictionary, SideDictionary.class); + this.orderStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderStatusDictionary, OrderStatusDictionary.class); this.tcrImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); this.rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.secSelector = new SecuritySelector<>(imdgProvider, Security.class); @@ -198,6 +202,8 @@ public class ValidationConfig { ctx.setValidatedObject(req); ctx.setLogPrefix(LogPrefixId.INSTANCE); ctx.addImdg(IMDGDistributedNames.Map_OrderCurrency, orderCurrencyImdg); + ctx.addImdg(IMDGDistributedNames.Map_SideDictionary, sideDictionaryImdg); + ctx.addImdg(IMDGDistributedNames.Map_OrderStatusDictionary, orderStatusDictionaryImdg); var orderCurrencyPresentById = PresentByPredicate .builder(byId(orderCurrencyImdg.predicateBuilder(), req)) @@ -210,6 +216,9 @@ public class ValidationConfig { @Override public Optional validate(ImdgValidationContext ctx) { OrderCurrencyUpdateRequest validatedObject = ctx.getValidatedObject(); + if (validatedObject.getSecurityId() == null) { + return empty(); + } Security security = secSelector.selectSecurityById(validatedObject.getSecurityId()); if (security == null) { return of(DefaultManagementErrors.RecordNotFound, "security.id=" + validatedObject.getSecurityId()); diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java index 7138b4624..4ff53e915 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java @@ -133,7 +133,9 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get())); } OrderCurrency order = validator.getStored(OrderCurrencyValidationStored.OrderCurrency); - order.setSecurityId(payload.getSecurityId()); + if (payload.getSecurityId() != null) { + order.setSecurityId(payload.getSecurityId()); + } order.setPrice(payload.getPrice()); order.setQuantityLot(BigDecimal.valueOf(payload.getQuantityLot())); order.setSide(payload.getSide());