From 0961748a2ab243fa3cafcdd562f9553f6a5ef890 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 26 Sep 2023 13:21:47 +0300 Subject: [PATCH 1/2] sdf57 session autostart fix awaiting sdfs sdf57 dmau logic only for InOutDirection.in identificationFunds dmau.debit/am_t.credit --- .../ru/spcex/clearing/service/RegistryService.java | 4 ++++ .../clearing/service/executors/Sdf57Executor.java | 3 ++- .../java/ru/spcex/clearing/service/model/Result.java | 9 +++++++++ .../spcex/clearing/statement/StatementServiceV2.java | 11 +++++++---- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java index d59892710..81456f9bf 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java @@ -256,11 +256,15 @@ public class RegistryService { AssetTrio asts = validator.getStored(ValidationStored.IdentificationFundsAssetTrio); Account anltAcc = validator.getStored(Stored.AnltAccount); BigDecimal dmauBalance = safeBD(dmau.getBalance()); + BigDecimal dmauDebitBalance = safeBD(dmau.getDebit()); BigDecimal reqBalance = payload.getBalance(); BigDecimal am_tBalance = safeBD(asts.a__t().getBalance()); + BigDecimal am_tCreditBalance = safeBD(asts.a__t().getCredit()); dmau.setBalance(dmauBalance.subtract(reqBalance)); + dmau.setDebit(dmauDebitBalance.add(reqBalance)); asts.a__t().setBalance(am_tBalance.add(reqBalance)); + asts.a__t().setCredit(am_tCreditBalance.add(reqBalance)); Instant now = Instant.now(); dmau.setUpdated(now); asts.a__t().setUpdated(now); 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 4c05ffd9f..5bc78342c 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 @@ -370,7 +370,7 @@ public class Sdf57Executor extends AbstractExecutor { sdf57.getDbfId().toString()); asts.ifPresent(trio -> assets.process(trio.a__b(), trio.a__t(), trio.a__f(), BigDecimal.ZERO)); } - } else { + } else if (InOutDirection.in.equals(IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()))) { log.debug("stmt.id={} comment='{}' error: {}. Operating through DMAU registry", stmt.getId(), stmt.getComment(), @@ -417,6 +417,7 @@ public class Sdf57Executor extends AbstractExecutor { statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate); } if (sessionIsNeededFlag.get()) { + result.setSessionWasStarted(true); LauncherCommandRequest sessionTask = new LauncherCommandRequest(); sessionTask.setSection(Section.MKR.getKey()); sessionTask.setSessionType(SessionType.XDEP.getKey()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java index b0b59ebbe..0faf054d9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java @@ -10,6 +10,7 @@ public class Result { private Long childGenerationId; private String fileName; private boolean anyHasError; + private boolean sessionWasStarted = false; public List getAccountRequests() { return accountRequests; @@ -42,4 +43,12 @@ public class Result { public void setAnyHasError(boolean anyHasError) { this.anyHasError = anyHasError; } + + public boolean isSessionWasStarted() { + return sessionWasStarted; + } + + public void setSessionWasStarted(boolean sessionWasStarted) { + this.sessionWasStarted = sessionWasStarted; + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java index 5a5705d93..264a5f137 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java @@ -181,12 +181,14 @@ public class StatementServiceV2 { return; } //затем sdf57 - processSdf57(sdf57); + boolean sessionStarted = processSdf57(sdf57); removeFirstWithSameTableAndGroupId(sdf57); reviser.doRevise(sdf01.getGroupId()); //теперь можем продолжить сессию с шага 1 - SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_01, SdfTable.SDF_57); - kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + if (!sessionStarted) { + SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_01, SdfTable.SDF_57); + kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + } log.info("pair sdf01/sdf57 processed successfully"); } @@ -242,12 +244,13 @@ public class StatementServiceV2 { return res; } - private void processSdf57(StatementRequest statementRequest) { + private boolean processSdf57(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf57, SDf57.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( "generationId", statementRequest.getGroupId())); AbstractExecutor service = sdf57Executor; Result res = service.execute(sdfGroup, statementRequest); + return res.isSessionWasStarted(); // finishSendCommand(res, service, statementRequest); } From c201e850ce3354c6b3d8f4cd55b9df1d31bc09d9 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 26 Sep 2023 13:33:31 +0300 Subject: [PATCH 2/2] FINL/XDEP removed planned balance checked --- .../session/stage/FinalMkrSession.java | 20 +++++++++---------- .../session/stage/ReturnDepositSession.java | 20 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java index 3a02ffa88..7323b0eff 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java @@ -243,16 +243,16 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean 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(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java index 4eadca2cb..1b3ec1989 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java @@ -193,16 +193,16 @@ public class ReturnDepositSession extends AbstractSession implements Initializin 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();