From d452edad3c3a4d2671a5435c5bfb5ccaf5be28ee Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 24 Jan 2023 10:49:53 +0300 Subject: [PATCH 01/20] Adding test for Sdf08Service. --- .../balance/service/AbstractServiceTest.java | 6 ++- .../balance/service/Sdf08ServiceTest.java | 50 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index 3e027c8c6..c31c8adae 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -11,6 +11,7 @@ import ru.clearing.classes.statics.data.account.AccountBalance; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.sdf.SDf02; +import ru.clearing.classes.statics.data.sdf.SDf08; import ru.clearing.classes.statics.data.sdf.SDf10; import ru.clearing.classes.statics.data.sdf.SDf17; import ru.clearing.classes.statics.data.statement.Statement; @@ -21,7 +22,6 @@ import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; -import javax.annotation.PostConstruct; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.format.DateTimeFormatter; @@ -33,6 +33,7 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields @ContextConfiguration(classes = { AccountBalanceService.class, Sdf01Executor.class, + Sdf08Service.class, Sdf09Executor.class, Sdf16Executor.class, LoggingService.class, @@ -60,6 +61,7 @@ public abstract class AbstractServiceTest { protected IMap accountMap; protected ImdgHazelcast statementImdg; protected ImdgHazelcast sdf02Imdg; + protected ImdgHazelcast sdf08Imdg; protected ImdgHazelcast sdf10Imdg; protected ImdgHazelcast sdf17Imdg; protected ImdgHazelcast accountBalanceImdg; @@ -67,7 +69,6 @@ public abstract class AbstractServiceTest { @Qualifier("hazelcastServiceTest") private ImdgProvider hazelcast; - @PostConstruct void init() { hazelcast.waitAvailable(); ImdgHazelcast companyImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); @@ -75,6 +76,7 @@ public abstract class AbstractServiceTest { ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); statementImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); sdf02Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class); + sdf08Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf08, SDf08.class); sdf10Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf10, SDf10.class); sdf17Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf17, SDf17.class); accountBalanceImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java new file mode 100644 index 000000000..eb34fbbd0 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -0,0 +1,50 @@ +package ru.spcex.clearing.balance.service; + +import com.hazelcast.core.IMap; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.sdf.SDf08; +import ru.clearing.classes.statics.data.statement.Statement; +import ru.spcex.clearing.balance.utils.MatcherFactory; +import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; + +import javax.annotation.PostConstruct; +import java.time.Instant; +import java.util.Collection; + +import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; + +class Sdf08ServiceTest extends AbstractServiceTest { + private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); + + @Autowired + Sdf08Service sdf08Service; + + @PostConstruct + void init() { + super.init(); + } + + /** + * {@link Sdf08Service}
+ * Тест проверяет генерацию сущностей {@link Result}, {@link Statement}, {@link SDf08}
+ * Входные параметры:
+ * accountId - {@link StatementRequest}: new StatementRequest()
+ * addresseeId - {@link Collection}
+ * addresseeId - {@link SDf08}
+ * {@link SDf08#datetime} - текущее время
+ * {@link SDf08#generationId} - id
+ * {@link SDf08#generationTime} - текущее время
+ */ + @Test + void newSDf08() { + IMap sdf08Map = sdf08Imdg.getMap(); + SDf08 sDf08 = new SDf08(); + sDf08.setNumber(idGenerator.nextId().toString()); + Instant now = Instant.now(); + sDf08.setDatetime(String.valueOf(now.toEpochMilli())); + sDf08.setGenerationTime(now); + sDf08.setGenerationId(idGenerator.nextId()); + sdf08Imdg.insert(sDf08); + } +} \ No newline at end of file From 0de9b4cc5caeaae75d069ef79a070e942e81f804 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 24 Jan 2023 11:38:36 +0300 Subject: [PATCH 02/20] simple cheng. --- .../balance/service/Sdf08ServiceTest.java | 32 +++++++++- .../clearing/balance/utils/ImapEvent.java | 63 +++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java index eb34fbbd0..0da633a66 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -1,22 +1,33 @@ package ru.spcex.clearing.balance.service; import com.hazelcast.core.IMap; +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.common.TopicPartition; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.account.BankAccount; import ru.clearing.classes.statics.data.sdf.SDf08; import ru.clearing.classes.statics.data.statement.Statement; +import ru.spcex.clearing.balance.utils.ImapEvent; import ru.spcex.clearing.balance.utils.MatcherFactory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import javax.annotation.PostConstruct; import java.time.Instant; import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; class Sdf08ServiceTest extends AbstractServiceTest { private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); + @Autowired + private Consumer mockConsumer; + @Autowired Sdf08Service sdf08Service; @@ -37,7 +48,7 @@ class Sdf08ServiceTest extends AbstractServiceTest { * {@link SDf08#generationTime} - текущее время
*/ @Test - void newSDf08() { + void newSDf08() throws InterruptedException { IMap sdf08Map = sdf08Imdg.getMap(); SDf08 sDf08 = new SDf08(); sDf08.setNumber(idGenerator.nextId().toString()); @@ -46,5 +57,24 @@ class Sdf08ServiceTest extends AbstractServiceTest { sDf08.setGenerationTime(now); sDf08.setGenerationId(idGenerator.nextId()); sdf08Imdg.insert(sDf08); + + //KAFKA + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_ACCOUNT_NEW, PARTITION, 0, "key", jsonBaseNewRequest)); + }); + + + HashMap startOffsets = new HashMap<>(); + TopicPartition tp = new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION); + startOffsets.put(tp, 0L); + mockConsumer.updateBeginningOffsets(startOffsets); + + IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_BankAccount); + + //waiting for hazelcast map item updates + ImapEvent imapEvent = new ImapEvent(iMap); + imapEvent.waitWhenHappened(); + } } \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java new file mode 100644 index 000000000..a9e80da03 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java @@ -0,0 +1,63 @@ +package ru.spcex.clearing.balance.utils; + +import com.hazelcast.core.IMap; +import com.hazelcast.map.listener.EntryAddedListener; +import com.hazelcast.map.listener.EntryRemovedListener; +import com.hazelcast.map.listener.EntryUpdatedListener; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.atomic.AtomicBoolean; + +public class ImapEvent { + private final IMap iMap; + private final String listenerAdding; + private final String listenerUpdating; + private final String listenerRemoving; + private final AtomicBoolean checkEventHappened = new AtomicBoolean(false); + + public ImapEvent(IMap iMap) { + this.iMap = iMap; + listenerAdding = iMap.addEntryListener((EntryAddedListener) entryEvent -> { + synchronized (checkEventHappened) { + checkEventHappened.set(true); + checkEventHappened.notify(); + } + }, false); + listenerUpdating = iMap.addEntryListener((EntryUpdatedListener) entryEvent -> { + synchronized (checkEventHappened) { + checkEventHappened.set(true); + checkEventHappened.notify(); + } + }, false); + listenerRemoving = iMap.addEntryListener((EntryRemovedListener) entryEvent -> { + synchronized (checkEventHappened) { + checkEventHappened.set(true); + checkEventHappened.notify(); + } + }, false); + } + + public void waitWhenHappened() throws InterruptedException { + //running timer task as daemon thread + Timer timer = new Timer(true); + timer.scheduleAtFixedRate(new TimerTask() { + boolean secondRan; + + @Override + public void run() { + checkEventHappened.set(secondRan);//если что-то пойдет не так не тормозить основной поток + secondRan = true; + } + }, 0, 60 * 1000); + synchronized (checkEventHappened) { + while (!checkEventHappened.get()) { + checkEventHappened.wait(100); + } + } + //preparing hazelcastImdgProvider for next test + iMap.removeEntryListener(listenerAdding); + iMap.removeEntryListener(listenerUpdating); + iMap.removeEntryListener(listenerRemoving); + } +} From b58ed3023de502e45752435890bf713aec78f27d Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 24 Jan 2023 12:03:10 +0300 Subject: [PATCH 03/20] simple cheng. --- .../balance/config/KafkaTestConfig.java | 3 +-- .../balance/service/Sdf08ServiceTest.java | 25 ++++++++----------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java index 29feac545..32708e256 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java @@ -1,6 +1,5 @@ package ru.spcex.clearing.balance.config; -import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.MockConsumer; import org.apache.kafka.clients.consumer.OffsetResetStrategy; import org.apache.kafka.clients.producer.MockProducer; @@ -17,7 +16,7 @@ public class KafkaTestConfig { @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Bean - public Consumer createTestConsumer() { + public MockConsumer createTestConsumer() { return new MockConsumer<>(OffsetResetStrategy.EARLIEST); } diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java index 0da633a66..de5476e5c 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -1,18 +1,16 @@ package ru.spcex.clearing.balance.service; import com.hazelcast.core.IMap; -import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; import org.apache.kafka.common.TopicPartition; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import ru.clearing.classes.statics.data.account.BankAccount; import ru.clearing.classes.statics.data.sdf.SDf08; import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.balance.utils.ImapEvent; -import ru.spcex.clearing.balance.utils.MatcherFactory; -import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.platform.enumeration.Task; import javax.annotation.PostConstruct; import java.time.Instant; @@ -20,13 +18,13 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; - class Sdf08ServiceTest extends AbstractServiceTest { - private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); +// private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); + private static final String TOPIC = Task.getAllBalance.topic(); + private static final int PARTITION = 1; @Autowired - private Consumer mockConsumer; + private MockConsumer mockConsumer; @Autowired Sdf08Service sdf08Service; @@ -60,20 +58,17 @@ class Sdf08ServiceTest extends AbstractServiceTest { //KAFKA mockConsumer.schedulePollTask(() -> { - mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION))); - mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_ACCOUNT_NEW, PARTITION, 0, "key", jsonBaseNewRequest)); + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonBaseNewRequest)); }); - HashMap startOffsets = new HashMap<>(); - TopicPartition tp = new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION); + TopicPartition tp = new TopicPartition(TOPIC, PARTITION); startOffsets.put(tp, 0L); mockConsumer.updateBeginningOffsets(startOffsets); - IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_BankAccount); - //waiting for hazelcast map item updates - ImapEvent imapEvent = new ImapEvent(iMap); + ImapEvent imapEvent = new ImapEvent(sdf08Map); imapEvent.waitWhenHappened(); } From 7e11a9fdc5d978d369d4ad1688faf38fd57d38cc Mon Sep 17 00:00:00 2001 From: aalehin Date: Tue, 24 Jan 2023 13:39:28 +0300 Subject: [PATCH 04/20] http://jira.mfd.msk:8088/browse/CLS-88 --- fix up of settings and launching --- clearing-parent/registry-service/pom.xml | 15 ++++++++++----- .../config/settings/RegistryServiceSettings.java | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/clearing-parent/registry-service/pom.xml b/clearing-parent/registry-service/pom.xml index 9f685381f..28501d997 100644 --- a/clearing-parent/registry-service/pom.xml +++ b/clearing-parent/registry-service/pom.xml @@ -15,16 +15,12 @@ 17 17 - + ru.spcex.platform platform-messaging - - ru.spcex.platform - platform-enum - ru.spcex.platform platform-imdg-api-hazelcast-impl @@ -37,6 +33,15 @@ org.springframework.boot spring-boot-starter + + com.fasterxml.jackson.core + jackson-databind + + + org.springframework.boot + spring-boot-starter-test + test + diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java index a69f2cea0..797c0c13b 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java @@ -9,7 +9,7 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @Component @PropertySource("file:${spring.config.location}/application.properties") -@ConfigurationProperties("utility-service") +@ConfigurationProperties("registry-service") public class RegistryServiceSettings { private HazelcastClientParams hazelcast; private KafkaConsumerSettings kafkaConsumer; From a53232a773442f55ddf0c17627e319bcc7044226 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 24 Jan 2023 17:59:03 +0300 Subject: [PATCH 05/20] Adding StatementServiceServiceTest. --- .../balance/config/KafkaTestConfig.java | 3 - .../balance/service/AbstractServiceTest.java | 7 +- .../balance/service/Sdf01ExecutorTest.java | 2 - .../balance/service/Sdf08ServiceTest.java | 60 +++++++----- .../balance/service/Sdf09ExecutorTest.java | 3 - .../balance/service/Sdf16ExecutorTest.java | 3 - .../service/StatementServiceServiceTest.java | 92 +++++++++++++++++++ .../clearing/balance/utils/ImapEvent.java | 2 +- 8 files changed, 136 insertions(+), 36 deletions(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/StatementServiceServiceTest.java diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java index 32708e256..b56fef2b1 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java @@ -5,16 +5,13 @@ import org.apache.kafka.clients.consumer.OffsetResetStrategy; import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.common.serialization.StringSerializer; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; import ru.spcex.clearing.platform.messaging.serialization.JsonSerializer; @Configuration public class KafkaTestConfig { - @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Bean public MockConsumer createTestConsumer() { return new MockConsumer<>(OffsetResetStrategy.EARLIEST); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index c31c8adae..2c2414a86 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -18,6 +18,7 @@ import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.balance.config.*; import ru.spcex.clearing.balance.utils.MatcherFactory; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.service.RequestInfo; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; @@ -36,9 +37,11 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields Sdf08Service.class, Sdf09Executor.class, Sdf16Executor.class, + StatementService.class, LoggingService.class, MessagesConfig.class, ValidationConfig.class, + SdfExecutorsConfig.class, BalanceImdgTestConfig.class, KafkaSenderConfig.class, KafkaTestConfig.class}) @@ -47,7 +50,7 @@ public abstract class AbstractServiceTest { protected static final MatcherFactory.Matcher RESULT_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate", "generationId"); protected static final MatcherFactory.Matcher STATEMENT_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "updated", "id"); - protected final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); + protected final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy hh:mm"); protected final Long accountIdNew = 10L; protected final Long addresseeIdNew = 2L; protected final String deal = "111111111"; @@ -60,6 +63,7 @@ public abstract class AbstractServiceTest { protected IMap companySymbolsMap; protected IMap accountMap; protected ImdgHazelcast statementImdg; + protected ImdgHazelcast requestInfoImdg; protected ImdgHazelcast sdf02Imdg; protected ImdgHazelcast sdf08Imdg; protected ImdgHazelcast sdf10Imdg; @@ -74,6 +78,7 @@ public abstract class AbstractServiceTest { ImdgHazelcast companyImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); ImdgHazelcast companySymbolsImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); + requestInfoImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); statementImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); sdf02Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class); sdf08Imdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_SDf08, SDf08.class); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java index c1692a862..231a81318 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java @@ -19,7 +19,6 @@ import ru.spcex.platform.utils.number.BigDecimalUtil; import javax.annotation.PostConstruct; import java.time.Instant; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -28,7 +27,6 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields class Sdf01ExecutorTest extends AbstractServiceTest { private static final MatcherFactory.Matcher SDF_02_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); - private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private final String acc = "123456789"; private final Long ID = 1L; @Autowired diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java index de5476e5c..afb4fd05d 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -1,5 +1,7 @@ package ru.spcex.clearing.balance.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.hazelcast.core.IMap; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.MockConsumer; @@ -7,9 +9,11 @@ import org.apache.kafka.common.TopicPartition; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import ru.clearing.classes.statics.data.sdf.SDf08; -import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.balance.utils.ImapEvent; -import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.service.RequestInfo; +import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.platform.enumeration.Task; import javax.annotation.PostConstruct; @@ -17,17 +21,20 @@ import java.time.Instant; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class Sdf08ServiceTest extends AbstractServiceTest { -// private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); + // private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); private static final String TOPIC = Task.getAllBalance.topic(); private static final int PARTITION = 1; - - @Autowired - private MockConsumer mockConsumer; - + private static final Long limit = 300L; @Autowired Sdf08Service sdf08Service; + @Autowired + private MockConsumer mockConsumer; @PostConstruct void init() { @@ -36,26 +43,28 @@ class Sdf08ServiceTest extends AbstractServiceTest { /** * {@link Sdf08Service}
- * Тест проверяет генерацию сущностей {@link Result}, {@link Statement}, {@link SDf08}
+ * Тест проверяет генерацию сущностей {@link RequestInfo}
* Входные параметры:
- * accountId - {@link StatementRequest}: new StatementRequest()
- * addresseeId - {@link Collection}
- * addresseeId - {@link SDf08}
- * {@link SDf08#datetime} - текущее время
- * {@link SDf08#generationId} - id
- * {@link SDf08#generationTime} - текущее время
+ * {@link BaseRequest} - new BaseRequest<>()
*/ @Test void newSDf08() throws InterruptedException { - IMap sdf08Map = sdf08Imdg.getMap(); - SDf08 sDf08 = new SDf08(); - sDf08.setNumber(idGenerator.nextId().toString()); - Instant now = Instant.now(); - sDf08.setDatetime(String.valueOf(now.toEpochMilli())); - sDf08.setGenerationTime(now); - sDf08.setGenerationId(idGenerator.nextId()); - sdf08Imdg.insert(sDf08); + BaseRequest baseNewRequest = new BaseRequest<>(); + baseNewRequest.setId(currentId.getAndIncrement()); + baseNewRequest.setActionType(ActionType.NEW); + String jsonBaseNewRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseNewRequest = objectMapper.writeValueAsString(baseNewRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + IMap sdf08Map = sdf08Imdg.getMap(); + IMap resultsRequestMap = requestInfoImdg.getMap(); + ImapEvent imapEvent = new ImapEvent(resultsRequestMap); + int count = sdf08Map.size(); + long timeNow = Instant.now().toEpochMilli(); //KAFKA mockConsumer.schedulePollTask(() -> { mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC, PARTITION))); @@ -68,8 +77,13 @@ class Sdf08ServiceTest extends AbstractServiceTest { mockConsumer.updateBeginningOffsets(startOffsets); //waiting for hazelcast map item updates - ImapEvent imapEvent = new ImapEvent(sdf08Map); imapEvent.waitWhenHappened(); + Collection resultsRequestInfo = requestInfoImdg.getCollectionObjectsByFieldValues(Map.of("status", Status.Processing)); + RequestInfo requestInfo = resultsRequestInfo.stream().max((entry1, entry2) -> entry1.getId() > entry2.getId() ? 1 : -1).get(); + Long diffRequestInfo = requestInfo.getCreated().toEpochMilli() - timeNow; + + assertEquals(1, sdf08Map.size() - count); + assertTrue(limit.compareTo(diffRequestInfo) > 0); } } \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java index f437702c6..db4a23ebd 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java @@ -20,7 +20,6 @@ import javax.annotation.PostConstruct; import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -29,8 +28,6 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields class Sdf09ExecutorTest extends AbstractServiceTest { private static final MatcherFactory.Matcher SDF_10_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); - - private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private final Long ID = 2L; private final String acc = "213456789"; @Autowired diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java index 7276950be..c475d007d 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java @@ -20,7 +20,6 @@ import javax.annotation.PostConstruct; import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -29,8 +28,6 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields class Sdf16ExecutorTest extends AbstractServiceTest { private static final MatcherFactory.Matcher SDF_17_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); - - private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private final Long ID = 3L; private final String acc = "323456789"; @Autowired diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/StatementServiceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/StatementServiceServiceTest.java new file mode 100644 index 000000000..a9924be94 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/StatementServiceServiceTest.java @@ -0,0 +1,92 @@ +package ru.spcex.clearing.balance.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hazelcast.core.IMap; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.common.TopicPartition; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import ru.spcex.clearing.balance.utils.ImapEvent; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.clearing.platform.messaging.service.RequestInfo; +import ru.spcex.clearing.platform.messaging.service.Status; + +import javax.annotation.PostConstruct; +import java.time.Instant; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static ru.spcex.platform.enumeration.SdfTable.SDF_01; + +class StatementServiceServiceTest extends AbstractServiceTest { + // private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); + private static final String TOPIC = Consts.STATEMENT_PROCESS; + private static final int PARTITION = 1; + private static final Long groupId = 111L; + private static final Long limit = 300L; + @Autowired + StatementService statementService; + @Autowired + private MockConsumer mockConsumer; + + @PostConstruct + void init() { + super.init(); + } + + /** + * {@link StatementService}
+ * Тест проверяет генерацию сущностей {@link RequestInfo}
+ * Входные параметры:
+ * {@link StatementRequest}: new StatementRequest()
+ * {@link StatementRequest#table} - SDF_01
+ */ + @Test + void process() throws InterruptedException { + StatementRequest statementRequest = new StatementRequest(); + statementRequest.setGroupId(groupId); + statementRequest.setTable(SDF_01); + BaseRequest baseRequest = new BaseRequest<>(); + baseRequest.setRequestPayload(statementRequest); + baseRequest.setId(currentId.getAndIncrement()); + baseRequest.setActionType(ActionType.NEW); + String jsonBaseNewRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseNewRequest = objectMapper.writeValueAsString(baseRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + IMap resultsRequestMap = requestInfoImdg.getMap(); + ImapEvent imapEvent = new ImapEvent(resultsRequestMap); + long timeNow = Instant.now().toEpochMilli(); + //KAFKA + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonBaseNewRequest)); + }); + + HashMap startOffsets = new HashMap<>(); + TopicPartition tp = new TopicPartition(TOPIC, PARTITION); + startOffsets.put(tp, 0L); + mockConsumer.updateBeginningOffsets(startOffsets); + + //waiting for hazelcast map item updates + imapEvent.waitWhenHappened(); + + Collection resultsRequestInfo = requestInfoImdg.getCollectionObjectsByFieldValues(Map.of("status", Status.Processing)); + RequestInfo requestInfo = resultsRequestInfo.stream().max((entry1, entry2) -> entry1.getId() > entry2.getId() ? 1 : -1).get(); + Long diffRequestInfo = requestInfo.getCreated().toEpochMilli() - timeNow; + + assertTrue(limit.compareTo(diffRequestInfo) > 0); + } +} \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java index a9e80da03..129e2178b 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java @@ -49,7 +49,7 @@ public class ImapEvent { checkEventHappened.set(secondRan);//если что-то пойдет не так не тормозить основной поток secondRan = true; } - }, 0, 60 * 1000); + }, 0, 20 * 1000); synchronized (checkEventHappened) { while (!checkEventHappened.get()) { checkEventHappened.wait(100); From 8c4bee0b8425ba82a25e349ef8b47d7754dc447a Mon Sep 17 00:00:00 2001 From: aalehin Date: Tue, 24 Jan 2023 18:32:20 +0300 Subject: [PATCH 06/20] http://jira.mfd.msk:8088/browse/CLS-87 --- AdmittedDealRegisterService update --- .../service/AdmittedDealRegisterService.java | 63 ++++++ .../platform/messaging/domain/Consts.java | 1 + .../AdmittedDealRegisterNewRequest.java | 190 ++++++++++++++++++ .../CoveredDealRegisterNewRequest.java | 1 - 4 files changed, 254 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedDealRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/AdmittedDealRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedDealRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedDealRegisterService.java new file mode 100644 index 000000000..61f5417e0 --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedDealRegisterService.java @@ -0,0 +1,63 @@ +package ru.spcex.clearing.registry.service; + + +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.register.AdmittedDealRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.AdmittedDealRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class AdmittedDealRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg admittedDealRegisterMap; + + @Autowired + public AdmittedDealRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.admittedDealRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_AdmittedDealRegister, AdmittedDealRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(AdmittedDealRegisterNewRequest.class) + .setConsumer(this::admittedDealRegisterNew) + .forDestination(Consts.REGISTRY_ADMITTED_DEAL_REGISTER_NEW, callbacks::put); + init(); + } + + public void admittedDealRegisterNew(BaseRequest userRequest) { + AdmittedDealRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("AdmittedDealRegisterNewRequest received"); + AdmittedDealRegister register = new AdmittedDealRegister(); + register.setExecutionId(req.getExecutionId()); + register.setCompanyFullName(req.getCompanyFullName()); + register.setTradingDate(req.getTradingDate()); + register.setExchangeExecutionId(req.getExchangeExecutionId()); + register.setExchangeExecutionTime(req.getExchangeExecutionTime()); + register.setSecuritySymbol(req.getSecuritySymbol()); + register.setSecurityFullName(req.getSecurityFullName()); + register.setSellerFullName(req.getSellerFullName()); + register.setSellerClearingCode(req.getSellerClearingCode()); + register.setSellerAccount(req.getSellerAccount()); + register.setBuyerFullName(req.getBuyerFullName()); + register.setBuyerClearingCode(req.getBuyerClearingCode()); + register.setBuyerAccount(req.getBuyerAccount()); + register.setAmount(req.getAmount()); + register.setClearingDate(req.getClearingDate()); + admittedDealRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index bf892523c..657259582 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -56,4 +56,5 @@ public interface Consts { String REQUEST_INFO_UPDATE = "request-info-update"; String REGISTRY_COVERED_DEAL_REGISTER_NEW = "registry-covered-deal-register-new"; + String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/AdmittedDealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/AdmittedDealRegisterNewRequest.java new file mode 100644 index 000000000..f1b83a027 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/AdmittedDealRegisterNewRequest.java @@ -0,0 +1,190 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +public class AdmittedDealRegisterNewRequest { + @JsonProperty + public Long executionId; + @JsonProperty + public String companyFullName; + @JsonProperty + public LocalDate tradingDate; + @JsonProperty + public Long exchangeExecutionId; + @JsonProperty + public Instant exchangeExecutionTime; + @JsonProperty + public String securitySymbol; + @JsonProperty + public String securityFullName; + @JsonProperty + public String sellerFullName; + @JsonProperty + public String sellerClearingCode; + @JsonProperty + public String sellerAccount; + @JsonProperty + public String buyerFullName; + @JsonProperty + public String buyerClearingCode; + @JsonProperty + public String buyerAccount; + @JsonProperty + public BigDecimal amount; + @JsonProperty + public Long id; + @JsonProperty + public Instant createdAt; + @JsonProperty + public Instant updatedAt; + @JsonProperty + public LocalDate clearingDate; + + public Long getExecutionId() { + return executionId; + } + + public void setExecutionId(Long executionId) { + this.executionId = executionId; + } + + public String getCompanyFullName() { + return companyFullName; + } + + public void setCompanyFullName(String companyFullName) { + this.companyFullName = companyFullName; + } + + public LocalDate getTradingDate() { + return tradingDate; + } + + public void setTradingDate(LocalDate tradingDate) { + this.tradingDate = tradingDate; + } + + public Long getExchangeExecutionId() { + return exchangeExecutionId; + } + + public void setExchangeExecutionId(Long exchangeExecutionId) { + this.exchangeExecutionId = exchangeExecutionId; + } + + public Instant getExchangeExecutionTime() { + return exchangeExecutionTime; + } + + public void setExchangeExecutionTime(Instant exchangeExecutionTime) { + this.exchangeExecutionTime = exchangeExecutionTime; + } + + public String getSecuritySymbol() { + return securitySymbol; + } + + public void setSecuritySymbol(String securitySymbol) { + this.securitySymbol = securitySymbol; + } + + public String getSecurityFullName() { + return securityFullName; + } + + public void setSecurityFullName(String securityFullName) { + this.securityFullName = securityFullName; + } + + public String getSellerFullName() { + return sellerFullName; + } + + public void setSellerFullName(String sellerFullName) { + this.sellerFullName = sellerFullName; + } + + public String getSellerClearingCode() { + return sellerClearingCode; + } + + public void setSellerClearingCode(String sellerClearingCode) { + this.sellerClearingCode = sellerClearingCode; + } + + public String getSellerAccount() { + return sellerAccount; + } + + public void setSellerAccount(String sellerAccount) { + this.sellerAccount = sellerAccount; + } + + public String getBuyerFullName() { + return buyerFullName; + } + + public void setBuyerFullName(String buyerFullName) { + this.buyerFullName = buyerFullName; + } + + public String getBuyerClearingCode() { + return buyerClearingCode; + } + + public void setBuyerClearingCode(String buyerClearingCode) { + this.buyerClearingCode = buyerClearingCode; + } + + public String getBuyerAccount() { + return buyerAccount; + } + + public void setBuyerAccount(String buyerAccount) { + this.buyerAccount = buyerAccount; + } + + public BigDecimal getAmount() { + return amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java index da788225d..a1d8ae2a4 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/CoveredDealRegisterNewRequest.java @@ -9,7 +9,6 @@ import java.time.LocalDate; public class CoveredDealRegisterNewRequest { - @JsonProperty public Long executionId; From 8d8206d5ae7165f7e50bdce978f585285d699e6f Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 24 Jan 2023 18:35:04 +0300 Subject: [PATCH 07/20] Fixing bug. --- .../balance/service/AbstractServiceTest.java | 3 -- .../service/AccountBalanceServiceTest.java | 6 +++ .../balance/service/Sdf01ExecutorTest.java | 37 ++++++++++--------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index 2c2414a86..1b1aad983 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -25,7 +25,6 @@ import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.format.DateTimeFormatter; import java.util.concurrent.atomic.AtomicLong; import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; @@ -49,8 +48,6 @@ public abstract class AbstractServiceTest { protected static final MatcherFactory.Matcher ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("created", "updated", "clearingDate", "id"); protected static final MatcherFactory.Matcher RESULT_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate", "generationId"); protected static final MatcherFactory.Matcher STATEMENT_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "updated", "id"); - - protected final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy hh:mm"); protected final Long accountIdNew = 10L; protected final Long addresseeIdNew = 2L; protected final String deal = "111111111"; diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java index 00e210361..2ae63f1bf 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java @@ -12,6 +12,7 @@ import ru.spcex.platform.enumeration.BalanceAccountType; import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.utils.enumeration.EnumMessage; +import javax.annotation.PostConstruct; import java.math.BigDecimal; import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; @@ -29,6 +30,11 @@ class AccountBalanceServiceTest extends AbstractServiceTest { @Autowired AccountBalanceService accountBalanceService; + @PostConstruct + void init() { + super.init(); + } + /** * {@link AccountBalanceService#createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, String cashMovementCurrencyCode)}
* Тест проверяет генерацию сущности {@link AccountResult}
diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java index 231a81318..4aa813da4 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java @@ -19,6 +19,7 @@ import ru.spcex.platform.utils.number.BigDecimalUtil; import javax.annotation.PostConstruct; import java.time.Instant; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -26,18 +27,17 @@ import java.util.Map; import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; class Sdf01ExecutorTest extends AbstractServiceTest { + final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private static final MatcherFactory.Matcher SDF_02_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); private final String acc = "123456789"; private final Long ID = 1L; @Autowired Sdf01Executor sdf01Executor; - private SDf01 sdf01; private StatementRequest statementRequest; @PostConstruct void init() { super.init(); - sdf01 = getTestSdf01(); statementRequest = new StatementRequest(); } @@ -59,6 +59,7 @@ class Sdf01ExecutorTest extends AbstractServiceTest { @Test void execute() { //check create statement, SDf02 and AccountBalance + SDf01 sdf01 = getTestSdf01(); Company company = getTestCompany(); companyMap.put(addresseeIdNew, company); @@ -102,11 +103,12 @@ class Sdf01ExecutorTest extends AbstractServiceTest { @Test void validatedExecute() { //CompanyNotFound + SDf01 sdf01 = getTestSdf01(); companyMap.delete(addresseeIdNew); - checkError(new EnumMessage(BalanceError.CompanyNotFound)); + checkError(new EnumMessage(BalanceError.CompanyNotFound), sdf01); sdf01.setDeal(null); - checkError(new EnumMessage(BalanceError.CompanyNotFound)); + checkError(new EnumMessage(BalanceError.CompanyNotFound), sdf01); //AccountNotPresent accountType=null sdf01.setDeal(deal); @@ -116,56 +118,56 @@ class Sdf01ExecutorTest extends AbstractServiceTest { account.setAccount(acc); account.setAccountStatus(Status.Active.getKey()); accountMap.put(accountIdNew, account); - checkErrorAccountNotPresent(company); + checkErrorAccountNotPresent(company, sdf01); //AccountNotPresent account=null account.setAccount(null); account.setAccountType(AccountType.Clrn.getKey()); account.setAccountStatus(Status.Active.getKey()); accountMap.put(accountIdNew, account); - checkErrorAccountNotPresent(company); + checkErrorAccountNotPresent(company, sdf01); //AccountNotPresent sdf01.account==null sdf01.setAccount(null); - checkErrorAccountNotPresent(company); + checkErrorAccountNotPresent(company, sdf01); //CurrencyNotFound sdf01.curr_code =! "RUR" accountMap.put(accountIdNew, getTestAccount(ID, acc)); sdf01.setAccount(acc); sdf01.setCurr_code("RUB"); - checkError(new EnumMessage(BalanceError.CurrencyNotFound)); + checkError(new EnumMessage(BalanceError.CurrencyNotFound), sdf01); //CurrencyNotFound sdf01.curr_code =! "RUR" sdf01.setCurr_code(null); - checkError(new EnumMessage(BalanceError.CurrencyNotFound)); + checkError(new EnumMessage(BalanceError.CurrencyNotFound), sdf01); //CurrentDateOnly sdf01.setCurr_code("RUR"); sdf01.setDat("19.01.23"); - checkError(new EnumMessage(BalanceError.CurrentDateOnly)); + checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); //CurrentDateOnly sdf01.setDat("19.01.2023"); - checkError(new EnumMessage(BalanceError.CurrentDateOnly)); + checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); //CurrentDateOnly sdf01.setDat(null); - checkError(new EnumMessage(BalanceError.CurrentDateOnly)); + checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); //WrongAccount sdf01.setDat(LocalDate.now().format(datFormatter)); sdf01.setAcc_type(null); - checkError(new EnumMessage(BalanceError.WrongAccount)); + checkError(new EnumMessage(BalanceError.WrongAccount), sdf01); //WrongMarket sdf01.setAcc_type("A"); sdf01.setMarket(null); - checkError(new EnumMessage(BalanceError.WrongMarket)); + checkError(new EnumMessage(BalanceError.WrongMarket), sdf01); sdf01.setMarket("U"); } - private void checkError(EnumMessage enumMessage) { + private void checkError(EnumMessage enumMessage, SDf01 sdf01) { // SDf01 sdf01 = getTestSdf01(); SDf02 predictableSdf02 = getTestErrorSdf02(sdf01, enumMessage, ID); Result result = sdf01Executor.execute(Collections.singletonList(sdf01), statementRequest); @@ -174,7 +176,7 @@ class Sdf01ExecutorTest extends AbstractServiceTest { SDF_02_MATCHER.assertMatch(resultSdf02, predictableSdf02); } - private void checkErrorAccountNotPresent(Company company) { + private void checkErrorAccountNotPresent(Company company, SDf01 sdf01) { Result predictableResult = new Result(); predictableResult.getAccountRequests().add(createAccountRequestPart(sdf01.getId(), sdf01.getAccount(), company.getId())); Result result = sdf01Executor.execute(Collections.singletonList(sdf01), statementRequest); @@ -205,13 +207,14 @@ class Sdf01ExecutorTest extends AbstractServiceTest { } private SDf01 getTestSdf01() { + LocalDate date = LocalDate.now(); SDf01 sdf01 = new SDf01(); sdf01.setId(ID); sdf01.setMarket("U"); sdf01.setDeal(deal); sdf01.setAccount(acc); sdf01.setCurr_code("RUR"); - sdf01.setDat(LocalDate.now().format(datFormatter)); + sdf01.setDat(date.format(datFormatter)); sdf01.setAcc_type("A"); sdf01.setRemainder(amountNew.toString()); return sdf01; From b5dee6c1de491c273626bf39266b64485170ed80 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 12:05:00 +0300 Subject: [PATCH 08/20] http://jira.mfd.msk:8088/browse/CLS-90 --- OrderRegisterService --- .../service/OrderRegisterService.java | 56 +++++++ .../platform/messaging/domain/Consts.java | 1 + .../cud/registry/OrderRegisterNewRequest.java | 143 ++++++++++++++++++ 3 files changed, 200 insertions(+) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/OrderRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/OrderRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/OrderRegisterService.java new file mode 100644 index 000000000..af076b9dc --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/OrderRegisterService.java @@ -0,0 +1,56 @@ +package ru.spcex.clearing.registry.service; + +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.register.OrderRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.OrderRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class OrderRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg orderRegisterMap; + + @Autowired + public OrderRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.orderRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderRegister, OrderRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(OrderRegisterNewRequest.class) + .setConsumer(this::orderRegisterNew) + .forDestination(Consts.REGISTRY_ORDER_REGISTER_NEW, callbacks::put); + init(); + } + + public void orderRegisterNew(BaseRequest userRequest) { + OrderRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("OrderRegisterNewRequest received"); + OrderRegister register = new OrderRegister(); + register.setCreditLegAccount(req.getCreditLegAccount()); + register.setCreditLegAmount(req.getCreditLegAmount()); + register.setCreditLegCurrencyCode(req.getCreditLegCurrencyCode()); + register.setCreditLegDirection(req.getCreditLegDirection()); + register.setDebitLegAccount(req.getDebitLegAccount()); + register.setSender(req.getSender()); + register.setAddressee(req.getAddressee()); + register.setDocumentNumber(req.getDocumentNumber()); + register.setClearingDate(req.getClearingDate()); + orderRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 657259582..e1365fb4e 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -57,4 +57,5 @@ public interface Consts { String REGISTRY_COVERED_DEAL_REGISTER_NEW = "registry-covered-deal-register-new"; String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; + String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java new file mode 100644 index 000000000..9d1022cc9 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/OrderRegisterNewRequest.java @@ -0,0 +1,143 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +public class OrderRegisterNewRequest { + + @JsonProperty + private String creditLegAccount; + + @JsonProperty + private BigDecimal creditLegAmount; + + @JsonProperty + private String creditLegCurrencyCode; + + @JsonProperty + private Long creditLegDirection; + + @JsonProperty + private String debitLegAccount; + + @JsonProperty + private String sender; + + @JsonProperty + private String addressee; + + @JsonProperty + private String documentNumber; + + @JsonProperty + private Long id; + + @JsonProperty + private Instant createdAt; + + @JsonProperty + private Instant updatedAt; + + @JsonProperty + private LocalDate clearingDate; + + public String getCreditLegAccount() { + return creditLegAccount; + } + + public void setCreditLegAccount(String creditLegAccount) { + this.creditLegAccount = creditLegAccount; + } + + public BigDecimal getCreditLegAmount() { + return creditLegAmount; + } + + public void setCreditLegAmount(BigDecimal creditLegAmount) { + this.creditLegAmount = creditLegAmount; + } + + public String getCreditLegCurrencyCode() { + return creditLegCurrencyCode; + } + + public void setCreditLegCurrencyCode(String creditLegCurrencyCode) { + this.creditLegCurrencyCode = creditLegCurrencyCode; + } + + public Long getCreditLegDirection() { + return creditLegDirection; + } + + public void setCreditLegDirection(Long creditLegDirection) { + this.creditLegDirection = creditLegDirection; + } + + public String getDebitLegAccount() { + return debitLegAccount; + } + + public void setDebitLegAccount(String debitLegAccount) { + this.debitLegAccount = debitLegAccount; + } + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getAddressee() { + return addressee; + } + + public void setAddressee(String addressee) { + this.addressee = addressee; + } + + public String getDocumentNumber() { + return documentNumber; + } + + public void setDocumentNumber(String documentNumber) { + this.documentNumber = documentNumber; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } +} From 5cd4531638c59bc1dfa1ce756ba20b90775d3348 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 12:34:12 +0300 Subject: [PATCH 09/20] http://jira.mfd.msk:8088/browse/CLS-91 --- ContractRegisterService --- .../service/ContractRegisterService.java | 63 ++++++ .../platform/messaging/domain/Consts.java | 1 + .../registry/ContractRegisterNewRequest.java | 196 ++++++++++++++++++ 3 files changed, 260 insertions(+) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ContractRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ContractRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ContractRegisterService.java new file mode 100644 index 000000000..7b52e2ccb --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ContractRegisterService.java @@ -0,0 +1,63 @@ +package ru.spcex.clearing.registry.service; + +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.register.ContractRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ContractRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + + +@Service +public class ContractRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg contractRegisterMap; + + @Autowired + public ContractRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.contractRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ContractRegister, ContractRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(ContractRegisterNewRequest.class) + .setConsumer(this::contractRegisterNew) + .forDestination(Consts.REGISTRY_CONTRACT_REGISTER_NEW, callbacks::put); + init(); + } + + public void contractRegisterNew(BaseRequest userRequest) { + ContractRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("ContractRegisterNewRequest received"); + ContractRegister register = new ContractRegister(); + register.setName(req.getName()); + register.setNumber(req.getNumber()); + register.setIssueDate(req.getIssueDate()); + register.setCompanyFullName(req.getCompanyFullName()); + register.setCompanyId(req.getCompanyId()); + register.setDocumentType(req.getDocumentType()); + register.setIssuePlace(req.getIssuePlace()); + register.setIssuer(req.getIssuer()); + register.setIssuerCode(req.getIssuerCode()); + register.setPlace(req.getPlace()); + register.setValidFromDate(req.getValidFromDate()); + register.setValidToDate(req.getValidToDate()); + register.setCloseDate(req.getCloseDate()); + register.setComment(req.getComment()); + + contractRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index e1365fb4e..26c8436c5 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -58,4 +58,5 @@ public interface Consts { String REGISTRY_COVERED_DEAL_REGISTER_NEW = "registry-covered-deal-register-new"; String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; + String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java new file mode 100644 index 000000000..579b37e19 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ContractRegisterNewRequest.java @@ -0,0 +1,196 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.time.Instant; +import java.time.LocalDate; + +public class ContractRegisterNewRequest { + + @JsonProperty + private String name; + + @JsonProperty + private String number; + + @JsonProperty + private LocalDate issueDate; + + @JsonProperty + private Long companyFullName; + + @JsonProperty + private Long companyId; + + @JsonProperty + private String documentType; + + @JsonProperty + private String issuePlace; + + @JsonProperty + private String issuer; + + @JsonProperty + private String issuerCode; + + @JsonProperty + private String place; + + @JsonProperty + private LocalDate validFromDate; + + @JsonProperty + private LocalDate validToDate; + + @JsonProperty + private LocalDate closeDate; + + @JsonProperty + private String comment; + + @JsonProperty + private Long id; + + @JsonProperty + private Instant createdAt; + + @JsonProperty + private Instant updatedAt; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public LocalDate getCloseDate() { + return closeDate; + } + + public void setCloseDate(LocalDate closeDate) { + this.closeDate = closeDate; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public LocalDate getIssueDate() { + return issueDate; + } + + public void setIssueDate(LocalDate issueDate) { + this.issueDate = issueDate; + } + + public Long getCompanyFullName() { + return companyFullName; + } + + public void setCompanyFullName(Long companyFullName) { + this.companyFullName = companyFullName; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public String getDocumentType() { + return documentType; + } + + public void setDocumentType(String documentType) { + this.documentType = documentType; + } + + public String getIssuePlace() { + return issuePlace; + } + + public void setIssuePlace(String issuePlace) { + this.issuePlace = issuePlace; + } + + public String getIssuer() { + return issuer; + } + + public void setIssuer(String issuer) { + this.issuer = issuer; + } + + public String getIssuerCode() { + return issuerCode; + } + + public void setIssuerCode(String issuerCode) { + this.issuerCode = issuerCode; + } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + public LocalDate getValidFromDate() { + return validFromDate; + } + + public void setValidFromDate(LocalDate validFromDate) { + this.validFromDate = validFromDate; + } + + public LocalDate getValidToDate() { + return validToDate; + } + + public void setValidToDate(LocalDate validToDate) { + this.validToDate = validToDate; + } +} From b3c7ec99d36c23a03f1f16967aef15eee1361141 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 13:15:56 +0300 Subject: [PATCH 10/20] http://jira.mfd.msk:8088/browse/CLS-86 --- BalanceRegisterService --- .../service/BalanceRegisterService.java | 62 ++++++ .../platform/messaging/domain/Consts.java | 1 + .../registry/BalanceRegisterNewRequest.java | 196 ++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/BalanceRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/BalanceRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/BalanceRegisterService.java new file mode 100644 index 000000000..21c639fe6 --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/BalanceRegisterService.java @@ -0,0 +1,62 @@ +package ru.spcex.clearing.registry.service; + +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.BalanceRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.BalanceRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + + +@Service +public class BalanceRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg balanceRegisterMap; + + @Autowired + public BalanceRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.balanceRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_BalanceRegister, BalanceRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(BalanceRegisterNewRequest.class) + .setConsumer(this::balanceRegisterNew) + .forDestination(Consts.REGISTRY_BALANCE_REGISTER_NEW, callbacks::put); + init(); + } + + public void balanceRegisterNew(BaseRequest userRequest) { + BalanceRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("BalanceRegisterNewRequest received"); + BalanceRegister register = new BalanceRegister(); + register.setsDf01Date(req.getsDf01Date()); + register.setCurrencyCode(req.getCurrencyCode()); + register.setSetHouseName(req.getSetHouseName()); + register.setAccount(req.getAccount()); + register.setInfoAccount(req.getInfoAccount()); + register.setRemainderSum(req.getRemainderSum()); + register.setBlockedSum(req.getBlockedSum()); + register.setUnblockedSum(req.getUnblockedSum()); + register.setInn(req.getInn()); + register.setMarket(req.getMarket()); + register.setFullName(req.getFullName()); + register.setTypeRemains(req.getTypeRemains()); + register.setDocNumber(req.getDocNumber()); + register.setCompanyId(req.getCompanyId()); + balanceRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 26c8436c5..ef689737a 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -59,4 +59,5 @@ public interface Consts { String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; + String REGISTRY_BALANCE_REGISTER_NEW = "registry-balance-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java new file mode 100644 index 000000000..1b8db037c --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/BalanceRegisterNewRequest.java @@ -0,0 +1,196 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.time.Instant; + +public class BalanceRegisterNewRequest { + + @JsonProperty + private Instant sDf01Date; + + @JsonProperty + private String currencyCode; + + @JsonProperty + private String setHouseName; + + @JsonProperty + private String account; + + @JsonProperty + private String infoAccount; + + @JsonProperty + private BigDecimal remainderSum; + + @JsonProperty + private BigDecimal blockedSum; + + @JsonProperty + private BigDecimal unblockedSum; + + @JsonProperty + private String inn; + + @JsonProperty + private Long market; + + @JsonProperty + private String fullName; + + @JsonProperty + private String typeRemains; + + @JsonProperty + private String docNumber; + + @JsonProperty + private Long companyId; + + @JsonProperty + private Long id; + + @JsonProperty + private Instant createdAt; + + @JsonProperty + private Instant updatedAt; + + public Instant getsDf01Date() { + return sDf01Date; + } + + public void setsDf01Date(Instant sDf01Date) { + this.sDf01Date = sDf01Date; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public String getSetHouseName() { + return setHouseName; + } + + public void setSetHouseName(String setHouseName) { + this.setHouseName = setHouseName; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getInfoAccount() { + return infoAccount; + } + + public void setInfoAccount(String infoAccount) { + this.infoAccount = infoAccount; + } + + public BigDecimal getRemainderSum() { + return remainderSum; + } + + public void setRemainderSum(BigDecimal remainderSum) { + this.remainderSum = remainderSum; + } + + public BigDecimal getBlockedSum() { + return blockedSum; + } + + public void setBlockedSum(BigDecimal blockedSum) { + this.blockedSum = blockedSum; + } + + public BigDecimal getUnblockedSum() { + return unblockedSum; + } + + public void setUnblockedSum(BigDecimal unblockedSum) { + this.unblockedSum = unblockedSum; + } + + public String getInn() { + return inn; + } + + public void setInn(String inn) { + this.inn = inn; + } + + public Long getMarket() { + return market; + } + + public void setMarket(Long market) { + this.market = market; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public String getTypeRemains() { + return typeRemains; + } + + public void setTypeRemains(String typeRemains) { + this.typeRemains = typeRemains; + } + + public String getDocNumber() { + return docNumber; + } + + public void setDocNumber(String docNumber) { + this.docNumber = docNumber; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } +} From 3eeab23360c6757dea7cd12169080532f89ecf85 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 14:32:48 +0300 Subject: [PATCH 11/20] http://jira.mfd.msk:8088/browse/CLS-89 --- UncoveredDealRegisterService --- .../service/UncoveredDealRegisterService.java | 63 +++++ .../platform/messaging/domain/Consts.java | 1 + .../UncoveredDealRegisterNewRequest.java | 219 ++++++++++++++++++ 3 files changed, 283 insertions(+) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterService.java new file mode 100644 index 000000000..f9b0d6580 --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/UncoveredDealRegisterService.java @@ -0,0 +1,63 @@ +package ru.spcex.clearing.registry.service; + +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.register.UncoveredDealRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.UncoveredDealRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class UncoveredDealRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg uncoveredDealRegisterMap; + + @Autowired + public UncoveredDealRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.uncoveredDealRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_UncoveredDealRegister, UncoveredDealRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(UncoveredDealRegisterNewRequest.class) + .setConsumer(this::uncoveredDealRegisterNew) + .forDestination(Consts.REGISTRY_UNCOVERED_DEAL_REGISTER_NEW, callbacks::put); + init(); + } + + public void uncoveredDealRegisterNew(BaseRequest userRequest) { + UncoveredDealRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("UncoveredDealRegisterNewRequest received"); + UncoveredDealRegister register = new UncoveredDealRegister(); + register.setExecutionId(req.getExecutionId()); + register.setCompanyFullName(req.getCompanyFullName()); + register.setTradingDate(req.getTradingDate()); + register.setExchangeExecutionId(req.getExchangeExecutionId()); + register.setExchangeExecutionTime(req.getExchangeExecutionTime()); + register.setSecuritySymbol(req.getSecuritySymbol()); + register.setSecurityFullName(req.getSecurityFullName()); + register.setSellerFullName(req.getSellerFullName()); + register.setSellerClearingCode(req.getSellerClearingCode()); + register.setSellerAccount(req.getSellerAccount()); + register.setBuyerFullName(req.getBuyerFullName()); + register.setBuyerClearingCode(req.getBuyerClearingCode()); + register.setBuyerAccount(req.getBuyerAccount()); + register.setAmount(req.getAmount()); + register.setResultStatus(req.getResultStatus()); + register.setClearingDate(req.getClearingDate()); + uncoveredDealRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index ef689737a..b5e7b027a 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -60,4 +60,5 @@ public interface Consts { String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; String REGISTRY_BALANCE_REGISTER_NEW = "registry-balance-register-new"; + String REGISTRY_UNCOVERED_DEAL_REGISTER_NEW = "registry-uncovered-deal-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java new file mode 100644 index 000000000..656ae8748 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/UncoveredDealRegisterNewRequest.java @@ -0,0 +1,219 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +public class UncoveredDealRegisterNewRequest { + + @JsonProperty + private Long executionId; + + @JsonProperty + private String companyFullName; + + @JsonProperty + private LocalDate tradingDate; + + @JsonProperty + private Long exchangeExecutionId; + + @JsonProperty + private Instant exchangeExecutionTime; + + @JsonProperty + private String securitySymbol; + + @JsonProperty + private String securityFullName; + + @JsonProperty + private String sellerFullName; + + @JsonProperty + private String sellerClearingCode; + + @JsonProperty + private String sellerAccount; + + @JsonProperty + private String buyerFullName; + + @JsonProperty + private String buyerClearingCode; + + @JsonProperty + private String buyerAccount; + + @JsonProperty + private BigDecimal amount; + + @JsonProperty + private String resultStatus; + + @JsonProperty + private Long id; + + @JsonProperty + private Instant createdAt; + + @JsonProperty + private Instant updatedAt; + + @JsonProperty + private LocalDate clearingDate; + + public Long getExecutionId() { + return executionId; + } + + public void setExecutionId(Long executionId) { + this.executionId = executionId; + } + + public String getCompanyFullName() { + return companyFullName; + } + + public void setCompanyFullName(String companyFullName) { + this.companyFullName = companyFullName; + } + + public LocalDate getTradingDate() { + return tradingDate; + } + + public void setTradingDate(LocalDate tradingDate) { + this.tradingDate = tradingDate; + } + + public Long getExchangeExecutionId() { + return exchangeExecutionId; + } + + public void setExchangeExecutionId(Long exchangeExecutionId) { + this.exchangeExecutionId = exchangeExecutionId; + } + + public Instant getExchangeExecutionTime() { + return exchangeExecutionTime; + } + + public void setExchangeExecutionTime(Instant exchangeExecutionTime) { + this.exchangeExecutionTime = exchangeExecutionTime; + } + + public String getSecuritySymbol() { + return securitySymbol; + } + + public void setSecuritySymbol(String securitySymbol) { + this.securitySymbol = securitySymbol; + } + + public String getSecurityFullName() { + return securityFullName; + } + + public void setSecurityFullName(String securityFullName) { + this.securityFullName = securityFullName; + } + + public String getSellerFullName() { + return sellerFullName; + } + + public void setSellerFullName(String sellerFullName) { + this.sellerFullName = sellerFullName; + } + + public String getSellerClearingCode() { + return sellerClearingCode; + } + + public void setSellerClearingCode(String sellerClearingCode) { + this.sellerClearingCode = sellerClearingCode; + } + + public String getSellerAccount() { + return sellerAccount; + } + + public void setSellerAccount(String sellerAccount) { + this.sellerAccount = sellerAccount; + } + + public String getBuyerFullName() { + return buyerFullName; + } + + public void setBuyerFullName(String buyerFullName) { + this.buyerFullName = buyerFullName; + } + + public String getBuyerClearingCode() { + return buyerClearingCode; + } + + public void setBuyerClearingCode(String buyerClearingCode) { + this.buyerClearingCode = buyerClearingCode; + } + + public String getBuyerAccount() { + return buyerAccount; + } + + public void setBuyerAccount(String buyerAccount) { + this.buyerAccount = buyerAccount; + } + + public BigDecimal getAmount() { + return amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public String getResultStatus() { + return resultStatus; + } + + public void setResultStatus(String resultStatus) { + this.resultStatus = resultStatus; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } +} From 3071a4457aacb33b507096b29d743815049deeec Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 17:56:08 +0300 Subject: [PATCH 12/20] http://jira.mfd.msk:8088/browse/CLS-84 --- ClearMemberRegisterService --- .../service/ClearMemberRegisterService.java | 73 ++++ .../platform/messaging/domain/Consts.java | 1 + .../ClearMemberRegisterNewRequest.java | 317 ++++++++++++++++++ 3 files changed, 391 insertions(+) create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterService.java new file mode 100644 index 000000000..aeaab9ced --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterService.java @@ -0,0 +1,73 @@ +package ru.spcex.clearing.registry.service; + +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.ClearMemberRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ClearMemberRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + + +@Service +public class ClearMemberRegisterService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg clearMemberRegisterMap; + + @Autowired + public ClearMemberRegisterService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.clearMemberRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearMemberRegister, ClearMemberRegister.class); + } + + @Override + public void afterPropertiesSet() { + callback(ClearMemberRegisterNewRequest.class) + .setConsumer(this::clearMemberRegisterNew) + .forDestination(Consts.REGISTRY_CLEAR_MEMBER_REGISTER_NEW, callbacks::put); + init(); + } + + public void clearMemberRegisterNew(BaseRequest userRequest) { + ClearMemberRegisterNewRequest req = userRequest.getRequestPayload(); + log.debug("ClearMemberRegisterNewRequest received"); + ClearMemberRegister register = new ClearMemberRegister(); + register.setTradingCode(req.getTradingCode()); + register.setClearingCode(req.getClearingCode()); + register.setFullName(req.getFullName()); + register.setShortName(req.getShortName()); + register.setCategoryList(req.getCategoryList()); + register.setCorporationSole(req.getCorporationSole()); + register.setAccount(req.getAccount()); + register.setBank(req.getBank()); + register.setBankName(req.getBankName()); + register.setInn(req.getInn()); + register.setBic(req.getBic()); + register.setOgrn(req.getOgrn()); + register.setCpp(req.getCpp()); + register.setOcpo(req.getOcpo()); + register.setContractNumber(req.getContractNumber()); + register.setContractDate(req.getContractDate()); + register.setRegistrationDate(req.getRegistrationDate()); + register.setSystemDate(req.getSystemDate()); + register.setAccessDate(req.getAccessDate()); + register.setSuspentionDate(req.getSuspentionDate()); + register.setReopeningDate(req.getReopeningDate()); + register.setCloseDate(req.getCloseDate()); + register.setExclusionDate(req.getExclusionDate()); + register.setAddress(req.getAddress()); + register.setEmail(req.getEmail()); + clearMemberRegisterMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index b5e7b027a..66eb3bc8b 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -61,4 +61,5 @@ public interface Consts { String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; String REGISTRY_BALANCE_REGISTER_NEW = "registry-balance-register-new"; String REGISTRY_UNCOVERED_DEAL_REGISTER_NEW = "registry-uncovered-deal-register-new"; + String REGISTRY_CLEAR_MEMBER_REGISTER_NEW = "registry-clear-member-register-new"; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java new file mode 100644 index 000000000..21656ecab --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterNewRequest.java @@ -0,0 +1,317 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.time.Instant; +import java.time.LocalDate; + +public class ClearMemberRegisterNewRequest { + + @JsonProperty + private String tradingCode; + + @JsonProperty + private String clearingCode; + + @JsonProperty + private String fullName; + + @JsonProperty + private String shortName; + + @JsonProperty + private String categoryList; + + @JsonProperty + private String corporationSole; + + @JsonProperty + private String account; + + @JsonProperty + private Long bank; + + @JsonProperty + private String bankName; + + @JsonProperty + private String inn; + + @JsonProperty + private String bic; + + @JsonProperty + private String ogrn; + + @JsonProperty + private String cpp; + + @JsonProperty + private String ocpo; + + @JsonProperty + private String contractNumber; + + @JsonProperty + private LocalDate contractDate; + + @JsonProperty + private LocalDate registrationDate; + + @JsonProperty + private LocalDate systemDate; + + @JsonProperty + private Instant accessDate; + + @JsonProperty + private Instant suspentionDate; + + @JsonProperty + private Instant reopeningDate; + + @JsonProperty + private Instant closeDate; + + @JsonProperty + private Instant exclusionDate; + + @JsonProperty + private String address; + + @JsonProperty + private String email; + + @JsonProperty + private Long id; + + @JsonProperty + private Instant createdAt; + + @JsonProperty + private Instant updatedAt; + + public String getTradingCode() { + return tradingCode; + } + + public void setTradingCode(String tradingCode) { + this.tradingCode = tradingCode; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String clearingCode) { + this.clearingCode = clearingCode; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getCategoryList() { + return categoryList; + } + + public void setCategoryList(String categoryList) { + this.categoryList = categoryList; + } + + public String getCorporationSole() { + return corporationSole; + } + + public void setCorporationSole(String corporationSole) { + this.corporationSole = corporationSole; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public Long getBank() { + return bank; + } + + public void setBank(Long bank) { + this.bank = bank; + } + + public String getBankName() { + return bankName; + } + + public void setBankName(String bankName) { + this.bankName = bankName; + } + + public String getInn() { + return inn; + } + + public void setInn(String inn) { + this.inn = inn; + } + + public String getBic() { + return bic; + } + + public void setBic(String bic) { + this.bic = bic; + } + + public String getOgrn() { + return ogrn; + } + + public void setOgrn(String ogrn) { + this.ogrn = ogrn; + } + + public String getCpp() { + return cpp; + } + + public void setCpp(String cpp) { + this.cpp = cpp; + } + + public String getOcpo() { + return ocpo; + } + + public void setOcpo(String ocpo) { + this.ocpo = ocpo; + } + + public String getContractNumber() { + return contractNumber; + } + + public void setContractNumber(String contractNumber) { + this.contractNumber = contractNumber; + } + + public LocalDate getContractDate() { + return contractDate; + } + + public void setContractDate(LocalDate contractDate) { + this.contractDate = contractDate; + } + + public LocalDate getRegistrationDate() { + return registrationDate; + } + + public void setRegistrationDate(LocalDate registrationDate) { + this.registrationDate = registrationDate; + } + + public LocalDate getSystemDate() { + return systemDate; + } + + public void setSystemDate(LocalDate systemDate) { + this.systemDate = systemDate; + } + + public Instant getAccessDate() { + return accessDate; + } + + public void setAccessDate(Instant accessDate) { + this.accessDate = accessDate; + } + + public Instant getSuspentionDate() { + return suspentionDate; + } + + public void setSuspentionDate(Instant suspentionDate) { + this.suspentionDate = suspentionDate; + } + + public Instant getReopeningDate() { + return reopeningDate; + } + + public void setReopeningDate(Instant reopeningDate) { + this.reopeningDate = reopeningDate; + } + + public Instant getCloseDate() { + return closeDate; + } + + public void setCloseDate(Instant closeDate) { + this.closeDate = closeDate; + } + + public Instant getExclusionDate() { + return exclusionDate; + } + + public void setExclusionDate(Instant exclusionDate) { + this.exclusionDate = exclusionDate; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } +} From f147d1cd1c54df186dc16bbd2b2a9a7ccf057f67 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 26 Jan 2023 18:17:31 +0300 Subject: [PATCH 13/20] http://jira.mfd.msk:8088/browse/CLS-85 --- ClearMemberRegisterChangeService --- .../register/ClearMemberRegisterChange.java | 41 +++++++++++++++ .../ClearMemberRegisterChangeService.java | 51 +++++++++++++++++++ .../clearing/imdg/IMDGDistributedNames.java | 1 + .../platform/messaging/domain/Consts.java | 3 ++ .../ClearMemberRegisterChangeNewRequest.java | 38 ++++++++++++++ 5 files changed, 134 insertions(+) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ClearMemberRegisterChange.java create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ClearMemberRegisterChange.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ClearMemberRegisterChange.java new file mode 100644 index 000000000..b87973543 --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ClearMemberRegisterChange.java @@ -0,0 +1,41 @@ +package ru.clearing.classes.statics.data.register; + +import ru.clearing.classes.ConstSerializable; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.time.Instant; + +/** + * Журнал изменений информации участников клиринга + **/ +public class ClearMemberRegisterChange extends SpcexObjectBase { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private Instant date; + private String comment; + private String clearingCode; + + public Instant getDate() { + return date; + } + + public void setDate(Instant date) { + this.date = date; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String clearingCode) { + this.clearingCode = clearingCode; + } +} diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeService.java new file mode 100644 index 000000000..40bd281ef --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ClearMemberRegisterChangeService.java @@ -0,0 +1,51 @@ +package ru.spcex.clearing.registry.service; + + +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.register.ClearMemberRegisterChange; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.ClearMemberRegisterChangeNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class ClearMemberRegisterChangeService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final Imdg clearMemberRegisterChangeMap; + + @Autowired + public ClearMemberRegisterChangeService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.clearMemberRegisterChangeMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearMemberRegisterChange, ClearMemberRegisterChange.class); + } + + @Override + public void afterPropertiesSet() { + callback(ClearMemberRegisterChangeNewRequest.class) + .setConsumer(this::clearMemberRegisterChangeNew) + .forDestination(Consts.REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW, callbacks::put); + init(); + } + + public void clearMemberRegisterChangeNew(BaseRequest userRequest) { + ClearMemberRegisterChangeNewRequest req = userRequest.getRequestPayload(); + log.debug("ClearMemberRegisterChangeNewRequest received"); + ClearMemberRegisterChange register = new ClearMemberRegisterChange(); + register.setDate(req.getDate()); + register.setComment(req.getComment()); + register.setClearingCode(req.getClearingCode()); + clearMemberRegisterChangeMap.insert(register); + log.debug("successfully processed, id {}", register.getId()); + } +} \ No newline at end of file diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index ed239339f..f4773bb43 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -110,6 +110,7 @@ public final class IMDGDistributedNames { public static final String Map_LiabilitiesClaimsAssets = "Map_LiabilitiesClaimsAssets"; public static final String Map_LiabilitiesClaimsMoney = "Map_LiabilitiesClaimsMoney"; public static final String Map_ClearMemberRegister = "Map_ClearMemberRegister"; + public static final String Map_ClearMemberRegisterChange = "Map_ClearMemberRegisterChange"; public static final String Map_BalanceRegister = "Map_BalanceRegister"; public static final String Map_ExecutionDeposit = "Map_ExecutionDeposit"; public static final String Map_DealRegister = "Map_DealRegister"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 66eb3bc8b..b4132fa0a 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -57,9 +57,12 @@ public interface Consts { String REGISTRY_COVERED_DEAL_REGISTER_NEW = "registry-covered-deal-register-new"; String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; + String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; String REGISTRY_BALANCE_REGISTER_NEW = "registry-balance-register-new"; String REGISTRY_UNCOVERED_DEAL_REGISTER_NEW = "registry-uncovered-deal-register-new"; String REGISTRY_CLEAR_MEMBER_REGISTER_NEW = "registry-clear-member-register-new"; + String REGISTRY_CLEAR_MEMBER_REGISTER_CHANGE_NEW = "registry-clear-member-register-change-new"; + } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java new file mode 100644 index 000000000..d3ccd715f --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ClearMemberRegisterChangeNewRequest.java @@ -0,0 +1,38 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.time.Instant; + +public class ClearMemberRegisterChangeNewRequest { + @JsonProperty + private Instant date; + @JsonProperty + private String clearingCode; + @JsonProperty + private String comment; + + public Instant getDate() { + return date; + } + + public void setDate(Instant date) { + this.date = date; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String clearingCode) { + this.clearingCode = clearingCode; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} From d36eefdfb78f45b4b76a6d89b1de9e48a795e61e Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 27 Jan 2023 14:20:05 +0300 Subject: [PATCH 14/20] =?UTF-8?q?reports-service=20http://jira.mfd.msk:808?= =?UTF-8?q?8/browse/CLS-92=20http://jira.mfd.msk:8088/browse/CLS-102=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=20=D0=B4=D0=BD=D0=B5=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=BE=D0=B2=20(INDOCUME?= =?UTF-8?q?NT,OUTDOCUMENT)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spcex/clearing/reports/services/ReportsServiceCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java index 659a9a131..260a368d0 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java @@ -28,7 +28,7 @@ import java.util.Map; @Service public class ReportsServiceCommand implements InitializingBean { public static final String QUEUE_RUN_REPORT_COMMAND = "GREP"; // см. Task.createReport - public static final String QUEUE_RUN_DAILY_REPORT_COMMAND = "DAILY"; + public static final String QUEUE_RUN_DAILY_REPORT_COMMAND = QUEUE_RUN_REPORT_COMMAND; // дневные тоже по команде GREP запускать с остальными. private final Logger log = LoggerFactory.getLogger(getClass()); From fdb8d558a958f3064080c9416d07633be7b6d3ea Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 27 Jan 2023 18:57:36 +0300 Subject: [PATCH 15/20] Add test with EmbeddedKafka. --- clearing-parent/balance-service/pom.xml | 19 +++- .../src/main/resources/application.properties | 6 +- .../balance/config/KafkaTestConfig.java | 25 ++--- .../balance/config/KafkaTestConsumer.java | 41 +++++++ .../balance/service/EmbeddedKafkaTest.java | 104 ++++++++++++++++++ .../service/Sdf08ServiceKafkaTest.java | 69 ++++++++++++ 6 files changed, 244 insertions(+), 20 deletions(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java diff --git a/clearing-parent/balance-service/pom.xml b/clearing-parent/balance-service/pom.xml index 4414833e5..5b4cd23de 100644 --- a/clearing-parent/balance-service/pom.xml +++ b/clearing-parent/balance-service/pom.xml @@ -14,6 +14,7 @@ 17 17 + 3.0.1 @@ -56,8 +57,24 @@ assertj-core test - + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.kafka + spring-kafka-test + 2.8.8 + test + + + org.springframework.kafka + spring-kafka + 2.8.8 + + diff --git a/clearing-parent/balance-service/src/main/resources/application.properties b/clearing-parent/balance-service/src/main/resources/application.properties index 46ac587bd..3751e0dbb 100644 --- a/clearing-parent/balance-service/src/main/resources/application.properties +++ b/clearing-parent/balance-service/src/main/resources/application.properties @@ -2,7 +2,6 @@ spring.main.web-application-type=none balance-service.hazelcast.cluster-members=127.0.0.1:5701 balance-service.hazelcast.login=dev balance-service.hazelcast.password=dev-pass - balance-service.kafka-consumer.bootstrap-servers=localhost:9092 balance-service.kafka-consumer.group-id=dev-group-balance-service balance-service.kafka-consumer.enable-auto-commit=false @@ -10,10 +9,11 @@ balance-service.kafka-consumer.session-timeout-ms=30000 balance-service.kafka-consumer.auto-offset-reset=latest balance-service.kafka-consumer.linger-ms=1 balance-service.kafka-consumer.buffer-memory=33554432 - balance-service.kafka-producer.bootstrap-servers=localhost:9092 balance-service.kafka-producer.acks=all balance-service.kafka-producer.retries=0 balance-service.kafka-producer.batch-size=16384 balance-service.kafka-producer.linger-ms=1 -balance-service.kafka-producer.buffer-memory=33554432 \ No newline at end of file +balance-service.kafka-producer.buffer-memory=33554432 +#for testing +spring.kafka.consumer.group-id=dev-group-balance-service \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java index b56fef2b1..256267d20 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java @@ -1,24 +1,17 @@ package ru.spcex.clearing.balance.config; -import org.apache.kafka.clients.consumer.MockConsumer; -import org.apache.kafka.clients.consumer.OffsetResetStrategy; -import org.apache.kafka.clients.producer.MockProducer; -import org.apache.kafka.clients.producer.Producer; -import org.apache.kafka.common.serialization.StringSerializer; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import ru.spcex.clearing.platform.messaging.serialization.JsonSerializer; @Configuration public class KafkaTestConfig { - @Bean - public MockConsumer createTestConsumer() { - return new MockConsumer<>(OffsetResetStrategy.EARLIEST); - } - - @Bean - public Producer createTestProducer() { - return new MockProducer<>(true, new StringSerializer(), new JsonSerializer()); - } +// @Bean +// public MockConsumer createTestConsumer() { +// return new MockConsumer<>(OffsetResetStrategy.EARLIEST); +// } +// +// @Bean +// public Producer createTestProducer() { +// return new MockProducer<>(true, new StringSerializer(), new JsonSerializer()); +// } } diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java new file mode 100644 index 000000000..502e8a50a --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java @@ -0,0 +1,41 @@ +package ru.spcex.clearing.balance.config; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CountDownLatch; + +@Component +public class KafkaTestConsumer { + + public static final String TOPIC_GALB = "launcher-GALB"; + private static final Logger LOGGER = LoggerFactory.getLogger(KafkaTestConsumer.class); + private final String TOPIC_NAME = "com.madadipouya.kafka.user"; + private CountDownLatch latch = new CountDownLatch(1); + + private String payload; + + @KafkaListener(topics = TOPIC_GALB) + public void receive(ConsumerRecord consumerRecord) { + LOGGER.info("received payload='{}'", consumerRecord.toString()); + + payload = consumerRecord.toString(); + latch.countDown(); + } + + public CountDownLatch getLatch() { + return latch; + } + + public void resetLatch() { + latch = new CountDownLatch(1); + } + + public String getPayload() { + return payload; + } + +} diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java new file mode 100644 index 000000000..8c5b3dd79 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java @@ -0,0 +1,104 @@ +package ru.spcex.clearing.balance.service; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.junit.jupiter.api.*; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.listener.ContainerProperties; +import org.springframework.kafka.listener.KafkaMessageListenerContainer; +import org.springframework.kafka.listener.MessageListener; +import org.springframework.kafka.test.EmbeddedKafkaBroker; +import org.springframework.kafka.test.context.EmbeddedKafka; +import org.springframework.kafka.test.utils.ContainerTestUtils; +import org.springframework.kafka.test.utils.KafkaTestUtils; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.spcex.clearing.balance.config.KafkaTestConsumer; + +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static ru.spcex.clearing.balance.config.KafkaTestConsumer.TOPIC_GALB; + +@EmbeddedKafka//(partitions = 1, brokerProperties = {"listeners=PLAINTEXT://localhost:9092", "port=9092"}) +@SpringBootTest(properties = "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}") +@ExtendWith(SpringExtension.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class EmbeddedKafkaTest { + static { + Path path = Paths.get("src", "main", "resources"); + String currentPath = path.toAbsolutePath().toString(); + System.setProperty("spring.config.location", currentPath + File.separator); + } + + @Autowired + public KafkaTemplate template; + BlockingQueue> records; + KafkaMessageListenerContainer container; + @Autowired + private EmbeddedKafkaBroker embeddedKafkaBroker; + @Autowired + private KafkaTestConsumer consumer; + + @BeforeEach + void setup() { + consumer.resetLatch(); + } + + @BeforeAll + void setUp() { + Map configs = new HashMap<>(KafkaTestUtils.consumerProps("consumer", "false", embeddedKafkaBroker)); + DefaultKafkaConsumerFactory consumerFactory = new DefaultKafkaConsumerFactory<>(configs, new StringDeserializer(), new StringDeserializer()); + ContainerProperties containerProperties = new ContainerProperties(TOPIC_GALB); + container = new KafkaMessageListenerContainer<>(consumerFactory, containerProperties); + records = new LinkedBlockingQueue<>(); + container.setupMessageListener((MessageListener) records::add); + container.start(); + ContainerTestUtils.waitForAssignment(container, embeddedKafkaBroker.getPartitionsPerTopic()); + } + + @AfterAll + void tearDown() { + container.stop(); + } + + @Test + public void kafkaSetup_withTopic_ensureSendMessageIsReceived() throws Exception { + // Arrange + Map configs = new HashMap<>(KafkaTestUtils.producerProps(embeddedKafkaBroker)); + Producer producer = new DefaultKafkaProducerFactory<>(configs, new StringSerializer(), new StringSerializer()).createProducer(); + + String data = "Sending with default template"; + //Act + producer.send(new ProducerRecord<>(TOPIC_GALB, "my-aggregate-id", data)); +// producer.flush(); + +// template.send(TOPIC, data); + + // Assert + ConsumerRecord singleRecord = records.poll(10, TimeUnit.SECONDS); + boolean messageConsumed = consumer.getLatch() + .await(30, TimeUnit.SECONDS); + assertTrue(messageConsumed); + assertThat(consumer.getPayload(), containsString(data)); +// assertThat(singleRecord).isNotNull(); +// assertThat(singleRecord.key()).isEqualTo("my-aggregate-id"); +// assertThat(singleRecord.value()).isEqualTo("{\"event\":\"Test Event\"}"); + } +} \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java new file mode 100644 index 000000000..bc17da0da --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java @@ -0,0 +1,69 @@ +package ru.spcex.clearing.balance.service; + +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.serialization.StringSerializer; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.test.EmbeddedKafkaBroker; +import org.springframework.kafka.test.context.EmbeddedKafka; +import org.springframework.kafka.test.utils.KafkaTestUtils; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.spcex.clearing.balance.config.KafkaTestConsumer; + +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static ru.spcex.clearing.balance.config.KafkaTestConsumer.TOPIC_GALB; + +@EmbeddedKafka//(partitions = 1, brokerProperties = {"listeners=PLAINTEXT://localhost:9092", "port=9092"}) +@SpringBootTest(properties = "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}") +@ExtendWith(SpringExtension.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class Sdf08ServiceKafkaTest { + static { + Path path = Paths.get("src", "main", "resources"); + String currentPath = path.toAbsolutePath().toString(); + System.setProperty("spring.config.location", currentPath + File.separator); + } + + @Autowired + public KafkaTemplate template; + + @Autowired + private EmbeddedKafkaBroker embeddedKafkaBroker; + @Autowired + private KafkaTestConsumer consumer; + + @Test + public void newSDf08() throws Exception { + // Arrange + Map configs = new HashMap<>(KafkaTestUtils.producerProps(embeddedKafkaBroker)); + Producer producer = new DefaultKafkaProducerFactory<>(configs, new StringSerializer(), new StringSerializer()).createProducer(); + + + String data = "Sending with default template"; + //Act + producer.send(new ProducerRecord<>(TOPIC_GALB, "my-aggregate-id", data)); +// producer.flush(); +// template.send(TOPIC, data); + + // Assert + boolean messageConsumed = consumer.getLatch() + .await(10, TimeUnit.SECONDS); + assertTrue(messageConsumed); + assertThat(consumer.getPayload(), containsString(data)); + } +} \ No newline at end of file From 5d9a66eece7ebaea70aec014bcb79630f975104e Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 30 Jan 2023 11:38:32 +0300 Subject: [PATCH 16/20] Delete test with EmbeddedKafka. --- clearing-parent/balance-service/pom.xml | 18 --- .../balance/config/KafkaTestConfig.java | 25 +++-- .../balance/config/KafkaTestConsumer.java | 41 ------- .../balance/service/EmbeddedKafkaTest.java | 104 ------------------ .../service/Sdf08ServiceKafkaTest.java | 69 ------------ 5 files changed, 16 insertions(+), 241 deletions(-) delete mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java delete mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java delete mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java diff --git a/clearing-parent/balance-service/pom.xml b/clearing-parent/balance-service/pom.xml index 5b4cd23de..d49af4c57 100644 --- a/clearing-parent/balance-service/pom.xml +++ b/clearing-parent/balance-service/pom.xml @@ -14,7 +14,6 @@ 17 17 - 3.0.1 @@ -57,23 +56,6 @@ assertj-core test - - org.springframework.boot - spring-boot-starter-test - test - - - - org.springframework.kafka - spring-kafka-test - 2.8.8 - test - - - org.springframework.kafka - spring-kafka - 2.8.8 - diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java index 256267d20..b56fef2b1 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java @@ -1,17 +1,24 @@ package ru.spcex.clearing.balance.config; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.clients.producer.MockProducer; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import ru.spcex.clearing.platform.messaging.serialization.JsonSerializer; @Configuration public class KafkaTestConfig { -// @Bean -// public MockConsumer createTestConsumer() { -// return new MockConsumer<>(OffsetResetStrategy.EARLIEST); -// } -// -// @Bean -// public Producer createTestProducer() { -// return new MockProducer<>(true, new StringSerializer(), new JsonSerializer()); -// } + @Bean + public MockConsumer createTestConsumer() { + return new MockConsumer<>(OffsetResetStrategy.EARLIEST); + } + + @Bean + public Producer createTestProducer() { + return new MockProducer<>(true, new StringSerializer(), new JsonSerializer()); + } } diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java deleted file mode 100644 index 502e8a50a..000000000 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConsumer.java +++ /dev/null @@ -1,41 +0,0 @@ -package ru.spcex.clearing.balance.config; - -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CountDownLatch; - -@Component -public class KafkaTestConsumer { - - public static final String TOPIC_GALB = "launcher-GALB"; - private static final Logger LOGGER = LoggerFactory.getLogger(KafkaTestConsumer.class); - private final String TOPIC_NAME = "com.madadipouya.kafka.user"; - private CountDownLatch latch = new CountDownLatch(1); - - private String payload; - - @KafkaListener(topics = TOPIC_GALB) - public void receive(ConsumerRecord consumerRecord) { - LOGGER.info("received payload='{}'", consumerRecord.toString()); - - payload = consumerRecord.toString(); - latch.countDown(); - } - - public CountDownLatch getLatch() { - return latch; - } - - public void resetLatch() { - latch = new CountDownLatch(1); - } - - public String getPayload() { - return payload; - } - -} diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java deleted file mode 100644 index 8c5b3dd79..000000000 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/EmbeddedKafkaTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package ru.spcex.clearing.balance.service; - -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.apache.kafka.clients.producer.Producer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.apache.kafka.common.serialization.StringDeserializer; -import org.apache.kafka.common.serialization.StringSerializer; -import org.junit.jupiter.api.*; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.kafka.core.DefaultKafkaConsumerFactory; -import org.springframework.kafka.core.DefaultKafkaProducerFactory; -import org.springframework.kafka.core.KafkaTemplate; -import org.springframework.kafka.listener.ContainerProperties; -import org.springframework.kafka.listener.KafkaMessageListenerContainer; -import org.springframework.kafka.listener.MessageListener; -import org.springframework.kafka.test.EmbeddedKafkaBroker; -import org.springframework.kafka.test.context.EmbeddedKafka; -import org.springframework.kafka.test.utils.ContainerTestUtils; -import org.springframework.kafka.test.utils.KafkaTestUtils; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import ru.spcex.clearing.balance.config.KafkaTestConsumer; - -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static ru.spcex.clearing.balance.config.KafkaTestConsumer.TOPIC_GALB; - -@EmbeddedKafka//(partitions = 1, brokerProperties = {"listeners=PLAINTEXT://localhost:9092", "port=9092"}) -@SpringBootTest(properties = "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}") -@ExtendWith(SpringExtension.class) -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class EmbeddedKafkaTest { - static { - Path path = Paths.get("src", "main", "resources"); - String currentPath = path.toAbsolutePath().toString(); - System.setProperty("spring.config.location", currentPath + File.separator); - } - - @Autowired - public KafkaTemplate template; - BlockingQueue> records; - KafkaMessageListenerContainer container; - @Autowired - private EmbeddedKafkaBroker embeddedKafkaBroker; - @Autowired - private KafkaTestConsumer consumer; - - @BeforeEach - void setup() { - consumer.resetLatch(); - } - - @BeforeAll - void setUp() { - Map configs = new HashMap<>(KafkaTestUtils.consumerProps("consumer", "false", embeddedKafkaBroker)); - DefaultKafkaConsumerFactory consumerFactory = new DefaultKafkaConsumerFactory<>(configs, new StringDeserializer(), new StringDeserializer()); - ContainerProperties containerProperties = new ContainerProperties(TOPIC_GALB); - container = new KafkaMessageListenerContainer<>(consumerFactory, containerProperties); - records = new LinkedBlockingQueue<>(); - container.setupMessageListener((MessageListener) records::add); - container.start(); - ContainerTestUtils.waitForAssignment(container, embeddedKafkaBroker.getPartitionsPerTopic()); - } - - @AfterAll - void tearDown() { - container.stop(); - } - - @Test - public void kafkaSetup_withTopic_ensureSendMessageIsReceived() throws Exception { - // Arrange - Map configs = new HashMap<>(KafkaTestUtils.producerProps(embeddedKafkaBroker)); - Producer producer = new DefaultKafkaProducerFactory<>(configs, new StringSerializer(), new StringSerializer()).createProducer(); - - String data = "Sending with default template"; - //Act - producer.send(new ProducerRecord<>(TOPIC_GALB, "my-aggregate-id", data)); -// producer.flush(); - -// template.send(TOPIC, data); - - // Assert - ConsumerRecord singleRecord = records.poll(10, TimeUnit.SECONDS); - boolean messageConsumed = consumer.getLatch() - .await(30, TimeUnit.SECONDS); - assertTrue(messageConsumed); - assertThat(consumer.getPayload(), containsString(data)); -// assertThat(singleRecord).isNotNull(); -// assertThat(singleRecord.key()).isEqualTo("my-aggregate-id"); -// assertThat(singleRecord.value()).isEqualTo("{\"event\":\"Test Event\"}"); - } -} \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java deleted file mode 100644 index bc17da0da..000000000 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceKafkaTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package ru.spcex.clearing.balance.service; - -import org.apache.kafka.clients.producer.Producer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.apache.kafka.common.serialization.StringSerializer; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.kafka.core.DefaultKafkaProducerFactory; -import org.springframework.kafka.core.KafkaTemplate; -import org.springframework.kafka.test.EmbeddedKafkaBroker; -import org.springframework.kafka.test.context.EmbeddedKafka; -import org.springframework.kafka.test.utils.KafkaTestUtils; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import ru.spcex.clearing.balance.config.KafkaTestConsumer; - -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static ru.spcex.clearing.balance.config.KafkaTestConsumer.TOPIC_GALB; - -@EmbeddedKafka//(partitions = 1, brokerProperties = {"listeners=PLAINTEXT://localhost:9092", "port=9092"}) -@SpringBootTest(properties = "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}") -@ExtendWith(SpringExtension.class) -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class Sdf08ServiceKafkaTest { - static { - Path path = Paths.get("src", "main", "resources"); - String currentPath = path.toAbsolutePath().toString(); - System.setProperty("spring.config.location", currentPath + File.separator); - } - - @Autowired - public KafkaTemplate template; - - @Autowired - private EmbeddedKafkaBroker embeddedKafkaBroker; - @Autowired - private KafkaTestConsumer consumer; - - @Test - public void newSDf08() throws Exception { - // Arrange - Map configs = new HashMap<>(KafkaTestUtils.producerProps(embeddedKafkaBroker)); - Producer producer = new DefaultKafkaProducerFactory<>(configs, new StringSerializer(), new StringSerializer()).createProducer(); - - - String data = "Sending with default template"; - //Act - producer.send(new ProducerRecord<>(TOPIC_GALB, "my-aggregate-id", data)); -// producer.flush(); -// template.send(TOPIC, data); - - // Assert - boolean messageConsumed = consumer.getLatch() - .await(10, TimeUnit.SECONDS); - assertTrue(messageConsumed); - assertThat(consumer.getPayload(), containsString(data)); - } -} \ No newline at end of file From b6fa8e7d792205fd9ba892be55683240872b033e Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 30 Jan 2023 13:20:15 +0300 Subject: [PATCH 17/20] =?UTF-8?q?imdg=20http://jira.mfd.msk:8088/browse/CL?= =?UTF-8?q?S-188=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BC?= =?UTF-8?q?=D0=B0=D0=BF=D1=83=20STrade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/meta/meta.xml | 2 +- .../classes/statics/data/misc/STrade.java | 189 ++++++++++++++++++ .../clearing/imdg/object/STradeMapStore.java | 94 +++++++++ .../structure/RunnableMapNamesForTesting.java | 1 + .../clearing/imdg/IMDGDistributedNames.java | 1 + 5 files changed, 286 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index f8f91c229..058667e6d 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1576,7 +1576,7 @@ - + diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java new file mode 100644 index 000000000..74e2f821d --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java @@ -0,0 +1,189 @@ +package ru.clearing.classes.statics.data.misc; + +import ru.clearing.classes.ConstSerializable; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +/** + * Сделки из Торговой системы + *

+ * DB table: S_TRADE + **/ +public class STrade extends SpcexObjectBase { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private Long trade_num; + private String sec_code; + private Instant trade_date_time; + private LocalDate settle_date; + private BigDecimal price; + private BigDecimal value; + private BigDecimal qty; + private BigDecimal accruedint; + private String firm_id; + private String client_code; + private BigDecimal exchange_commission; + private String class_code; + private String operation; + private String issue_account; + private String money_account; + private String trade_type; + private Long days_to_mat_date; + private String collateral; + private String settle_code; + + public Long getTrade_num() { + return trade_num; + } + + public void setTrade_num(Long value) { + this.trade_num = value; + } + + public String getSec_code() { + return sec_code; + } + + public void setSec_code(String value) { + this.sec_code = value; + } + + public Instant getTrade_date_time() { + return trade_date_time; + } + + public void setTrade_date_time(Instant value) { + this.trade_date_time = value; + } + + public LocalDate getSettle_date() { + return settle_date; + } + + public void setSettle_date(LocalDate value) { + this.settle_date = value; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal value) { + this.price = value; + } + + public BigDecimal getValue() { + return value; + } + + public void setValue(BigDecimal value) { + this.value = value; + } + + public BigDecimal getQty() { + return qty; + } + + public void setQty(BigDecimal value) { + this.qty = value; + } + + public BigDecimal getAccruedint() { + return accruedint; + } + + public void setAccruedint(BigDecimal value) { + this.accruedint = value; + } + + public String getFirm_id() { + return firm_id; + } + + public void setFirm_id(String value) { + this.firm_id = value; + } + + public String getClient_code() { + return client_code; + } + + public void setClient_code(String value) { + this.client_code = value; + } + + public BigDecimal getExchange_commission() { + return exchange_commission; + } + + public void setExchange_commission(BigDecimal value) { + this.exchange_commission = value; + } + + public String getClass_code() { + return class_code; + } + + public void setClass_code(String value) { + this.class_code = value; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String value) { + this.operation = value; + } + + public String getIssue_account() { + return issue_account; + } + + public void setIssue_account(String value) { + this.issue_account = value; + } + + public String getMoney_account() { + return money_account; + } + + public void setMoney_account(String value) { + this.money_account = value; + } + + public String getTrade_type() { + return trade_type; + } + + public void setTrade_type(String value) { + this.trade_type = value; + } + + public Long getDays_to_mat_date() { + return days_to_mat_date; + } + + public void setDays_to_mat_date(Long value) { + this.days_to_mat_date = value; + } + + public String getCollateral() { + return collateral; + } + + public void setCollateral(String value) { + this.collateral = value; + } + + public String getSettle_code() { + return settle_code; + } + + public void setSettle_code(String value) { + this.settle_code = value; + } +} diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java new file mode 100644 index 000000000..fcdc90465 --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java @@ -0,0 +1,94 @@ +package ru.spcex.clearing.imdg.object; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.misc.STrade; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.math.BigDecimal; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; + +@Component +public class STradeMapStore extends TemplateMapStore { + + public STradeMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_STrade; + } + + @Override + public String getTableName() { + return "S_TRADE"; + } + + @Override + public String[] getFields() { + return new String[]{ + "ID", "TRADE_NUM", "SEC_CODE", "TRADE_DATE_TIME", "SETTLE_DATE", "PRICE", "VALUE", "QTY", "ACCRUEDINT", + "FIRM_ID", "CLIENT_CODE", "EXCHANGE_COMMISSION", "CLASS_CODE", "OPERATION", "ISSUE_ACCOUNT", + "MONEY_ACCOUNT", "TRADE_TYPE", "DAYS_TO_MAT_DATE", "COLLATERAL", "SETTLE_CODE" + }; + } + + @Override + public STrade objectReader(ResultSet resultSet) throws SQLException { + STrade object = new STrade(); + object.setId(resultSet.getObject("ID", Long.class)); + object.setTrade_num(resultSet.getObject("TRADE_NUM", Long.class)); + object.setSec_code(resultSet.getObject("SEC_CODE", String.class)); + object.setTrade_date_time(getInstantFromTimestamp(resultSet, "TRADE_DATE_TIME")); + object.setSettle_date(resultSet.getObject("SETTLE_DATE", LocalDate.class)); + object.setPrice(resultSet.getObject("PRICE", BigDecimal.class)); + object.setValue(resultSet.getObject("VALUE", BigDecimal.class)); + object.setQty(resultSet.getObject("QTY", BigDecimal.class)); + object.setAccruedint(resultSet.getObject("ACCRUEDINT", BigDecimal.class)); + object.setFirm_id(resultSet.getObject("FIRM_ID", String.class)); + object.setClient_code(resultSet.getObject("CLIENT_CODE", String.class)); + object.setExchange_commission(resultSet.getObject("EXCHANGE_COMMISSION", BigDecimal.class)); + object.setClass_code(resultSet.getObject("CLASS_CODE", String.class)); + object.setOperation(resultSet.getObject("OPERATION", String.class)); + object.setIssue_account(resultSet.getObject("ISSUE_ACCOUNT", String.class)); + object.setMoney_account(resultSet.getObject("MONEY_ACCOUNT", String.class)); + object.setTrade_type(resultSet.getObject("TRADE_TYPE", String.class)); + object.setDays_to_mat_date(resultSet.getObject("DAYS_TO_MAT_DATE", Long.class)); + object.setCollateral(resultSet.getObject("COLLATERAL", String.class)); + object.setSettle_code(resultSet.getObject("SETTLE_CODE", String.class)); + return object; + } + + @Override + public Object[] objectToField(STrade object) { + Object[] args = new Object[]{ + object.getId(), + object.getTrade_num(), + object.getSec_code(), + TimeUtil.toDateFromInstant(object.getTrade_date_time()), + object.getSettle_date(), + object.getPrice(), + object.getValue(), + object.getQty(), + object.getAccruedint(), + object.getFirm_id(), + object.getClient_code(), + object.getExchange_commission(), + object.getClass_code(), + object.getOperation(), + object.getIssue_account(), + object.getMoney_account(), + object.getTrade_type(), + object.getDays_to_mat_date(), + object.getCollateral(), + object.getSettle_code() + }; + return args; + } + +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index 0ce9ebe55..91be28f0a 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -163,5 +163,6 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Session, Session.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserSettings, UserSettings.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_STrade, STrade.class)); } } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index f4773bb43..149c793b2 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -121,6 +121,7 @@ public final class IMDGDistributedNames { public static final String Map_ContractRegister = "Map_ContractRegister"; public static final String Map_OrderRegister = "Map_OrderRegister"; public static final String Map_VerificationResult = "Map_VerificationResult"; + public static final String Map_STrade = "Map_STrade"; public static final String MAP_SEQUENCE_NAME = "MAP_SEQUENCE_NAME"; From 855f1c0c81c4325a2162c55005979ad488e41821 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 30 Jan 2023 14:13:09 +0300 Subject: [PATCH 18/20] =?UTF-8?q?imdg=20CLS-188=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=B2=20STrade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/statics/data/misc/STrade.java | 130 +++++++++--------- .../clearing/imdg/object/STradeMapStore.java | 52 +++---- 2 files changed, 91 insertions(+), 91 deletions(-) diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java index 74e2f821d..f49c7b224 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrade.java @@ -15,56 +15,56 @@ import java.time.LocalDate; public class STrade extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private Long trade_num; - private String sec_code; - private Instant trade_date_time; - private LocalDate settle_date; + private Long tradeNum; + private String secCode; + private Instant tradeDateTime; + private LocalDate settleDate; private BigDecimal price; private BigDecimal value; private BigDecimal qty; private BigDecimal accruedint; - private String firm_id; - private String client_code; - private BigDecimal exchange_commission; - private String class_code; + private String firmId; + private String clientCode; + private BigDecimal exchangeCommission; + private String classCode; private String operation; - private String issue_account; - private String money_account; - private String trade_type; - private Long days_to_mat_date; + private String issueAccount; + private String moneyAccount; + private String tradeType; + private Long daysToMatDate; private String collateral; - private String settle_code; + private String settleCode; - public Long getTrade_num() { - return trade_num; + public Long getTradeNum() { + return tradeNum; } - public void setTrade_num(Long value) { - this.trade_num = value; + public void setTradeNum(Long value) { + this.tradeNum = value; } - public String getSec_code() { - return sec_code; + public String getSecCode() { + return secCode; } - public void setSec_code(String value) { - this.sec_code = value; + public void setSecCode(String value) { + this.secCode = value; } - public Instant getTrade_date_time() { - return trade_date_time; + public Instant getTradeDateTime() { + return tradeDateTime; } - public void setTrade_date_time(Instant value) { - this.trade_date_time = value; + public void setTradeDateTime(Instant value) { + this.tradeDateTime = value; } - public LocalDate getSettle_date() { - return settle_date; + public LocalDate getSettleDate() { + return settleDate; } - public void setSettle_date(LocalDate value) { - this.settle_date = value; + public void setSettleDate(LocalDate value) { + this.settleDate = value; } public BigDecimal getPrice() { @@ -99,36 +99,36 @@ public class STrade extends SpcexObjectBase { this.accruedint = value; } - public String getFirm_id() { - return firm_id; + public String getFirmId() { + return firmId; } - public void setFirm_id(String value) { - this.firm_id = value; + public void setFirmId(String value) { + this.firmId = value; } - public String getClient_code() { - return client_code; + public String getClientCode() { + return clientCode; } - public void setClient_code(String value) { - this.client_code = value; + public void setClientCode(String value) { + this.clientCode = value; } - public BigDecimal getExchange_commission() { - return exchange_commission; + public BigDecimal getExchangeCommission() { + return exchangeCommission; } - public void setExchange_commission(BigDecimal value) { - this.exchange_commission = value; + public void setExchangeCommission(BigDecimal value) { + this.exchangeCommission = value; } - public String getClass_code() { - return class_code; + public String getClassCode() { + return classCode; } - public void setClass_code(String value) { - this.class_code = value; + public void setClassCode(String value) { + this.classCode = value; } public String getOperation() { @@ -139,36 +139,36 @@ public class STrade extends SpcexObjectBase { this.operation = value; } - public String getIssue_account() { - return issue_account; + public String getIssueAccount() { + return issueAccount; } - public void setIssue_account(String value) { - this.issue_account = value; + public void setIssueAccount(String value) { + this.issueAccount = value; } - public String getMoney_account() { - return money_account; + public String getMoneyAccount() { + return moneyAccount; } - public void setMoney_account(String value) { - this.money_account = value; + public void setMoneyAccount(String value) { + this.moneyAccount = value; } - public String getTrade_type() { - return trade_type; + public String getTradeType() { + return tradeType; } - public void setTrade_type(String value) { - this.trade_type = value; + public void setTradeType(String value) { + this.tradeType = value; } - public Long getDays_to_mat_date() { - return days_to_mat_date; + public Long getDaysToMatDate() { + return daysToMatDate; } - public void setDays_to_mat_date(Long value) { - this.days_to_mat_date = value; + public void setDaysToMatDate(Long value) { + this.daysToMatDate = value; } public String getCollateral() { @@ -179,11 +179,11 @@ public class STrade extends SpcexObjectBase { this.collateral = value; } - public String getSettle_code() { - return settle_code; + public String getSettleCode() { + return settleCode; } - public void setSettle_code(String value) { - this.settle_code = value; + public void setSettleCode(String value) { + this.settleCode = value; } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java index fcdc90465..a906773e5 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/STradeMapStore.java @@ -42,25 +42,25 @@ public class STradeMapStore extends TemplateMapStore { public STrade objectReader(ResultSet resultSet) throws SQLException { STrade object = new STrade(); object.setId(resultSet.getObject("ID", Long.class)); - object.setTrade_num(resultSet.getObject("TRADE_NUM", Long.class)); - object.setSec_code(resultSet.getObject("SEC_CODE", String.class)); - object.setTrade_date_time(getInstantFromTimestamp(resultSet, "TRADE_DATE_TIME")); - object.setSettle_date(resultSet.getObject("SETTLE_DATE", LocalDate.class)); + object.setTradeNum(resultSet.getObject("TRADE_NUM", Long.class)); + object.setSecCode(resultSet.getObject("SEC_CODE", String.class)); + object.setTradeDateTime(getInstantFromTimestamp(resultSet, "TRADE_DATE_TIME")); + object.setSettleDate(resultSet.getObject("SETTLE_DATE", LocalDate.class)); object.setPrice(resultSet.getObject("PRICE", BigDecimal.class)); object.setValue(resultSet.getObject("VALUE", BigDecimal.class)); object.setQty(resultSet.getObject("QTY", BigDecimal.class)); object.setAccruedint(resultSet.getObject("ACCRUEDINT", BigDecimal.class)); - object.setFirm_id(resultSet.getObject("FIRM_ID", String.class)); - object.setClient_code(resultSet.getObject("CLIENT_CODE", String.class)); - object.setExchange_commission(resultSet.getObject("EXCHANGE_COMMISSION", BigDecimal.class)); - object.setClass_code(resultSet.getObject("CLASS_CODE", String.class)); + object.setFirmId(resultSet.getObject("FIRM_ID", String.class)); + object.setClientCode(resultSet.getObject("CLIENT_CODE", String.class)); + object.setExchangeCommission(resultSet.getObject("EXCHANGE_COMMISSION", BigDecimal.class)); + object.setClassCode(resultSet.getObject("CLASS_CODE", String.class)); object.setOperation(resultSet.getObject("OPERATION", String.class)); - object.setIssue_account(resultSet.getObject("ISSUE_ACCOUNT", String.class)); - object.setMoney_account(resultSet.getObject("MONEY_ACCOUNT", String.class)); - object.setTrade_type(resultSet.getObject("TRADE_TYPE", String.class)); - object.setDays_to_mat_date(resultSet.getObject("DAYS_TO_MAT_DATE", Long.class)); + object.setIssueAccount(resultSet.getObject("ISSUE_ACCOUNT", String.class)); + object.setMoneyAccount(resultSet.getObject("MONEY_ACCOUNT", String.class)); + object.setTradeType(resultSet.getObject("TRADE_TYPE", String.class)); + object.setDaysToMatDate(resultSet.getObject("DAYS_TO_MAT_DATE", Long.class)); object.setCollateral(resultSet.getObject("COLLATERAL", String.class)); - object.setSettle_code(resultSet.getObject("SETTLE_CODE", String.class)); + object.setSettleCode(resultSet.getObject("SETTLE_CODE", String.class)); return object; } @@ -68,25 +68,25 @@ public class STradeMapStore extends TemplateMapStore { public Object[] objectToField(STrade object) { Object[] args = new Object[]{ object.getId(), - object.getTrade_num(), - object.getSec_code(), - TimeUtil.toDateFromInstant(object.getTrade_date_time()), - object.getSettle_date(), + object.getTradeNum(), + object.getSecCode(), + TimeUtil.toDateFromInstant(object.getTradeDateTime()), + object.getSettleDate(), object.getPrice(), object.getValue(), object.getQty(), object.getAccruedint(), - object.getFirm_id(), - object.getClient_code(), - object.getExchange_commission(), - object.getClass_code(), + object.getFirmId(), + object.getClientCode(), + object.getExchangeCommission(), + object.getClassCode(), object.getOperation(), - object.getIssue_account(), - object.getMoney_account(), - object.getTrade_type(), - object.getDays_to_mat_date(), + object.getIssueAccount(), + object.getMoneyAccount(), + object.getTradeType(), + object.getDaysToMatDate(), object.getCollateral(), - object.getSettle_code() + object.getSettleCode() }; return args; } From ca35276db62aeceac6eed0c56295adf8963c79e0 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 30 Jan 2023 16:36:02 +0300 Subject: [PATCH 19/20] Adding mapstor for testing --- .../liabilities/LiabilitiesClaimsAssets.java | 26 ++-- .../LiabilitiesClaimsAssetsMapStore.java | 16 +-- .../structure/RunnableMapNamesForTesting.java | 38 +++++- .../imdg/src/test/resources/ddl.sql | 111 +----------------- 4 files changed, 56 insertions(+), 135 deletions(-) diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/liabilities/LiabilitiesClaimsAssets.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/liabilities/LiabilitiesClaimsAssets.java index 758bebfbb..a7643a8ba 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/liabilities/LiabilitiesClaimsAssets.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/liabilities/LiabilitiesClaimsAssets.java @@ -4,22 +4,22 @@ import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDate; public class LiabilitiesClaimsAssets extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long companyId; - private Instant clearingDate; + private LocalDate clearingDate; private Long accountId; private String accountType; private String account; private BigDecimal liabilitiesQuantity; private BigDecimal claimsQuantity; private String currency; - private Instant settlementDate; - private Instant tradingDate; - private Instant refundDate; + private LocalDate settlementDate; + private LocalDate tradingDate; + private LocalDate refundDate; private BigDecimal price; private Long securityId; private String tradingCode; @@ -42,11 +42,11 @@ public class LiabilitiesClaimsAssets extends BusinessObject { this.companyId = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } @@ -98,27 +98,27 @@ public class LiabilitiesClaimsAssets extends BusinessObject { this.currency = value; } - public Instant getSettlementDate() { + public LocalDate getSettlementDate() { return settlementDate; } - public void setSettlementDate(Instant value) { + public void setSettlementDate(LocalDate value) { this.settlementDate = value; } - public Instant getTradingDate() { + public LocalDate getTradingDate() { return tradingDate; } - public void setTradingDate(Instant value) { + public void setTradingDate(LocalDate value) { this.tradingDate = value; } - public Instant getRefundDate() { + public LocalDate getRefundDate() { return refundDate; } - public void setRefundDate(Instant value) { + public void setRefundDate(LocalDate value) { this.refundDate = value; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java index c940295bb..c9b1fc27f 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java @@ -45,16 +45,16 @@ public class LiabilitiesClaimsAssetsMapStore extends TemplateMapStore(IMDGDistributedNames.Map_ErrorText, ErrorText.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_LiabilitiesClaimsMoney, LiabilitiesClaimsMoney.class, + new SettingOperation("setClaimsAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("04.92")}), + new SettingOperation("setLiabilitiesAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("06.26")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Listing, Listing.class, new SettingOperation("setLotSize", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("21.11")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ManagementJournal, ManagementJournal.class)); @@ -78,11 +85,6 @@ public class RunnableMapNamesForTesting { new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class)); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_VerificationResult, VerificationResult.class, - new SettingOperation("setDiffSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("13.22")}), - new SettingOperation("setInSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("14.22")}), - new SettingOperation("setOutExtSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("15.22")}), - new SettingOperation("setOutIntSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("19.22")}))); //dictionary dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_AccountStatusDictionary, AccountStatusDictionary.class)); @@ -128,12 +130,26 @@ public class RunnableMapNamesForTesting { //object businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountRouting, AccountRouting.class)); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AdmittedDealRegister, AdmittedDealRegister.class, +// new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("19.12")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_BankAccount, BankAccount.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearMemberRegister, ClearMemberRegister.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Contact, Contact.class)); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ContractRegister, ContractRegister.class)); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CoveredDealRegister, CoveredDealRegister.class, +// new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("11.11")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Currency, Currency.class)); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_DealRegister, DealRegister.class, +//// new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("11.11")}))); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class, +// new SettingOperation("setFirstLegAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("03.22")}), +// new SettingOperation("setSecondLegAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("03.33")}), +// new SettingOperation("setInterestAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("04.22")}), +// new SettingOperation("setLots", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("05.22")}), +// new SettingOperation("setQuantity", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("09.22")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InDocumentJournal, InDocumentJournal.class, new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("22.12")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class)); @@ -141,11 +157,13 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Notification, Notification.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OrderRegister, OrderRegister.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("28.28")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); +// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ReportRegister, ReportRegister.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class)); @@ -161,8 +179,16 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf17, SDf17.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf18, SDf18.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Session, Session.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_STrade, STrade.class, + new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.92")}), + new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("24.92")}), + new SettingOperation("setExchange_commission", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("26.26")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserSettings, UserSettings.class)); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_STrade, STrade.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_VerificationResult, VerificationResult.class, + new SettingOperation("setDiffSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("13.22")}), + new SettingOperation("setInSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("14.22")}), + new SettingOperation("setOutExtSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("15.22")}), + new SettingOperation("setOutIntSum", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("19.22")}))); } } diff --git a/clearing-parent/imdg/src/test/resources/ddl.sql b/clearing-parent/imdg/src/test/resources/ddl.sql index 3c8b20210..20af99fb4 100644 --- a/clearing-parent/imdg/src/test/resources/ddl.sql +++ b/clearing-parent/imdg/src/test/resources/ddl.sql @@ -1,4 +1,4 @@ --- DB version: 2.4.4.0 +-- DB version: 2.4.0.7 /* Dictionaries */ -- chargeDirection - Направление начисления комиссии @@ -1532,7 +1532,7 @@ COMMENT ON COLUMN ACCOUNT_BALANCE.COMPANY_ID IS 'Наименование уча COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_ID IS 'Наименование счета (linked to account)'; -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT IS 'Наименование счета'; @@ -1586,7 +1586,7 @@ COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.COMPANY_ID IS 'Наименовани COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_ID IS 'Наименование счета (linked to account)'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT IS 'Наименование счета'; @@ -3414,110 +3414,5 @@ COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.USER_ID IS 'Наименован /* views */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Data types \ No newline at end of file From 65086fa8af34c96ff4ce4b669046dbe802f1753f Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 30 Jan 2023 16:51:34 +0300 Subject: [PATCH 20/20] Adding mapstor for testing --- .../clearing/imdg/structure/RunnableMapNamesForTesting.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index da6b8990a..d53944c78 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -20,6 +20,7 @@ import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.profile.Contact; import ru.clearing.classes.statics.data.profile.ProfileDocument; import ru.clearing.classes.statics.data.register.OrderRegister; +import ru.clearing.classes.statics.data.register.ReportRegister; import ru.clearing.classes.statics.data.scheduler.*; import ru.clearing.classes.statics.data.sdf.*; import ru.clearing.classes.statics.data.security.Security; @@ -163,7 +164,7 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); -// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ReportRegister, ReportRegister.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ReportRegister, ReportRegister.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class));