From 06c37e11be44cb9fa3645145b99b5709c6ca4846 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 1 Aug 2023 20:59:37 +0300 Subject: [PATCH] securitySymbol --- .../clearing/service/RegistryManager.java | 15 +++++-- .../stage/PrimaryAuctionBnSession.java | 40 ++++++++++--------- .../stage/PrimaryAuctionT0Session.java | 38 ++++++++++-------- .../impl/FormingPaymentInstructionAssets.java | 35 +++++++++++++--- ...ormingPaymentInstructionDepositReturn.java | 8 ++-- .../FormingPaymentInstructionReturnMkr.java | 8 ++-- .../FormingPaymentInstructionSecondaryT0.java | 16 +++++--- .../stage/impl/InspectionObligations.java | 9 +++-- .../specific/RegistryAssetPredicate.java | 7 ++-- 9 files changed, 113 insertions(+), 63 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java index 5b48041b5..ad9c56abc 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryManager.java @@ -75,9 +75,16 @@ public class RegistryManager { return Optional.ofNullable(dmt); } - public Optional findRelatedAsset(Long tradingClearingRegistryId, Long companyId, RegistryTradingParams rgsCode) { + public Optional findRelatedAsset(Long tradingClearingRegistryId, + Long companyId, + String securitySymbol, + RegistryTradingParams rgsCode) { ImdgPredicate prdct = RegistryAssetPredicate - .instance(tradingClearingRegistryId, companyId, rgsCode) + .instance(tradingClearingRegistryId, + companyId, + securitySymbol, + rgsCode + ) .apply(rgsImdg); return Optional.ofNullable(rgsImdg.getSingleObjectByPredicate(prdct)); } @@ -104,8 +111,8 @@ public class RegistryManager { ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), pb.sql(sql), pb.equals("companyId", companyId), - pb.equals("accountId", accountId) - + pb.equals("accountId", accountId), + pb.equals("securitySymbol", registry.getSecuritySymbol()) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java index 7065a0c3d..c6220873a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java @@ -39,8 +39,9 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali private final InclusionObligations inclusionObligations; private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; - private final FormingPaymentInstruction formingPaymentInstruction; - private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; + private final FormingPaymentInstructionAssets formingPaymentInstructionAssets; +// private final FormingPaymentInstruction formingPaymentInstruction; +// private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; private final UnlockResources unlockResources; private final FinishingSession finishingSession; private final EndStageNotification endStageNotification; @@ -57,9 +58,9 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali ObligationAdmission obligationsAdmission, InclusionObligations inclusionObligations, FormingRegistersOnOS formingRegistersOnOS, - FormingPaymentInstruction formingPaymentInstruction, - FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, - UnlockResources unlockResources, +// FormingPaymentInstruction formingPaymentInstruction, +// FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, + FormingPaymentInstructionAssets formingPaymentInstructionAssets, UnlockResources unlockResources, FinishingSession finishingSession, EndStageNotification endStageNotification, IMessageResolver messageResolver, @@ -72,13 +73,14 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali this.obligationsAdmission = obligationsAdmission; this.inclusionObligations = inclusionObligations; this.formingRegistersOnOS = formingRegistersOnOS; - this.formingPaymentInstruction = formingPaymentInstruction; + this.formingPaymentInstructionAssets = formingPaymentInstructionAssets; +// this.formingPaymentInstruction = formingPaymentInstruction; this.unlockResources = unlockResources; this.finishingSession = finishingSession; this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.inspectionObligations = inspectionObligations; - this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; +// this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; this.marketCodes = marketCodes; } @@ -149,6 +151,7 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); + companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } //stage 6 @@ -157,23 +160,24 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali payload.setSessionId(currSession.getId()); runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection } - StageResult> returnsPayment = null; + //stage 7 + StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); //stage 7 - returnsPayment = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); + paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionAssets); } //stage 7 - StageResult> paymentResult = null; - { - FormingPaymentInstructionDealsMkrPayload payload = new FormingPaymentInstructionDealsMkrPayload(); - payload.setSessionId(currSession.getId()); - payload.setSection(section()); - payload.setPaymentInstructionReturns(returnsPayment.getStageResult()); - - paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDealsFinalMkr); - } +// StageResult> paymentResult = null; +// { +// FormingPaymentInstructionDealsMkrPayload payload = new FormingPaymentInstructionDealsMkrPayload(); +// payload.setSessionId(currSession.getId()); +// payload.setSection(section()); +// payload.setPaymentInstructionReturns(returnsPayment.getStageResult()); +// +// paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDealsFinalMkr); +// } if (paymentResult != null && paymentResult.getStageResult().isEmpty()) { runStage(TaskType.FormingPaymentInstruction, balanceRevise); // finishPart(req); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java index 7dd110c04..1847dae68 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java @@ -39,8 +39,9 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali private final InclusionObligations inclusionObligations; private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; - private final FormingPaymentInstruction formingPaymentInstruction; - private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; + private final FormingPaymentInstructionAssets formingPaymentInstructionAssets; +// private final FormingPaymentInstruction formingPaymentInstruction; +// private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; private final UnlockResources unlockResources; private final FinishingSession finishingSession; private final EndStageNotification endStageNotification; @@ -56,8 +57,9 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali ObligationAdmission obligationsAdmission, InclusionObligations inclusionObligations, FormingRegistersOnOS formingRegistersOnOS, - FormingPaymentInstruction formingPaymentInstruction, - FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, + FormingPaymentInstructionAssets formingPaymentInstructionAssets, +// FormingPaymentInstruction formingPaymentInstruction, +// FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, UnlockResources unlockResources, FinishingSession finishingSession, EndStageNotification endStageNotification, @@ -71,13 +73,14 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali this.obligationsAdmission = obligationsAdmission; this.inclusionObligations = inclusionObligations; this.formingRegistersOnOS = formingRegistersOnOS; - this.formingPaymentInstruction = formingPaymentInstruction; + this.formingPaymentInstructionAssets = formingPaymentInstructionAssets; +// this.formingPaymentInstruction = formingPaymentInstruction; this.unlockResources = unlockResources; this.finishingSession = finishingSession; this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.inspectionObligations = inspectionObligations; - this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; +// this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; this.marketCodes = marketCodes; } @@ -148,6 +151,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); + companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } //stage 6 @@ -156,23 +160,23 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali payload.setSessionId(currSession.getId()); runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection } - StageResult> returnsPayment = null; + StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); //stage 7 - returnsPayment = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); + paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionAssets); } //stage 7 - StageResult> paymentResult = null; - { - FormingPaymentInstructionDealsMkrPayload payload = new FormingPaymentInstructionDealsMkrPayload(); - payload.setSessionId(currSession.getId()); - payload.setSection(section()); - payload.setPaymentInstructionReturns(returnsPayment.getStageResult()); - - paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDealsFinalMkr); - } +// StageResult> paymentResult = null; +// { +// FormingPaymentInstructionDealsMkrPayload payload = new FormingPaymentInstructionDealsMkrPayload(); +// payload.setSessionId(currSession.getId()); +// payload.setSection(section()); +// payload.setPaymentInstructionReturns(returnsPayment.getStageResult()); +// +// paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDealsFinalMkr); +// } if (paymentResult != null && paymentResult.getStageResult().isEmpty()) { runStage(TaskType.FormingPaymentInstruction, balanceRevise); // finishPart(req); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java index d6797f9a2..5a79dcb44 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java @@ -33,6 +33,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; +import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IMessageResolver; @@ -63,6 +64,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage { private final Sdf03Creator sdf03Creator; private KafkaSender kafkaSender; private final IMessageResolver msgResolver = new SimpleMessageResolver(); + private final SecuritySelector securitySelector; private final RegistryManager rgsMng; @Autowired @@ -80,6 +82,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage { this.sDf12Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf12, SDf12.class); this.paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); this.rgsMng = rgsMng; + this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class); } @Override @@ -163,7 +166,11 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = tranAcc; creditLegAccount = counterAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAmtO = rgsMng.findRelatedAsset(registry.getTradingClearingRegistryId(), registry.getCompanyId(), AM_T); + Optional payerAmtO = rgsMng.findRelatedAsset( + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T); payerAmtO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -174,7 +181,12 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = counterAcc; creditLegAccount = tranAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAmtO = rgsMng.findRelatedAsset(registry.getTradingClearingRegistryId(), registry.getCompanyId(), AM_T); + Optional payerAmtO = rgsMng.findRelatedAsset( + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T + ); payerAmtO.ifPresent(amt -> { amt.setSettledCredit(safeBD(amt.getSettledCredit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -223,7 +235,12 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = dtrnAcc; creditLegAccount = counterAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAstO = rgsMng.findRelatedAsset(registry.getTradingClearingRegistryId(), registry.getCompanyId(), AS_T); + Optional payerAstO = rgsMng.findRelatedAsset( + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AS_T + ); payerAstO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -234,7 +251,12 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = counterAcc; creditLegAccount = dtrnAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); - Optional payerAstO = rgsMng.findRelatedAsset(registry.getTradingClearingRegistryId(), registry.getCompanyId(), AS_T); + Optional payerAstO = rgsMng.findRelatedAsset( + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AS_T + ); payerAstO.ifPresent(amt -> { amt.setSettledCredit(safeBD(amt.getSettledCredit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -332,7 +354,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage { sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); sDf12.setQuantity(BigDecimalUtil.limitDecimalPlaces(paymentInstruction.getCreditLeg_amount().toString(), 2)); - sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); + Security security = securitySelector.selectSecurityById(paymentInstruction.getCreditLeg_securityId()); + if (security != null) { + sDf12.setSecurityCode(security.getSecuritySymbol()); + } sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); // sDf12.setTransactionNumber(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java index 6811a846d..b4bbacd5b 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java @@ -153,10 +153,10 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { } { //изменение активов - блокируем средства беред отправкой sdf'ов - Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_F); - Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_T); - Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_B); - Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), AM_B); + Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_F); + Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_T); + Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); + Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", lm_t.getId(), cm_t.getId(), diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java index a8017181f..deb84c365 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java @@ -159,10 +159,10 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { } { //изменение активов - блокируем средства беред отправкой sdf'ов - Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_F); - Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_T); - Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_B); - Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), AM_B); + Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_F); + Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_T); + Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); + Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", lm_t.getId(), cm_t.getId(), diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java index cc964686d..f6cf35a8f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java @@ -33,6 +33,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; +import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector; import ru.spcex.platform.utils.collection.Pair; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumKey; @@ -68,6 +69,7 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { private final Sdf03Creator sdf03Creator; private final IMessageResolver msgResolver = new SimpleMessageResolver(); private final RegistryManager rgsMng; + private final SecuritySelector securitySelector; @Autowired public FormingPaymentInstructionSecondaryT0(ImdgProvider imdgProvider, @@ -84,6 +86,7 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { this.paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); this.sdf03Creator = sdf03Creator; this.rgsMng = rgsMng; + this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class); } @Override @@ -156,10 +159,10 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { } { //изменение активов - блокируем средства беред отправкой sdf'ов - Optional amfO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), AS_F); - Optional payerAmtO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), AS_T); - Optional ambO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), AS_B); - Optional receiverAmtO = rgsMng.findRelatedAsset(cs_t.getTradingClearingRegistryId(), cs_t.getCompanyId(), AS_B); + Optional amfO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_F); + Optional payerAmtO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_T); + Optional ambO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_B); + Optional receiverAmtO = rgsMng.findRelatedAsset(cs_t.getTradingClearingRegistryId(), cs_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", ls_t.getId(), cs_t.getId(), @@ -286,7 +289,10 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); sDf12.setQuantity(BigDecimalUtil.limitDecimalPlaces(paymentInstruction.getCreditLeg_amount().toString(), 2)); - sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); + Security security = securitySelector.selectSecurityById(paymentInstruction.getCreditLeg_securityId()); + if (security != null) { + sDf12.setSecurityCode(security.getSecuritySymbol()); + } sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); // sDf12.setTransactionNumber(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java index 69b7ce878..e81828029 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java @@ -173,13 +173,14 @@ public class InspectionObligations implements ISessionStage { RegistryUnit.F); } - String sqlCounterRegistryCondition = String.format("%s and " + + return String.format("%s and " + "tradingClearingRegistryId = '%s' and " + - "companyId = '%s'", + "securitySymbol = '%s' and " + + "companyId = %d", RegistryCodeSqlBuilder.getInstance(counterRegistryTradingParams).build(), obligation.getTradingClearingRegistryId(), + obligation.getSecuritySymbol(), obligation.getCompanyId()); - return sqlCounterRegistryCondition; } private String searchMoneyBAssetsSql(Registry obligation) { @@ -197,10 +198,12 @@ public class InspectionObligations implements ISessionStage { return String.format("%s and " + "tradingClearingRegistryId = '%s' and " + "companyId = '%s' and " + + "securitySymbol = '%s' and " + "accountId = %s", RegistryCodeSqlBuilder.getInstance(AS_B).build(), registry.getTradingClearingRegistryId(), registry.getCompanyId(), + registry.getSecuritySymbol(), registry.getAccountId()); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryAssetPredicate.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryAssetPredicate.java index 232dda0df..c2983651c 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryAssetPredicate.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/RegistryAssetPredicate.java @@ -7,10 +7,10 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.util.function.Function; -public record RegistryAssetPredicate(Long tcrId, Long companyId, RegistryTradingParams rgsCode) implements Function, ImdgPredicate> { +public record RegistryAssetPredicate(Long tcrId, Long companyId, String securitySymbol, RegistryTradingParams rgsCode) implements Function, ImdgPredicate> { - public static RegistryAssetPredicate instance(Long tcrId, Long companyId, RegistryTradingParams rgsCode) { - return new RegistryAssetPredicate(tcrId, companyId, rgsCode); + public static RegistryAssetPredicate instance(Long tcrId, Long companyId, String securitySymbol, RegistryTradingParams rgsCode) { + return new RegistryAssetPredicate(tcrId, companyId, securitySymbol, rgsCode); } @Override @@ -21,6 +21,7 @@ public record RegistryAssetPredicate(Long tcrId, Long companyId, RegistryTrading return rgsPrdBldr.and( rgsPrdBldr.equals("tradingClearingRegistryId", tcrId), rgsPrdBldr.equals("companyId", companyId), + rgsPrdBldr.equals("securitySymbol", securitySymbol), rgsPrdBldr.sql(codeSql.build()) ); }