From 94715bdd345fbc3e66f031341630d1672253f50a Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 9 Jul 2024 13:13:32 +0300 Subject: [PATCH] =?UTF-8?q?don't=20send=20asset=20to=20gateway=20if=20acti?= =?UTF-8?q?ve=20session=20exists=20and=20comment=20contains=20'=D0=9F?= =?UTF-8?q?=D0=9E=20=D0=98=D0=A2=D0=9E=D0=93=D0=A3=20=D0=9A=D0=9B=D0=98?= =?UTF-8?q?=D0=A0=D0=98=D0=9D=D0=93=D0=90'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/executors/Sdf57Executor.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index d421a5b5b..2a5badb39 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -193,6 +193,11 @@ public class Sdf57Executor extends AbstractExecutor { boolean sessionIsPresent = sessionImdg.getFirstObjectByFieldValues(Map.of( "workflowStatus", SessionStatus.ACTV.getKey() )) != null; + boolean existActiveCurrSession = sessionImdg.getFirstObjectByFieldValues( + Map.of( + "workflowStatus", SessionStatus.ACTV.getKey(), + "sessionType", SessionType.CURR.getKey() + )) != null; sdf = sdf.stream().sorted(Comparator.comparing(SpcexObjectBase::getId)).toList(); for (SDf57 sdf57 : sdf) { IValidator validator = sDf57Validator.apply(sdf57); @@ -396,12 +401,15 @@ public class Sdf57Executor extends AbstractExecutor { log.trace("stmt.id={} {}.id={} TCR is empty, skipping gateway request", stmt.getId(), asts.a__t().getRegistryCode(), asts.a__t().getId()); } else { - log.trace("sending gateway request for stmt.id={}", stmt.getId()); Optional gtwReq = gatewayRequest(stmt, company, account, - asts.a__t().getTradingClearingRegistry()); - gtwReq.ifPresent(r -> kafka.sendRequestToQueue(Consts.ASSET_OPERATION, r)); + asts.a__t().getTradingClearingRegistry(), + existActiveCurrSession); + gtwReq.ifPresent(r -> { + log.trace("sending gateway request for stmt.id={}", stmt.getId()); + kafka.sendRequestToQueue(Consts.ASSET_OPERATION, r); + }); } } return Optional.of(asts); @@ -826,11 +834,18 @@ public class Sdf57Executor extends AbstractExecutor { } private static final Pattern csBlkd = Pattern.compile(SpecifFlag.CS_BLKD.getKey() + "_(\\d+).*"); + private static final String COMMENT_FOR_SKIPPING_SEND_ASSETS_CURR_SESSION = "ПО ИТОГУ КЛИРИНГА"; - private Optional gatewayRequest(Statement stmt, Company company, Account account, String tcrCode) { + private Optional gatewayRequest(Statement stmt, Company company, Account account, + String tcrCode, boolean existActiveCurrSession) { if (AccountType.Anlt.equalsByKey(account.getAccountType())) { return Optional.empty(); } + String specif = stmt.getComment(); + if (existActiveCurrSession && !TextUtil.isEmpty(specif) && + specif.toUpperCase().contains(COMMENT_FOR_SKIPPING_SEND_ASSETS_CURR_SESSION)) { + return Optional.empty(); + } String tradingCode = company.getTradingCode(); AssetOperationListRequest gatewayRequest = new AssetOperationListRequest(); Currency currency = currencyImdg.getSingleObjectByID(stmt.getSecurityId()); @@ -839,7 +854,6 @@ public class Sdf57Executor extends AbstractExecutor { tradingCode, tcrCode, currency != null ? currency.getCurrencyCode() : CurrencyCode.RUB.getKey()); - String specif = stmt.getComment(); Matcher m; if (!TextUtil.isEmpty(specif) && (m = csBlkd.matcher(specif)).find()) { try {