From 7e0eda6fe3fcd4f262bfa4e3538a0458b2f947fa Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 22 Aug 2023 18:36:56 +0300 Subject: [PATCH] FormingPaymentInstructionSecurities bugfix --- .../service/registry/RegistryManager.java | 15 +++++++++++++++ .../impl/FormingPaymentInstructionSecurities.java | 9 +++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java index 3e6b69530..4d04161f1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java @@ -162,6 +162,21 @@ public class RegistryManager { return Optional.ofNullable(rgsImdg.getSingleObjectByPredicate(prdct)); } + public Optional findRelatedAssetTran(Long tcrId, + Long companyId, + String securitySymbol, + RegistryTradingParams rgsCode) { + ImdgPredicateBuilder rgsPrdBldr = rgsImdg.predicateBuilder(); + RegistryCodeSqlBuilder codeSql = RegistryCodeSqlBuilder.getInstance(rgsCode); + ImdgPredicate prdct = rgsPrdBldr.and( + rgsPrdBldr.equals("tradingClearingRegistryId", tcrId), + rgsPrdBldr.equals("companyId", companyId), + rgsPrdBldr.equals("securitySymbol", securitySymbol), + rgsPrdBldr.equals("accountType", AccountType.Tran.getKey()), + rgsPrdBldr.sql(codeSql.build())); + return Optional.ofNullable(rgsImdg.getSingleObjectByPredicate(prdct)); + } + public static void zeroState(Registry rgs) { rgs.setBalance(BigDecimal.ZERO); rgs.setDebit(BigDecimal.ZERO); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java index 2d190f899..c64deee1d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java @@ -107,13 +107,14 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { } - private Collection selectSecurityRegistries() { + private Collection selectSecurityRegistries(Long sessionId) { ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder(); RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance( CS_T, LS_T ); ImdgPredicate rgsCodePrdct = rgsPb.and( rgsPb.sql(registryCodeSqlBuilder.build()), + rgsPb.equals("sessionId", sessionId), rgsPb.equals("settlementDate", LocalDate.now())); Collection registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct); return registries.stream() @@ -143,7 +144,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { List paymentInstructionAll = new ArrayList<>(); Instant now = Instant.now(); { - Collection registries = selectSecurityRegistries(); + Collection registries = selectSecurityRegistries(sessionId); log.debug("found registries.size() = {}", registries.size()); //группируем регистры по groupId Map> groups = registries @@ -264,7 +265,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { debitLegAccount = tranAcc; creditLegAccount = counterAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAmtO = rgsMng.findRelatedAsset( + Optional payerAmtO = rgsMng.findRelatedAssetTran( registry.getTradingClearingRegistryId(), registry.getCompanyId(), registry.getSecuritySymbol(), @@ -279,7 +280,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { debitLegAccount = counterAcc; creditLegAccount = tranAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAmtO = rgsMng.findRelatedAsset( + Optional payerAmtO = rgsMng.findRelatedAssetTran( registry.getTradingClearingRegistryId(), registry.getCompanyId(), registry.getSecuritySymbol(),