From a74a7e16439ee03166a912edd82fbb58d4b0f982 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 28 Apr 2026 13:35:37 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-970 --- .../management/listener/TaskListener.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 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 abef73fad..a77cd4e1a 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 @@ -97,6 +97,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean { log.info("CROR createOrder started, request={}", newReq); Collection registryIds = imdgQueryService.getCurrencyRegistry(); + //todo очередность создания if (registryIds == null || registryIds.isEmpty()) { log.info("No registries found for CROR processing"); return; @@ -167,24 +168,25 @@ public class TaskListener extends QueueConsumer implements InitializingBean { private String checkBalance(OrderCurrency orderCurrency) { Registry pmtRegistry = imdgQueryService.getRegistryById(orderCurrency.getRegistryId()); - Registry amtRegistry = imdgQueryService.findAmtRegistry(pmtRegistry, CurrencyCode.RUB.getKey()); - String currency = pmtRegistry.getSecuritySymbol().equals(CurrencyCode.RUB.getKey()) - ? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol(); + Registry amtRegistry = null; + boolean isRubPmt = pmtRegistry.getSecuritySymbol().equals(CurrencyCode.RUB.getKey()); + if (!isRubPmt) { + amtRegistry = imdgQueryService.findAmtRegistry(pmtRegistry, CurrencyCode.RUB.getKey()); + } + + String currency = isRubPmt ? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol(); SCrossRate sCrossRate = imdgQueryService.getSCrossRates(currency, LocalDate.now()); + BigDecimal val = orderCurrency.getQuantityLot() .multiply(orderCurrency.getLotSize()) .multiply(sCrossRate.getUnitRate()); - BigDecimal diff; - int compareRes = amtRegistry.getBalance().compareTo(BigDecimal.ZERO); - if (compareRes < 0) { - diff = amtRegistry.getBalance().add(val); - } else { - diff = amtRegistry.getBalance().subtract(val); - } + BigDecimal diff = isRubPmt ? + pmtRegistry.getBalance().add(val) : + amtRegistry.getBalance().subtract(val); if (diff.compareTo(BigDecimal.ZERO) < 0) { return String.format("Для ТКР %s компании %s: баланс %s RUB;", - amtRegistry.getTradingClearingRegistry(), amtRegistry.getShortName(), + pmtRegistry.getTradingClearingRegistry(), pmtRegistry.getShortName(), diff.setScale(2, RoundingMode.HALF_UP)); } return null;