diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java new file mode 100644 index 000000000..523033eab --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java @@ -0,0 +1,32 @@ +package ru.spcex.clearing.notification; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.ObjectType; +import ru.spcex.platform.enumeration.Priority; + +@Component +public class NotificationSender { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final KafkaSender kafkaSender; + + @Autowired + public NotificationSender(KafkaSender kafkaSender) { + this.kafkaSender = kafkaSender; + } + + public void sendNotification(ObjectType objType, String comment, Priority priority) { + NotificationNewRequest reviseNotification = new NotificationNewRequest(); + reviseNotification.setObjectType(ObjectType.rgst.getKey()); + reviseNotification.setComment(comment); + reviseNotification.setPriority(priority.getKey()); + kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, reviseNotification); + log.info("notification {} sent {}", objType, comment); + } + +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java index 7a4ea185b..3ab08e000 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java @@ -6,14 +6,15 @@ import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.notification.NotificationSender; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; -import ru.spcex.platform.enumeration.Section; -import ru.spcex.platform.enumeration.SessionStatus; -import ru.spcex.platform.enumeration.SessionType; +import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumKey; +import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.error.ValidationException; import java.util.Map; @@ -22,6 +23,8 @@ import java.util.Map; public class SessionManager { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg sessionImdg; + private final NotificationSender notification; + private final IMessageResolver msgs; private final PrimaryAuctionT0Session primaryAuctionT0Session; private final PrimaryAuctionBnSession primaryAuctionBnSession; @@ -32,11 +35,13 @@ public class SessionManager { private final ReturnDepositSession returnDepositSession; public SessionManager(ImdgProvider imdgProvider, - PrimaryAuctionT0Session primaryAuctionT0Session, + NotificationSender notification, IMessageResolver msgs, PrimaryAuctionT0Session primaryAuctionT0Session, PrimaryAuctionBnSession primaryAuctionBnSession, PrimaryAuctionB0Session primaryAuctionB0Session, SecondaryAuctionT0Session secondaryAuctionT0Session, IntermediateMkrSession intermediateMkrSession, FinalMkrSession finalMkrSession, ReturnDepositSession returnDepositSession) { + this.notification = notification; + this.msgs = msgs; this.primaryAuctionT0Session = primaryAuctionT0Session; this.primaryAuctionBnSession = primaryAuctionBnSession; this.primaryAuctionB0Session = primaryAuctionB0Session; @@ -83,7 +88,9 @@ public class SessionManager { )); if (existActiveSession != null) { log.warn("Can not start new session, cause exist active session.id={}", existActiveSession.getId()); - throw new ValidationException(ClearingError.ActiveSessionIsPresent, String.valueOf(existActiveSession.getId())); + EnumMessage err = new EnumMessage(ClearingError.ActiveSessionIsPresent, String.valueOf(existActiveSession.getId())); + notification.sendNotification(ObjectType.session, msgs.resolve(err), Priority.HIGH); + throw new ValidationException(err); } } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java index 965f40f6b..56a090cc6 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ObjectType implements IEnumKey { - statement("STMT"), vfrs("VFRS"), rgst("RGST"), gateway("GTWY"); + statement("STMT"), vfrs("VFRS"), rgst("RGST"), gateway("GTWY"), session("SESN"); private final String key;