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 8fcd80eaa..f006d6886 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 @@ -51,6 +51,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.collection.Pair; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.number.BigDecimalUtil; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; import ru.spcex.platform.utils.validation.IValidator; @@ -429,38 +430,46 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing private void updateByImporter(BaseRequest req) { OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload(); for (Long orderId : payload.getIds()) { - SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId); - OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); - if (orderCurrency == null) { - log.warn("OrderCurrency[{}] not found", orderId); - continue; + try { + SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId); + OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); + if (orderCurrency == null) { + log.warn("OrderCurrency[{}] not found", orderId); + continue; + } + OrderStatus status = resolveStatusByImportState(sOrder.getState()); + if (status == null) { + continue; + } + orderCurrency.setStatus(status.getKey()); + orderCurrency.setExchangeOrderId(normalize(sOrder.getExchangeOrderNum())); + orderCurrency.setUpdated(Instant.now()); + orderCurrencyImdg.update(orderCurrency); + } catch (Exception e) { + log.error("Error updating status by orderNum {} with error:{}", orderId, ExceptionUtils.getStackTrace(e)); } - OrderStatus status = resolveStatusByImportState(sOrder.getState()); - if (status == null) { - continue; - } - orderCurrency.setStatus(status.getKey()); - orderCurrency.setExchangeOrderId(Long.valueOf(sOrder.getExchangeOrderNum())); - orderCurrency.setUpdated(Instant.now()); - orderCurrencyImdg.update(orderCurrency); } } private void updateByFix(BaseRequest req) { OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload(); for (Long orderId : payload.getIds()) { - log.debug("Process updating status by orderNum {}", orderId); - SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate( - sOrdersImdg.predicateBuilder().equals("orderNum", orderId) - ); - OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); - OrderStatus status = resolveStatusByFixState(sOrder.getState()); - if (status == null) { - continue; + try { + log.debug("Process updating status by orderNum {}", orderId); + SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate( + sOrdersImdg.predicateBuilder().equals("orderNum", orderId) + ); + OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); + OrderStatus status = resolveStatusByFixState(sOrder.getState()); + if (status == null) { + continue; + } + orderCurrency.setStatus(status.getKey()); + orderCurrency.setExchangeOrderId(normalize(sOrder.getExchangeOrderNum())); + orderCurrency.setUpdated(Instant.now()); + orderCurrencyImdg.update(orderCurrency); + } catch (Exception e) { + log.error("Error updating status by orderNum {} with error:{}", orderId, ExceptionUtils.getStackTrace(e)); } - orderCurrency.setStatus(status.getKey()); - orderCurrency.setExchangeOrderId(Long.valueOf(sOrder.getExchangeOrderNum())); - orderCurrency.setUpdated(Instant.now()); - orderCurrencyImdg.update(orderCurrency); } } @@ -486,4 +495,14 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing default -> null; }; } + + private Long normalize(String value) { + String[] parts = value.split("-", 3); + + if (parts.length != 3) { + throw new IllegalArgumentException("Ожидается формат: digits-text-digits"); + } + String digits = parts[1] + parts[2]; + return Long.valueOf(digits); + } }