pause after step 5

This commit is contained in:
etreschenkov 2025-07-11 18:08:48 +03:00
parent 5a0842249b
commit 10cb98ac11
6 changed files with 97 additions and 5 deletions

View file

@ -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 {

View file

@ -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()

View file

@ -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"),
;

View file

@ -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) {

View file

@ -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);
}

View file

@ -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);
}
}