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());