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); }