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/balance-service/pom.xml b/clearing-parent/balance-service/pom.xml index 4414833e5..d49af4c57 100644 --- a/clearing-parent/balance-service/pom.xml +++ b/clearing-parent/balance-service/pom.xml @@ -57,7 +57,6 @@ test - 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 29feac545..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,23 +1,19 @@ 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; 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 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/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index 3e027c8c6..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 @@ -11,20 +11,20 @@ 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; 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; -import javax.annotation.PostConstruct; 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; @@ -33,11 +33,14 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields @ContextConfiguration(classes = { AccountBalanceService.class, Sdf01Executor.class, + Sdf08Service.class, Sdf09Executor.class, Sdf16Executor.class, + StatementService.class, LoggingService.class, MessagesConfig.class, ValidationConfig.class, + SdfExecutorsConfig.class, BalanceImdgTestConfig.class, KafkaSenderConfig.class, KafkaTestConfig.class}) @@ -45,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"); protected final Long accountIdNew = 10L; protected final Long addresseeIdNew = 2L; protected final String deal = "111111111"; @@ -59,7 +60,9 @@ 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; protected ImdgHazelcast sdf17Imdg; protected ImdgHazelcast accountBalanceImdg; @@ -67,14 +70,15 @@ public abstract class AbstractServiceTest { @Qualifier("hazelcastServiceTest") private ImdgProvider hazelcast; - @PostConstruct void init() { hazelcast.waitAvailable(); 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); 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/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 c1692a862..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 @@ -27,19 +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 static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); 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(); } @@ -61,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); @@ -104,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); @@ -118,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); @@ -176,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); @@ -207,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; 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..afb4fd05d --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -0,0 +1,89 @@ +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.clearing.classes.statics.data.sdf.SDf08; +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.service.RequestInfo; +import ru.spcex.clearing.platform.messaging.service.Status; +import ru.spcex.platform.enumeration.Task; + +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.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 String TOPIC = Task.getAllBalance.topic(); + private static final int PARTITION = 1; + private static final Long limit = 300L; + @Autowired + Sdf08Service sdf08Service; + @Autowired + private MockConsumer mockConsumer; + + @PostConstruct + void init() { + super.init(); + } + + /** + * {@link Sdf08Service}
+ * Тест проверяет генерацию сущностей {@link RequestInfo}
+ * Входные параметры:
+ * {@link BaseRequest} - new BaseRequest<>()
+ */ + @Test + void newSDf08() throws InterruptedException { + 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))); + 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; + + 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 new file mode 100644 index 000000000..129e2178b --- /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, 20 * 1000); + synchronized (checkEventHappened) { + while (!checkEventHappened.get()) { + checkEventHappened.wait(100); + } + } + //preparing hazelcastImdgProvider for next test + iMap.removeEntryListener(listenerAdding); + iMap.removeEntryListener(listenerUpdating); + iMap.removeEntryListener(listenerRemoving); + } +} 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/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..f49c7b224 --- /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 tradeNum; + private String secCode; + private Instant tradeDateTime; + private LocalDate settleDate; + private BigDecimal price; + private BigDecimal value; + private BigDecimal qty; + private BigDecimal accruedint; + private String firmId; + private String clientCode; + private BigDecimal exchangeCommission; + private String classCode; + private String operation; + private String issueAccount; + private String moneyAccount; + private String tradeType; + private Long daysToMatDate; + private String collateral; + private String settleCode; + + public Long getTradeNum() { + return tradeNum; + } + + public void setTradeNum(Long value) { + this.tradeNum = value; + } + + public String getSecCode() { + return secCode; + } + + public void setSecCode(String value) { + this.secCode = value; + } + + public Instant getTradeDateTime() { + return tradeDateTime; + } + + public void setTradeDateTime(Instant value) { + this.tradeDateTime = value; + } + + public LocalDate getSettleDate() { + return settleDate; + } + + public void setSettleDate(LocalDate value) { + this.settleDate = 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 getFirmId() { + return firmId; + } + + public void setFirmId(String value) { + this.firmId = value; + } + + public String getClientCode() { + return clientCode; + } + + public void setClientCode(String value) { + this.clientCode = value; + } + + public BigDecimal getExchangeCommission() { + return exchangeCommission; + } + + public void setExchangeCommission(BigDecimal value) { + this.exchangeCommission = value; + } + + public String getClassCode() { + return classCode; + } + + public void setClassCode(String value) { + this.classCode = value; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String value) { + this.operation = value; + } + + public String getIssueAccount() { + return issueAccount; + } + + public void setIssueAccount(String value) { + this.issueAccount = value; + } + + public String getMoneyAccount() { + return moneyAccount; + } + + public void setMoneyAccount(String value) { + this.moneyAccount = value; + } + + public String getTradeType() { + return tradeType; + } + + public void setTradeType(String value) { + this.tradeType = value; + } + + public Long getDaysToMatDate() { + return daysToMatDate; + } + + public void setDaysToMatDate(Long value) { + this.daysToMatDate = value; + } + + public String getCollateral() { + return collateral; + } + + public void setCollateral(String value) { + this.collateral = value; + } + + public String getSettleCode() { + return settleCode; + } + + public void setSettleCode(String value) { + this.settleCode = value; + } +} 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/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 { + + 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.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.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.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.setSettleCode(resultSet.getObject("SETTLE_CODE", String.class)); + return object; + } + + @Override + public Object[] objectToField(STrade object) { + Object[] args = new Object[]{ + object.getId(), + object.getTradeNum(), + object.getSecCode(), + TimeUtil.toDateFromInstant(object.getTradeDateTime()), + object.getSettleDate(), + object.getPrice(), + object.getValue(), + object.getQty(), + object.getAccruedint(), + object.getFirmId(), + object.getClientCode(), + object.getExchangeCommission(), + object.getClassCode(), + object.getOperation(), + object.getIssueAccount(), + object.getMoneyAccount(), + object.getTradeType(), + object.getDaysToMatDate(), + object.getCollateral(), + object.getSettleCode() + }; + 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..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 @@ -12,11 +12,15 @@ import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; import ru.clearing.classes.statics.data.journal.InDocumentJournal; import ru.clearing.classes.statics.data.journal.ManagementJournal; import ru.clearing.classes.statics.data.journal.OutDocumentJournal; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; +import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney; import ru.clearing.classes.statics.data.messages.ErrorText; import ru.clearing.classes.statics.data.misc.*; 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; @@ -66,6 +70,10 @@ public class RunnableMapNamesForTesting { usingIgnoringFieldsComparator("profile.clearingCode", "profile.fullName", "profile.registrationCode", "profile.shortName", "profile.tradingCode"))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(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 +86,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 +131,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 +158,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,7 +180,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_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 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; 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/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/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/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/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/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/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/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()); 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..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 @@ -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"; @@ -120,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"; 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..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 @@ -56,4 +56,13 @@ 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"; + + 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/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/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; + } +} 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; + } +} 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; + } +} 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; + } +} 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; 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; + } +} 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; + } +}