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 a05c984df..8a2dd7581 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 @@ -57,6 +57,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; @@ -67,6 +69,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); @@ -196,6 +200,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)) @@ -208,6 +214,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 5fa6fe2bb..59b707779 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 @@ -135,7 +135,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());