From 5dfeeaff61387d247da57ebe163f13757d2a54bb Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 30 May 2023 13:08:26 +0300 Subject: [PATCH] PrimaryAuctionT0Session --- .../stage/PrimaryAuctionT0Session.java | 69 ++++++++++++++----- .../session/stage/impl/DealsPrepare.java | 1 + 2 files changed, 54 insertions(+), 16 deletions(-) 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 884727700..d7a7c0601 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 @@ -3,10 +3,12 @@ package ru.spcex.clearing.session.stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.execution.ExecutionCommon; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.misc.Session; +import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.session.stage.impl.*; @@ -21,7 +23,10 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import java.time.LocalDate; +import java.util.Collection; import java.util.List; +import java.util.function.Supplier; @Service public class PrimaryAuctionT0Session extends AbstractSession implements InitializingBean { @@ -32,6 +37,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali private final ObligationAdmission obligationsAdmission; private final InclusionObligations inclusionObligations; + private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; private final FormingPaymentInstruction formingPaymentInstruction; private final UnlockResources unlockResources; @@ -39,6 +45,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali private final EndStageNotification endStageNotification; private final Imdg executionFondImdg; + private final Supplier> marketCodes; public PrimaryAuctionT0Session( ImdgProvider imdgProvider, @@ -50,7 +57,11 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali FormingRegistersOnOS formingRegistersOnOS, FormingPaymentInstruction formingPaymentInstruction, UnlockResources unlockResources, - FinishingSession finishingSession, EndStageNotification endStageNotification, IMessageResolver messageResolver) { + FinishingSession finishingSession, + EndStageNotification endStageNotification, + IMessageResolver messageResolver, + InspectionObligations inspectionObligations, + @Qualifier("marketCodesForT0") Supplier> marketCodes) { super(imdgProvider, messageResolver); this.balanceRevise = balanceRevise; this.dealsPrepare = dealsPrepare; @@ -63,6 +74,8 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali this.finishingSession = finishingSession; this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); + this.inspectionObligations = inspectionObligations; + this.marketCodes = marketCodes; } @Override @@ -89,18 +102,29 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali public void continueSession(BaseRequest req) { try { - if (!checkStage(TaskType.StartRevise)) { - log.error("cannot continue session, current stage is {}", currStage.get()); - throw new StageException(); + if (!isRunning()) { + return; } - //stage 0 - runStage(TaskType.ContinueRevise, balanceRevise); + if (checkStage(TaskType.StartRevise)) { + firstPart(req); + } else if (checkStage(TaskType.FormingPaymentInstruction)) { + finishPart(req); + } else { + log.info("will not continue session, current stage is {}", currStage.get()); + } + } catch (StageException e) { + //already logged + } + } + + private void firstPart(BaseRequest req) { + try { //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); - dealsPreparationResult = runStage(TaskType.DealsPrepare , payload, dealsPrepare); + dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); @@ -116,27 +140,38 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); - runStage(TaskType.InspectionObligations, companyIdPayload, inclusionObligations); + runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } //stage 6 runStage(TaskType.FormingRegistersOnOS, formingRegistersOnOS); //returns Collection //stage 7 - runStage(TaskType.FormingPaymentInstruction, formingPaymentInstruction); - //stage 8 - { - UnlockResourcesPayload unlockResourcesPayload = new UnlockResourcesPayload(); - //todo set arguments - runStage(TaskType.UnlockResources, unlockResourcesPayload, unlockResources); //returns Collection + StageResult> paymentResult = runStage(TaskType.FormingPaymentInstruction, formingPaymentInstruction); + if (paymentResult.getStageResult().isEmpty()) { + runStage(TaskType.FormingPaymentInstruction, balanceRevise); +// finishPart(req); } - //stage 9 + } catch (StageException e) { + //already logged + } + } + + public void finishPart(BaseRequest req) { + try { + if (!checkStage(TaskType.FormingPaymentInstruction)) { + log.error("cannot continue session, current stage is {}", currStage.get()); + throw new StageException(); + } + //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); runStage(TaskType.FinishingSession, payload, finishingSession); } + //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); + payload.setSessionId(currSession.getId()); runStage(TaskType.EndStageNotification, payload, endStageNotification); } } catch (StageException e) { @@ -153,7 +188,9 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali Session newSession = new Session(); newSession.setSection(Section.FOND.getKey()); newSession.setSessionType(SessionType.IPOT.getKey()); - newSession.setSessionStatus(SessionStatus.CLRN.getKey()); + newSession.setSessionStatus(TaskType.StartRevise.getKey()); + newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); + newSession.setClearingDate(LocalDate.now()); //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java index 62f726a24..5fca664d3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java @@ -103,6 +103,7 @@ public class DealsPrepare implements ISessionStage { } } StageResult> res = new StageResult<>(null, true); + log.info("{} deals were prepared for a processing", excs.size()); res.setStageResult(excs); return res; }