etreschenkov 2026-05-22 09:34:45 +03:00
parent c624c29adf
commit 33f9789268

View file

@ -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<OrderCurrencyStatusUpdateRequest> 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<OrderCurrencyStatusUpdateRequest> 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);
}
}