From c8fabb4444dc3cc5638b8bc79c7b7c3ea0a74445 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 3 Jun 2026 16:41:06 +0300 Subject: [PATCH] fix check balance for cny --- .../dflt/management/listener/TaskListener.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java index 3154e7294..338e20022 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java @@ -46,12 +46,15 @@ import ru.spcex.platform.enumeration.ObjectType; import ru.spcex.platform.enumeration.OrderStatus; import ru.spcex.platform.enumeration.OvernightType; import ru.spcex.platform.enumeration.Priority; +import ru.spcex.platform.enumeration.RegistryTradingParams; import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.log.ExceptionUtils; +import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; +import static ru.spcex.platform.utils.number.BigDecimalUtil.safeSumBD; @Service public class TaskListener extends QueueConsumer implements InitializingBean { @@ -194,11 +197,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean { log.debug("Check balance for registryId={}; order ids: {}", registryId, orderCurrencies.stream().map(OrderCurrency::getId).collect(Collectors.toList())); Registry pmtRegistry = imdgQueryService.getRegistryById(registryId); - Registry amfRegistry = null; boolean isRubPmt = pmtRegistry.getSecuritySymbol().equals(CurrencyCode.RUB.getKey()); - if (!isRubPmt) { - amfRegistry = imdgQueryService.findAmfRegistry(pmtRegistry, CurrencyCode.RUB.getKey()); - } String currency = isRubPmt ? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol(); Rates rates = imdgQueryService.getRateOnNextWorkingDay(currency); @@ -215,7 +214,12 @@ public class TaskListener extends QueueConsumer implements InitializingBean { registryBalance = pmtRegistry.getBalance(); diff = registryBalance.add(summaryValByCurrencies); } else { - registryBalance = amfRegistry.getBalance(); + Registry amfRegistry = imdgQueryService.findAmfRegistry(pmtRegistry, CurrencyCode.RUB.getKey()); + Collection om_ts = imdgQueryService.findOTRegistry(pmtRegistry, RegistryTradingParams.OM_T, CurrencyCode.RUB.getKey()); + Collection tm_ts = imdgQueryService.findOTRegistry(pmtRegistry, RegistryTradingParams.TM_T, CurrencyCode.RUB.getKey()); + registryBalance = safeBD(amfRegistry, Registry::getBalance) + .subtract(safeSumBD(om_ts, Registry::getBalance)) + .add(safeSumBD(tm_ts, Registry::getBalance)); diff = registryBalance.subtract(summaryValByCurrencies); } log.debug("Registry balance: {}; Summary balance by orders: {}; diff: {}", registryBalance,