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,6 +430,7 @@ 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()) {
try {
SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId); SOrders sOrder = sOrdersImdg.getSingleObjectByID(orderId);
OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId); OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(orderId);
if (orderCurrency == null) { if (orderCurrency == null) {
@ -440,14 +442,18 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
continue; continue;
} }
orderCurrency.setStatus(status.getKey()); orderCurrency.setStatus(status.getKey());
orderCurrency.setExchangeOrderId(Long.valueOf(sOrder.getExchangeOrderNum())); orderCurrency.setExchangeOrderId(normalize(sOrder.getExchangeOrderNum()));
orderCurrency.setUpdated(Instant.now()); orderCurrency.setUpdated(Instant.now());
orderCurrencyImdg.update(orderCurrency); orderCurrencyImdg.update(orderCurrency);
} catch (Exception e) {
log.error("Error updating status by orderNum {} with error:{}", orderId, ExceptionUtils.getStackTrace(e));
}
} }
} }
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()) {
try {
log.debug("Process updating status by orderNum {}", orderId); log.debug("Process updating status by orderNum {}", orderId);
SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate( SOrders sOrder = sOrdersImdg.getSingleObjectByPredicate(
sOrdersImdg.predicateBuilder().equals("orderNum", orderId) sOrdersImdg.predicateBuilder().equals("orderNum", orderId)
@ -458,9 +464,12 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
continue; continue;
} }
orderCurrency.setStatus(status.getKey()); orderCurrency.setStatus(status.getKey());
orderCurrency.setExchangeOrderId(Long.valueOf(sOrder.getExchangeOrderNum())); orderCurrency.setExchangeOrderId(normalize(sOrder.getExchangeOrderNum()));
orderCurrency.setUpdated(Instant.now()); orderCurrency.setUpdated(Instant.now());
orderCurrencyImdg.update(orderCurrency); orderCurrencyImdg.update(orderCurrency);
} catch (Exception e) {
log.error("Error updating status by orderNum {} with error:{}", orderId, ExceptionUtils.getStackTrace(e));
}
} }
} }
@ -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);
}
} }