This commit is contained in:
parent
621a9dec97
commit
16f492f96c
6 changed files with 30 additions and 17 deletions
|
|
@ -14,6 +14,9 @@ public class OrderCurrencyUpdateAction implements IAction<OrderCurrencyUpdateReq
|
|||
@ApiModelProperty(value = "Наименование инструмента", example = "333")
|
||||
@JsonProperty
|
||||
private Long securityId;
|
||||
@ApiModelProperty(value = "Маркет", example = "333")
|
||||
@JsonProperty
|
||||
private String market;
|
||||
@ApiModelProperty(value = "Цена заявки", example = "12.33")
|
||||
@JsonProperty
|
||||
private BigDecimal price;
|
||||
|
|
@ -35,6 +38,7 @@ public class OrderCurrencyUpdateAction implements IAction<OrderCurrencyUpdateReq
|
|||
OrderCurrencyUpdateRequest request = new OrderCurrencyUpdateRequest();
|
||||
request.setId(id);
|
||||
request.setSecurityId(securityId);
|
||||
request.setMarket(market);
|
||||
request.setPrice(price);
|
||||
request.setQuantityLot(quantityLot);
|
||||
request.setSide(side);
|
||||
|
|
|
|||
|
|
@ -2747,14 +2747,15 @@
|
|||
<actions>
|
||||
<put name="Изменение заявки" class="ru.spcex.clearing.backendapi.controller.request.cud.order.OrderCurrencyUpdateAction">
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" link="orderCurrency" linkCode="id" required="true"/>
|
||||
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
|
||||
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" enabled="false" required="true"/>
|
||||
<market type="12" name="Код режима торгов" shortname="Режим торгов" link="market" linkCode="code" enabled="false" required="true"/>
|
||||
<price type="10" name="Цена заявки" shortname="Цена" required="true"/>
|
||||
<quantityLot type="3" name="Объем заявки в лотах" shortname="Объем заявки" required="true"/>
|
||||
<side type="12" name="Направление заявки" shortname="Направление" required="true" link="side"/>
|
||||
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
||||
<comment type="2" length="255" name="Комментарий" shortname="Комментарий"/>
|
||||
</put>
|
||||
<put name="Изменение заявки" class="ru.spcex.clearing.backendapi.controller.request.cud.order.OrderCurrencyUpdateStatusAction">
|
||||
<put name="Изменение заявки" destination="order-currency/status" class="ru.spcex.clearing.backendapi.controller.request.cud.order.OrderCurrencyUpdateStatusAction">
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" link="orderCurrency" linkCode="id" required="true"/>
|
||||
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
||||
</put>
|
||||
|
|
|
|||
|
|
@ -252,12 +252,13 @@ public class ValidationConfig {
|
|||
};
|
||||
}
|
||||
|
||||
@Bean("orderCurrencyUpdateValidator")
|
||||
@Bean("orderCurrencyUpdateStatusValidator")
|
||||
public Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator() {
|
||||
return req -> {
|
||||
ImdgValidationContext<OrderCurrencyUpdateRequest> 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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
|||
private final Imdg<OrderCurrency> orderCurrencyImdg;
|
||||
private final Imdg<SOrders> sOrdersImdg;
|
||||
private final Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator;
|
||||
private final Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator;
|
||||
private final Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator;
|
||||
private final Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator;
|
||||
private final Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator;
|
||||
|
|
@ -80,6 +81,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
|||
Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator,
|
||||
@Qualifier("orderCurrencyUpdateCompany")
|
||||
Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator,
|
||||
@Qualifier("orderCurrencyUpdateStatusValidator")
|
||||
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator,
|
||||
Function<CommonDeleteRequest, IValidator> 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<OrderCurrencyUpdateRequest> req) {
|
||||
OrderCurrencyUpdateRequest payload = req.getRequestPayload();
|
||||
IValidator validator = orderCurrencyUpdateValidator.apply(payload);
|
||||
IValidator validator = orderCurrencyUpdateStatusValidator.apply(payload);
|
||||
Optional<EnumMessage> 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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue