InspectionObligations guard
This commit is contained in:
parent
60d84bc281
commit
efe3d58b2a
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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -76,6 +77,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
DataEnum.obligationAdmissionStashedRgs
|
||||
);
|
||||
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||
private final UpdateWorkflowStatusAction pauseWsAction;
|
||||
private final UpdateWorkflowStatusAction activeWsAction;
|
||||
|
||||
|
|
@ -197,12 +199,12 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -74,6 +75,7 @@ public class IntermediateMkrSessionStateMachineConfig
|
|||
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
||||
DataEnum.inspectionObligationStashedRgs
|
||||
);
|
||||
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||
private final DiscardRegistriesAction discardOblAdmStash =
|
||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
|
|
@ -210,12 +212,12 @@ public class IntermediateMkrSessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SaveRegistriesAndContinueAction;
|
||||
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.listener.MachineMonitoringListener;
|
||||
import static ru.spcex.clearing.util.StateMachineUtil.*;
|
||||
|
|
@ -60,14 +61,16 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
|||
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 StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
DataEnum.obligationAdmissionStashedRgs
|
||||
);
|
||||
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
|
||||
private final SessionType SESSION_TYPE = SessionType.PAYM;
|
||||
private final Section SECTION = Section.CURR;
|
||||
|
|
@ -195,12 +198,12 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedListGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -82,6 +83,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig
|
|||
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 SessionType SESSION_TYPE = SessionType.IPO0;
|
||||
|
|
@ -219,12 +221,12 @@ public class PrimaryAuctionB0SessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.StateMachineStateConfigurer;
|
||||
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
||||
import org.springframework.statemachine.guard.Guard;
|
||||
import org.springframework.statemachine.listener.StateMachineListenerAdapter;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
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.SdfReceivedAction;
|
||||
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.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.*;
|
||||
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.enumeration.Section;
|
||||
import ru.spcex.platform.enumeration.SessionType;
|
||||
|
|
@ -78,7 +79,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
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 Section SECTION = Section.FOND;
|
||||
|
|
@ -206,12 +207,12 @@ public class PrimaryAuctionBnSessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedListGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -82,6 +83,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig
|
|||
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 SessionType SESSION_TYPE = SessionType.IPOT;
|
||||
|
|
@ -221,12 +223,12 @@ public class PrimaryAuctionT0SessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedListGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
|
||||
|
|
@ -67,6 +68,7 @@ public class ReturnDepositSessionStateMachineConfig
|
|||
);
|
||||
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
|
||||
DataEnum.obligationAdmissionStashedRgs);
|
||||
private final ErroneousRegistriesPresentGuard inspErrGuard = new ErroneousRegistriesPresentGuard();
|
||||
private final SessionType SESSION_TYPE = SessionType.XDEP;
|
||||
private final Section SECTION = Section.MKR;
|
||||
|
||||
|
|
@ -161,12 +163,12 @@ public class ReturnDepositSessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -82,6 +83,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig
|
|||
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 SessionType SESSION_TYPE = SessionType.TRDT;
|
||||
|
|
@ -221,12 +223,12 @@ public class SecondaryAuctionT0SessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.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.SdfReceivedAction;
|
||||
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.PaymentsWereNotCreatedGuard;
|
||||
import ru.spcex.clearing.session.state.guard.SdfGuard;
|
||||
|
|
@ -86,6 +87,7 @@ public class UnitedSessionStateMachineConfig
|
|||
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 SessionType SESSION_TYPE = SessionType.UNIT;
|
||||
private final Section SECTION = Section.MULT;
|
||||
|
|
@ -234,12 +236,12 @@ public class UnitedSessionStateMachineConfig
|
|||
.withExternal()
|
||||
.source(TaskType.InspectionObligations)
|
||||
.target(TaskType.PSEUDO_waitAfterInspectionError)
|
||||
.guard(oblAdmGuard)
|
||||
.guard(inspErrGuard)
|
||||
.action(pauseWsAction)
|
||||
.and()
|
||||
.withExternal()
|
||||
.source(TaskType.InspectionObligations).target(TaskType.FormingPaymentInstruction)
|
||||
.guard(invert(oblAdmGuard))
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(formingPaymentInstructionAssetsAction);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ public enum TaskType implements IEnumKey {
|
|||
PSEUDO_waitSdfAfterAgainRevise("PSEUDO_waitSdfAfterAgainRevise"),
|
||||
PSEUDO_waitAfterObligationAdmissionError("PSEUDO_waitAfterObligationAdmissionError"),
|
||||
PSEUDO_waitAfterInspectionError("PSEUDO_waitAfterInspectionError"),
|
||||
PSEUDO_waitAfterInspectionDepositReturnError("PSEUDO_waitAfterInspectionDepositReturnError"),
|
||||
PSEUDO_end("PSEUDO_end"),
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.session.state.action;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
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.state.DataEnum;
|
||||
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.RegistryCapacity;
|
||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||
|
|
@ -82,6 +84,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
|
||||
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
||||
List<RgsErr> errs = new ArrayList<>();
|
||||
|
||||
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registryImdg.getCollectionObjectsBySQL(sqlCondition)
|
||||
.stream()
|
||||
|
|
@ -99,6 +102,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
if (omtInGroupO.isEmpty() || tmtInGroupO.isEmpty()) {
|
||||
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 -> errs.add(new RgsErr(rgs, "Не удалось найти обязательства/требования в группе"))); //never
|
||||
continue;
|
||||
}
|
||||
Registry omtRgs = omtInGroupO.get();
|
||||
|
|
@ -129,6 +133,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
//для OM*T uncovered остальным фейл
|
||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||
updateRegistryStatus(dmx.get(), RegistryStatus.UNCV, rgssToStore);
|
||||
errs.add(new RgsErr(dmx.get(), biErr(dmx.get())));
|
||||
}
|
||||
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(),
|
||||
entry.getKey().groupId(), entry.getKey().market());
|
||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
||||
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||
continue;
|
||||
}
|
||||
if (amfAssetReceiverO.isEmpty()) {
|
||||
log.error("TM*T register.id={} groupId={}, market={} failed to find AM*F asset", tmtRgs.getId(),
|
||||
entry.getKey().groupId(), entry.getKey().market());
|
||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(), rgssToStore)); // FAIL or MNG
|
||||
errs.add(new RgsErr(tmtRgs, "Не удалось найти AM*F"));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -176,6 +183,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
continue;
|
||||
} else if (SessionType.XDEP.equals(sessionType)) {
|
||||
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
|
||||
continue;
|
||||
}
|
||||
|
|
@ -195,6 +203,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
|
|||
continue;
|
||||
} else if (SessionType.XDEP.equals(sessionType)) {
|
||||
group.forEach(rgs -> updateRegistryStatus(rgs, registryStatusFailed(rgs), rgssToStore));
|
||||
errs.add(new RgsErr(omtRgs, biErr(omtRgs)));
|
||||
// updateStatus(dmtClnr.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T
|
||||
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",
|
||||
omtRgs.getId(), registryStatusFailed());
|
||||
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);
|
||||
//
|
||||
// planBalanceCalc.stageRevision2(sessionId);
|
||||
}
|
||||
|
||||
private static String biErr(Registry rgs) {
|
||||
return "Недостаточно средств по инструменту " + rgs.getSecuritySymbol();
|
||||
}
|
||||
|
||||
private static boolean equalByRgs(RegistryTradingParams rgsParams, Registry rgs) {
|
||||
return rgsParams.equalByRegistry(
|
||||
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.state.DataEnum;
|
||||
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.RegistryInstrumentType;
|
||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||
|
|
@ -110,6 +111,7 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
|||
RegistryStatus.POOL.getKey());
|
||||
|
||||
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||
List<RgsErr> errs = new ArrayList<>();
|
||||
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
||||
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registriesToProcess.stream()
|
||||
.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())));
|
||||
isUncovered = true;
|
||||
}
|
||||
if (isUncovered) errs.add(new RgsErr(obligation, biErr(obligation)));
|
||||
checkResults.add(new CheckResult(obligation, isUncovered));
|
||||
isUncovered = false;
|
||||
}
|
||||
|
|
@ -169,8 +172,10 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
|||
for (Registry rgs : group) {
|
||||
Runnable failGroup = () -> Stream.concat(group.stream(), getRefundDateRgsIfPresent(group).stream())
|
||||
.forEach(registry -> {
|
||||
registry.setComment(msgResolver.resolve(RgsError.A__tNotFound));
|
||||
String err = msgResolver.resolve(RgsError.A__tNotFound);
|
||||
registry.setComment(err);
|
||||
updateRegistryStatus(registry, RegistryStatus.FAIL, rgssToStore);
|
||||
errs.add(new RgsErr(registry, err));
|
||||
});
|
||||
RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, rgs.getRegistryInstrumentType());
|
||||
if (mOrS == null) {
|
||||
|
|
@ -205,7 +210,10 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
|
|||
checkResults.stream()
|
||||
.filter(chk -> chk.registry().getId().equals(omt.get().getId()))
|
||||
.findFirst()
|
||||
.ifPresent(chk -> chk.isUncovered = true);
|
||||
.ifPresent(chk -> {
|
||||
chk.isUncovered = true;
|
||||
errs.add(new RgsErr(omt.get(), biErr(omt.get())));
|
||||
});
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
private static String biErr(Registry rgs) {
|
||||
return "Недостаточно средств по инструменту " + rgs.getSecuritySymbol();
|
||||
}
|
||||
|
||||
private Registry copyF(Registry rgs) {
|
||||
Registry rgsF = rgs.clone();
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class PauseWorkflowStatusWithNotificationAction extends UpdateWorkflowSta
|
|||
case PSEUDO_waitAfterObligationAdmissionError -> {
|
||||
return "Ряд обязательств не допущены к клирингу!!!\r\n";
|
||||
}
|
||||
case PSEUDO_waitAfterInspectionError -> {
|
||||
case PSEUDO_waitAfterInspectionError, PSEUDO_waitAfterInspectionDepositReturnError -> {
|
||||
return "Ряд обязательств подлежит исключению из клирингового пула!!!\r\n";
|
||||
}
|
||||
default -> {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ public class SaveRegistriesAfterInspectionAndContinueAction extends AbstractSess
|
|||
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
|
||||
registryImdg.putAll(rgss, 200);
|
||||
planBalanceCalc.stageRevision2(sessionId);
|
||||
ctx.getExtendedState().getVariables().remove(dataEnum);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,5 +37,6 @@ public class SaveRegistriesAndContinueAction extends AbstractSessionActionForOkE
|
|||
@SuppressWarnings("unchecked")
|
||||
Map<Long, Registry> rgss = ctx.getExtendedState().get(dataEnum, Map.class);
|
||||
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