diff --git a/clearing-parent/default-management/pom.xml b/clearing-parent/default-management/pom.xml
index bade73631..92cacd091 100644
--- a/clearing-parent/default-management/pom.xml
+++ b/clearing-parent/default-management/pom.xml
@@ -6,7 +6,7 @@
ru.spcex.clearing
clearing-parent
- SPCEX-3.22.285
+ SPCEX-3.22.295
default-management
diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java
new file mode 100644
index 000000000..3993b7878
--- /dev/null
+++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java
@@ -0,0 +1,71 @@
+package ru.spcex.clearing.dflt.management.listener;
+
+import java.util.Collection;
+import java.util.Optional;
+import org.apache.kafka.clients.consumer.Consumer;
+import org.apache.kafka.clients.producer.Producer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import ru.clearing.classes.statics.data.misc.OvernightSettings;
+import ru.clearing.classes.statics.data.registry.Registry;
+import ru.spcex.clearing.dflt.management.service.OrderCurrencyService;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
+import ru.spcex.clearing.platform.messaging.domain.cud.misc.OvernightSettingsNewRequest;
+import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
+import ru.spcex.clearing.util.security.UserRoleVerification;
+import ru.spcex.platform.enumeration.OvernightType;
+import ru.spcex.platform.enumeration.Task;
+import ru.spcex.platform.imdg.api.Imdg;
+import ru.spcex.platform.imdg.api.ImdgProvider;
+import ru.spcex.platform.utils.enumeration.IEnumKey;
+
+@Service
+public class TaskListener extends QueueConsumer implements InitializingBean {
+ protected final Logger log = LoggerFactory.getLogger(getClass());
+ private final OrderCurrencyService orderCurrencyService;
+ private final ImdgProvider imdgProvider;
+ private final Imdg registryImdg;
+ private final Imdg overnightSettingsImdg;
+
+ @Autowired
+ public TaskListener(Consumer kafkaQueue,
+ Producer kafkaProducer,
+ ImdgProvider imdgProvider,
+ UserRoleVerification userRoleVerification,
+ OrderCurrencyService orderCurrencyService) {
+ super(kafkaQueue, kafkaProducer);
+ this.imdgProvider = imdgProvider;
+ this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
+ this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
+ this.orderCurrencyService = orderCurrencyService;
+ }
+
+ @Override
+ public void afterPropertiesSet() {
+ callback(OvernightSettingsNewRequest.class)
+ .setConsumer(this::createOrder)
+ .forDestination(Task.CROR.topic(), callbacks::put);
+ init();
+ }
+
+ private void createOrder(BaseRequest newReq) {
+ Collection registries = orderCurrencyService.getCurrencyRegistry();
+ for (Long registryId : registries) {
+ Registry registry = registryImdg.getSingleObjectByID(registryId);
+ Optional overnightSettings = orderCurrencyService.findOvernightSettingsByCompany(registry.getCompanyId());
+ Optional overnightType = overnightSettings
+ .map(settings -> IEnumKey.getEnumByKey(OvernightType.class, settings.getOvernightType()));
+
+ if (overnightType.isPresent() && overnightType.get() == OvernightType.SPOT) {
+
+ } else if (overnightType.isEmpty() || overnightType.get() == OvernightType.SWAP) {
+
+ }
+ }
+ }
+
+}
diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCurrencyService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCurrencyService.java
new file mode 100644
index 000000000..3e961321a
--- /dev/null
+++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCurrencyService.java
@@ -0,0 +1,53 @@
+package ru.spcex.clearing.dflt.management.service;
+
+import java.util.Collection;
+import java.util.Optional;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import ru.clearing.classes.statics.data.misc.OvernightSettings;
+import ru.clearing.classes.statics.data.registry.Registry;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.util.security.UserRoleVerification;
+import ru.spcex.platform.enumeration.Market;
+import ru.spcex.platform.enumeration.RegistryStatus;
+import ru.spcex.platform.imdg.api.Imdg;
+import ru.spcex.platform.imdg.api.ImdgProvider;
+import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
+import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
+
+@Service
+public class OrderCurrencyService {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private ImdgProvider imdgProvider;
+ private Imdg registryImdg;
+ private final Imdg overnightSettingsImdg;
+
+ public OrderCurrencyService(ImdgProvider imdgProvider,
+ UserRoleVerification userRoleVerification) {
+ this.imdgProvider = imdgProvider;
+ this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
+ this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
+ }
+
+
+ public Collection getCurrencyRegistry() {
+ ImdgPredicateBuilder builder = registryImdg.predicateBuilder();
+ ImdgPredicate registryPredicate = builder.and(
+ builder.regex("registryCode", "^PM.*T"),
+ builder.not(builder.equals("registryStatus", RegistryStatus.OK.getKey()))
+ );
+
+ return registryImdg.getCollectionIdsByPredicate(registryPredicate);
+ }
+
+ public Optional findOvernightSettingsByCompany(Long companyId) {
+ ImdgPredicateBuilder builder = overnightSettingsImdg.predicateBuilder();
+ ImdgPredicate predicate = builder.and(
+ builder.equals("market", Market.curr),
+ builder.equals("companyId", companyId)
+ );
+ OvernightSettings overnightSettings = overnightSettingsImdg.getFirstObjectByPredicate(predicate);
+ return Optional.ofNullable(overnightSettings);
+ }
+}
diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/OvernightType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/OvernightType.java
new file mode 100644
index 000000000..fa0be7b70
--- /dev/null
+++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/OvernightType.java
@@ -0,0 +1,20 @@
+package ru.spcex.platform.enumeration;
+
+import ru.spcex.platform.utils.enumeration.IEnumKey;
+
+public enum OvernightType implements IEnumKey {
+ SWAP("SWAP"),
+ SPOT("SPOT")
+ ;
+
+ private final String key;
+
+ OvernightType(String key) {
+ this.key = key;
+ }
+
+ @Override
+ public String getKey() {
+ return key;
+ }
+}