IPOB revise after payment instructions
This commit is contained in:
parent
96955aa0aa
commit
733d92bf54
1 changed files with 47 additions and 8 deletions
|
|
@ -13,6 +13,7 @@ import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter
|
|||
import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
|
||||
import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
|
||||
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
||||
import org.springframework.statemachine.guard.Guard;
|
||||
import org.springframework.statemachine.listener.StateMachineListenerAdapter;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
|
|
@ -20,6 +21,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.session.stage.TaskType;
|
||||
import ru.spcex.clearing.session.state.DataEnum;
|
||||
import ru.spcex.clearing.session.state.SsnEvent;
|
||||
import ru.spcex.clearing.session.state.action.AgainReviseStage3Action;
|
||||
import ru.spcex.clearing.session.state.action.CreateSessionAction;
|
||||
import ru.spcex.clearing.session.state.action.DealsPrepareAction;
|
||||
import ru.spcex.clearing.session.state.action.DiscardRegistriesAction;
|
||||
|
|
@ -42,8 +44,7 @@ import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
|||
import ru.spcex.clearing.session.state.guard.SdfSetGuard;
|
||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
||||
import static ru.spcex.clearing.util.StateMachineUtil.chain;
|
||||
import static ru.spcex.clearing.util.StateMachineUtil.invert;
|
||||
import static ru.spcex.clearing.util.StateMachineUtil.*;
|
||||
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
|
||||
import ru.spcex.platform.enumeration.Section;
|
||||
import ru.spcex.platform.enumeration.SessionType;
|
||||
|
|
@ -75,11 +76,13 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
);
|
||||
private final UpdateWorkflowStatusAction pauseWsAction;
|
||||
private final UpdateWorkflowStatusAction activeWsAction;
|
||||
private final AgainReviseStage3Action againRevise;
|
||||
|
||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
DataEnum.obligationAdmissionStashedRgs
|
||||
);
|
||||
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||
|
||||
private final SessionType SESSION_TYPE = SessionType.IPOB;
|
||||
private final Section SECTION = Section.FOND;
|
||||
|
|
@ -104,13 +107,14 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
@Qualifier("pauseWorkflowStatusAction")
|
||||
UpdateWorkflowStatusAction pauseWsAction,
|
||||
@Qualifier("activeWorkflowStatusAction")
|
||||
UpdateWorkflowStatusAction activeWsAction
|
||||
UpdateWorkflowStatusAction activeWsAction, AgainReviseStage3Action againRevise
|
||||
) {
|
||||
this.sendSdf56Action = sendSdf56Action;
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||
this.pauseWsAction = pauseWsAction;
|
||||
this.activeWsAction = activeWsAction;
|
||||
this.againRevise = againRevise;
|
||||
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
||||
this.reviseStage1Action = reviseStage1Action;
|
||||
|
|
@ -153,7 +157,9 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
TaskType.PSEUDO_waitAfterObligationAdmissionError,
|
||||
TaskType.PSEUDO_waitAfterInspectionError,
|
||||
TaskType.PSEUDO_waitAfterObligationAdmissionRestore,
|
||||
TaskType.PSEUDO_waitAfterInspectionRestore
|
||||
TaskType.PSEUDO_waitAfterInspectionRestore,
|
||||
TaskType.AgainRevise,
|
||||
TaskType.PSEUDO_waitSdfAfterAgainRevise
|
||||
)))
|
||||
.end(TaskType.FinishingSession);
|
||||
}
|
||||
|
|
@ -189,6 +195,8 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
sourceFormingPaymentInstruction(transitions);
|
||||
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
|
||||
sourceInspection(transitions);
|
||||
sourceAgainRevise(transitions);
|
||||
sourcePseudoWaitAfterAgainRevise(transitions);
|
||||
}
|
||||
|
||||
private void sourceObligationAdmission(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
|
|
@ -259,9 +267,9 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
//если не создалось paymentInstruction'ов
|
||||
.withExternal()
|
||||
.source(TaskType.FormingPaymentInstruction)
|
||||
.target(TaskType.FinishingSession)
|
||||
.target(TaskType.AgainRevise)
|
||||
.guard(new PaymentsWereNotCreatedListGuard(FormingPaymentInstructionSecuritiesAction.key))
|
||||
.action(finishingSessionAction)
|
||||
.action(againRevise)
|
||||
.and()
|
||||
//если создались paymentInstruction, переходим в режим ожидания
|
||||
.withExternal()
|
||||
|
|
@ -275,9 +283,9 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
transitions
|
||||
.withExternal()
|
||||
.source(TaskType.PSEUDO_waitSdfAfterPaymentInstructions)
|
||||
.target(TaskType.FinishingSession)
|
||||
.target(TaskType.AgainRevise)
|
||||
.guard(new SdfSetGuard(sdfs))
|
||||
.action(finishingSessionAction);
|
||||
.action(againRevise);
|
||||
for (var event: sdfs) {
|
||||
transitions
|
||||
.withInternal()
|
||||
|
|
@ -287,6 +295,37 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
}
|
||||
}
|
||||
|
||||
private void sourceAgainRevise(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
transitions
|
||||
.withExternal()
|
||||
.source(TaskType.AgainRevise)
|
||||
.target(TaskType.FinishingSession)
|
||||
.action(finishingSessionAction)
|
||||
.guard(reviseSuccessGuard)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.AgainRevise)
|
||||
.target(TaskType.PSEUDO_waitSdfAfterAgainRevise)
|
||||
.guard(invert(reviseSuccessGuard));
|
||||
}
|
||||
|
||||
private void sourcePseudoWaitAfterAgainRevise(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
EnumSet<SsnEvent> ssnEvents = SdfGuardUtil.afterAgainReviseError(SECTION);
|
||||
transitions
|
||||
.withExternal()
|
||||
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
|
||||
.target(TaskType.AgainRevise)
|
||||
.guard(new SdfSetGuard(ssnEvents))
|
||||
.action(againRevise);
|
||||
for (var event : ssnEvents) {
|
||||
transitions
|
||||
.withInternal()
|
||||
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
|
||||
.event(event)
|
||||
.action(SdfReceivedAction.instance);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void configure(StateMachineConfigurationConfigurer<TaskType, SsnEvent> config) throws Exception {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue