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.SaveRegistriesAfterInspectionAndContinueAction;
|
||||
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.guard.ErroneousRegistriesPresentGuard;
|
||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||
|
|
@ -60,6 +61,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
|||
private final InspectionObligationsPrecAction inspectionObligationsV2Action;
|
||||
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
|
||||
private final SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction;
|
||||
private final SendNotificationAction sendNotificationAction;
|
||||
private final DiscardRegistriesAction discardOblAdmStash =
|
||||
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
|
||||
private final DiscardRegistriesAction discardInspOblStash = new DiscardRegistriesAction(
|
||||
|
|
@ -91,13 +93,14 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
|||
@Qualifier("marketCodesForCurr")
|
||||
Supplier<List<String>> marketCodes,
|
||||
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
|
||||
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction,
|
||||
SaveRegistriesAfterInspectionAndContinueAction saveRegistriesAfterInspectionAndContinueAction, SendNotificationAction sendNotificationAction,
|
||||
@Qualifier("pauseWorkflowStatusAction")
|
||||
UpdateWorkflowStatusAction pauseWsAction,
|
||||
@Qualifier("activeWorkflowStatusAction")
|
||||
UpdateWorkflowStatusAction activeWsAction) {
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.saveRegistriesAfterInspectionAndContinueAction = saveRegistriesAfterInspectionAndContinueAction;
|
||||
this.sendNotificationAction = sendNotificationAction;
|
||||
this.pauseWsAction = pauseWsAction;
|
||||
this.activeWsAction = activeWsAction;
|
||||
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)
|
||||
.guard(invert(inspErrGuard))
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(sendNotificationAction)
|
||||
.action(finishAction);
|
||||
}
|
||||
|
||||
|
|
@ -219,6 +223,7 @@ public class PrecSessionStateMachineConfig extends EnumStateMachineConfigurerAda
|
|||
.source(TaskType.PSEUDO_waitAfterInspectionError).target(TaskType.FinishingSession)
|
||||
.action(activeWsAction)
|
||||
.action(saveRegistriesAfterInspectionAndContinueAction)
|
||||
.action(sendNotificationAction)
|
||||
.action(finishAction)
|
||||
.event(SsnEvent.CONTINUE);
|
||||
for (var taskType : List.of(TaskType.PSEUDO_waitAfterInspectionError, TaskType.PSEUDO_waitAfterInspectionRestore)) {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ public enum DataEnum {
|
|||
counterPartyId, //Long
|
||||
obligationAdmissionStashedRgs, //Map<Long, Registry>
|
||||
inspectionObligationStashedRgs, //Map<Long, Registry>
|
||||
notificationMessage,
|
||||
erroneousRegistries, //List<RgsErr>
|
||||
paymentInstructionReturnMkr, //List<PaymentInstruction>
|
||||
paymentInstructionSecurity, //List<PaymentInstruction>
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action {
|
|||
}
|
||||
setGroupStatus.accept(group);
|
||||
}
|
||||
final StringBuilder[] notificationMessage = {null};
|
||||
assetsByTcrAndSec.forEach((key, trio) -> {
|
||||
Registry dm_t = trio.dm_t;
|
||||
Registry am_t = trio.am_t;
|
||||
|
|
@ -209,7 +210,14 @@ public class InspectionObligationsPrecAction extends ReviseStage1Action {
|
|||
newPm_t.setSessionType(sessionType.getKey());
|
||||
newPm_t.setBalance(difference);
|
||||
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.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