diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/order/OrderCurrencyUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/order/OrderCurrencyUpdateAction.java index 8cd2e5691..3b3fbdc06 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/order/OrderCurrencyUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/order/OrderCurrencyUpdateAction.java @@ -14,6 +14,9 @@ public class OrderCurrencyUpdateAction implements IAction - + + - + 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 b1549e5ec..c6c2b25d5 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 @@ -252,12 +252,13 @@ public class ValidationConfig { }; } - @Bean("orderCurrencyUpdateValidator") + @Bean("orderCurrencyUpdateStatusValidator") public Function orderCurrencyUpdateStatusValidator() { return req -> { ImdgValidationContext ctx = new ImdgValidationContext<>(); ctx.setValidatedObject(req); ctx.setLogPrefix(LogPrefixId.INSTANCE); + ctx.addImdg(IMDGDistributedNames.Map_OrderCurrency, orderCurrencyImdg); ctx.addImdg(IMDGDistributedNames.Map_OrderStatusDictionary, orderStatusDictionaryImdg); var orderCurrencyPresentById = PresentByPredicate @@ -275,15 +276,15 @@ public class ValidationConfig { OrderStatus orderStatusReq = IEnumKey.getEnumByKey(OrderStatus.class, validatedObject.getStatus()); OrderStatus orderStatusExist = IEnumKey.getEnumByKey(OrderStatus.class, orderCurrency.getStatus()); if (!Arrays.asList(OrderStatus.CREATED, OrderStatus.HOLD).contains(orderStatusReq)) { - return of(DefaultManagementErrors.IncorrectFieldValue, "status="); + return of(DefaultManagementErrors.IncorrectFieldValue, "status"); } if (orderStatusReq == OrderStatus.CREATED && orderStatusExist == OrderStatus.HOLD) { - return of(DefaultManagementErrors.IncorrectFieldValue, "status="); + return empty(); } if (orderStatusReq == OrderStatus.HOLD && orderStatusExist == OrderStatus.CREATED) { - return of(DefaultManagementErrors.IncorrectFieldValue, "status="); + return empty(); } - return empty(); + return of(DefaultManagementErrors.IncorrectFieldValue, "status"); } }; return new ValidatorImpl<>(ctx, diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/error/DefaultManagementErrors.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/error/DefaultManagementErrors.java index d7a5bd13a..95c603c87 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/error/DefaultManagementErrors.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/error/DefaultManagementErrors.java @@ -6,12 +6,12 @@ public enum DefaultManagementErrors implements IErrorEnumId { GeneralError(11000L), RecordNotFound(11001L), - RequiredFieldIsEmpty(11007L), - DictionaryNotFound(11005L), RecordAlreadyPresent(11002L), OnlyBalancingOrdersAllowed(11003L), OnlyBalancingOrdersAllowedForChanging(11004L), + DictionaryNotFound(11005L), IncorrectFieldValue(11005L), + RequiredFieldIsEmpty(11007L), ; private final Long id; 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 28905526d..a532f1084 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 @@ -60,6 +60,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing private final Imdg orderCurrencyImdg; private final Imdg sOrdersImdg; private final Function orderCurrencyUpdateValidator; + private final Function orderCurrencyUpdateStatusValidator; private final Function overnightTypeUpdateValidator; private final Function orderCompanyNewValidator; private final Function orderCompanyUpdateValidator; @@ -80,6 +81,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing Function orderCompanyNewValidator, @Qualifier("orderCurrencyUpdateCompany") Function orderCompanyUpdateValidator, + @Qualifier("orderCurrencyUpdateStatusValidator") + Function orderCurrencyUpdateStatusValidator, Function orderCompanyDeleteValidator, ImdgQueryService imdgQueryService, IMessageResolver msgResolver, ValidationConfig validationConfig) { @@ -88,6 +91,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class); this.sOrdersImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class);; this.orderCurrencyUpdateValidator = orderCurrencyUpdateValidator; + this.orderCurrencyUpdateStatusValidator = orderCurrencyUpdateStatusValidator; this.overnightTypeUpdateValidator = overnightTypeUpdateValidator; this.orderCompanyNewValidator = orderCompanyNewValidator; this.orderCompanyUpdateValidator = orderCompanyUpdateValidator; @@ -151,20 +155,13 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing private RequestInfoUpdate orderCurrencyUpdateStatus(BaseRequest req) { OrderCurrencyUpdateRequest payload = req.getRequestPayload(); - IValidator validator = orderCurrencyUpdateValidator.apply(payload); + IValidator validator = orderCurrencyUpdateStatusValidator.apply(payload); Optional error = validator.tillFirstError(); if (error.isPresent()) { return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get())); } OrderCurrency order = validator.getStored(OrderCurrencyValidationStored.OrderCurrency); - if (payload.getSecurityId() != null) { - order.setSecurityId(payload.getSecurityId()); - } - order.setPrice(payload.getPrice()); - order.setQuantityLot(BigDecimal.valueOf(payload.getQuantityLot())); - order.setSide(payload.getSide()); order.setStatus(payload.getStatus()); - order.setComment(payload.getComment()); log.info("updating OrderCurrency[{}]", order.getId()); orderCurrencyImdg.update(order); return null; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCurrencyUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCurrencyUpdateRequest.java index 809a63df0..ba0a5c99e 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCurrencyUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/order/OrderCurrencyUpdateRequest.java @@ -10,6 +10,8 @@ public class OrderCurrencyUpdateRequest implements WithId { @JsonProperty private Long securityId; @JsonProperty + private String market; + @JsonProperty private BigDecimal price; @JsonProperty private Long quantityLot; @@ -38,6 +40,14 @@ public class OrderCurrencyUpdateRequest implements WithId { this.securityId = securityId; } + public String getMarket() { + return market; + } + + public void setMarket(String market) { + this.market = market; + } + public BigDecimal getPrice() { return price; }