PrimaryAuctionT0Session
This commit is contained in:
parent
578283a999
commit
5dfeeaff61
2 changed files with 54 additions and 16 deletions
|
|
@ -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<ExecutionFond> executionFondImdg;
|
||||
private final Supplier<List<String>> 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<List<String>> 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<List<ExecutionCommon>> 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<Registry>
|
||||
//stage 7
|
||||
runStage(TaskType.FormingPaymentInstruction, formingPaymentInstruction);
|
||||
//stage 8
|
||||
{
|
||||
UnlockResourcesPayload unlockResourcesPayload = new UnlockResourcesPayload();
|
||||
//todo set arguments
|
||||
runStage(TaskType.UnlockResources, unlockResourcesPayload, unlockResources); //returns Collection<Registry>
|
||||
StageResult<Collection<PaymentInstruction>> 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;
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ public class DealsPrepare implements ISessionStage {
|
|||
}
|
||||
}
|
||||
StageResult<List<ExecutionCommon>> res = new StageResult<>(null, true);
|
||||
log.info("{} deals were prepared for a processing", excs.size());
|
||||
res.setStageResult(excs);
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue