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.collection.Pair;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.log.ExceptionUtils;
import ru.spcex.platform.utils.number.BigDecimalUtil; import ru.spcex.platform.utils.number.BigDecimalUtil;
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
@ -429,38 +430,46 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
private void updateByImporter(BaseRequest<OrderCurrencyStatusUpdateRequest> req) { private void updateByImporter(BaseRequest<OrderCurrencyStatusUpdateRequest> req) {
OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload(); OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload();
for (Long orderId : payload.getIds()) { for (Long orderId : payload.getIds()) {
SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId); try {
OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId);
if (orderCurrency == null) { OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId);
log.warn("OrderCurrency[{}] not found", orderId); if (orderCurrency == null) {
continue; 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) { private void updateByFix(BaseRequest<OrderCurrencyStatusUpdateRequest> req) {
OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload(); OrderCurrencyStatusUpdateRequest payload = req.getRequestPayload();
for (Long orderId : payload.getIds()) { for (Long orderId : payload.getIds()) {
log.debug("Process updating status by orderNum {}", orderId); try {
SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate( log.debug("Process updating status by orderNum {}", orderId);
sOrdersImdg.predicateBuilder().equals("orderNum", orderId) SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate(
); sOrdersImdg.predicateBuilder().equals("orderNum", orderId)
OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); );
OrderStatus status = resolveStatusByFixState(sOrder.getState()); OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId);
if (status == null) { OrderStatus status = resolveStatusByFixState(sOrder.getState());
continue; 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; 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);
}
} }