get section and sessionType from machine context

This commit is contained in:
etreschenkov 2025-07-02 19:16:10 +03:00
parent 66be672adb
commit ec012740cb
8 changed files with 13 additions and 76 deletions

View file

@ -75,7 +75,6 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
); );
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.MEDM; private final SessionType SESSION_TYPE = SessionType.MEDM;
private final Section SECTION = Section.MKR;
public CurrencySessionStateMachineConfig(ImdgProvider imdgProvider, public CurrencySessionStateMachineConfig(ImdgProvider imdgProvider,
Sdf56Action sendSdf56Action, Sdf56Action sendSdf56Action,
@ -107,16 +106,12 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
this.finishingSessionAction = finishingSession; this.finishingSessionAction = finishingSession;
this.endStageNotificationAction = endStageNotification; this.endStageNotificationAction = endStageNotification;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.finishingSessionAction.setSessionType(SESSION_TYPE);
this.finishingSessionAction.setSection(SECTION);
this.finishingSessionAction.setPr("1"); this.finishingSessionAction.setPr("1");
dealsPrepareAction.searchForExecutions(ExecutionType.ExecutionCurrency); dealsPrepareAction.searchForExecutions(ExecutionType.ExecutionCurrency);
ImdgPredicateBuilder execFondPb = executionCurrencyImdg.predicateBuilder(); ImdgPredicateBuilder execFondPb = executionCurrencyImdg.predicateBuilder();
dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.regex("settlementCode", "^T0.*$")); dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.regex("settlementCode", "^T0.*$"));
dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); dealsPrepareAction.addExecutionCurrencyCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
this.inspectionObligationsV2Action.setSessionType(SESSION_TYPE);
this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs);
} }
@ -125,9 +120,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
states states
.withStates() .withStates()
.initial(TaskType.StartRevise, chain( .initial(TaskType.StartRevise, chain(
new CreateSessionAction(sessionImdg) new CreateSessionAction(sessionImdg, SessionType.MEDM, Section.MKR),
.sessionType(SESSION_TYPE)
.section(SECTION),
sendSdf56Action)) sendSdf56Action))
.states(new HashSet<>(Arrays.asList( .states(new HashSet<>(Arrays.asList(
TaskType.StartRevise, TaskType.StartRevise,

View file

@ -78,7 +78,6 @@ public class FinalSessionStateMachineConfig
); );
private final SessionType SESSION_TYPE = SessionType.FINL; private final SessionType SESSION_TYPE = SessionType.FINL;
private final Section SECTION = Section.MKR;
@Autowired @Autowired
@ -112,8 +111,6 @@ public class FinalSessionStateMachineConfig
this.formingPaymentInstructionAssetsAction = formingPaymentInstructionAssetsAction; this.formingPaymentInstructionAssetsAction = formingPaymentInstructionAssetsAction;
this.finishingSessionAction = finishingSessionAction; this.finishingSessionAction = finishingSessionAction;
this.endStageNotificationAction = endStageNotificationAction; this.endStageNotificationAction = endStageNotificationAction;
this.finishingSessionAction.setSessionType(SESSION_TYPE);
this.finishingSessionAction.setSection(SECTION);
this.finishingSessionAction.setPr("3"); this.finishingSessionAction.setPr("3");
//stages settings: //stages settings:
@ -128,8 +125,6 @@ public class FinalSessionStateMachineConfig
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now()) rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
) )
); );
this.inspOblDepositReturnAction.setSessionType(SESSION_TYPE);
this.inspectionObligationsV2Action.setSessionType(SESSION_TYPE);
this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs);
} }
@ -138,9 +133,7 @@ public class FinalSessionStateMachineConfig
states states
.withStates() .withStates()
.initial(TaskType.StartRevise, chain( .initial(TaskType.StartRevise, chain(
new CreateSessionAction(sessionImdg) new CreateSessionAction(sessionImdg, SessionType.FINL, Section.MKR),
.sessionType(SESSION_TYPE)
.section(SECTION),
sendSdf56Action)) sendSdf56Action))
.states(new HashSet<>(Arrays.asList( .states(new HashSet<>(Arrays.asList(
TaskType.StartRevise, TaskType.StartRevise,

View file

@ -78,7 +78,6 @@ public class IntermediateMkrSessionStateMachineConfig
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.MEDM; private final SessionType SESSION_TYPE = SessionType.MEDM;
private final Section SECTION = Section.MKR;
@Autowired @Autowired
@ -109,8 +108,6 @@ public class IntermediateMkrSessionStateMachineConfig
this.formingPaymentInstructionAssetsAction = formingPaymentInstructionAssetsAction; this.formingPaymentInstructionAssetsAction = formingPaymentInstructionAssetsAction;
this.finishingSessionAction = finishingSessionAction; this.finishingSessionAction = finishingSessionAction;
this.endStageNotificationAction = endStageNotificationAction; this.endStageNotificationAction = endStageNotificationAction;
this.finishingSessionAction.setSessionType(SESSION_TYPE);
this.finishingSessionAction.setSection(SECTION);
this.finishingSessionAction.setPr("4"); this.finishingSessionAction.setPr("4");
//stages settings: //stages settings:
@ -125,7 +122,6 @@ public class IntermediateMkrSessionStateMachineConfig
rgsPrctBuilder.equals("valueDate", LocalDate.now()) rgsPrctBuilder.equals("valueDate", LocalDate.now())
) )
); );
this.inspectionObligationsV2Action.setSessionType(SESSION_TYPE);
this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs);
} }
@ -134,9 +130,7 @@ public class IntermediateMkrSessionStateMachineConfig
states states
.withStates() .withStates()
.initial(TaskType.StartRevise, chain( .initial(TaskType.StartRevise, chain(
new CreateSessionAction(sessionImdg) new CreateSessionAction(sessionImdg, SessionType.MEDM, Section.MKR),
.sessionType(SESSION_TYPE)
.section(SECTION),
sendSdf56Action)) sendSdf56Action))
.states(new HashSet<>(Arrays.asList( .states(new HashSet<>(Arrays.asList(
TaskType.StartRevise, TaskType.StartRevise,

View file

@ -78,7 +78,6 @@ public class PrimaryAuctionB0SessionStateMachineConfig
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;
private final Section SECTION = Section.FOND;
@Autowired @Autowired
@ -110,8 +109,6 @@ public class PrimaryAuctionB0SessionStateMachineConfig
this.formingPaymentInstructionSecuritiesAction = formingPaymentInstructionSecuritiesAction; this.formingPaymentInstructionSecuritiesAction = formingPaymentInstructionSecuritiesAction;
this.finishingSessionAction = finishingSessionAction; this.finishingSessionAction = finishingSessionAction;
this.endStageNotificationAction = endStageNotificationAction; this.endStageNotificationAction = endStageNotificationAction;
this.finishingSessionAction.setSessionType(SESSION_TYPE);
this.finishingSessionAction.setSection(SECTION);
this.finishingSessionAction.setPr("0"); this.finishingSessionAction.setPr("0");
//stages settings: //stages settings:
@ -119,8 +116,6 @@ public class PrimaryAuctionB0SessionStateMachineConfig
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder(); ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
dealsPrepareAction.addExecutionFondCondition(execFondPb.equals("settlementCode", "B0")); dealsPrepareAction.addExecutionFondCondition(execFondPb.equals("settlementCode", "B0"));
dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); dealsPrepareAction.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
this.inspectionObligationsV2Action.setSessionType(SESSION_TYPE);
this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs); this.obligationAdmissionContinueAction.setDataEnum(DataEnum.obligationAdmissionStashedRgs);
} }
@ -129,9 +124,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig
states states
.withStates() .withStates()
.initial(TaskType.StartRevise, chain( .initial(TaskType.StartRevise, chain(
new CreateSessionAction(sessionImdg) new CreateSessionAction(sessionImdg, SessionType.IPO0, Section.FOND),
.sessionType(SESSION_TYPE)
.section(SECTION),
sendSdf56Action)) sendSdf56Action))
.states(new HashSet<>(Arrays.asList( .states(new HashSet<>(Arrays.asList(
TaskType.StartRevise, TaskType.StartRevise,

View file

@ -17,21 +17,15 @@ import ru.spcex.platform.imdg.api.Imdg;
public class CreateSessionAction extends AbstractSessionActionForOkErrorHandling { public class CreateSessionAction extends AbstractSessionActionForOkErrorHandling {
private final Imdg<Session> sessionImdg; private final Imdg<Session> sessionImdg;
private final Logger log = LoggerFactory.getLogger(CreateSessionAction.class); private final Logger log = LoggerFactory.getLogger(CreateSessionAction.class);
private SessionType sessionType; private final SessionType sessionType;
private Section section; private final Section section;
public CreateSessionAction(Imdg<Session> sessionImdg) { public CreateSessionAction(Imdg<Session> sessionImdg,
SessionType sessionType,
Section section) {
this.sessionImdg = sessionImdg; this.sessionImdg = sessionImdg;
}
public CreateSessionAction sessionType(SessionType sessionType) {
this.sessionType = sessionType; this.sessionType = sessionType;
return this;
}
public CreateSessionAction section(Section section) {
this.section = section; this.section = section;
return this;
} }
@Override @Override

View file

@ -25,7 +25,6 @@ import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
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;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.sdf.SDf05;
import ru.spcex.clearing.component.GroupRgsKey; import ru.spcex.clearing.component.GroupRgsKey;
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError; import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -61,57 +60,44 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
public class FinishingSessionAction extends AbstractSessionActionForOkErrorHandling { public class FinishingSessionAction extends AbstractSessionActionForOkErrorHandling {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider;
private final Imdg<Registry> registryImdg; private final Imdg<Registry> registryImdg;
private final Imdg<ExecutionFond> executionFondImdg; private final Imdg<ExecutionFond> executionFondImdg;
private final Imdg<ExecutionDeposit> executionDepositImdg; private final Imdg<ExecutionDeposit> executionDepositImdg;
private final Imdg<ExecutionCurrency> executionCurrencyImdg; private final Imdg<ExecutionCurrency> executionCurrencyImdg;
private final Imdg<Session> sessionImdg; private final Imdg<Session> sessionImdg;
private final Imdg<SDf05> sDf05Imdg;
private final KafkaSender kafkaSender; private final KafkaSender kafkaSender;
private final IMessageResolver msgResolver; private final IMessageResolver msgResolver;
private final Sdf05Sender sdf05Sender; private final Sdf05Sender sdf05Sender;
private final Sdf14Sender sdf14Sender; private final Sdf14Sender sdf14Sender;
private SessionType sessionType; private SessionType sessionType;
private Section section;
private String pr; private String pr;
@Autowired @Autowired
public FinishingSessionAction(ImdgProvider imdgProvider, public FinishingSessionAction(ImdgProvider imdgProvider,
KafkaSender kafkaSender, KafkaSender kafkaSender,
IMessageResolver msgResolver, IMessageResolver msgResolver,
Sdf05Sender sdf05Sender, Sdf05Sender sdf05Sender,
Sdf14Sender sdf14Sender) { Sdf14Sender sdf14Sender) {
this.imdgProvider = imdgProvider;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class); this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
this.executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); this.executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
this.sDf05Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf05, SDf05.class);
this.kafkaSender = kafkaSender; this.kafkaSender = kafkaSender;
this.msgResolver = msgResolver; this.msgResolver = msgResolver;
this.sdf05Sender = sdf05Sender; this.sdf05Sender = sdf05Sender;
this.sdf14Sender = sdf14Sender; this.sdf14Sender = sdf14Sender;
} }
public void setSection(Section section) {
this.section = section;
}
public void setPr(String pr) { public void setPr(String pr) {
this.pr = pr; this.pr = pr;
} }
public void setSessionType(SessionType sessionType) {
this.sessionType = sessionType;
}
@Override @Override
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) { protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
this.sessionType = ctx.getExtendedState().get(DataEnum.sessionType, SessionType.class);
Section section = ctx.getExtendedState().get(DataEnum.section, Section.class);
if (pr == null) { if (pr == null) {
throw new IllegalStateException("'pr' not set up"); throw new IllegalStateException("'pr' not set up");
} }

View file

@ -75,6 +75,7 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
@Override @Override
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) { protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
this.sessionType = ctx.getExtendedState().get(DataEnum.sessionType, SessionType.class);
String sqlCondition = String.format("(%s) and registryStatus = '%s'", String sqlCondition = String.format("(%s) and registryStatus = '%s'",
RegistryCodeSqlBuilder.getInstance(OS_T, OM_T, TS_T, TM_T).build(), RegistryCodeSqlBuilder.getInstance(OS_T, OM_T, TS_T, TM_T).build(),
RegistryStatus.POOL.getKey()); RegistryStatus.POOL.getKey());
@ -300,8 +301,4 @@ public class InspectionObligationsDepositReturnAction extends AbstractSessionAct
.formatted(omtRgs.getCounterPartyId(), ClearingCategory.V.getKey())); .formatted(omtRgs.getCounterPartyId(), ClearingCategory.V.getKey()));
return ctgr != null; return ctgr != null;
} }
public void setSessionType(SessionType sessionType) {
this.sessionType = sessionType;
}
} }

View file

@ -30,7 +30,6 @@ import ru.spcex.clearing.service.cash.impl.RegistryCashA__F;
import ru.spcex.clearing.service.cash.impl.RegistryCashAssetCash; import ru.spcex.clearing.service.cash.impl.RegistryCashAssetCash;
import ru.spcex.clearing.service.cash.impl.RegistryCashD___; import ru.spcex.clearing.service.cash.impl.RegistryCashD___;
import ru.spcex.clearing.service.integration.GatewayRequestCreator; import ru.spcex.clearing.service.integration.GatewayRequestCreator;
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
import ru.spcex.clearing.service.registry.AssetTBFProcessingCashing; import ru.spcex.clearing.service.registry.AssetTBFProcessingCashing;
import ru.spcex.clearing.service.registry.RegistryManager; import ru.spcex.clearing.service.registry.RegistryManager;
import ru.spcex.clearing.service.schedule.TradingTimeService; import ru.spcex.clearing.service.schedule.TradingTimeService;
@ -66,11 +65,8 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Registry> registryImdg; private final Imdg<Registry> registryImdg;
private final ImdgId idGen; private final ImdgId idGen;
private final RegistryManager registryManager;
private final IMessageResolver msgResolver = new SimpleMessageResolver(); private final IMessageResolver msgResolver = new SimpleMessageResolver();
private SessionType sessionType; private SessionType sessionType;
private Section section;
private final AssetTBFProcessing assets;
private final AssetTBFProcessingCashing assetsCashing; private final AssetTBFProcessingCashing assetsCashing;
private final GatewayRequester gateway; private final GatewayRequester gateway;
private final TradingTimeService tradingTimeService; private final TradingTimeService tradingTimeService;
@ -78,21 +74,16 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
@Autowired @Autowired
public InspectionObligationsV2Action(ImdgProvider imdgProvider, public InspectionObligationsV2Action(ImdgProvider imdgProvider,
RegistryManager registryManager,
AssetTBFProcessing assets,
GatewayRequester gateway, GatewayRequester gateway,
PlanBalanceCalc planBalanceCalc PlanBalanceCalc planBalanceCalc
) { ) {
this.registryImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_Registry, Registry.class, null); this.registryImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_Registry, Registry.class, null);
this.idGen = imdgProvider.getImdgIdGenerator(); this.idGen = imdgProvider.getImdgIdGenerator();
this.registryManager = registryManager;
this.assets = assets;
this.gateway = gateway; this.gateway = gateway;
this.planBalanceCalc = planBalanceCalc; this.planBalanceCalc = planBalanceCalc;
this.gateway.setName("InspectionObligations|OM*T"); this.gateway.setName("InspectionObligations|OM*T");
this.tradingTimeService = new TradingTimeService(imdgProvider); this.tradingTimeService = new TradingTimeService(imdgProvider);
this.assetsCashing = new AssetTBFProcessingCashing(imdgProvider, d___Cash); this.assetsCashing = new AssetTBFProcessingCashing(imdgProvider, d___Cash);
} }
private final RegistryCashAssetCash a___Cash = new RegistryCashAssetCash("[all assets]"); private final RegistryCashAssetCash a___Cash = new RegistryCashAssetCash("[all assets]");
@ -100,15 +91,11 @@ public class InspectionObligationsV2Action extends AbstractSessionActionForOkErr
private final RegistryCashD___ d___Cash = new RegistryCashD___("[D__I/V]"); private final RegistryCashD___ d___Cash = new RegistryCashD___("[D__I/V]");
public void setSessionType(SessionType sessionType) {
this.sessionType = sessionType;
}
@Override @Override
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) { protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
try { try {
Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class); Long sessionId = ctx.getExtendedState().get(DataEnum.sessionId, Long.class);
this.sessionType = ctx.getExtendedState().get(DataEnum.sessionType, SessionType.class);
inspectionObligations(sessionId); inspectionObligations(sessionId);
} finally { } finally {
a___Cash.clear(); a___Cash.clear();