diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/RegistryStep3ValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/RegistryStep3ValidationRule.java index 51d3a4982..cd3280df5 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/RegistryStep3ValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/RegistryStep3ValidationRule.java @@ -45,10 +45,10 @@ public enum RegistryStep3ValidationRule implements IValidationRule relationImdg = context.obtainMap(IMDGDistributedNames.Map_Relation, Relation.class); Imdg sessionImdg = context.obtainMap(IMDGDistributedNames.Map_Session, Session.class); - Session activeSession = sessionImdg.getSingleObjectByID(validatedObject.getSessionId()); + //Session activeSession = sessionImdg.getSingleObjectByID(validatedObject.getSessionId()); Relation relation = relationImdg.getFirstObjectByFieldValues(Map.of( "consumerId", validatedObject.getCompanyId(), - "service", activeSession.getSection())); + "service", validatedObject.getSection())); if (relation == null || (!ServiceStatus.Active.equalsByKey(relation.getServiceStatus()) && !ServiceStatus.Reopened.equalsByKey(relation.getServiceStatus()))) { return of(ClearingError.ClearingUnavailableForCompany, sectionFind.get(), validatedObject.getCompanyId()); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java index eb12f8d81..d216e3bac 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java @@ -324,7 +324,7 @@ public class UnitedSession extends AbstractSession implements InitializingBean { @Override protected Section section() { - return Section.FOND; + return Section.MULT; } @Override 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 fdfa5d267..ad38ae7b8 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 @@ -252,8 +252,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage { .debitLegAccount(debitLegAccount) .creditLegAccount(creditLegAccount) .amount(amount) - .currency(SessionType.CURR.equals(sessionType) || Section.CURR.equalsByKey(registry.getSection()) - ? registry.getSecuritySymbol() : null) + .currency(registry.getSecuritySymbol()) .sessionId(sessionId) .checkBLKD((SessionType.FINL.equals(sessionType) || SessionType.MEDM.equals(sessionType)) && !isPositiveBalance ? registry : null) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java index c189a6cf4..d86ee9624 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java @@ -8,7 +8,7 @@ import ru.spcex.platform.enumeration.SdfTable; public enum SdfGroup { // Sdf01And57(SdfTable.SDF_01, SdfTable.SDF_57), - Sdf08And21(SdfTable.SDF_08, SdfTable.SDF_21), +// Sdf08And21(SdfTable.SDF_08, SdfTable.SDF_21), //------ session groups ------ (4), (1 57), (13), (8 21) //session_Triple(SdfTable.SDF_04, SdfTable.SDF_01, SdfTable.SDF_57), 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 d36107498..a91caf613 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 @@ -118,9 +118,11 @@ public class StatementServiceV2 { switch (table) { case SDF_01 -> processSdf01(systemRequest.getRequestPayload()); case SDF_04 -> processSdf04(systemRequest.getRequestPayload()); + case SDF_08 -> processSdf08(systemRequest.getRequestPayload()); case SDF_10 -> sdf10Executor.execute(systemRequest); case SDF_13 -> processSdf13(systemRequest.getRequestPayload()); case SDF_20 -> sdf20Executor.execute(systemRequest); + case SDF_21 -> processSdf21(systemRequest.getRequestPayload()); case SDF_55 -> sdf55Executor.execute(systemRequest); case SDF_57 -> processSdf57(systemRequest.getRequestPayload()); default -> log.error("unknown table {}", table); @@ -148,9 +150,9 @@ public class StatementServiceV2 { log.debug("find full set of SDF requests: {}", fullGroup.stream() .map(stReq -> stReq.getTable().getKey() + " generationId=" + stReq.getGroupId()) .collect(TextUtil.join)); - if (sdfGroup.get() == SdfGroup.Sdf08And21) { - processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); - } +// if (sdfGroup.get() == SdfGroup.Sdf08And21) { +// processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); +// } // else if (sdfGroup.get() == SdfGroup.Sdf01And57) { // processSdf01Parent(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); // } @@ -164,9 +166,9 @@ public class StatementServiceV2 { // processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); // processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); //} - else { - throw new IllegalStateException("not implemented"); - } +// else { + throw new IllegalStateException("not implemented"); +// } } private static StatementRequest find(SdfTable table, Collection reqs) { @@ -177,27 +179,6 @@ public class StatementServiceV2 { return first.get(); } - /** - * fromAccService передается когда пришел ответ от account-service - * в этом случае: по key находим пару в которой сохранен sdf57 запрос и частично выполненный sdf01 - * вместо старого sdf01 запроса выполняем новый пришедший от account-service - */ - private void processSdf08And21(StatementRequest sdf08, StatementRequest sdf21) { - Result sdf08Res = processSdf08(sdf08); - removeFirstWithSameTableAndGroupId(sdf08); - if (sdf08Res.getAccountRequests().size() > 0) { - log.info("sdf08 execution wasn't complete, waiting for an answer from account-service"); - return; - } - //затем sdf21 - processSdf21(sdf21); - removeFirstWithSameTableAndGroupId(sdf21); - //fixme ревизия для бумаг reviser.doRevise(pair.getFirst().getGroupId()); - SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_08, SdfTable.SDF_21); - kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); - log.info("pair sdf08/sdf21 processed successfully"); - } - private void processSdf04(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( @@ -304,36 +285,45 @@ public class StatementServiceV2 { } - private Result processSdf08(StatementRequest statementRequest) { + private void processSdf08(StatementRequest sdf08) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf08, SDf08.class); Collection sdfGroup; - if (statementRequest.getAccountCreationResults().size() == 0) { + if (sdf08.getAccountCreationResults().isEmpty()) { sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", sdf08.getGroupId())); } else { - sdfGroup = statementRequest.getAccountCreationResults() + sdfGroup = sdf08.getAccountCreationResults() .stream() .filter(part -> part.getErrorCode() == null) .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) .collect(Collectors.toList()); } - Result res = sdf08Executor.execute(sdfGroup, statementRequest); - if (res.getAccountRequests().size() != 0) { - AccountSdf01Request createAccsReq = StatementService.createAccountsRequest(statementRequest.getGroupId(), - res.getAccountRequests(), - res.getChildGenerationId()); + Result sdf08Res = sdf08Executor.execute(sdfGroup, sdf08); + if (!sdf08Res.getAccountRequests().isEmpty()) { + AccountSdf01Request createAccsReq = StatementService.createAccountsRequest(sdf08.getGroupId(), + sdf08Res.getAccountRequests(), + sdf08Res.getChildGenerationId()); kafkaSender.sendRequestToQueue(Consts.ACCOUNT_NEW_SDF08, createAccsReq); } else if (sdf08Executor.isNeedToSendCommand()) { - sdf08Executor.sendCommand(kafkaSender, res); + sdf08Executor.sendCommand(kafkaSender, sdf08Res); + } + removeFirstWithSameTableAndGroupId(sdf08); + if (!sdf08Res.getAccountRequests().isEmpty()) { + log.info("sdf08 execution wasn't complete, waiting for an answer from account-service"); + } else { + log.info("sdf08 execution was complete."); } - return res; } - private void processSdf21(StatementRequest statementRequest) { + private void processSdf21(StatementRequest sdf21) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf21, SDf21.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); - Result res = sdf21Executor.execute(sdfGroup, statementRequest); + "generationId", sdf21.getGroupId())); + Result res = sdf21Executor.execute(sdfGroup, sdf21); + removeFirstWithSameTableAndGroupId(sdf21); + SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_08, SdfTable.SDF_21); + kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + log.info("sdf21 processed successfully"); } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Section.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Section.java index 159b82de1..0189148ee 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Section.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Section.java @@ -5,6 +5,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum Section implements IEnumKey { MKR("MKR"), FOND("FOND"), + MULT("MULT"), CURR("CURR"); Section(String key) {