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.ObligationAdmissionAction;
|
||||||
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
||||||
import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
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.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
|
|
@ -66,6 +67,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
private final AgainReviseStage3Action againRevise;
|
private final AgainReviseStage3Action againRevise;
|
||||||
private final FinishingSessionAction finishingSessionAction;
|
private final FinishingSessionAction finishingSessionAction;
|
||||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||||
|
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||||
private final DiscardRegistriesAction discardOblAdmStash =
|
private final DiscardRegistriesAction discardOblAdmStash =
|
||||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
|
|
@ -93,6 +95,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
@Qualifier("marketCodesForCurr")
|
@Qualifier("marketCodesForCurr")
|
||||||
Supplier<List<String>> marketCodes,
|
Supplier<List<String>> marketCodes,
|
||||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||||
|
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
||||||
@Qualifier("pauseWorkflowStatusAction")
|
@Qualifier("pauseWorkflowStatusAction")
|
||||||
UpdateWorkflowStatusAction pauseWsAction,
|
UpdateWorkflowStatusAction pauseWsAction,
|
||||||
@Qualifier("activeWorkflowStatusAction")
|
@Qualifier("activeWorkflowStatusAction")
|
||||||
|
|
@ -109,6 +112,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
this.againRevise = againReviseStage3Action;
|
this.againRevise = againReviseStage3Action;
|
||||||
this.finishingSessionAction = finishingSession;
|
this.finishingSessionAction = finishingSession;
|
||||||
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
||||||
|
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||||
this.pauseWsAction = pauseWsAction;
|
this.pauseWsAction = pauseWsAction;
|
||||||
this.activeWsAction = activeWsAction;
|
this.activeWsAction = activeWsAction;
|
||||||
this.finishingSessionAction.setPr("1");
|
this.finishingSessionAction.setPr("1");
|
||||||
|
|
@ -185,6 +189,22 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
sourceFormingPaymentInstruction(transitions);
|
sourceFormingPaymentInstruction(transitions);
|
||||||
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
|
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
|
||||||
sourceAgainRevise(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 {
|
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.ObligationAdmissionAction;
|
||||||
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
|
||||||
import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
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.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
|
|
@ -69,6 +70,7 @@ public class FinalSessionStateMachineConfig
|
||||||
private final FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction;
|
private final FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction;
|
||||||
private final FinishingSessionAction finishingSessionAction;
|
private final FinishingSessionAction finishingSessionAction;
|
||||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||||
|
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||||
private final DiscardRegistriesAction discardOblAdmStash =
|
private final DiscardRegistriesAction discardOblAdmStash =
|
||||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
|
|
@ -96,12 +98,14 @@ public class FinalSessionStateMachineConfig
|
||||||
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction,
|
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction,
|
||||||
FinishingSessionAction finishingSessionAction,
|
FinishingSessionAction finishingSessionAction,
|
||||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||||
|
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
||||||
@Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction,
|
@Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction,
|
||||||
@Qualifier("activeWorkflowStatusAction") UpdateWorkflowStatusAction activeWsAction
|
@Qualifier("activeWorkflowStatusAction") UpdateWorkflowStatusAction activeWsAction
|
||||||
) {
|
) {
|
||||||
this.sendSdf56Action = sendSdf56Action;
|
this.sendSdf56Action = sendSdf56Action;
|
||||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
|
||||||
|
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||||
this.pauseWsAction = pauseWsAction;
|
this.pauseWsAction = pauseWsAction;
|
||||||
this.activeWsAction = activeWsAction;
|
this.activeWsAction = activeWsAction;
|
||||||
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
|
@ -207,6 +211,24 @@ public class FinalSessionStateMachineConfig
|
||||||
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction));
|
.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 {
|
private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
|
||||||
transitions
|
transitions
|
||||||
.withExternal()
|
.withExternal()
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ public enum TaskType implements IEnumKey {
|
||||||
PSEUDO_waitSdfAfterPaymentInstructions("PSEUDO_waitSdfAfterPaymentInstructions"),
|
PSEUDO_waitSdfAfterPaymentInstructions("PSEUDO_waitSdfAfterPaymentInstructions"),
|
||||||
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
||||||
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
||||||
|
PSEUDO_waitAfterInspectionError("PSEUDO_waitAfterInspectionError"),
|
||||||
PSEUDO_end("PSEUDO_end"),
|
PSEUDO_end("PSEUDO_end"),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -215,9 +215,9 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
registryImdg.putAll(rgssToStore, 200);
|
// registryImdg.putAll(rgssToStore, 200);
|
||||||
|
//
|
||||||
planBalanceCalc.stageRevision2(sessionId);
|
// planBalanceCalc.stageRevision2(sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean equalByRgs(RegistryTradingParams rgsParams, Registry rgs) {
|
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