From 10cb98ac113551705f1887bad1aa0087ef6392cb Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Fri, 11 Jul 2025 18:08:48 +0300 Subject: [PATCH 1/5] pause after step 5 --- .../CurrencySessionStateMachineConfig.java | 20 ++++++++ .../FinalSessionStateMachineConfig.java | 22 +++++++++ .../clearing/session/stage/TaskType.java | 1 + ...pectionObligationsDepositReturnAction.java | 6 +-- .../action/InspectionObligationsV2Action.java | 5 +- ...triesAfterInspectionAndContinueAction.java | 48 +++++++++++++++++++ 6 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java index 6fee17354..61245f873 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java @@ -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> 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 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 transitions) throws Exception { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/FinalSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/FinalSessionStateMachineConfig.java index 0da8c741a..c3372ccea 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/FinalSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/FinalSessionStateMachineConfig.java @@ -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 rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -207,6 +211,24 @@ public class FinalSessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } + private void sourceInspection(StateMachineTransitionConfigurer 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 transitions) throws Exception { transitions .withExternal() diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java index 046aeb695..cc245cff3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java @@ -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"), ; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsDepositReturnAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsDepositReturnAction.java index 9e90f1633..f23a79b78 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsDepositReturnAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsDepositReturnAction.java @@ -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) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java index 472823e29..8d2473302 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java @@ -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); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java new file mode 100644 index 000000000..5a5ef0731 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java @@ -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 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 ctx) { + @SuppressWarnings("unchecked") + Map rgss = ctx.getExtendedState().get(dataEnum, Map.class); + Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); + registryImdg.putAll(rgss, 200); + planBalanceCalc.stageRevision2(sessionId); + } + +} From 6fbbcc308ab0fb5c24c385f8f58a8f08de456ca1 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 14 Jul 2025 12:41:39 +0300 Subject: [PATCH 2/5] pause after step 5 --- .../CurrencySessionStateMachineConfig.java | 22 ++++++- ...ermediateMkrSessionStateMachineConfig.java | 42 ++++++++++++- .../PaymSessionStateMachineConfig.java | 42 ++++++++++++- ...aryAuctionB0SessionStateMachineConfig.java | 43 ++++++++++++- ...aryAuctionBnSessionStateMachineConfig.java | 42 ++++++++++++- ...aryAuctionT0SessionStateMachineConfig.java | 42 ++++++++++++- ...eturnDepositSessionStateMachineConfig.java | 58 +++++++++++++++++- ...aryAuctionT0SessionStateMachineConfig.java | 42 ++++++++++++- .../UnitedSessionStateMachineConfig.java | 61 +++++++++++++++---- .../clearing/session/state/DataEnum.java | 1 + .../action/InspectionObligationsV2Action.java | 9 +-- 11 files changed, 372 insertions(+), 32 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java index 61245f873..c65af5313 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java @@ -70,6 +70,9 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction; private final DiscardRegistriesAction discardOblAdmStash = new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( DataEnum.obligationAdmissionStashedRgs ); @@ -123,6 +126,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -185,7 +189,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -221,8 +225,9 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -231,6 +236,19 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java index 19e02f9a3..9df86866d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java @@ -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,10 @@ public class IntermediateMkrSessionStateMachineConfig private final AgainReviseStage3Action againRevise; private final FinishingSessionAction finishingSessionAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; + private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction; + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final DiscardRegistriesAction discardOblAdmStash = new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( @@ -95,6 +100,7 @@ public class IntermediateMkrSessionStateMachineConfig FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction, AgainReviseStage3Action againRevise, FinishingSessionAction finishingSessionAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -104,6 +110,7 @@ public class IntermediateMkrSessionStateMachineConfig this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.againRevise = againRevise; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -130,6 +137,7 @@ public class IntermediateMkrSessionStateMachineConfig ) ); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -194,10 +202,26 @@ public class IntermediateMkrSessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterObligationAdmissionError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstructions(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); + sourceInspection(transitions); + } + + private void sourceInspection(StateMachineTransitionConfigurer 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 transitions) throws Exception { @@ -214,8 +238,9 @@ public class IntermediateMkrSessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoWaitAfterObligationAdmissionError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -224,6 +249,19 @@ public class IntermediateMkrSessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java index c9ffa609d..2dd1a5946 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java @@ -30,6 +30,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.UpdateWorkflowStatusAction; import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard; @@ -56,11 +57,15 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda 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( DataEnum.obligationAdmissionStashedRgs ); + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; private final Guard reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); @@ -81,11 +86,13 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda @Qualifier("marketCodesForCurr") Supplier> marketCodes, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") UpdateWorkflowStatusAction activeWsAction) { this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); @@ -106,6 +113,7 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.formingPaymentInstructionAssetsAction.setDisableCompanyCondition(true); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -168,7 +176,8 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .guard(reviseSuccessGuard); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -185,8 +194,24 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer 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 sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -195,6 +220,19 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java index 9a1bafe8d..369cd1d41 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java @@ -32,6 +32,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,8 +70,12 @@ public class PrimaryAuctionB0SessionStateMachineConfig 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 DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; @@ -98,6 +103,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig FinishingSessionAction finishingSessionAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForBn") Supplier> marketCodes, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -105,6 +111,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig ) { this.sendSdf56Action = sendSdf56Action; this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); @@ -126,6 +133,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.equals("settlementCode", "B0")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -189,10 +197,11 @@ public class PrimaryAuctionB0SessionStateMachineConfig .guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance)) .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -209,8 +218,25 @@ public class PrimaryAuctionB0SessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer 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(formingPaymentInstructionSecuritiesAction); + } + + + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -219,6 +245,19 @@ public class PrimaryAuctionB0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionSecuritiesAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java index fcdabc406..39ed01314 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java @@ -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; @@ -65,8 +66,12 @@ public class PrimaryAuctionBnSessionStateMachineConfig private final FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction; private final FinishingSessionAction finishingSessionAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; + private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction; private final DiscardRegistriesAction discardOblAdmStash = new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; @@ -94,6 +99,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForBn") Supplier> marketCodes, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -101,6 +107,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig ) { this.sendSdf56Action = sendSdf56Action; this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); @@ -121,6 +128,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -177,9 +185,10 @@ public class PrimaryAuctionBnSessionStateMachineConfig .action(formingPaymentInstructionSecuritiesAction); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -196,8 +205,24 @@ public class PrimaryAuctionBnSessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer 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(formingPaymentInstructionSecuritiesAction); + } + + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -206,6 +231,19 @@ public class PrimaryAuctionBnSessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionSecuritiesAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java index 792a81943..e0e1da056 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java @@ -32,6 +32,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,8 +70,12 @@ public class PrimaryAuctionT0SessionStateMachineConfig 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 DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; @@ -99,6 +104,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForT0Primary") Supplier> marketCodes, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -106,6 +112,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig ) { this.sendSdf56Action = sendSdf56Action; this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); @@ -127,6 +134,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -191,10 +199,11 @@ public class PrimaryAuctionT0SessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -211,8 +220,24 @@ public class PrimaryAuctionT0SessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer 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(formingPaymentInstructionSecuritiesAction); + } + + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -221,6 +246,19 @@ public class PrimaryAuctionT0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionSecuritiesAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java index 512770d83..d0ebe64ca 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java @@ -19,21 +19,27 @@ import ru.clearing.classes.statics.data.misc.Session; 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.state.DataEnum; import ru.spcex.clearing.session.state.SsnEvent; import ru.spcex.clearing.session.state.action.CreateSessionAction; +import ru.spcex.clearing.session.state.action.DiscardRegistriesAction; import ru.spcex.clearing.session.state.action.FinishingSessionAction; import ru.spcex.clearing.session.state.action.FormingPaymentInstructionDepositReturnAction; import ru.spcex.clearing.session.state.action.InclusionToPoolAction; import ru.spcex.clearing.session.state.action.InspectionObligationsDepositReturnAction; import ru.spcex.clearing.session.state.action.ReviseStage1Action; +import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndContinueAction; import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.SdfReceivedAction; +import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard; 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 ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.enumeration.SessionType; @@ -53,6 +59,14 @@ public class ReturnDepositSessionStateMachineConfig private final InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction; private final FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction; private final FinishingSessionAction finishingSessionAction; + private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction; + private final UpdateWorkflowStatusAction pauseWsAction; + private final UpdateWorkflowStatusAction activeWsAction; + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); + private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( + DataEnum.obligationAdmissionStashedRgs); private final SessionType SESSION_TYPE = SessionType.XDEP; private final Section SECTION = Section.MKR; @@ -65,7 +79,12 @@ public class ReturnDepositSessionStateMachineConfig FinishingSessionAction finishingSessionAction, @Qualifier("marketCodesForBn") Supplier> marketCodes, InspectionObligationsDepositReturnAction inspectionObligationsDepositReturnAction, - FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction + FormingPaymentInstructionDepositReturnAction formingPaymentInstructionDepositReturnAction, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, + @Qualifier("pauseWorkflowStatusAction") + UpdateWorkflowStatusAction pauseWsAction, + @Qualifier("activeWorkflowStatusAction") + UpdateWorkflowStatusAction activeWsAction ) { this.sendSdf56Action = sendSdf56Action; this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); @@ -74,6 +93,9 @@ public class ReturnDepositSessionStateMachineConfig this.inspectionObligationsDepositReturnAction = inspectionObligationsDepositReturnAction; this.formingPaymentInstructionDepositReturnAction = formingPaymentInstructionDepositReturnAction; this.finishingSessionAction = finishingSessionAction; + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; + this.pauseWsAction = pauseWsAction; + this.activeWsAction = activeWsAction; this.finishingSessionAction.setPr("4"); Imdg rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -87,6 +109,7 @@ public class ReturnDepositSessionStateMachineConfig rgsPb.less("valueDate", LocalDate.now()) ) ); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -133,6 +156,23 @@ public class ReturnDepositSessionStateMachineConfig sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); + sourceInspection(transitions); + sourcePseudoWaitAfterError(transitions); + } + + private void sourceInspection(StateMachineTransitionConfigurer 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(formingPaymentInstructionDepositReturnAction); } private void sourceFormingPaymentInstruction(StateMachineTransitionConfigurer transitions) throws Exception { @@ -168,6 +208,22 @@ public class ReturnDepositSessionStateMachineConfig } } + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionDepositReturnAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsDepositReturnAction)) + .event(SsnEvent.REPEAT); + } + @Override public void configure(StateMachineConfigurationConfigurer config) throws Exception { StateMachineListenerAdapter loggingChangeStateListener diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java index 68b24e06b..5db235eec 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java @@ -32,6 +32,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,8 +70,12 @@ public class SecondaryAuctionT0SessionStateMachineConfig 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 DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; @@ -99,6 +104,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForT0") Supplier> marketCodes, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -106,6 +112,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig ) { this.sendSdf56Action = sendSdf56Action; this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; Imdg executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); @@ -127,6 +134,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -191,10 +199,11 @@ public class SecondaryAuctionT0SessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -211,8 +220,24 @@ public class SecondaryAuctionT0SessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer 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 sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) @@ -221,6 +246,19 @@ public class SecondaryAuctionT0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) .event(SsnEvent.REPEAT); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java index c7be92521..b7571a5d1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java @@ -33,6 +33,7 @@ import ru.spcex.clearing.session.state.action.InspectionObligationsV2Action; import ru.spcex.clearing.session.state.action.ObligationAdmissionAction; import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationCompoundAction; 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; @@ -71,9 +72,14 @@ public class UnitedSessionStateMachineConfig private final FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction; private final AgainReviseStage3Action againRevise; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; + private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction; private final FinishingSessionAction finishingSessionAction; - private final DiscardRegistriesAction discardOblAdmStash = - new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); + private final DiscardRegistriesAction discardOblAdmStash = new DiscardRegistriesAction( + DataEnum.obligationAdmissionStashedRgs + ); + private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction( + DataEnum.inspectionObligationStashedRgs + ); private final UpdateWorkflowStatusAction pauseWsAction; private final UpdateWorkflowStatusAction activeWsAction; @@ -99,6 +105,7 @@ public class UnitedSessionStateMachineConfig FinishingSessionAction finishingSessionAction, @Qualifier("marketCodesForCurr") Supplier> marketCodesCurr, @Qualifier("marketCodesForT0") Supplier> marketCodesTrdt, + SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, @Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction, @Qualifier("activeWorkflowStatusAction") @@ -117,6 +124,7 @@ public class UnitedSessionStateMachineConfig this.againRevise = againRevise; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.finishingSessionAction = finishingSessionAction; + this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction; this.pauseWsAction = pauseWsAction; this.activeWsAction = activeWsAction; @@ -136,6 +144,7 @@ public class UnitedSessionStateMachineConfig this.finishingSessionAction.setPr("1"); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); + this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } } @@ -203,10 +212,11 @@ public class UnitedSessionStateMachineConfig .guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance)) .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoAfterOAError(transitions); + sourcePseudoWaitAfterError(transitions); sourceFormingPaymentInstruction(transitions); sourceAgainRevise(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); + sourceInspection(transitions); } private void sourceObligationAdmission(StateMachineTransitionConfigurer transitions) throws Exception { @@ -223,17 +233,46 @@ public class UnitedSessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourceInspection(StateMachineTransitionConfigurer transitions) throws Exception { transitions .withExternal() - .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) - .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) - .event(SsnEvent.CONTINUE) - .and() + .source(TaskType.InspectionObligations) + .target(TaskType.PSEUDO_waitAfterInspectionError) + .guard(oblAdmGuard) + .action(pauseWsAction) + .and() .withExternal() - .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) - .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT); + .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) + .guard(invert(oblAdmGuard)) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction); + } + + private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + //continue and repeat after ObligationAdmission + .withExternal() + .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) + .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction)) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) + .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) + .event(SsnEvent.REPEAT) + .and() + //continue and repeat after InspectionObligations + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) + .action(activeWsAction) + .action(saveRegistriesAfterInspectionAndContinueAction) + .action(formingPaymentInstructionAssetsAction) + .event(SsnEvent.CONTINUE) + .and() + .withExternal() + .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.InspectionObligations) + .action(chain(activeWsAction, discardInspOblStash, inspectionObligationsV2Action)) + .event(SsnEvent.REPEAT); } private void sourceFormingPaymentInstruction(StateMachineTransitionConfigurer transitions) throws Exception { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/DataEnum.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/DataEnum.java index e75092e32..1426c20f1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/DataEnum.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/DataEnum.java @@ -11,6 +11,7 @@ public enum DataEnum { dealsPreparedCurrency, counterPartyId, //Long obligationAdmissionStashedRgs, //Map + inspectionObligationStashedRgs, //Map erroneousRegistries, //List paymentInstructionReturnMkr, //List paymentInstructionSecurity, //List diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java index 8d2473302..df60f7d0a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/InspectionObligationsV2Action.java @@ -96,7 +96,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr try { Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); this.sessionType = ctx.getExtendedState().get(DataEnum.sessionType, SessionType.class); - inspectionObligations(sessionId); + inspectionObligations(sessionId, ctx); } finally { a___Cash.clear(); a__fCash.clear(); @@ -104,7 +104,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr } } - private void inspectionObligations(Long sessionId) { + private void inspectionObligations(Long sessionId, StateContext ctx) { String sqlCondition = String.format("(%s) and registryStatus = '%s'", RegistryCodeSqlBuilder.getInstance(OS_T, OM_T, TS_T, TM_T).build(), RegistryStatus.POOL.getKey()); @@ -267,10 +267,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr } } } - //todo save to context -// registryImdg.putAll(rgssToStore, 200); - -// planBalanceCalc.stageRevision2(sessionId); + ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore); } From b755da89275f19b551b157ad047e3bd47f257eab Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 14 Jul 2025 12:41:58 +0300 Subject: [PATCH 3/5] http://jira.mfd.msk:8088/browse/CLS-867 --- .../session/state/action/ObligationAdmissionAction.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java index c3c585c6c..660276ed7 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.session.state.action; +import java.time.Instant; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -97,6 +98,7 @@ public class ObligationAdmissionAction extends AbstractSessionActionForOkErrorHa grpEntry.getKey().groupId(), grpEntry.getKey().market()); for (Registry rgs : rgsGroup) { rgs.setRegistryStatus(RegistryStatus.NACK.getKey()); + rgs.setUpdated(Instant.now()); rgsToUpdate.put(rgs.getId(), rgs); } } From 3eff12f684db35093d7b68e2e4ff4df653caac2c Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 14 Jul 2025 12:53:39 +0300 Subject: [PATCH 4/5] pause after step 5 --- .../action/PauseWorkflowStatusWithNotificationAction.java | 8 ++++---- .../java/ru/spcex/platform/enumeration/ObjectType.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/PauseWorkflowStatusWithNotificationAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/PauseWorkflowStatusWithNotificationAction.java index 8029606a3..1240636e9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/PauseWorkflowStatusWithNotificationAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/PauseWorkflowStatusWithNotificationAction.java @@ -35,7 +35,7 @@ public class PauseWorkflowStatusWithNotificationAction extends UpdateWorkflowSta .map(rgsWr -> "ТКР %s: %s".formatted(rgsWr.getRgs().getTradingClearingRegistry(), rgsWr.getErr())) .collect(Collectors.joining(";\r\n", notificationPrefix(ctx), "")); Long ssnId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); - notificationSender.sendNotification(ObjectType.session, comment, Priority.HIGH, ssnId); + notificationSender.sendNotification(ObjectType.session_pause, comment, Priority.HIGH, ssnId); ctx.getExtendedState().getVariables().remove(DataEnum.erroneousRegistries); } @@ -48,9 +48,9 @@ public class PauseWorkflowStatusWithNotificationAction extends UpdateWorkflowSta case PSEUDO_waitAfterObligationAdmissionError -> { return "Ряд обязательств не допущены к клирингу!!!\r\n"; } -// case PSEUDO_waitAfterInspectionError -> { -// return "Ряд обязательств подлежит исключению из клирингового пула!!!\r\n"; -// } + case PSEUDO_waitAfterInspectionError -> { + return "Ряд обязательств подлежит исключению из клирингового пула!!!\r\n"; + } default -> { return "Ошибка клиринговой сессии\r\n"; } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java index 05e64e121..ca85d0abe 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java @@ -4,7 +4,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ObjectType implements IEnumKey { statement("STMT"), vfrs("VFRS"), rgst("RGST"), gateway("GTWY"), session("SESN"), - account_block("ACCB"), account_active("ACCA"), diff("DIFF"); + session_pause("SESS"), account_block("ACCB"), account_active("ACCA"), diff("DIFF"); private final String key; From 60d84bc281649cf075cca6e4111971b52019ffa8 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 14 Jul 2025 13:39:25 +0300 Subject: [PATCH 5/5] pause after step 5 --- .../CurrencySessionStateMachineConfig.java | 17 ++++++++--------- ...ermediateMkrSessionStateMachineConfig.java | 17 ++++++++--------- .../PaymSessionStateMachineConfig.java | 17 ++++++++--------- ...aryAuctionB0SessionStateMachineConfig.java | 17 ++++++++--------- ...aryAuctionBnSessionStateMachineConfig.java | 19 +++++++++---------- ...aryAuctionT0SessionStateMachineConfig.java | 17 ++++++++--------- ...eturnDepositSessionStateMachineConfig.java | 10 +++------- ...aryAuctionT0SessionStateMachineConfig.java | 17 ++++++++--------- .../UnitedSessionStateMachineConfig.java | 17 ++++++++--------- ...triesAfterInspectionAndContinueAction.java | 6 +----- 10 files changed, 69 insertions(+), 85 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java index c65af5313..72af779ba 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/CurrencySessionStateMachineConfig.java @@ -126,7 +126,6 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -178,10 +177,6 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionAssetsAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) @@ -189,7 +184,8 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -225,7 +221,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -236,8 +232,11 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java index 9df86866d..7b4b6bf77 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/IntermediateMkrSessionStateMachineConfig.java @@ -137,7 +137,6 @@ public class IntermediateMkrSessionStateMachineConfig ) ); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -191,10 +190,6 @@ public class IntermediateMkrSessionStateMachineConfig .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionAssetsAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) @@ -202,7 +197,8 @@ public class IntermediateMkrSessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstructions(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -238,7 +234,7 @@ public class IntermediateMkrSessionStateMachineConfig .action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -249,8 +245,11 @@ public class IntermediateMkrSessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java index 2dd1a5946..da3e31dbc 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PaymSessionStateMachineConfig.java @@ -113,7 +113,6 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.formingPaymentInstructionAssetsAction.setDisableCompanyCondition(true); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -160,10 +159,6 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionAssetsAction) - .and() .withExternal() .source(TaskType.FormingPaymentInstruction) .target(TaskType.AgainRevise) @@ -176,7 +171,8 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .guard(reviseSuccessGuard); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceInspection(transitions); } @@ -209,7 +205,7 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .action(formingPaymentInstructionAssetsAction); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -220,8 +216,11 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java index 369cd1d41..1e3d8d923 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionB0SessionStateMachineConfig.java @@ -133,7 +133,6 @@ public class PrimaryAuctionB0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.equals("settlementCode", "B0")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -187,17 +186,14 @@ public class PrimaryAuctionB0SessionStateMachineConfig .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionSecuritiesAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) .guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance)) .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -234,7 +230,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -245,8 +241,11 @@ public class PrimaryAuctionB0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java index 39ed01314..605569a23 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionBnSessionStateMachineConfig.java @@ -128,7 +128,6 @@ public class PrimaryAuctionBnSessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -178,14 +177,11 @@ public class PrimaryAuctionBnSessionStateMachineConfig .and() .withExternal() .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) - .action(inspectionObligationsV2Action) - .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionSecuritiesAction); + .action(inspectionObligationsV2Action); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceInspection(transitions); @@ -220,7 +216,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig .action(formingPaymentInstructionSecuritiesAction); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -231,8 +227,11 @@ public class PrimaryAuctionBnSessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java index e0e1da056..2386a3d67 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/PrimaryAuctionT0SessionStateMachineConfig.java @@ -134,7 +134,6 @@ public class PrimaryAuctionT0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -188,10 +187,6 @@ public class PrimaryAuctionT0SessionStateMachineConfig .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionSecuritiesAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) @@ -199,7 +194,8 @@ public class PrimaryAuctionT0SessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -235,7 +231,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig .action(formingPaymentInstructionSecuritiesAction); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -246,8 +242,11 @@ public class PrimaryAuctionT0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java index d0ebe64ca..a0c1906a8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/ReturnDepositSessionStateMachineConfig.java @@ -109,7 +109,6 @@ public class ReturnDepositSessionStateMachineConfig rgsPb.less("valueDate", LocalDate.now()) ) ); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -149,15 +148,12 @@ public class ReturnDepositSessionStateMachineConfig .withExternal() .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsDepositReturnAction) - .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionDepositReturnAction); + .and(); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceInspection(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterIOError(transitions); } private void sourceInspection(StateMachineTransitionConfigurer transitions) throws Exception { @@ -208,7 +204,7 @@ public class ReturnDepositSessionStateMachineConfig } } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after InspectionObligations .withExternal() diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java index 5db235eec..0e30d0c65 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/SecondaryAuctionT0SessionStateMachineConfig.java @@ -134,7 +134,6 @@ public class SecondaryAuctionT0SessionStateMachineConfig dealsPrepareAction.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } @Override @@ -188,10 +187,6 @@ public class SecondaryAuctionT0SessionStateMachineConfig .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionAssetsAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) @@ -199,7 +194,8 @@ public class SecondaryAuctionT0SessionStateMachineConfig .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourceAgainRevise(transitions); @@ -235,7 +231,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig .action(formingPaymentInstructionAssetsAction); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -246,8 +242,11 @@ public class SecondaryAuctionT0SessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java index b7571a5d1..150bbaf6f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/state_machine_2/specific/UnitedSessionStateMachineConfig.java @@ -144,7 +144,6 @@ public class UnitedSessionStateMachineConfig this.finishingSessionAction.setPr("1"); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); - this.saveRegistriesAfterInspectionAndContinueAction.setDataEnum(DataEnum.inspectionObligationStashedRgs); } } @@ -202,17 +201,14 @@ public class UnitedSessionStateMachineConfig .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .action(inspectionObligationsV2Action) .and() - .withExternal() - .source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction) - .action(formingPaymentInstructionAssetsAction) - .and() .withExternal() .source(TaskType.PSEUDO_waitSdfAfterAgainRevise) .target(TaskType.AgainRevise) .guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance)) .action(againRevise); sourceObligationAdmission(transitions); - sourcePseudoWaitAfterError(transitions); + sourcePseudoAfterOAError(transitions); + sourcePseudoAfterIOError(transitions); sourceFormingPaymentInstruction(transitions); sourceAgainRevise(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions); @@ -248,7 +244,7 @@ public class UnitedSessionStateMachineConfig .action(formingPaymentInstructionAssetsAction); } - private void sourcePseudoWaitAfterError(StateMachineTransitionConfigurer transitions) throws Exception { + private void sourcePseudoAfterOAError(StateMachineTransitionConfigurer transitions) throws Exception { transitions //continue and repeat after ObligationAdmission .withExternal() @@ -259,8 +255,11 @@ public class UnitedSessionStateMachineConfig .withExternal() .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction)) - .event(SsnEvent.REPEAT) - .and() + .event(SsnEvent.REPEAT); + } + + private void sourcePseudoAfterIOError(StateMachineTransitionConfigurer transitions) throws Exception { + transitions //continue and repeat after InspectionObligations .withExternal() .source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FormingPaymentInstruction) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java index 5a5ef0731..1699647c3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/SaveRegistriesAfterInspectionAndContinueAction.java @@ -22,7 +22,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; public class SaveRegistriesAfterInspectionAndContinueAction extends AbstractSessionActionForOkErrorHandling { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg registryImdg; - private DataEnum dataEnum; + private final DataEnum dataEnum = DataEnum.inspectionObligationStashedRgs; private final PlanBalanceCalc planBalanceCalc; @Autowired @@ -32,10 +32,6 @@ public class SaveRegistriesAfterInspectionAndContinueAction extends AbstractSess this.planBalanceCalc = planBalanceCalc; } - public void setDataEnum(DataEnum dataEnum) { - this.dataEnum = dataEnum; - } - @Override protected void actualExecute(StateContext ctx) { @SuppressWarnings("unchecked")