Merge branch 'refs/heads/stage-5-state-machine' into dev
This commit is contained in:
commit
f1bb965141
16 changed files with 96 additions and 27 deletions
|
|
@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -76,6 +77,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final UpdateWorkflowStatusAction pauseWsAction;
|
private final UpdateWorkflowStatusAction pauseWsAction;
|
||||||
private final UpdateWorkflowStatusAction activeWsAction;
|
private final UpdateWorkflowStatusAction activeWsAction;
|
||||||
|
|
||||||
|
|
@ -197,12 +199,12 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionAssetsAction);
|
.action(formingPaymentInstructionAssetsAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -74,6 +75,7 @@ public class IntermediateMkrSessionStateMachineConfig
|
||||||
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
||||||
DataEnum.inspectionObligationStashedRgs
|
DataEnum.inspectionObligationStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final DiscardRegistriesAction discardOblAdmStash =
|
private final DiscardRegistriesAction discardOblAdmStash =
|
||||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
|
|
@ -210,12 +212,12 @@ public class IntermediateMkrSessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionAssetsAction);
|
.action(formingPaymentInstructionAssetsAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
||||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndContinueAction;
|
import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
||||||
import static ru.spcex.clearing.util.StateMachineUtil.*;
|
import static ru.spcex.clearing.util.StateMachineUtil.*;
|
||||||
|
|
@ -60,14 +61,16 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||||
private final DiscardRegistriesAction discardOblAdmStash =
|
private final DiscardRegistriesAction discardOblAdmStash =
|
||||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
|
||||||
);
|
|
||||||
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
||||||
DataEnum.inspectionObligationStashedRgs
|
DataEnum.inspectionObligationStashedRgs
|
||||||
);
|
);
|
||||||
private final UpdateWorkflowStatusAction pauseWsAction;
|
private final UpdateWorkflowStatusAction pauseWsAction;
|
||||||
private final UpdateWorkflowStatusAction activeWsAction;
|
private final UpdateWorkflowStatusAction activeWsAction;
|
||||||
|
|
||||||
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||||
private final SessionType SESSION_TYPE = SessionType.PAYM;
|
private final SessionType SESSION_TYPE = SessionType.PAYM;
|
||||||
private final Section SECTION = Section.CURR;
|
private final Section SECTION = Section.CURR;
|
||||||
|
|
@ -195,12 +198,12 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionAssetsAction);
|
.action(formingPaymentInstructionAssetsAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -82,6 +83,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||||
|
|
||||||
private final SessionType SESSION_TYPE = SessionType.IPO0;
|
private final SessionType SESSION_TYPE = SessionType.IPO0;
|
||||||
|
|
@ -219,12 +221,12 @@ public class PrimaryAuctionB0SessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionSecuritiesAction);
|
.action(formingPaymentInstructionSecuritiesAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter
|
||||||
import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
|
import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
|
||||||
import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
|
import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
|
||||||
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
||||||
import org.springframework.statemachine.guard.Guard;
|
|
||||||
import org.springframework.statemachine.listener.StateMachineListenerAdapter;
|
import org.springframework.statemachine.listener.StateMachineListenerAdapter;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
|
|
@ -36,13 +35,15 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfSetGuard;
|
import ru.spcex.clearing.session.state.guard.SdfSetGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
||||||
import static ru.spcex.clearing.util.StateMachineUtil.*;
|
import static ru.spcex.clearing.util.StateMachineUtil.chain;
|
||||||
|
import static ru.spcex.clearing.util.StateMachineUtil.invert;
|
||||||
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
|
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
|
||||||
import ru.spcex.platform.enumeration.Section;
|
import ru.spcex.platform.enumeration.Section;
|
||||||
import ru.spcex.platform.enumeration.SessionType;
|
import ru.spcex.platform.enumeration.SessionType;
|
||||||
|
|
@ -78,7 +79,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
|
|
||||||
private final SessionType SESSION_TYPE = SessionType.IPOB;
|
private final SessionType SESSION_TYPE = SessionType.IPOB;
|
||||||
private final Section SECTION = Section.FOND;
|
private final Section SECTION = Section.FOND;
|
||||||
|
|
@ -206,12 +207,12 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionSecuritiesAction);
|
.action(formingPaymentInstructionSecuritiesAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -82,6 +83,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||||
|
|
||||||
private final SessionType SESSION_TYPE = SessionType.IPOT;
|
private final SessionType SESSION_TYPE = SessionType.IPOT;
|
||||||
|
|
@ -221,12 +223,12 @@ public class PrimaryAuctionT0SessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionSecuritiesAction);
|
.action(formingPaymentInstructionSecuritiesAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAfterInspectionAndCo
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
||||||
|
|
@ -67,6 +68,7 @@ public class ReturnDepositSessionStateMachineConfig
|
||||||
);
|
);
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs);
|
DataEnum.obligationAdmissionStashedRgs);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final SessionType SESSION_TYPE = SessionType.XDEP;
|
private final SessionType SESSION_TYPE = SessionType.XDEP;
|
||||||
private final Section SECTION = Section.MKR;
|
private final Section SECTION = Section.MKR;
|
||||||
|
|
||||||
|
|
@ -161,12 +163,12 @@ public class ReturnDepositSessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionDepositReturnAction);
|
.action(formingPaymentInstructionDepositReturnAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -82,6 +83,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||||
|
|
||||||
private final SessionType SESSION_TYPE = SessionType.TRDT;
|
private final SessionType SESSION_TYPE = SessionType.TRDT;
|
||||||
|
|
@ -221,12 +223,12 @@ public class SecondaryAuctionT0SessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionAssetsAction);
|
.action(formingPaymentInstructionAssetsAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
|
||||||
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
import ru.spcex.clearing.session.state.action.Sdf56Action;
|
||||||
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
import ru.spcex.clearing.session.state.action.SdfReceivedAction;
|
||||||
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
|
||||||
|
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||||
|
|
@ -86,6 +87,7 @@ public class UnitedSessionStateMachineConfig
|
||||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||||
DataEnum.obligationAdmissionStashedRgs
|
DataEnum.obligationAdmissionStashedRgs
|
||||||
);
|
);
|
||||||
|
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||||
private final SessionType SESSION_TYPE = SessionType.UNIT;
|
private final SessionType SESSION_TYPE = SessionType.UNIT;
|
||||||
private final Section SECTION = Section.MULT;
|
private final Section SECTION = Section.MULT;
|
||||||
|
|
@ -234,12 +236,12 @@ public class UnitedSessionStateMachineConfig
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations)
|
.source(TaskType.InspectionObligations)
|
||||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||||
.guard(oblAdmGuard)
|
.guard(inspErrGuard)
|
||||||
.action(pauseWsAction)
|
.action(pauseWsAction)
|
||||||
.and()
|
.and()
|
||||||
.withExternal()
|
.withExternal()
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||||
.guard(invert(oblAdmGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
.action(formingPaymentInstructionAssetsAction);
|
.action(formingPaymentInstructionAssetsAction);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ public enum TaskType implements IEnumKey {
|
||||||
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
||||||
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
||||||
PSEUDO_waitAfterInspectionError("PSEUDO_waitAfterInspectionError"),
|
PSEUDO_waitAfterInspectionError("PSEUDO_waitAfterInspectionError"),
|
||||||
|
PSEUDO_waitAfterInspectionDepositReturnError("PSEUDO_waitAfterInspectionDepositReturnError"),
|
||||||
PSEUDO_end("PSEUDO_end"),
|
PSEUDO_end("PSEUDO_end"),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.session.state.action;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -31,6 +32,7 @@ import ru.spcex.clearing.session.stage.impl.GatewayRequester;
|
||||||
import ru.spcex.clearing.session.stage.impl.PlanBalanceCalc;
|
import ru.spcex.clearing.session.stage.impl.PlanBalanceCalc;
|
||||||
import ru.spcex.clearing.session.state.DataEnum;
|
import ru.spcex.clearing.session.state.DataEnum;
|
||||||
import ru.spcex.clearing.session.state.SsnEvent;
|
import ru.spcex.clearing.session.state.SsnEvent;
|
||||||
|
import ru.spcex.clearing.session.state.model.RgsErr;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||||
import ru.spcex.platform.enumeration.RegistryCapacity;
|
import ru.spcex.platform.enumeration.RegistryCapacity;
|
||||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
|
|
@ -82,6 +84,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
|
|
||||||
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||||
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
||||||
|
List<RgsErr> errs = new ArrayList<>();
|
||||||
|
|
||||||
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registryImdg.getCollectionObjectsBySQL(sqlCondition)
|
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registryImdg.getCollectionObjectsBySQL(sqlCondition)
|
||||||
.stream()
|
.stream()
|
||||||
|
|
@ -99,6 +102,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
if (omtInGroupO.isEmpty() || tmtInGroupO.isEmpty()) {
|
if (omtInGroupO.isEmpty() || tmtInGroupO.isEmpty()) {
|
||||||
log.error("groupId/market {}/{} failed to find OM*T/TM*T registry", entry.getKey().groupId(), entry.getKey().market());
|
log.error("groupId/market {}/{} failed to find OM*T/TM*T registry", entry.getKey().groupId(), entry.getKey().market());
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
||||||
|
group.forEach(rgs -> errs.add(new RgsErr(rgs, "Не удалось найти обязательства/требования в группе"))); //never
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Registry omtRgs = omtInGroupO.get();
|
Registry omtRgs = omtInGroupO.get();
|
||||||
|
|
@ -129,6 +133,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
//для OM*T uncovered остальным фейл
|
//для OM*T uncovered остальным фейл
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||||
updateRegistryStatus(dmx.get(), RegistryStatus.UNCV, rgssToStore);
|
updateRegistryStatus(dmx.get(), RegistryStatus.UNCV, rgssToStore);
|
||||||
|
errs.add(new RgsErr(dmx.get(), biErr(dmx.get())));
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -139,12 +144,14 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
log.error("OM*T register.id={} groupId={}, market={} failed to find AM*F asset", omtRgs.getId(),
|
log.error("OM*T register.id={} groupId={}, market={} failed to find AM*F asset", omtRgs.getId(),
|
||||||
entry.getKey().groupId(), entry.getKey().market());
|
entry.getKey().groupId(), entry.getKey().market());
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
||||||
|
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (amfAssetReceiverO.isEmpty()) {
|
if (amfAssetReceiverO.isEmpty()) {
|
||||||
log.error("TM*T register.id={} groupId={}, market={} failed to find AM*F asset", tmtRgs.getId(),
|
log.error("TM*T register.id={} groupId={}, market={} failed to find AM*F asset", tmtRgs.getId(),
|
||||||
entry.getKey().groupId(), entry.getKey().market());
|
entry.getKey().groupId(), entry.getKey().market());
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
||||||
|
errs.add(new RgsErr(tmtRgs, "Не удалось найти AM*F"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -176,6 +183,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
continue;
|
continue;
|
||||||
} else if (SessionType.XDEP.equals(sessionType)) {
|
} else if (SessionType.XDEP.equals(sessionType)) {
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore)); // для финальной UNCV or FAIL ; другие MNG
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore)); // для финальной UNCV or FAIL ; другие MNG
|
||||||
|
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||||
// updateStatus(dmtInfo.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T
|
// updateStatus(dmtInfo.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -195,6 +203,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
continue;
|
continue;
|
||||||
} else if (SessionType.XDEP.equals(sessionType)) {
|
} else if (SessionType.XDEP.equals(sessionType)) {
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||||
|
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||||
// updateStatus(dmtClnr.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T
|
// updateStatus(dmtClnr.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -213,13 +222,21 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
||||||
log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group",
|
log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group",
|
||||||
omtRgs.getId(), registryStatusFailed());
|
omtRgs.getId(), registryStatusFailed());
|
||||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||||
|
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, errs);
|
||||||
|
ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore);
|
||||||
// registryImdg.putAll(rgssToStore, 200);
|
// registryImdg.putAll(rgssToStore, 200);
|
||||||
//
|
//
|
||||||
// planBalanceCalc.stageRevision2(sessionId);
|
// planBalanceCalc.stageRevision2(sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String biErr(Registry rgs) {
|
||||||
|
return "Недостаточно средств по инструменту " + rgs.getSecuritySymbol();
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean equalByRgs(RegistryTradingParams rgsParams, Registry rgs) {
|
private static boolean equalByRgs(RegistryTradingParams rgsParams, Registry rgs) {
|
||||||
return rgsParams.equalByRegistry(
|
return rgsParams.equalByRegistry(
|
||||||
IEnumKey.getEnumByKey(RegistryDesignation.class, rgs.getRegistryDesignation()),
|
IEnumKey.getEnumByKey(RegistryDesignation.class, rgs.getRegistryDesignation()),
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ import ru.spcex.clearing.session.stage.impl.PlanBalanceCalc;
|
||||||
import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
||||||
import ru.spcex.clearing.session.state.DataEnum;
|
import ru.spcex.clearing.session.state.DataEnum;
|
||||||
import ru.spcex.clearing.session.state.SsnEvent;
|
import ru.spcex.clearing.session.state.SsnEvent;
|
||||||
|
import ru.spcex.clearing.session.state.model.RgsErr;
|
||||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
|
@ -110,6 +111,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
||||||
RegistryStatus.POOL.getKey());
|
RegistryStatus.POOL.getKey());
|
||||||
|
|
||||||
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||||
|
List<RgsErr> errs = new ArrayList<>();
|
||||||
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
||||||
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registriesToProcess.stream()
|
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registriesToProcess.stream()
|
||||||
.collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket())))
|
.collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket())))
|
||||||
|
|
@ -161,6 +163,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
||||||
msgResolver.resolve(new EnumMessage(ClearingError.InsecurityObligation, obligation.getCompanyId())));
|
msgResolver.resolve(new EnumMessage(ClearingError.InsecurityObligation, obligation.getCompanyId())));
|
||||||
isUncovered = true;
|
isUncovered = true;
|
||||||
}
|
}
|
||||||
|
if (isUncovered) errs.add(new RgsErr(obligation, biErr(obligation)));
|
||||||
checkResults.add(new CheckResult(obligation, isUncovered));
|
checkResults.add(new CheckResult(obligation, isUncovered));
|
||||||
isUncovered = false;
|
isUncovered = false;
|
||||||
}
|
}
|
||||||
|
|
@ -169,8 +172,10 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
||||||
for (Registry rgs : group) {
|
for (Registry rgs : group) {
|
||||||
Runnable failGroup = () -> Stream.concat(group.stream(), getRefundDateRgsIfPresent(group).stream())
|
Runnable failGroup = () -> Stream.concat(group.stream(), getRefundDateRgsIfPresent(group).stream())
|
||||||
.forEach(registry -> {
|
.forEach(registry -> {
|
||||||
registry.setComment(msgResolver.resolve(RgsError.A__tNotFound));
|
String err = msgResolver.resolve(RgsError.A__tNotFound);
|
||||||
|
registry.setComment(err);
|
||||||
updateRegistryStatus(registry, RegistryStatus.FAIL, rgssToStore);
|
updateRegistryStatus(registry, RegistryStatus.FAIL, rgssToStore);
|
||||||
|
errs.add(new RgsErr(registry, err));
|
||||||
});
|
});
|
||||||
RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, rgs.getRegistryInstrumentType());
|
RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, rgs.getRegistryInstrumentType());
|
||||||
if (mOrS == null) {
|
if (mOrS == null) {
|
||||||
|
|
@ -205,7 +210,10 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
||||||
checkResults.stream()
|
checkResults.stream()
|
||||||
.filter(chk -> chk.registry().getId().equals(omt.get().getId()))
|
.filter(chk -> chk.registry().getId().equals(omt.get().getId()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.ifPresent(chk -> chk.isUncovered = true);
|
.ifPresent(chk -> {
|
||||||
|
chk.isUncovered = true;
|
||||||
|
errs.add(new RgsErr(omt.get(), biErr(omt.get())));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defineStatusAndUpdateRegistry(checkResults, group, rgssToStore);
|
defineStatusAndUpdateRegistry(checkResults, group, rgssToStore);
|
||||||
|
|
@ -267,9 +275,13 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, errs);
|
||||||
ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore);
|
ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String biErr(Registry rgs) {
|
||||||
|
return "Недостаточно средств по инструменту " + rgs.getSecuritySymbol();
|
||||||
|
}
|
||||||
|
|
||||||
private Registry copyF(Registry rgs) {
|
private Registry copyF(Registry rgs) {
|
||||||
Registry rgsF = rgs.clone();
|
Registry rgsF = rgs.clone();
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ public class PauseWorkflowStatusWithNotificationAction extends UpdateWorkflowSta
|
||||||
case PSEUDO_waitAfterObligationAdmissionError -> {
|
case PSEUDO_waitAfterObligationAdmissionError -> {
|
||||||
return "Ряд обязательств не допущены к клирингу!!!\r\n";
|
return "Ряд обязательств не допущены к клирингу!!!\r\n";
|
||||||
}
|
}
|
||||||
case PSEUDO_waitAfterInspectionError -> {
|
case PSEUDO_waitAfterInspectionError, PSEUDO_waitAfterInspectionDepositReturnError -> {
|
||||||
return "Ряд обязательств подлежит исключению из клирингового пула!!!\r\n";
|
return "Ряд обязательств подлежит исключению из клирингового пула!!!\r\n";
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ public class SaveRegistriesAfterInspectionAndContinueAction extends AbstractSess
|
||||||
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
|
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
|
||||||
registryImdg.putAll(rgss, 200);
|
registryImdg.putAll(rgss, 200);
|
||||||
planBalanceCalc.stageRevision2(sessionId);
|
planBalanceCalc.stageRevision2(sessionId);
|
||||||
|
ctx.getExtendedState().getVariables().remove(dataEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,5 +37,6 @@ public class SaveRegistriesAndContinueAction extends AbstractSessionActionForOkE
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Map<Long, Registry> rgss = ctx.getExtendedState().get(dataEnum, Map.class);
|
Map<Long, Registry> rgss = ctx.getExtendedState().get(dataEnum, Map.class);
|
||||||
registryImdg.putAll(rgss, 200);
|
registryImdg.putAll(rgss, 200);
|
||||||
|
ctx.getExtendedState().getVariables().remove(dataEnum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
package ru.spcex.clearing.session.state.guard;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import org.springframework.statemachine.StateContext;
|
||||||
|
import org.springframework.statemachine.guard.Guard;
|
||||||
|
import ru.spcex.clearing.session.stage.TaskType;
|
||||||
|
import ru.spcex.clearing.session.state.DataEnum;
|
||||||
|
import ru.spcex.clearing.session.state.SsnEvent;
|
||||||
|
|
||||||
|
public class ErroneousRegistriesPresentGuard implements Guard<TaskType, SsnEvent> {
|
||||||
|
|
||||||
|
public ErroneousRegistriesPresentGuard() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean evaluate(StateContext<TaskType, SsnEvent> ctx) {
|
||||||
|
Collection<?> rgss = ctx.getExtendedState().get(DataEnum.erroneousRegistries, Collection.class);
|
||||||
|
return rgss != null && !rgss.isEmpty();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue