getLines();
/**
- * Название отчета, используется для формирования имени отчета
+ * Название отчета, используется для формирования имени отчета (без указания формата)
*
* @param params Параметры формирования отчета
*/
@@ -67,15 +67,14 @@ public abstract class CSVReportBuilder {
CSVWriterBuilder csvWriterBuilder = new CSVWriterBuilder(writer)
.withLineEnd("\n")
.withSeparator(',')
- .withQuoteChar('\'')
- .withEscapeChar('\"');
+ .withQuoteChar('\"');
return csvWriterBuilder.build();
}
public File createReport(P params, File outFolder) {
assert outFolder != null && outFolder.isDirectory();
- File reportFile = new File(outFolder, normalizeFilenameForOS(getReportFilename(params)));
+ File reportFile = new File(outFolder, normalizeFilenameForOS(getReportFilename(params) + ".csv"));
collect(params);
String[] headers = getHeaders();
@@ -85,11 +84,11 @@ public abstract class CSVReportBuilder
{
assert lines != null;
try (ICSVWriter csvWriter = createCsvWriter(reportFile)) {
- csvWriter.writeNext(headers);
+ csvWriter.writeNext(headers, false);
csvWriter.writeAll(lines, true);
} catch (IOException e) {
- // todo check it
- e.printStackTrace();
+ log.error("Can't create report", e);
+ return null;
}
return reportFile;
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java
index f84070ab7..e7e6d7376 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java
@@ -2,8 +2,6 @@ package ru.spcex.clearing.reports.reports;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
import java.time.LocalDate;
@@ -15,12 +13,12 @@ public abstract class ReportWithPeriod extends AbstractReport {
@XStreamAsAttribute
@XStreamAlias("startDate")
- @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
+// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
protected LocalDate startDate;
@XStreamAsAttribute
@XStreamAlias("endDate")
- @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
+// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
protected LocalDate endDate;
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java
index bc60bfb15..8c505c261 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java
@@ -18,7 +18,8 @@ import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.math.RoundingMode;
-import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -35,7 +36,7 @@ public abstract class LiabilitiesClaimsReportBuilder
extends CSVReportBuilder
protected final Imdg tradingClearingRegistryImdg;
protected final String[] headers = {
- "id", "doc_date", "doc_time", "doc_type", "clearingHouse", "firmId", "firName", "session_id",
+ "id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "session_id",
"clearing_date", "clearing_time", "trdAccId", "account", "depo_account", "currency", "tr_id", "securityId",
"tr_buySell", "tr_date", "tr_execDate", "exec_status", "repaym_date", "tr_price", "nominal", "lot_value",
"tr_lot", "tr_quantity", "tr_value", "tr_accruedint", "accruedint", "tr_clrComm", "tr_exhComm", "cash_liability",
@@ -83,7 +84,9 @@ public abstract class LiabilitiesClaimsReportBuilder extends CSVReportBuilder
Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L);
String clearingHouse = clearingHouseCompany.getFullName();
- Instant now = Instant.now();
+ LocalDate nowDate = LocalDate.now();
+ LocalTime nowTime = LocalTime.now();
+
lines = new ArrayList<>(executions.size());
for (ExecutionCommon execution : executions) {
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
@@ -102,8 +105,8 @@ public abstract class LiabilitiesClaimsReportBuilder
extends CSVReportBuilder
);
String id = String.valueOf(execution.getId());
- String docDate = dateFormatter.format(now);
- String docTime = timeFormatter.format(now);
+ String docDate = dateFormatter.format(nowDate);
+ String docTime = timeFormatter.format(nowTime);
String docName = "Отчет об обязательствах/требованиях Участника клиринга";
String docType = "KS_FIRMID_LIABILITIES";
String firmId = String.valueOf(execution.getCompanyId());
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java
index f90e713cc..7f985a9a5 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java
@@ -6,7 +6,7 @@ import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
-import java.time.Instant;
+import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Map;
@@ -31,7 +31,9 @@ public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaims
@Override
protected String getReportFilename(SessionIdParam params) {
- return "operational_liabilities_claims.%s".formatted(Instant.now());
+ return "operational_liabilities_claims.%s".formatted(
+ dateTimeFormatter.format(LocalDateTime.now())
+ );
}
@Override
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java
index 21034018e..c10a38e33 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCIN.java
@@ -2,11 +2,8 @@ package ru.spcex.clearing.reports.reports.bt.bt_13;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.ReportId;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -22,7 +19,7 @@ public class ReportDOCIN extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("date")
- @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
+// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private final LocalDate date;
/**
@@ -30,7 +27,7 @@ public class ReportDOCIN extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("time")
- @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
+// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
private final LocalTime time;
@XStreamAlias("rows")
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java
index 587f78796..be4037989 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_13/ReportDOCOUT.java
@@ -2,11 +2,8 @@ package ru.spcex.clearing.reports.reports.bt.bt_13;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.ReportId;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -22,7 +19,7 @@ public class ReportDOCOUT extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("date")
- @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
+// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private final LocalDate date;
/**
@@ -30,7 +27,7 @@ public class ReportDOCOUT extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("time")
- @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
+// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
private final LocalTime time;
@XStreamAlias("rows")
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java
index f58b05e20..32d9cad93 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt/bt_16_5/ReportINACCNT.java
@@ -2,11 +2,8 @@ package ru.spcex.clearing.reports.reports.bt.bt_16_5;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.ReportId;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
-import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -26,7 +23,7 @@ public class ReportINACCNT extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("date")
- @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
+// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private final LocalDate date;
/**
@@ -34,7 +31,7 @@ public class ReportINACCNT extends AbstractReport {
*/
@XStreamAsAttribute
@XStreamAlias("time")
- @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
+// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
private final LocalTime time;
@XStreamAlias("rows")
diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java
index 4fd644a5d..084c20422 100644
--- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java
+++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java
@@ -18,11 +18,10 @@ import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
import ru.spcex.clearing.reports.reports.*;
import ru.spcex.clearing.util.security.UserRoleVerification;
+import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.ReportType;
-import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.IEnumKey;
-import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.validation.IValidator;
import java.io.File;
@@ -32,10 +31,9 @@ import java.util.function.Function;
@Service
public class ReportService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
- private final ImdgProvider imdgProvider;
- private final IMessageResolver messageResolver;
private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper;
+ private final RequestHelper requestHelper;
private final Function reportRequestValidator;
private final Function reportRequestWithSessionIdValidator;
private final Function reportRequestWithSessionIdListValidator;
@@ -49,10 +47,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
public ReportService(Consumer kafkaQueue,
Producer kafkaResponseQueue,
- ImdgProvider imdgProvider,
- IMessageResolver messageResolver,
UserRoleVerification userRoleVerification,
ValidationHelper validationHelper,
+ RequestHelper requestHelper,
ReportsServiceSettings reportsServiceSettings,
@Qualifier("reportBuildersWithoutParams")
Map> reportBuildersWithoutParams,
@@ -71,10 +68,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
@Qualifier("reportRequestWithPeriodValidator")
Function reportRequestWithPeriodValidator) {
super(kafkaQueue, kafkaResponseQueue);
- this.imdgProvider = imdgProvider;
- this.messageResolver = messageResolver;
this.userRoleVerification = userRoleVerification;
this.validationHelper = validationHelper;
+ this.requestHelper = requestHelper;
this.reportRequestValidator = reportRequestValidator;
this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator;
this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator;
@@ -97,10 +93,11 @@ public class ReportService extends QueueConsumer implements InitializingBean {
.forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID, callbacks::put);
callback(ReportRequestWithSessionIdList.class)
.setFunction(this::createReportForSessionIdList)
- .forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID, callbacks::put);
+ .forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID_LIST, callbacks::put);
callback(ReportRequestWithPeriod.class)
.setFunction(this::createReportForPeriod)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_PERIOD, callbacks::put);
+ init();
}
public RequestInfoUpdate createReport(BaseRequest userRequest) {
@@ -118,6 +115,8 @@ public class ReportService extends QueueConsumer implements InitializingBean {
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
);
File outFile = builder.createReport(new EmptyParams(), outFolder);
+ if (outFile == null) {
+ }
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
return null;
diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties
index ed2aa2053..fdf19a25d 100644
--- a/clearing-parent/reports-service/src/main/resources/application.properties
+++ b/clearing-parent/reports-service/src/main/resources/application.properties
@@ -1,4 +1,6 @@
-
+reports-service.hazelcast.cluster-members=127.0.0.1:5701
+reports-service.hazelcast.login=dev
+reports-service.hazelcast.password=dev-pass
reports-service.kafka-consumer.bootstrap-servers=localhost:9092
reports-service.kafka-consumer.group-id=dev-group-balance-service
@@ -8,16 +10,11 @@ reports-service.kafka-consumer.auto-offset-reset=latest
reports-service.kafka-consumer.linger-ms=1
reports-service.kafka-consumer.buffer-memory=33554432
-#reports-service.kafka-producer.bootstrap-servers=localhost:9092
-#reports-service.kafka-producer.acks=all
-#reports-service.kafka-producer.retries=0
-#reports-service.kafka-producer.batch-size=16384
-#reports-service.kafka-producer.linger-ms=1
-#reports-service.kafka-producer.buffer-memory=33554432
-
-reports-service.hazelcast.cluster-members=127.0.0.1:5701
- #,10.200.200.181:5701
-reports-service.hazelcast.login=dev
-reports-service.hazelcast.password=dev-pass
+reports-service.kafka-producer.bootstrap-servers=localhost:9092
+reports-service.kafka-producer.acks=all
+reports-service.kafka-producer.retries=0
+reports-service.kafka-producer.batch-size=16384
+reports-service.kafka-producer.linger-ms=1
+reports-service.kafka-producer.buffer-memory=33554432
reports-service.ReportModuleOut=./report_out
diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java
new file mode 100644
index 000000000..4133bd829
--- /dev/null
+++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/config/TestConfig.java
@@ -0,0 +1,17 @@
+package ru.spcex.clearing.reports.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
+
+@Configuration
+public class TestConfig {
+
+ @Bean
+ public ReportsServiceSettings reportsServiceSettings() {
+ ReportsServiceSettings reportsServiceSettings = new ReportsServiceSettings();
+ reportsServiceSettings.setReportModuleOut("out");
+ return reportsServiceSettings;
+ }
+
+}
diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java
new file mode 100644
index 000000000..48164120b
--- /dev/null
+++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest.java
@@ -0,0 +1,429 @@
+package ru.spcex.clearing.reports.services;
+
+import com.opencsv.CSVParser;
+import com.opencsv.CSVParserBuilder;
+import com.opencsv.CSVReader;
+import com.opencsv.CSVReaderBuilder;
+import com.opencsv.exceptions.CsvValidationException;
+import org.apache.commons.io.FileUtils;
+import org.apache.kafka.clients.consumer.MockConsumer;
+import org.apache.kafka.clients.producer.MockProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.mock.mockito.SpyBean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import ru.clearing.classes.statics.data.company.Company;
+import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
+import ru.clearing.classes.statics.data.execution.ExecutionFond;
+import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
+import ru.clearing.classes.statics.data.misc.Listing;
+import ru.clearing.classes.statics.data.registry.Registry;
+import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.platform.messaging.domain.Consts;
+import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
+import ru.spcex.clearing.reports.config.BeanConfiguration;
+import ru.spcex.clearing.reports.config.ReportBuildersConfig;
+import ru.spcex.clearing.reports.config.TestConfig;
+import ru.spcex.clearing.reports.config.validation.ValidationConfig;
+import ru.spcex.clearing.test.TestUtils;
+import ru.spcex.clearing.test.config.ImdgTestConfig;
+import ru.spcex.clearing.test.config.KafkaTestConfig;
+import ru.spcex.platform.enumeration.*;
+import ru.spcex.platform.imdg.api.Imdg;
+import ru.spcex.platform.imdg.api.ImdgProvider;
+
+import javax.annotation.PostConstruct;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ExtendWith(SpringExtension.class)
+@ContextConfiguration(classes = {
+ BeanConfiguration.class,
+ ValidationConfig.class,
+ ReportService.class,
+ ImdgTestConfig.class,
+ KafkaTestConfig.class,
+ ReportBuildersConfig.class,
+ TestConfig.class
+})
+public class ReportServiceTest {
+ private Imdg executionFondImdg;
+ private Imdg executionDepositImdg;
+ private Imdg companyImdg;
+ private Imdg registryImdg;
+ private Imdg listingImdg;
+ private Imdg fixedIncomeSecurityImdg;
+ private Imdg tradingClearingRegistryImdg;
+
+ private final ExecutionFond testExecutionFond = new ExecutionFond();
+ private final ExecutionDeposit testExecutionDeposit = new ExecutionDeposit();
+
+ private final Company testCompany_1 = new Company();
+ private final Company testCompany_2 = new Company();
+ private final Company testCompanyHouse = new Company();
+
+ private final Registry testRegistryForCompanyId_1 = new Registry();
+ private final Registry testRegistryForCompanyId_2 = new Registry();
+
+ private final Registry tm_tRegistry_1 = new Registry();
+ private final Registry om_tRegistry_1 = new Registry();
+ private final Registry ts_tRegistry_1 = new Registry();
+ private final Registry os_tRegistry_1 = new Registry();
+ private final Registry tm_tRegistry_2 = new Registry();
+ private final Registry om_tRegistry_2 = new Registry();
+ private final Registry ts_tRegistry_2 = new Registry();
+ private final Registry os_tRegistry_2 = new Registry();
+
+ private final Listing testListing_1 = new Listing();
+ private final Listing testListing_2 = new Listing();
+
+ private final FixedIncomeSecurity testFixedIncomeSecurity_1 = new FixedIncomeSecurity();
+ private final FixedIncomeSecurity testFixedIncomeSecurity_2 = new FixedIncomeSecurity();
+
+ private final TradingClearingRegistry testTradingClearingRegistry_1 = new TradingClearingRegistry();
+ private final TradingClearingRegistry testTradingClearingRegistry_2 = new TradingClearingRegistry();
+
+ private static File outFolder;
+
+ @Autowired
+ private ReportService reportService;
+
+ @Autowired
+ @Qualifier("hazelcastServiceTest")
+ private ImdgProvider imdgProvider;
+
+ @Captor
+ private ArgumentCaptor producerRecord;
+
+ @SpyBean
+ private MockProducer producer;
+
+ @BeforeAll
+ public static void createTestFolder() {
+ outFolder = new File("out");
+ outFolder.mkdir();
+ }
+
+ @AfterAll
+ public static void deleteTestFolder() throws IOException {
+ FileUtils.deleteDirectory(outFolder);
+ }
+
+ @Test
+ public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws InterruptedException, IOException, CsvValidationException {
+ final Long oldSessionIdDeposit = testExecutionDeposit.getSessionId();
+ final Long oldSessionIdFond = testExecutionFond.getSessionId();
+
+ ReportRequestWithSessionId reportRequestWithSessionId = new ReportRequestWithSessionId();
+ reportRequestWithSessionId.setReportId(ReportType.OPERATIONAL_LIABILITIES_CLAIMS.getKey());
+ reportRequestWithSessionId.setSessionId(TEST_SESSION_ID_1);
+
+ testExecutionDeposit.setSessionId(TEST_SESSION_ID_1);
+ testExecutionFond.setSessionId(TEST_SESSION_ID_1);
+ executionDepositImdg.update(testExecutionDeposit);
+ executionFondImdg.update(testExecutionFond);
+
+ String jsonString = TestUtils.getJsonStringForSystem(reportRequestWithSessionId, 0L);
+
+ TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
+ Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
+ 0,
+ 0,
+ jsonString);
+
+ TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
+
+ File outFile = outFolder.listFiles()[0];
+ File expectedFile = new File(getClass().getClassLoader().getResource("operational_liabilities_claims_expected.csv").getFile());
+ compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time"));
+
+ System.out.println("hello");
+
+ testExecutionDeposit.setSessionId(oldSessionIdDeposit);
+ testExecutionFond.setSessionId(oldSessionIdFond);
+ executionDepositImdg.update(testExecutionDeposit);
+ executionFondImdg.update(testExecutionFond);
+
+ outFile.delete();
+ }
+
+ public void compareCSVFiles(File expectedFile, File actualFile, List columnsForSkip) throws IOException, CsvValidationException {
+ if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
+ CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
+ CSVReader expectedCSVReader = new CSVReaderBuilder(new FileReader(expectedFile)).withCSVParser(csvParser).build();
+ CSVReader actualCSVReader = new CSVReaderBuilder(new FileReader(actualFile)).withCSVParser(csvParser).build();
+
+ Map expectedValueForColumn = new HashMap<>();
+ Map actualValueForColumn = new HashMap<>();
+
+ String[] expectedHeaders = expectedCSVReader.readNext();
+ String[] actualHeaders = actualCSVReader.readNext();
+ assertEquals(expectedHeaders.length, actualHeaders.length);
+
+ for (int headerIdx = 0; headerIdx < expectedHeaders.length; headerIdx++) {
+ String expectedHeader = expectedHeaders[headerIdx];
+ String actualHeader = actualHeaders[headerIdx];
+ if (!columnsForSkip.contains(expectedHeader)) expectedValueForColumn.put(expectedHeader, headerIdx);
+ if (!columnsForSkip.contains(actualHeader)) actualValueForColumn.put(actualHeader, headerIdx);
+ }
+
+ do {
+ String[] expectedLines = expectedCSVReader.readNext();
+ String[] actualLines = actualCSVReader.readNext();
+ if (expectedLines == null || actualLines == null) {
+ if (expectedLines == null && actualLines == null) {
+ break;
+ }
+ Assertions.fail("expected and actual lines not equal");
+ }
+ for (String expectedHeader : expectedValueForColumn.keySet()) {
+ int expectedIdx = expectedValueForColumn.get(expectedHeader);
+ int actualIdx = actualValueForColumn.get(expectedHeader);
+ String expected = expectedLines[expectedIdx];
+ String actual = actualLines[actualIdx];
+ assertEquals(expected, actual);
+ }
+ } while (true);
+
+ expectedCSVReader.close();
+ actualCSVReader.close();
+ }
+
+
+ @PostConstruct
+ private void init() {
+ ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId();
+
+ testExecutionFond.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_1);
+ testExecutionFond.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_1);
+ testExecutionFond.setTradingDate(TEST_TRADING_DATE_1);
+ testExecutionFond.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
+ testExecutionFond.setMarket(TEST_MARKET_1);
+ testExecutionFond.setPrice(TEST_PRICE_1);
+ testExecutionFond.setLots(TEST_LOTS_1);
+ testExecutionFond.setQuantity(TEST_QUANTITY_1);
+ testExecutionFond.setInterestAmount(TEST_INTEREST_AMOUNT_1);
+ testExecutionFond.setSide(TEST_SIDE_1);
+ testExecutionFond.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_1);
+ testExecutionFond.setCompanyId(TEST_COMPANY_ID_1);
+ testExecutionFond.setDuration(TEST_DURATION_1);
+ testExecutionFond.setSecurityFullName(TEST_SECURITY_FULL_NAME_1);
+ testExecutionFond.setSecuritySymbol(TEST_SECURITY_SYMBOL_1);
+ testExecutionFond.setSecurityId(TEST_SECURITY_ID_1);
+ testExecutionFond.setCounterPartyId(TEST_COUNTER_PARTY_ID_1);
+ testExecutionFond.setCoverageStatus(TEST_COVERAGE_STATUS_1);
+ testExecutionFond.setSessionId(TEST_SESSION_ID_1);
+ testExecutionFond.setClearingDate(TEST_CLEARING_DATE_1);
+ testExecutionFond.setExchangeOrderId(TEST_EXCHANGE_ORDER_ID);
+ testExecutionFond.setSettlementAmount(TEST_SETTLEMENT_AMOUNT);
+ testExecutionFond.setComment(TEST_COMMENT);
+ testExecutionFond.setClientCodeId(TEST_CLIENT_CODE_ID);
+ testExecutionFond.setSettlementCode(TEST_SETTLEMENT_CODE);
+ testExecutionFond.setSettlementDate(TEST_SETTLEMENT_DATE);
+ testExecutionFond.setExchangeExecutionMicroseconds(TEST_EXCHANGE_EXECUTION_MICROSECONDS);
+
+ testExecutionDeposit.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_2);
+ testExecutionDeposit.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_2);
+ testExecutionDeposit.setTradingDate(TEST_TRADING_DATE_2);
+ testExecutionDeposit.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
+ testExecutionDeposit.setMarket(TEST_MARKET_2);
+ testExecutionDeposit.setPrice(TEST_PRICE_2);
+ testExecutionDeposit.setLots(TEST_LOTS_2);
+ testExecutionDeposit.setQuantity(TEST_QUANTITY_2);
+ testExecutionDeposit.setInterestAmount(TEST_INTEREST_AMOUNT_2);
+ testExecutionDeposit.setSide(TEST_SIDE_2);
+ testExecutionDeposit.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_2);
+ testExecutionDeposit.setCompanyId(TEST_COMPANY_ID_2);
+ testExecutionDeposit.setDuration(TEST_DURATION_2);
+ testExecutionDeposit.setSecurityFullName(TEST_SECURITY_FULL_NAME_2);
+ testExecutionDeposit.setSecuritySymbol(TEST_SECURITY_SYMBOL_2);
+ testExecutionDeposit.setSecurityId(TEST_SECURITY_ID_2);
+ testExecutionDeposit.setCounterPartyId(TEST_COUNTER_PARTY_ID_2);
+ testExecutionDeposit.setCoverageStatus(TEST_COVERAGE_STATUS_2);
+ testExecutionDeposit.setSessionId(TEST_SESSION_ID_2);
+ testExecutionDeposit.setClearingDate(TEST_CLEARING_DATE_2);
+ testExecutionDeposit.setFirstLegAmount(TEST_FIRST_LEG_AMOUNT);
+ testExecutionDeposit.setSecondLegAmount(TEST_SECOND_LEG_AMOUNT);
+ testExecutionDeposit.setFirstLegSettlementDate(TEST_FIRST_LEG_SETTLEMENT_DATE);
+ testExecutionDeposit.setSecondLegSettlementDate(TEST_SECOND_LEG_SETTLEMENT_DATE);
+ testExecutionDeposit.setFirstLegSettlementCode(TEST_FIRST_LEG_SETTLEMENT_CODE);
+ testExecutionDeposit.setSecondLegSettlementCode(TEST_SECOND_LEG_SETTLEMENT_CODE);
+ testExecutionDeposit.setContract(TEST_CONTRACT);
+
+ executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
+ executionFondImdg.insert(testExecutionFond);
+
+ executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
+ executionDepositImdg.insert(testExecutionDeposit);
+
+ testCompany_1.setWorkflowStatus(WorkflowStatus.Active.getKey());
+ testCompany_1.setId(TEST_COMPANY_ID_1);
+ testCompany_1.setFullName(TEST_COMPANY_FULLNAME_1);
+ testCompany_2.setWorkflowStatus(WorkflowStatus.Active.getKey());
+ testCompany_2.setId(TEST_COMPANY_ID_2);
+ testCompany_2.setFullName(TEST_COMPANY_FULLNAME_2);
+ testCompanyHouse.setId(1L);
+ testCompanyHouse.setFullName("COMPANY_HOUSE");
+ companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
+ companyImdg.insert(testCompany_1);
+ companyImdg.insert(testCompany_2);
+ companyImdg.insert(testCompanyHouse);
+
+
+ registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
+ testRegistryForCompanyId_1.setCompanyId(TEST_COMPANY_ID_1);
+ testRegistryForCompanyId_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
+ testRegistryForCompanyId_2.setCompanyId(TEST_COMPANY_ID_2);
+ testRegistryForCompanyId_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
+ registryImdg.insert(testRegistryForCompanyId_1);
+ registryImdg.insert(testRegistryForCompanyId_2);
+ tm_tRegistry_1.setRegistryCode("TM_T");
+ tm_tRegistry_1.setBalance(BigDecimal.valueOf(779L));
+ om_tRegistry_1.setRegistryCode("OM_T");
+ om_tRegistry_1.setBalance(BigDecimal.valueOf(2L));
+ ts_tRegistry_1.setRegistryCode("TS_T");
+ ts_tRegistry_1.setBalance(BigDecimal.valueOf(889L));
+ os_tRegistry_1.setRegistryCode("OS_T");
+ os_tRegistry_1.setBalance(BigDecimal.valueOf(1L));
+ tm_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
+ om_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
+ ts_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
+ os_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
+ tm_tRegistry_2.setRegistryCode("TM_T");
+ tm_tRegistry_2.setBalance(BigDecimal.valueOf(779L));
+ om_tRegistry_2.setRegistryCode("OM_T");
+ om_tRegistry_2.setBalance(BigDecimal.valueOf(2L));
+ ts_tRegistry_2.setRegistryCode("TS_T");
+ ts_tRegistry_2.setBalance(BigDecimal.valueOf(889L));
+ os_tRegistry_2.setRegistryCode("OS_T");
+ os_tRegistry_2.setBalance(BigDecimal.valueOf(1L));
+ tm_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
+ om_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
+ ts_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
+ os_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
+ registryImdg.insert(tm_tRegistry_1);
+ registryImdg.insert(om_tRegistry_1);
+ registryImdg.insert(ts_tRegistry_1);
+ registryImdg.insert(os_tRegistry_1);
+ registryImdg.insert(tm_tRegistry_2);
+ registryImdg.insert(om_tRegistry_2);
+ registryImdg.insert(ts_tRegistry_2);
+ registryImdg.insert(os_tRegistry_2);
+
+ listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
+ testListing_1.setSecurityId(TEST_SECURITY_ID_1);
+ testListing_1.setLotSize(TEST_LOT_SIZE_1);
+ testListing_2.setSecurityId(TEST_SECURITY_ID_2);
+ testListing_2.setLotSize(TEST_LOT_SIZE_2);
+ listingImdg.insert(testListing_1);
+ listingImdg.insert(testListing_2);
+
+ testFixedIncomeSecurity_1.setSecurityId(TEST_SECURITY_ID_1);
+ testFixedIncomeSecurity_1.setNominalValue(TEST_NOMINAL_1);
+ testFixedIncomeSecurity_1.setCoupon(TEST_COUPON_1);
+ testFixedIncomeSecurity_2.setSecurityId(TEST_SECURITY_ID_2);
+ testFixedIncomeSecurity_2.setNominalValue(TEST_NOMINAL_2);
+ testFixedIncomeSecurity_2.setCoupon(TEST_COUPON_2);
+ fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
+ fixedIncomeSecurityImdg.insert(testFixedIncomeSecurity_1);
+ fixedIncomeSecurityImdg.insert(testFixedIncomeSecurity_2);
+
+ tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
+ testTradingClearingRegistry_1.setId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
+ testTradingClearingRegistry_1.setMoneyAccountId(TEST_MONEY_ACCOUNT_1);
+ testTradingClearingRegistry_1.setDepoAccountId(TEST_DEPO_ACCOUNT_1);
+ tradingClearingRegistryImdg.insert(testTradingClearingRegistry_1);
+ testTradingClearingRegistry_2.setId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
+ testTradingClearingRegistry_2.setMoneyAccountId(TEST_MONEY_ACCOUNT_2);
+ testTradingClearingRegistry_2.setDepoAccountId(TEST_DEPO_ACCOUNT_2);
+ tradingClearingRegistryImdg.insert(testTradingClearingRegistry_2);
+ }
+
+ private final Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
+ private final Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
+ private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
+ private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
+ private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
+ private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
+ private final Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
+ private final Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
+ private final String TEST_MARKET_1 = Market.fond.getKey();
+ private final String TEST_MARKET_2 = Market.mkrs.getKey();
+ private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
+ private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
+ private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
+ private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
+ private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
+ private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
+ private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
+ private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
+ private final String TEST_SIDE_1 = Side.SELL.getKey();
+ private final String TEST_SIDE_2 = Side.BUY.getKey();
+ private final String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
+ private final String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
+ private final Long TEST_COMPANY_ID_1 = 1007L;
+ private final Long TEST_COMPANY_ID_2 = 1008L;
+ private final String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
+ private final String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
+ private final Long TEST_DURATION_1 = 2007L;
+ private final Long TEST_DURATION_2 = 2008L;
+ private final String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
+ private final String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
+ private final String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
+ private final String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
+ private final Long TEST_SECURITY_ID_1 = 3007L;
+ private final Long TEST_SECURITY_ID_2 = 3008L;
+ private final Long TEST_COUNTER_PARTY_ID_1 = 4007L;
+ private final Long TEST_COUNTER_PARTY_ID_2 = 4008L;
+ private final String TEST_COVERAGE_STATUS_1 = Allowed.ALLOWED.getKey();
+ private final String TEST_COVERAGE_STATUS_2 = Allowed.DENIED.getKey();
+ private final Long TEST_SESSION_ID_1 = 10007L;
+ private final Long TEST_SESSION_ID_2 = 10008L;
+ private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
+ private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
+ private final Long TEST_EXCHANGE_ORDER_ID = 20007L;
+ private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
+ private final String TEST_COMMENT = "test-comment";
+ private final Long TEST_CLIENT_CODE_ID = 222222L;
+ private final String TEST_SETTLEMENT_CODE = "test-settlement-code";
+ private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
+ private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
+ private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
+ private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
+ private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
+ private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
+ private final String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
+ private final String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
+ private final String TEST_CONTRACT = "test_contract";
+ private final String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
+ private final String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
+ private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
+ private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
+ private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
+ private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
+ private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
+ private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
+ private final Long TEST_MONEY_ACCOUNT_1 = 11L;
+ private final Long TEST_MONEY_ACCOUNT_2 = 12L;
+ private final Long TEST_DEPO_ACCOUNT_1 = 13L;
+ private final Long TEST_DEPO_ACCOUNT_2 = 14L;
+
+}
diff --git a/clearing-parent/reports-service/src/test/resources/operational_liabilities_claims_expected.csv b/clearing-parent/reports-service/src/test/resources/operational_liabilities_claims_expected.csv
new file mode 100644
index 000000000..d830c5b3b
--- /dev/null
+++ b/clearing-parent/reports-service/src/test/resources/operational_liabilities_claims_expected.csv
@@ -0,0 +1,3 @@
+id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
+"1","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
+"2","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","N","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java
index 11b6871de..24d4f07d2 100644
--- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java
+++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java
@@ -102,6 +102,10 @@ public class TestUtils {
return getJsonBaseRequest(accountRequest, id, ActionType.DELETE);
}
+ public static String getJsonStringForSystem(T request, long id) {
+ return getJsonBaseRequest(request, id, ActionType.SYSTEM);
+ }
+
private static String getJsonBaseRequest(T accountRequest, long id, ActionType actionType) {
BaseRequest baseRequest = new BaseRequest<>();
baseRequest.setRequestPayload(accountRequest);
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java
index 4b1da114d..3cd4c9aca 100644
--- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java
@@ -12,7 +12,7 @@ public class ReportRequest {
* см. {@link ReportType}
*/
@JsonProperty
- protected String reportId;
+ public String reportId;
public String getReportId() {
return reportId;
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java
index aca91be94..983d92d8e 100644
--- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java
@@ -15,12 +15,12 @@ public class ReportRequestWithPeriod extends ReportRequest {
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
- protected LocalDate startDate;
+ public LocalDate startDate;
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
- protected LocalDate endDate;
+ public LocalDate endDate;
public LocalDate getStartDate() {
return startDate;
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java
index c5c2cd857..c065ad6b4 100644
--- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java
@@ -10,7 +10,7 @@ public class ReportRequestWithSessionId extends ReportRequest {
* Идентификатор сессии
*/
@JsonProperty
- protected Long sessionId;
+ public Long sessionId;
public Long getSessionId() {
return sessionId;
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java
index 2202f7726..d5f9bce77 100644
--- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java
@@ -12,7 +12,7 @@ public class ReportRequestWithSessionIdList extends ReportRequest {
* Идентификатор сессии
*/
@JsonProperty
- protected List sessionId;
+ public List sessionId;
public List getSessionIdList() {
return sessionId;