http://jira.mfd.msk:8088/browse/CLS-940 добавил шаг AgainReviseStage3Action CL09 в финальную сессию FinalSessionStateMachineConfig

This commit is contained in:
ialbert 2026-03-24 17:27:47 +03:00
parent c9ef0ae75f
commit 3fed3b850d

View file

@ -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.misc.Session;
import ru.clearing.classes.statics.data.registry.Registry;
@ -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;
@ -44,8 +46,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.RegistryStatus;
import ru.spcex.platform.enumeration.Section;
@ -70,6 +71,7 @@ public class FinalSessionStateMachineConfig
private final InspectionObligationsV2Action inspectionObligationsV2Action;
private final FormingPaymentInstructionReturnMkrAction formingPaymentInstructionReturnMkrAction;
private final FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction;
private final AgainReviseStage3Action againRevise;
private final FinishingSessionAction finishingSessionAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
@ -85,6 +87,7 @@ public class FinalSessionStateMachineConfig
DataEnum.obligationAdmissionStashedRgs
);
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.FINL;
private final Section SECTION = Section.MKR;
@ -102,7 +105,7 @@ public class FinalSessionStateMachineConfig
InspectionObligationsDepositReturnAction inspOblDepositReturnAction,
InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionReturnMkrAction formingPaymentInstructionReturnMkrAction,
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction,
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction, AgainReviseStage3Action againRevise,
FinishingSessionAction finishingSessionAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
@ -111,6 +114,7 @@ public class FinalSessionStateMachineConfig
) {
this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
this.pauseWsAction = pauseWsAction;
@ -164,6 +168,8 @@ public class FinalSessionStateMachineConfig
TaskType.PSEUDO_waitSdfAfterPaymentInstructions,
TaskType.PSEUDO_waitAfterObligationAdmissionError,
TaskType.InspectionObligationDepositReturn,
TaskType.AgainRevise,
TaskType.PSEUDO_waitSdfAfterAgainRevise,
TaskType.PSEUDO_waitAfterInspectionError,
TaskType.PSEUDO_waitAfterInspectionDepositReturnError,
TaskType.PSEUDO_waitAfterObligationAdmissionRestore,
@ -207,6 +213,8 @@ public class FinalSessionStateMachineConfig
sourceIOPause(transitions);
sourceFormingPaymentInstruction(transitions);
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
sourceAgainRevise(transitions);
sourcePseudoWaitAfterAgainRevise(transitions);
}
private void sourceObligationAdmission(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
@ -313,9 +321,9 @@ public class FinalSessionStateMachineConfig
//если не создалось paymentInstruction'ов
.withExternal()
.source(TaskType.FormingPaymentInstruction)
.target(TaskType.FinishingSession)
.target(TaskType.AgainRevise)
.guard(PaymentsWereNotCreatedGuard.instance)
.action(finishingSessionAction)
.action(againRevise)
.and()
//если создались paymentInstruction, переходим в режим ожидания
.withExternal()
@ -329,9 +337,9 @@ public class FinalSessionStateMachineConfig
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()
@ -341,6 +349,37 @@ public class FinalSessionStateMachineConfig
}
}
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 {
StateMachineListenerAdapter<TaskType, SsnEvent> loggingChangeStateListener