Merge remote-tracking branch 'origin/dev' into psemenkov

This commit is contained in:
psemenkov 2023-01-30 17:01:21 +03:00
commit 6cb4ad0f65
39 changed files with 2417 additions and 181 deletions

View file

@ -1576,7 +1576,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf12Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf18>
<s_trade name="Сделки из Торговой системы" class="" table="s_trade">
<s_trade name="Сделки из Торговой системы" class="ru.clearing.classes.statics.data.misc.STrade" table="s_trade">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<trade_num type="1" name="Номер сделки" shortname="Номер сделки" searchable="true" sortable="true"/>
<sec_code type="2" length="255" name="Код ценной бумаги" shortname="Код ценной бумаги" searchable="true" sortable="true"/>

View file

@ -57,7 +57,6 @@
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>

View file

@ -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
balance-service.kafka-producer.buffer-memory=33554432
#for testing
spring.kafka.consumer.group-id=dev-group-balance-service

View file

@ -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<String, Object> createTestConsumer() {
public MockConsumer<String, Object> createTestConsumer() {
return new MockConsumer<>(OffsetResetStrategy.EARLIEST);
}

View file

@ -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<AccountBalance> ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("created", "updated", "clearingDate", "id");
protected static final MatcherFactory.Matcher<Result> RESULT_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate", "generationId");
protected static final MatcherFactory.Matcher<Statement> 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<Long, CompanySymbols> companySymbolsMap;
protected IMap<Long, Account> accountMap;
protected ImdgHazelcast<Statement> statementImdg;
protected ImdgHazelcast<RequestInfo> requestInfoImdg;
protected ImdgHazelcast<SDf02> sdf02Imdg;
protected ImdgHazelcast<SDf08> sdf08Imdg;
protected ImdgHazelcast<SDf10> sdf10Imdg;
protected ImdgHazelcast<SDf17> sdf17Imdg;
protected ImdgHazelcast<AccountBalance> accountBalanceImdg;
@ -67,14 +70,15 @@ public abstract class AbstractServiceTest {
@Qualifier("hazelcastServiceTest")
private ImdgProvider hazelcast;
@PostConstruct
void init() {
hazelcast.waitAvailable();
ImdgHazelcast<Company> companyImdg = (ImdgHazelcast<Company>) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class);
ImdgHazelcast<CompanySymbols> companySymbolsImdg = (ImdgHazelcast<CompanySymbols>) hazelcast.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
ImdgHazelcast<Account> accountImdg = (ImdgHazelcast<Account>) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class);
requestInfoImdg = (ImdgHazelcast<RequestInfo>) hazelcast.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class);
statementImdg = (ImdgHazelcast<Statement>) hazelcast.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
sdf02Imdg = (ImdgHazelcast<SDf02>) hazelcast.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
sdf08Imdg = (ImdgHazelcast<SDf08>) hazelcast.getImdg(IMDGDistributedNames.Map_SDf08, SDf08.class);
sdf10Imdg = (ImdgHazelcast<SDf10>) hazelcast.getImdg(IMDGDistributedNames.Map_SDf10, SDf10.class);
sdf17Imdg = (ImdgHazelcast<SDf17>) hazelcast.getImdg(IMDGDistributedNames.Map_SDf17, SDf17.class);
accountBalanceImdg = (ImdgHazelcast<AccountBalance>) hazelcast.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);

View file

@ -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)}<br>
* Тест проверяет генерацию сущности {@link AccountResult}<br>

View file

@ -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<SDf02> 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;

View file

@ -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<SDf08> 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<String, Object> mockConsumer;
@PostConstruct
void init() {
super.init();
}
/**
* {@link Sdf08Service}<br>
* Тест проверяет генерацию сущностей {@link RequestInfo}<br>
* Входные параметры:<br>
* {@link BaseRequest} - new BaseRequest<>()<br>
*/
@Test
void newSDf08() throws InterruptedException {
BaseRequest<Object> 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<Long, SDf08> sdf08Map = sdf08Imdg.getMap();
IMap<Long, RequestInfo> 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<TopicPartition, Long> 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<RequestInfo> 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);
}
}

View file

@ -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<SDf10> 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

View file

@ -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<SDf17> 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

View file

@ -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<SDf08> 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<String, Object> mockConsumer;
@PostConstruct
void init() {
super.init();
}
/**
* {@link StatementService}<br>
* Тест проверяет генерацию сущностей {@link RequestInfo}<br>
* Входные параметры:<br>
* {@link StatementRequest}: new StatementRequest()<br>
* {@link StatementRequest#table} - SDF_01<br>
*/
@Test
void process() throws InterruptedException {
StatementRequest statementRequest = new StatementRequest();
statementRequest.setGroupId(groupId);
statementRequest.setTable(SDF_01);
BaseRequest<StatementRequest> 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<Long, RequestInfo> 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<TopicPartition, Long> 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<RequestInfo> 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);
}
}

View file

@ -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<T> {
private final IMap<Long, T> iMap;
private final String listenerAdding;
private final String listenerUpdating;
private final String listenerRemoving;
private final AtomicBoolean checkEventHappened = new AtomicBoolean(false);
public ImapEvent(IMap<Long, T> iMap) {
this.iMap = iMap;
listenerAdding = iMap.addEntryListener((EntryAddedListener<Long, T>) entryEvent -> {
synchronized (checkEventHappened) {
checkEventHappened.set(true);
checkEventHappened.notify();
}
}, false);
listenerUpdating = iMap.addEntryListener((EntryUpdatedListener<Long, T>) entryEvent -> {
synchronized (checkEventHappened) {
checkEventHappened.set(true);
checkEventHappened.notify();
}
}, false);
listenerRemoving = iMap.addEntryListener((EntryRemovedListener<Long, T>) 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);
}
}

View file

@ -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;
}

View file

@ -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;
/**
* Сделки из Торговой системы
* <p>
* 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;
}
}

View file

@ -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;
}
}

View file

@ -45,16 +45,16 @@ public class LiabilitiesClaimsAssetsMapStore extends TemplateMapStore<Liabilitie
object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE"));
object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class));
object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class));
object.setAccount(resultSet.getObject("ACCOUNT", String.class));
object.setLiabilitiesQuantity(resultSet.getObject("LIABILITIES_QUANTITY", BigDecimal.class));
object.setClaimsQuantity(resultSet.getObject("CLAIMS_QUANTITY", BigDecimal.class));
object.setCurrency(resultSet.getObject("CURRENCY", String.class));
object.setSettlementDate(getInstantFromTimestamp(resultSet, "SETTLEMENT_DATE"));
object.setTradingDate(getInstantFromTimestamp(resultSet, "TRADING_DATE"));
object.setRefundDate(getInstantFromTimestamp(resultSet, "REFUND_DATE"));
object.setSettlementDate(getLocalDateFromSqlDate(resultSet, "SETTLEMENT_DATE"));
object.setTradingDate(getLocalDateFromSqlDate(resultSet, "TRADING_DATE"));
object.setRefundDate(getLocalDateFromSqlDate(resultSet, "REFUND_DATE"));
object.setPrice(resultSet.getObject("PRICE", BigDecimal.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
object.setTradingCode(resultSet.getObject("TRADING_CODE", String.class));
@ -78,16 +78,16 @@ public class LiabilitiesClaimsAssetsMapStore extends TemplateMapStore<Liabilitie
object.getCompanyId(),
TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromInstant(object.getClearingDate()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getAccountId(),
object.getAccountType(),
object.getAccount(),
object.getLiabilitiesQuantity(),
object.getClaimsQuantity(),
object.getCurrency(),
TimeUtil.toDateFromInstant(object.getSettlementDate()),
TimeUtil.toDateFromInstant(object.getTradingDate()),
TimeUtil.toDateFromInstant(object.getRefundDate()),
TimeUtil.toDateFromLocalDate(object.getSettlementDate()),
TimeUtil.toDateFromLocalDate(object.getTradingDate()),
TimeUtil.toDateFromLocalDate(object.getRefundDate()),
object.getPrice(),
object.getSecurityId(),
object.getTradingCode(),

View file

@ -0,0 +1,94 @@
package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.misc.STrade;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@Component
public class STradeMapStore extends TemplateMapStore<STrade> {
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;
}
}

View file

@ -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")})));
}
}

View file

@ -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

View file

@ -15,16 +15,12 @@
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>ru.spcex.platform</groupId>
<artifactId>platform-messaging</artifactId>
</dependency>
<dependency>
<groupId>ru.spcex.platform</groupId>
<artifactId>platform-enum</artifactId>
</dependency>
<dependency>
<groupId>ru.spcex.platform</groupId>
<artifactId>platform-imdg-api-hazelcast-impl</artifactId>
@ -37,6 +33,15 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View file

@ -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;

View file

@ -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<AdmittedDealRegister> admittedDealRegisterMap;
@Autowired
public AdmittedDealRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<AdmittedDealRegisterNewRequest> 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());
}
}

View file

@ -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<BalanceRegister> balanceRegisterMap;
@Autowired
public BalanceRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<BalanceRegisterNewRequest> 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());
}
}

View file

@ -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<ClearMemberRegisterChange> clearMemberRegisterChangeMap;
@Autowired
public ClearMemberRegisterChangeService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<ClearMemberRegisterChangeNewRequest> 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());
}
}

View file

@ -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<ClearMemberRegister> clearMemberRegisterMap;
@Autowired
public ClearMemberRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<ClearMemberRegisterNewRequest> 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());
}
}

View file

@ -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<ContractRegister> contractRegisterMap;
@Autowired
public ContractRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<ContractRegisterNewRequest> 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());
}
}

View file

@ -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<OrderRegister> orderRegisterMap;
@Autowired
public OrderRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<OrderRegisterNewRequest> 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());
}
}

View file

@ -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<UncoveredDealRegister> uncoveredDealRegisterMap;
@Autowired
public UncoveredDealRegisterService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<UncoveredDealRegisterNewRequest> 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());
}
}

View file

@ -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());

View file

@ -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";

View file

@ -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";
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -9,7 +9,6 @@ import java.time.LocalDate;
public class CoveredDealRegisterNewRequest {
@JsonProperty
public Long executionId;

View file

@ -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;
}
}

View file

@ -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;
}
}