pause after step 5
This commit is contained in:
parent
5a0842249b
commit
10cb98ac11
6 changed files with 97 additions and 5 deletions
|
|
@ -31,6 +31,7 @@ import ru.spcex.clearing.session.state.action.InspectionObligationsV2Action;
|
|||
import ru.spcex.clearing.session.state.action.ObligationAdmissionAction;
|
||||
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
||||
import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndContinueAction;
|
||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||
|
|
@ -66,6 +67,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
private final AgainReviseStage3Action againRevise;
|
||||
private final FinishingSessionAction finishingSessionAction;
|
||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||
private final DiscardRegistriesAction discardOblAdmStash =
|
||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
|
|
@ -93,6 +95,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
@Qualifier("marketCodesForCurr")
|
||||
Supplier<List<String>> marketCodes,
|
||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
||||
@Qualifier("pauseWorkflowStatusAction")
|
||||
UpdateWorkflowStatusAction pauseWsAction,
|
||||
@Qualifier("activeWorkflowStatusAction")
|
||||
|
|
@ -109,6 +112,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
this.againRevise = againReviseStage3Action;
|
||||
this.finishingSessionAction = finishingSession;
|
||||
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
||||
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||
this.pauseWsAction = pauseWsAction;
|
||||
this.activeWsAction = activeWsAction;
|
||||
this.finishingSessionAction.setPr("1");
|
||||
|
|
@ -185,6 +189,22 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
sourceFormingPaymentInstruction(transitions);
|
||||
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
|
||||
sourceAgainRevise(transitions);
|
||||
sourceInspection(transitions);
|
||||
}
|
||||
|
||||
private void sourceInspection(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
transitions
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(formingPaymentInstructionAssetsAction);
|
||||
}
|
||||
|
||||
private void sourceObligationAdmission(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import ru.spcex.clearing.session.state.action.InspectionObligationsV2Action;
|
|||
import ru.spcex.clearing.session.state.action.ObligationAdmissionAction;
|
||||
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
||||
import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndContinueAction;
|
||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||
|
|
@ -69,6 +70,7 @@ public class FinalSessionStateMachineConfig
|
|||
private final FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction;
|
||||
private final FinishingSessionAction finishingSessionAction;
|
||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||
private final DiscardRegistriesAction discardOblAdmStash =
|
||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
|
|
@ -96,12 +98,14 @@ public class FinalSessionStateMachineConfig
|
|||
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction,
|
||||
FinishingSessionAction finishingSessionAction,
|
||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
||||
@Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction,
|
||||
@Qualifier("activeWorkflowStatusAction") UpdateWorkflowStatusAction activeWsAction
|
||||
) {
|
||||
this.sendSdf56Action = sendSdf56Action;
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
||||
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||
this.pauseWsAction = pauseWsAction;
|
||||
this.activeWsAction = activeWsAction;
|
||||
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
|
|
@ -207,6 +211,24 @@ public class FinalSessionStateMachineConfig
|
|||
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction));
|
||||
}
|
||||
|
||||
private void sourceInspection(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
transitions
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(formingPaymentInstructionAssetsAction)
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(formingPaymentInstructionReturnMkrAction)
|
||||
.action(formingPaymentInstructionAssetsAction);
|
||||
}
|
||||
|
||||
private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||
transitions
|
||||
.withExternal()
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ public enum TaskType implements IEnumKey {
|
|||
PSEUDO_waitSdfAfterPaymentInstructions("PSEUDO_waitSdfAfterPaymentInstructions"),
|
||||
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
||||
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
||||
PSEUDO_waitAfterInspectionError("PSEUDO_waitAfterInspectionError"),
|
||||
PSEUDO_end("PSEUDO_end"),
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -215,9 +215,9 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||
}
|
||||
}
|
||||
registryImdg.putAll(rgssToStore, 200);
|
||||
|
||||
planBalanceCalc.stageRevision2(sessionId);
|
||||
// registryImdg.putAll(rgssToStore, 200);
|
||||
//
|
||||
// planBalanceCalc.stageRevision2(sessionId);
|
||||
}
|
||||
|
||||
private static boolean equalByRgs(RegistryTradingParams rgsParams, Registry rgs) {
|
||||
|
|
|
|||
|
|
@ -267,9 +267,10 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
|||
}
|
||||
}
|
||||
}
|
||||
registryImdg.putAll(rgssToStore, 200);
|
||||
//todo save to context
|
||||
// registryImdg.putAll(rgssToStore, 200);
|
||||
|
||||
planBalanceCalc.stageRevision2(sessionId);
|
||||
// planBalanceCalc.stageRevision2(sessionId);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
package ru.spcex.clearing.session.state.action;
|
||||
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.statemachine.StateContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.session.stage.TaskType;
|
||||
import ru.spcex.clearing.session.stage.impl.PlanBalanceCalc;
|
||||
import ru.spcex.clearing.session.state.DataEnum;
|
||||
import ru.spcex.clearing.session.state.SsnEvent;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@Service
|
||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class SaveRegistriesAfterInspectionAndContinueAction extends AbstractSessionActionForOkErrorHandling {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private DataEnum dataEnum;
|
||||
private final PlanBalanceCalc planBalanceCalc;
|
||||
|
||||
@Autowired
|
||||
public SaveRegistriesAfterInspectionAndContinueAction(ImdgProvider imdgProvider,
|
||||
PlanBalanceCalc planBalanceCalc) {
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.planBalanceCalc = planBalanceCalc;
|
||||
}
|
||||
|
||||
public void setDataEnum(DataEnum dataEnum) {
|
||||
this.dataEnum = dataEnum;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<Long, Registry> rgss = ctx.getExtendedState().get(dataEnum, Map.class);
|
||||
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
|
||||
registryImdg.putAll(rgss, 200);
|
||||
planBalanceCalc.stageRevision2(sessionId);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue