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")
|
@ApiModelProperty(value = "Наименование инструмента", example = "333")
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long securityId;
|
private Long securityId;
|
||||||
|
@ApiModelProperty(value = "Маркет", example = "333")
|
||||||
|
@JsonProperty
|
||||||
|
private String market;
|
||||||
@ApiModelProperty(value = "Цена заявки", example = "12.33")
|
@ApiModelProperty(value = "Цена заявки", example = "12.33")
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
@ -35,6 +38,7 @@ public class OrderCurrencyUpdateAction implements IAction<OrderCurrencyUpdateReq
|
||||||
OrderCurrencyUpdateRequest request = new OrderCurrencyUpdateRequest();
|
OrderCurrencyUpdateRequest request = new OrderCurrencyUpdateRequest();
|
||||||
request.setId(id);
|
request.setId(id);
|
||||||
request.setSecurityId(securityId);
|
request.setSecurityId(securityId);
|
||||||
|
request.setMarket(market);
|
||||||
request.setPrice(price);
|
request.setPrice(price);
|
||||||
request.setQuantityLot(quantityLot);
|
request.setQuantityLot(quantityLot);
|
||||||
request.setSide(side);
|
request.setSide(side);
|
||||||
|
|
|
||||||
|
|
@ -2747,14 +2747,15 @@
|
||||||
<actions>
|
<actions>
|
||||||
<put name="Изменение заявки" class="ru.spcex.clearing.backendapi.controller.request.cud.order.OrderCurrencyUpdateAction">
|
<put name="Изменение заявки" class="ru.spcex.clearing.backendapi.controller.request.cud.order.OrderCurrencyUpdateAction">
|
||||||
<id type="1" name="Идентификатор записи" shortname="ID" link="orderCurrency" linkCode="id" required="true"/>
|
<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"/>
|
<price type="10" name="Цена заявки" shortname="Цена" required="true"/>
|
||||||
<quantityLot type="3" name="Объем заявки в лотах" shortname="Объем заявки" required="true"/>
|
<quantityLot type="3" name="Объем заявки в лотах" shortname="Объем заявки" required="true"/>
|
||||||
<side type="12" name="Направление заявки" shortname="Направление" required="true" link="side"/>
|
<side type="12" name="Направление заявки" shortname="Направление" required="true" link="side"/>
|
||||||
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
||||||
<comment type="2" length="255" name="Комментарий" shortname="Комментарий"/>
|
<comment type="2" length="255" name="Комментарий" shortname="Комментарий"/>
|
||||||
</put>
|
</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"/>
|
<id type="1" name="Идентификатор записи" shortname="ID" link="orderCurrency" linkCode="id" required="true"/>
|
||||||
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
<status type="12" name="Статус заявки" shortname="Статус" link="orderStatus"/>
|
||||||
</put>
|
</put>
|
||||||
|
|
|
||||||
|
|
@ -252,12 +252,13 @@ public class ValidationConfig {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("orderCurrencyUpdateValidator")
|
@Bean("orderCurrencyUpdateStatusValidator")
|
||||||
public Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator() {
|
public Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator() {
|
||||||
return req -> {
|
return req -> {
|
||||||
ImdgValidationContext<OrderCurrencyUpdateRequest> ctx = new ImdgValidationContext<>();
|
ImdgValidationContext<OrderCurrencyUpdateRequest> ctx = new ImdgValidationContext<>();
|
||||||
ctx.setValidatedObject(req);
|
ctx.setValidatedObject(req);
|
||||||
ctx.setLogPrefix(LogPrefixId.INSTANCE);
|
ctx.setLogPrefix(LogPrefixId.INSTANCE);
|
||||||
|
ctx.addImdg(IMDGDistributedNames.Map_OrderCurrency, orderCurrencyImdg);
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_OrderStatusDictionary, orderStatusDictionaryImdg);
|
ctx.addImdg(IMDGDistributedNames.Map_OrderStatusDictionary, orderStatusDictionaryImdg);
|
||||||
|
|
||||||
var orderCurrencyPresentById = PresentByPredicate
|
var orderCurrencyPresentById = PresentByPredicate
|
||||||
|
|
@ -275,15 +276,15 @@ public class ValidationConfig {
|
||||||
OrderStatus orderStatusReq = IEnumKey.getEnumByKey(OrderStatus.class, validatedObject.getStatus());
|
OrderStatus orderStatusReq = IEnumKey.getEnumByKey(OrderStatus.class, validatedObject.getStatus());
|
||||||
OrderStatus orderStatusExist = IEnumKey.getEnumByKey(OrderStatus.class, orderCurrency.getStatus());
|
OrderStatus orderStatusExist = IEnumKey.getEnumByKey(OrderStatus.class, orderCurrency.getStatus());
|
||||||
if (!Arrays.asList(OrderStatus.CREATED, OrderStatus.HOLD).contains(orderStatusReq)) {
|
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) {
|
if (orderStatusReq == OrderStatus.CREATED && orderStatusExist == OrderStatus.HOLD) {
|
||||||
return of(DefaultManagementErrors.IncorrectFieldValue, "status=");
|
return empty();
|
||||||
}
|
}
|
||||||
if (orderStatusReq == OrderStatus.HOLD && orderStatusExist == OrderStatus.CREATED) {
|
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,
|
return new ValidatorImpl<>(ctx,
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ public enum DefaultManagementErrors implements IErrorEnumId {
|
||||||
|
|
||||||
GeneralError(11000L),
|
GeneralError(11000L),
|
||||||
RecordNotFound(11001L),
|
RecordNotFound(11001L),
|
||||||
RequiredFieldIsEmpty(11007L),
|
|
||||||
DictionaryNotFound(11005L),
|
|
||||||
RecordAlreadyPresent(11002L),
|
RecordAlreadyPresent(11002L),
|
||||||
OnlyBalancingOrdersAllowed(11003L),
|
OnlyBalancingOrdersAllowed(11003L),
|
||||||
OnlyBalancingOrdersAllowedForChanging(11004L),
|
OnlyBalancingOrdersAllowedForChanging(11004L),
|
||||||
|
DictionaryNotFound(11005L),
|
||||||
IncorrectFieldValue(11005L),
|
IncorrectFieldValue(11005L),
|
||||||
|
RequiredFieldIsEmpty(11007L),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final Long id;
|
private final Long id;
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
private final Imdg<OrderCurrency> orderCurrencyImdg;
|
private final Imdg<OrderCurrency> orderCurrencyImdg;
|
||||||
private final Imdg<SOrders> sOrdersImdg;
|
private final Imdg<SOrders> sOrdersImdg;
|
||||||
private final Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator;
|
private final Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator;
|
||||||
|
private final Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator;
|
||||||
private final Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator;
|
private final Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator;
|
||||||
private final Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator;
|
private final Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator;
|
||||||
private final Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator;
|
private final Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator;
|
||||||
|
|
@ -80,6 +81,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator,
|
Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator,
|
||||||
@Qualifier("orderCurrencyUpdateCompany")
|
@Qualifier("orderCurrencyUpdateCompany")
|
||||||
Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator,
|
Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator,
|
||||||
|
@Qualifier("orderCurrencyUpdateStatusValidator")
|
||||||
|
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator,
|
||||||
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
|
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
|
||||||
ImdgQueryService imdgQueryService,
|
ImdgQueryService imdgQueryService,
|
||||||
IMessageResolver msgResolver, ValidationConfig validationConfig) {
|
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.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
|
||||||
this.sOrdersImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class);;
|
this.sOrdersImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class);;
|
||||||
this.orderCurrencyUpdateValidator = orderCurrencyUpdateValidator;
|
this.orderCurrencyUpdateValidator = orderCurrencyUpdateValidator;
|
||||||
|
this.orderCurrencyUpdateStatusValidator = orderCurrencyUpdateStatusValidator;
|
||||||
this.overnightTypeUpdateValidator = overnightTypeUpdateValidator;
|
this.overnightTypeUpdateValidator = overnightTypeUpdateValidator;
|
||||||
this.orderCompanyNewValidator = orderCompanyNewValidator;
|
this.orderCompanyNewValidator = orderCompanyNewValidator;
|
||||||
this.orderCompanyUpdateValidator = orderCompanyUpdateValidator;
|
this.orderCompanyUpdateValidator = orderCompanyUpdateValidator;
|
||||||
|
|
@ -151,20 +155,13 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
|
|
||||||
private RequestInfoUpdate orderCurrencyUpdateStatus(BaseRequest<OrderCurrencyUpdateRequest> req) {
|
private RequestInfoUpdate orderCurrencyUpdateStatus(BaseRequest<OrderCurrencyUpdateRequest> req) {
|
||||||
OrderCurrencyUpdateRequest payload = req.getRequestPayload();
|
OrderCurrencyUpdateRequest payload = req.getRequestPayload();
|
||||||
IValidator validator = orderCurrencyUpdateValidator.apply(payload);
|
IValidator validator = orderCurrencyUpdateStatusValidator.apply(payload);
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
if (error.isPresent()) {
|
if (error.isPresent()) {
|
||||||
return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get()));
|
return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get()));
|
||||||
}
|
}
|
||||||
OrderCurrency order = validator.getStored(OrderCurrencyValidationStored.OrderCurrency);
|
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.setStatus(payload.getStatus());
|
||||||
order.setComment(payload.getComment());
|
|
||||||
log.info("updating OrderCurrency[{}]", order.getId());
|
log.info("updating OrderCurrency[{}]", order.getId());
|
||||||
orderCurrencyImdg.update(order);
|
orderCurrencyImdg.update(order);
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ public class OrderCurrencyUpdateRequest implements WithId {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long securityId;
|
private Long securityId;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
private String market;
|
||||||
|
@JsonProperty
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long quantityLot;
|
private Long quantityLot;
|
||||||
|
|
@ -38,6 +40,14 @@ public class OrderCurrencyUpdateRequest implements WithId {
|
||||||
this.securityId = securityId;
|
this.securityId = securityId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMarket() {
|
||||||
|
return market;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMarket(String market) {
|
||||||
|
this.market = market;
|
||||||
|
}
|
||||||
|
|
||||||
public BigDecimal getPrice() {
|
public BigDecimal getPrice() {
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue