From 6ec042bd30cc6f1e1259c325c1b153743f6a6a73 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 29 Sep 2023 16:22:41 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D1=81=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20?= =?UTF-8?q?dm*x=20=D1=84=D0=B8=D0=BA=D1=81=20=D1=81=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=BC=20=D0=B0=D1=81=D1=81=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B8=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=BC=20=D0=B8=20ipob=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20planbalance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/executors/Sdf57Executor.java | 46 +++++++++++++++---- .../service/registry/AssetTBFProcessing.java | 3 +- .../stage/PrimaryAuctionBnSession.java | 20 ++++---- 3 files changed, 49 insertions(+), 20 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 5bc78342c..4986c50fd 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 @@ -320,15 +320,35 @@ public class Sdf57Executor extends AbstractExecutor { registryD.getId()); sessionIsNeededFlag.set(true); } else if (tm_tFound.isPresent()) { - Registry tm_t = tm_tFound.get(); - Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X); - registryImdg.insert(registryD); - log.debug("stmt.id={}, sdf57.specif={} found TM*T.id={} new DM*X.id={}. Return money identification for Initiator account based on TM*T registry searchin on companyId, accountId, contract and registry_status=PROC|MGN", - stmt.getId(), - sdf57.getSpecif(), - tm_t.getId(), - registryD.getId()); - sessionIsNeededFlag.set(true); + Optional dm_xFound = RegistrySearch.builder(registryImdg) + .rgsCode(RegistryTradingParams.DM_X) + .companyId(company.getId()) + .accountId(account.getId()) + .contract(stmt.getContract()) + .statusNotOk() + .find(); + if (dm_xFound.isEmpty()) { + Registry tm_t = tm_tFound.get(); + Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X); + registryImdg.insert(registryD); + log.debug("stmt.id={}, sdf57.specif={} found TM*T.id={} new DM*X.id={}. Return money identification for Initiator account based on TM*T registry searchin on companyId, accountId, contract and registry_status=PROC|MGN", + stmt.getId(), + sdf57.getSpecif(), + tm_t.getId(), + registryD.getId()); + sessionIsNeededFlag.set(true); + } else { + Registry dm_x = dm_xFound.get(); + dm_x.setBalance(safeBD(dm_x.getBalance()).add(safeBD(stmt.getAmount()))); + dm_x.setUpdated(Instant.now()); + registryImdg.update(dm_x); + log.debug("stmt.id={}, sdf57.specif={} updated {}.id={}", + stmt.getId(), + sdf57.getSpecif(), + dm_x.getRegistryCode(), + dm_x.getId()); + sessionIsNeededFlag.set(true); + } } } stmt.setOperationStatus(OperationStatus.Executed.getKey()); @@ -610,6 +630,14 @@ public class Sdf57Executor extends AbstractExecutor { return this; } + private RegistrySearch statusNotOk() { + predicate = pb.and(predicate, pb.or( + pb.equals("registryStatus", RegistryStatus.PROC.getKey()), + pb.equals("registryStatus", RegistryStatus.UNCV.getKey()) + )); + return this; + } + private Optional find() { return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(predicate)); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java index 3b5c3ac62..d5d078e7a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java @@ -169,7 +169,8 @@ public class AssetTBFProcessing { pb.sql(RegistryCodeSqlBuilder.getInstance(params).build()), pb.equals("tradingClearingRegistryId", rgs.getTradingClearingRegistryId()), pb.equals("companyId", rgs.getCompanyId()), - pb.equals("accountId", rgs.getAccountId()) + pb.equals("accountId", rgs.getAccountId()), + pb.equals("securityId", rgs.getSecurityId()) ); return Optional.ofNullable(rgsImdg.getFirstObjectByPredicate(prdct)); } 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 e0577eab0..833d337eb 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 @@ -214,16 +214,16 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali public void finishPart() { try { //stage 9 continue revision - { - StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); - if (!reviseRes.isSuccess()) { - this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); - log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); - return; - } - } + //{ + // StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); + // if (!reviseRes.isSuccess()) { + // this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); + // log.warn("{} stage error, created monitor for {}", + // TaskType.AgainRevise, + // afterReviseErrorMonitor.allConditions()); + // return; + // } + //} //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload();