ReturnDepositSession state machine config

This commit is contained in:
ialbert 2025-07-03 19:13:50 +03:00
parent 61c7fb537f
commit a860d8a831

View file

@ -14,35 +14,27 @@ import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter
import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
import org.springframework.statemachine.guard.Guard;
import org.springframework.statemachine.listener.StateMachineListenerAdapter; import org.springframework.statemachine.listener.StateMachineListenerAdapter;
import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.session.stage.TaskType; 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.SsnEvent;
import ru.spcex.clearing.session.state.action.CreateSessionAction; import ru.spcex.clearing.session.state.action.CreateSessionAction;
import ru.spcex.clearing.session.state.action.DiscardRegistriesAction;
import ru.spcex.clearing.session.state.action.EndStageNotificationAction; import ru.spcex.clearing.session.state.action.EndStageNotificationAction;
import ru.spcex.clearing.session.state.action.FinishingSessionAction; import ru.spcex.clearing.session.state.action.FinishingSessionAction;
import ru.spcex.clearing.session.state.action.FormingPaymentInstructionDepositReturnAction; import ru.spcex.clearing.session.state.action.FormingPaymentInstructionDepositReturnAction;
import ru.spcex.clearing.session.state.action.InclusionToPoolAction; import ru.spcex.clearing.session.state.action.InclusionToPoolAction;
import ru.spcex.clearing.session.state.action.InspectionObligationsDepositReturnAction; import ru.spcex.clearing.session.state.action.InspectionObligationsDepositReturnAction;
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.ReviseStage1Action;
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;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
import ru.spcex.clearing.session.state.guard.SdfGuard; import ru.spcex.clearing.session.state.guard.SdfGuard;
import ru.spcex.clearing.session.state.guard.SdfGuardExtractorAfterAssets; import ru.spcex.clearing.session.state.guard.SdfGuardExtractorAfterAssets;
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener; import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
import static ru.spcex.clearing.util.StateMachineUtil.chain; import static ru.spcex.clearing.util.StateMachineUtil.chain;
import static ru.spcex.clearing.util.StateMachineUtil.guardCheckCtxForFlag;
import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.RegistryStatus;
import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.enumeration.SessionType; import ru.spcex.platform.enumeration.SessionType;
@ -58,49 +50,30 @@ public class ReturnDepositSessionStateMachineConfig
private final Imdg<Session> sessionImdg; private final Imdg<Session> sessionImdg;
private final Sdf56Action sendSdf56Action; private final Sdf56Action sendSdf56Action;
private final ReviseStage1Action reviseStage1Action; private final ReviseStage1Action reviseStage1Action;
private final RequirementAndObligationCreationAction reqAndOblAction;
private final ObligationAdmissionAction obligationAdmissionAction;
private final InclusionToPoolAction inclusionToPoolAction; private final InclusionToPoolAction inclusionToPoolAction;
private final InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction; private final InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction;
private final FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction; private final FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction;
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final EndStageNotificationAction endStageNotificationAction; private final EndStageNotificationAction endStageNotificationAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs
);
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.XDEP; private final SessionType SESSION_TYPE = SessionType.XDEP;
@Autowired @Autowired
public ReturnDepositSessionStateMachineConfig( public ReturnDepositSessionStateMachineConfig(
ImdgProvider imdgProvider, ImdgProvider imdgProvider,
Sdf56Action sendSdf56Action, Sdf56Action sendSdf56Action,
ReviseStage1Action reviseStage1Action, ReviseStage1Action reviseStage1Action,
@Qualifier("requirementAndObligationCreationAction")
RequirementAndObligationCreationAction reqAndOblAction,
ObligationAdmissionAction obligationAdmissionAction,
InclusionToPoolAction inclusionToPoolAction, InclusionToPoolAction inclusionToPoolAction,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForBn") Supplier<List<String>> marketCodes, InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction, FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, @Qualifier("marketCodesForBn") Supplier<List<String>> marketCodes, InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction, FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction
) { ) {
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.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
this.reqAndOblAction = reqAndOblAction;
this.obligationAdmissionAction = obligationAdmissionAction;
this.inclusionToPoolAction = inclusionToPoolAction; this.inclusionToPoolAction = inclusionToPoolAction;
this.inspectionObligationsDepositReturnAction = inspectionObligationsDepositReturnAction; this.inspectionObligationsDepositReturnAction = inspectionObligationsDepositReturnAction;
this.formingPaymentInstructionDepositReturnAction = formingPaymentInstructionDepositReturnAction; this.formingPaymentInstructionDepositReturnAction = formingPaymentInstructionDepositReturnAction;
this.finishingSessionAction = finishingSessionAction; this.finishingSessionAction = finishingSessionAction;
this.endStageNotificationAction = endStageNotificationAction; this.endStageNotificationAction = endStageNotificationAction;
this.finishingSessionAction.setPr("4"); this.finishingSessionAction.setPr("4");
this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs);
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
ImdgPredicateBuilder rgsPb = rgsImdg.predicateBuilder(); ImdgPredicateBuilder rgsPb = rgsImdg.predicateBuilder();
@ -113,7 +86,6 @@ public class ReturnDepositSessionStateMachineConfig
rgsPb.less("valueDate", LocalDate.now()) rgsPb.less("valueDate", LocalDate.now())
) )
); );
//stages settings:
} }
@Override @Override
@ -139,7 +111,6 @@ public class ReturnDepositSessionStateMachineConfig
.end(TaskType.EndStageNotification); .end(TaskType.EndStageNotification);
} }
@Override @Override
public void configure(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception { public void configure(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
transitions transitions
@ -200,7 +171,6 @@ public class ReturnDepositSessionStateMachineConfig
} }
} }
@Override @Override
public void configure(StateMachineConfigurationConfigurer<TaskType, SsnEvent> config) throws Exception { public void configure(StateMachineConfigurationConfigurer<TaskType, SsnEvent> config) throws Exception {
StateMachineListenerAdapter<TaskType, SsnEvent> loggingChangeStateListener StateMachineListenerAdapter<TaskType, SsnEvent> loggingChangeStateListener