diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index e080ec3f7..24784bad9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -1,8 +1,11 @@ package ru.spcex.clearing.service; import org.apache.kafka.clients.consumer.Consumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Service; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request; @@ -12,26 +15,32 @@ import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImported import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.session.stage.PrimaryAuctionB0Session; import ru.spcex.clearing.session.stage.PrimaryAuctionBnSession; +import ru.spcex.clearing.session.stage.SecondaryAuctionT0Session; import ru.spcex.platform.enumeration.Task; +import ru.spcex.platform.utils.enumeration.IEnumKey; import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED; @Service public class EventsReceiver extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); private final ClearingService clearingService; private final RegistryService registryService; private final PrimaryAuctionBnSession primaryAuctionBnSession; + private final SecondaryAuctionT0Session secondaryAuctionT0Session; private final PrimaryAuctionB0Session primaryAuctionB0Session; public EventsReceiver(Consumer kafkaQueue, ClearingService clearingService, RegistryService registryService, PrimaryAuctionBnSession primaryAuctionBnSession, + SecondaryAuctionT0Session secondaryAuctionT0Session, PrimaryAuctionB0Session primaryAuctionB0Session) { super(kafkaQueue); this.clearingService = clearingService; this.registryService = registryService; this.primaryAuctionBnSession = primaryAuctionBnSession; + this.secondaryAuctionT0Session = secondaryAuctionT0Session; this.primaryAuctionB0Session = primaryAuctionB0Session; } @@ -61,8 +70,8 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean { // .forDestination(Task.startOfB0.topic(), callbacks::put); - callback(Object.class) - .setConsumer(primaryAuctionBnSession::runSession) + callback(LauncherCommandRequest.class) + .setConsumer(this::startSession) .forDestination(Task.startOfClearing.topic(), callbacks::put); callback(Object.class) .setConsumer(primaryAuctionBnSession::continueSession) @@ -76,4 +85,17 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean { .forDestination(Consts.REGISTRY_NEW, callbacks::put); init(); } + + private void startSession(BaseRequest request) { + LauncherCommandRequest payload = request.getRequestPayload(); + Task specificSession = IEnumKey.getEnumByKey(Task.class, payload.getTaskName()); + if (specificSession == null) { + log.error("unknown session: {}", payload.getTaskName()); + return; + } + switch (specificSession) { + case startOfClearing -> primaryAuctionBnSession.runSession(request); + case startOfT0 -> secondaryAuctionT0Session.runSession(request); + } + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index 9749bc9b6..9575bfd9a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -96,7 +96,7 @@ public class Sdf57Executor extends AbstractExecutor { @Override public boolean isNeedToSendCommand() { - return true; + return false; } @Override diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java index bde7c6d30..495661e89 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -11,6 +11,7 @@ public enum Task implements IEnumKey { @Deprecated /* todo GBLD удаляется по CLS-267, CLS-275 */ getBalance("GBLD"),// Поступление средств startOfClearing("SCLR"),// Запуск клиринговой сессии startOfB0("IPO0"),// Запуск клиринговой сессии + startOfT0("TRDT"),// Запуск клиринговой сессии startOfPreClearing("SPRC"),// Запуск преклиринга startPostClearing("SPOC"),// Запуск постклиринга createOrder("CORD"),