This commit is contained in:
parent
a461d55366
commit
5b6eb04345
4 changed files with 54 additions and 1 deletions
|
|
@ -34,6 +34,7 @@ import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAc
|
||||||
import ru.spcex.clearing.session.state.action.ReviseStage1Action;
|
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.SendNotificationAction;
|
||||||
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.ErroneousRegistriesPresentGuard;
|
||||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||||
|
|
@ -60,6 +61,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
private final InspectionObligationsPrecAction inspectionObligationsV2Action;
|
private final InspectionObligationsPrecAction inspectionObligationsV2Action;
|
||||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||||
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||||
|
private final SendNotificationAction sendNotificationAction;
|
||||||
private final DiscardRegistriesAction discardOblAdmStash =
|
private final DiscardRegistriesAction discardOblAdmStash =
|
||||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||||
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
||||||
|
|
@ -91,13 +93,14 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
@Qualifier("marketCodesForCurr")
|
@Qualifier("marketCodesForCurr")
|
||||||
Supplier<List<String>> marketCodes,
|
Supplier<List<String>> marketCodes,
|
||||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||||
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, SendNotificationAction sendNotificationAction,
|
||||||
@Qualifier("pauseWorkflowStatusAction")
|
@Qualifier("pauseWorkflowStatusAction")
|
||||||
UpdateWorkflowStatusAction pauseWsAction,
|
UpdateWorkflowStatusAction pauseWsAction,
|
||||||
@Qualifier("activeWorkflowStatusAction")
|
@Qualifier("activeWorkflowStatusAction")
|
||||||
UpdateWorkflowStatusAction activeWsAction) {
|
UpdateWorkflowStatusAction activeWsAction) {
|
||||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||||
|
this.sendNotificationAction = sendNotificationAction;
|
||||||
this.pauseWsAction = pauseWsAction;
|
this.pauseWsAction = pauseWsAction;
|
||||||
this.activeWsAction = activeWsAction;
|
this.activeWsAction = activeWsAction;
|
||||||
Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
|
Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
|
||||||
|
|
@ -193,6 +196,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
.source(TaskType.InspectionObligations).target(TaskType.FinishingSession)
|
.source(TaskType.InspectionObligations).target(TaskType.FinishingSession)
|
||||||
.guard(invert(inspErrGuard))
|
.guard(invert(inspErrGuard))
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
|
.action(sendNotificationAction)
|
||||||
.action(finishAction);
|
.action(finishAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,6 +223,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
||||||
.source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FinishingSession)
|
.source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FinishingSession)
|
||||||
.action(activeWsAction)
|
.action(activeWsAction)
|
||||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||||
|
.action(sendNotificationAction)
|
||||||
.action(finishAction)
|
.action(finishAction)
|
||||||
.event(SsnEvent.CONTINUE);
|
.event(SsnEvent.CONTINUE);
|
||||||
for (var taskType : List.of(TaskType.PSEUDO_waitAfterInspectionError, TaskType.PSEUDO_waitAfterInspectionRestore)) {
|
for (var taskType : List.of(TaskType.PSEUDO_waitAfterInspectionError, TaskType.PSEUDO_waitAfterInspectionRestore)) {
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ public enum DataEnum {
|
||||||
counterPartyId, //Long
|
counterPartyId, //Long
|
||||||
obligationAdmissionStashedRgs, //Map<Long, Registry>
|
obligationAdmissionStashedRgs, //Map<Long, Registry>
|
||||||
inspectionObligationStashedRgs, //Map<Long, Registry>
|
inspectionObligationStashedRgs, //Map<Long, Registry>
|
||||||
|
notificationMessage,
|
||||||
erroneousRegistries, //List<RgsErr>
|
erroneousRegistries, //List<RgsErr>
|
||||||
paymentInstructionReturnMkr, //List<PaymentInstruction>
|
paymentInstructionReturnMkr, //List<PaymentInstruction>
|
||||||
paymentInstructionSecurity, //List<PaymentInstruction>
|
paymentInstructionSecurity, //List<PaymentInstruction>
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action {
|
||||||
}
|
}
|
||||||
setGroupStatus.accept(group);
|
setGroupStatus.accept(group);
|
||||||
}
|
}
|
||||||
|
final StringBuilder[] notificationMessage = {null};
|
||||||
assetsByTcrAndSec.forEach((key, trio) -> {
|
assetsByTcrAndSec.forEach((key, trio) -> {
|
||||||
Registry dm_t = trio.dm_t;
|
Registry dm_t = trio.dm_t;
|
||||||
Registry am_t = trio.am_t;
|
Registry am_t = trio.am_t;
|
||||||
|
|
@ -209,7 +210,14 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action {
|
||||||
newPm_t.setSessionType(sessionType.getKey());
|
newPm_t.setSessionType(sessionType.getKey());
|
||||||
newPm_t.setBalance(difference);
|
newPm_t.setBalance(difference);
|
||||||
rgssToStore.put(newPm_t.getId(), newPm_t);
|
rgssToStore.put(newPm_t.getId(), newPm_t);
|
||||||
|
if (notificationMessage[0] == null) {
|
||||||
|
notificationMessage[0] = new StringBuilder("Сформированы PM*T регистры:");
|
||||||
|
}
|
||||||
|
notificationMessage[0].append("\nдля компании %s – регистр %d;".formatted(newPm_t.getShortName(), newPm_t.getId()));
|
||||||
});
|
});
|
||||||
|
if (notificationMessage[0] != null) {
|
||||||
|
ctx.getExtendedState().getVariables().put(DataEnum.notificationMessage, notificationMessage[0].toString());
|
||||||
|
}
|
||||||
ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, errs);
|
ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, errs);
|
||||||
ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore);
|
ctx.getExtendedState().getVariables().put(DataEnum.inspectionObligationStashedRgs, rgssToStore);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
package ru.spcex.clearing.session.state.action;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import org.springframework.statemachine.StateContext;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.spcex.clearing.notification.NotificationSender;
|
||||||
|
import ru.spcex.clearing.session.stage.TaskType;
|
||||||
|
import ru.spcex.clearing.session.state.DataEnum;
|
||||||
|
import ru.spcex.clearing.session.state.SsnEvent;
|
||||||
|
import ru.spcex.platform.enumeration.ObjectType;
|
||||||
|
import ru.spcex.platform.enumeration.Priority;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
|
public class SendNotificationAction extends AbstractSessionActionForOkErrorHandling {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
private final NotificationSender notificationSender;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public SendNotificationAction(NotificationSender notificationSender) {
|
||||||
|
this.notificationSender = notificationSender;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
|
||||||
|
String msg = ctx.getExtendedState().get(DataEnum.notificationMessage, String.class);
|
||||||
|
if (msg != null) {
|
||||||
|
log.info("sending notification, msg length {}...", msg.length());
|
||||||
|
notificationSender.sendNotification(ObjectType.rgst, msg, Priority.HIGH);
|
||||||
|
ctx.getExtendedState().getVariables().remove(DataEnum.notificationMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue