This commit is contained in:
parent
8dc2cb0398
commit
22ffb02971
71 changed files with 183 additions and 4205 deletions
Binary file not shown.
|
|
@ -6,34 +6,16 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import ru.spcex.clearing.reports.config.ReportCmdParser;
|
|
||||||
import ru.spcex.clearing.reports.services.QCommandExecutor;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class ReportsServiceApplication {
|
public class ReportsServiceApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
ReportCmdParser cmdArgs = new ReportCmdParser(args);
|
|
||||||
|
|
||||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
|
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
|
||||||
ConfigurableApplicationContext context = builder.run(args);
|
ConfigurableApplicationContext context = builder.run(args);
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
||||||
if (cmdArgs.isConsole()) {
|
|
||||||
log.info("Console mode");
|
|
||||||
try {
|
|
||||||
ReportsServiceCommand reportCommand = context.getBean(ReportsServiceCommand.class);
|
|
||||||
reportCommand.writeAllXML();
|
|
||||||
} finally {
|
|
||||||
log.info("Shutdown application after work");
|
|
||||||
context.close();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.info("Service mode");
|
|
||||||
QCommandExecutor queueListener = context.getBean(QCommandExecutor.class);
|
|
||||||
log.trace("QCommandExecutor: {}", queueListener);
|
|
||||||
}
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.config;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Параметры запуска командной строки.
|
|
||||||
*
|
|
||||||
* @see ru.spcex.clearing.reports.config.element.ReportsServiceSettings
|
|
||||||
*/
|
|
||||||
public class ReportCmdParser {
|
|
||||||
protected static final String ARG_CONSOLE = "--console";
|
|
||||||
protected static final String ARG_SERVICE = "--service";
|
|
||||||
protected boolean console;
|
|
||||||
protected boolean service;
|
|
||||||
|
|
||||||
public ReportCmdParser(String[] args) {
|
|
||||||
for (String arg : args) {
|
|
||||||
if (ARG_CONSOLE.equals(arg)) console = true;
|
|
||||||
if (ARG_SERVICE.equals(arg)) service = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isConsole() {
|
|
||||||
return console;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isService() {
|
|
||||||
return service;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "ReportCmdParser{console=" + console + ", service=" + service + '}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Вариант парсинга сложных выражений:
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-cli</groupId>
|
|
||||||
<artifactId>commons-cli</artifactId>
|
|
||||||
<version>1.4</version>
|
|
||||||
</dependency>
|
|
||||||
но сейчас достаточно один параметр проверять
|
|
||||||
*/
|
|
||||||
|
|
@ -7,11 +7,6 @@ import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings
|
||||||
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
|
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
||||||
|
|
||||||
/**
|
|
||||||
* Параметр запуска: XMLReportBuilder
|
|
||||||
* --spring.config.location=E:/MFD_GIT_REPO/clearing/clearing-parent/reports-service/src/main/resources
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@Component
|
@Component
|
||||||
@PropertySource("file:${spring.config.location}/application.properties")
|
@PropertySource("file:${spring.config.location}/application.properties")
|
||||||
@ConfigurationProperties("reports-service")
|
@ConfigurationProperties("reports-service")
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.reports.errors.ReportError;
|
import ru.spcex.clearing.reports.errors.ReportError;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule;
|
import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule;
|
||||||
|
|
@ -144,6 +145,25 @@ public class ValidationConfig {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo оставил бин валидатора на будущее, если в дальнейшем придется проверять запрос. в текущей версии, по факту,
|
||||||
|
// запрос не проверяется: в случае если sessionId не указан отчеты не строятся
|
||||||
|
@Bean("reportRequestGREP")
|
||||||
|
public Function<LauncherCommandRequest, IValidator> reportRequestGREPValidator(
|
||||||
|
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||||
|
) {
|
||||||
|
return launcherCommandRequest -> {
|
||||||
|
ImdgValidationContext<LauncherCommandRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(launcherCommandRequest);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
FieldRequiredRule.instance(
|
||||||
|
"sessionId",
|
||||||
|
LauncherCommandRequest::getSessionId,
|
||||||
|
ReportError.RequiredFieldEmpty,
|
||||||
|
false)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
package ru.spcex.clearing.reports.notifications;
|
||||||
|
|
||||||
import org.apache.poi.xwpf.usermodel.*;
|
import org.apache.poi.xwpf.usermodel.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -16,26 +19,26 @@ import java.util.regex.PatternSyntaxException;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* todo Пока неизвестно нужны ли будут ещё эти уведомления, поэтому весь связанный код переместил в один пакет
|
||||||
|
* <p>
|
||||||
* Сервис для работы с DOCX файлами
|
* Сервис для работы с DOCX файлами
|
||||||
* Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения
|
* Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения
|
||||||
* Пример ключа по умолчанию: ${ключ}
|
* Пример ключа по умолчанию: ${ключ}
|
||||||
*
|
* <p>
|
||||||
* При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном
|
* При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном
|
||||||
* элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно,
|
* элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно,
|
||||||
* идентификатору потом можно установить стиль, который будет применён к вставляемой строке.
|
* идентификатору потом можно установить стиль, который будет применён к вставляемой строке.
|
||||||
*/
|
*/
|
||||||
public class DOCXService {
|
public class DOCXService {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
/**
|
|
||||||
* При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа
|
|
||||||
*/
|
|
||||||
private List<KeyPositionInDoc> keyPositions = new LinkedList<>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Паттерн поиска ключей в файле по умолчанию
|
* Паттерн поиска ключей в файле по умолчанию
|
||||||
*/
|
*/
|
||||||
private final Pattern DEFAULT_KEY_PATTERN = Pattern.compile("\\$\\{.*?}");
|
private final Pattern DEFAULT_KEY_PATTERN = Pattern.compile("\\$\\{.*?}");
|
||||||
|
/**
|
||||||
|
* При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа
|
||||||
|
*/
|
||||||
|
private List<KeyPositionInDoc> keyPositions = new LinkedList<>();
|
||||||
/**
|
/**
|
||||||
* Паттерн поиска ключей в файле
|
* Паттерн поиска ключей в файле
|
||||||
*/
|
*/
|
||||||
|
|
@ -56,7 +59,7 @@ public class DOCXService {
|
||||||
*/
|
*/
|
||||||
public boolean init(URL templateFile, String keyPattern) {
|
public boolean init(URL templateFile, String keyPattern) {
|
||||||
initialized = false;
|
initialized = false;
|
||||||
if (templateFile == null /*|| !templateFile.exists() || !templateFile.isFile()*/) {
|
if (templateFile == null) {
|
||||||
log.warn("Invalid templateFile {}", templateFile);
|
log.warn("Invalid templateFile {}", templateFile);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -82,10 +85,9 @@ public class DOCXService {
|
||||||
* valuesMap.
|
* valuesMap.
|
||||||
*
|
*
|
||||||
* @param outputFile Выходной файл. Должен быть либо файлом (будет перезаписан), либо отсутствовать
|
* @param outputFile Выходной файл. Должен быть либо файлом (будет перезаписан), либо отсутствовать
|
||||||
* @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения.
|
* @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения.
|
||||||
* @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap.
|
* @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap.
|
||||||
* False - мягкий режим, отсутствующие ключи будут пропущены
|
* False - мягкий режим, отсутствующие ключи будут пропущены
|
||||||
*
|
|
||||||
* @return true - если вставка прошла успешно
|
* @return true - если вставка прошла успешно
|
||||||
*/
|
*/
|
||||||
public boolean insertValues(File outputFile,
|
public boolean insertValues(File outputFile,
|
||||||
|
|
@ -110,7 +112,7 @@ public class DOCXService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try (InputStream inputStream = templateFile.openStream(); //new FileInputStream(templateFile);
|
try (InputStream inputStream = templateFile.openStream();
|
||||||
OutputStream outputStream = new FileOutputStream(outputFile)) {
|
OutputStream outputStream = new FileOutputStream(outputFile)) {
|
||||||
XWPFDocument doc = new XWPFDocument(inputStream);
|
XWPFDocument doc = new XWPFDocument(inputStream);
|
||||||
|
|
||||||
|
|
@ -127,7 +129,7 @@ public class DOCXService {
|
||||||
boolean checkOk = checkIntersection(valuesMap, notPresentInMap);
|
boolean checkOk = checkIntersection(valuesMap, notPresentInMap);
|
||||||
if (!checkOk) {
|
if (!checkOk) {
|
||||||
log.error("Can't insert values in file {}. Keys not in map: {}.",
|
log.error("Can't insert values in file {}. Keys not in map: {}.",
|
||||||
templateFile.toExternalForm()/*templateFile.getAbsolutePath()*/,
|
templateFile.toExternalForm(),
|
||||||
String.join(", ", notPresentInMap));
|
String.join(", ", notPresentInMap));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.reports.notifications;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.spcex.clearing.reports.exceptions.ConfigException;
|
import ru.spcex.clearing.reports.exceptions.ConfigException;
|
||||||
import ru.spcex.clearing.reports.services.DOCXService;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamOmitField;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Общая шапка (атрибуты) для всех отчетов
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public abstract class AbstractReport {
|
|
||||||
protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
|
||||||
protected static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
|
||||||
|
|
||||||
@XStreamOmitField
|
|
||||||
protected ReportId reportId;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("version")
|
|
||||||
protected String version;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("code")
|
|
||||||
protected String code;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("name")
|
|
||||||
protected String name;
|
|
||||||
|
|
||||||
public AbstractReport(ReportId reportId,
|
|
||||||
String version,
|
|
||||||
String code,
|
|
||||||
String name) {
|
|
||||||
this.reportId = reportId;
|
|
||||||
this.version = version;
|
|
||||||
this.code = code;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract public String getReportName(LocalDateTime reportDateTime);
|
|
||||||
|
|
||||||
public ReportId getReportId() {
|
|
||||||
return reportId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
|
||||||
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
|
|
||||||
public enum Destination implements IEnumKey {
|
|
||||||
BR("BR"), _1C("1C");
|
|
||||||
|
|
||||||
private final String key;
|
|
||||||
|
|
||||||
Destination(String key) {
|
|
||||||
this.key = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getKey() {
|
|
||||||
return this.key;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equalsByKey(String key) {
|
|
||||||
return IEnumKey.super.equalsByKey(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
|
||||||
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Идентификаторы отчётов
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public enum ReportId implements IEnumKey {
|
|
||||||
PA_B("REPPA.B"), PA_IV("REPPA.IV"),
|
|
||||||
|
|
||||||
BT13_11("DOCIN"), BT13_12("DOCOUT"),
|
|
||||||
|
|
||||||
BT16_5("INACCNT"),
|
|
||||||
|
|
||||||
BR_0420315_P1("REPBR.0420315.P1"), BR_0420315_P2("REPBR.0420315.P2"),
|
|
||||||
|
|
||||||
BR_0420317("REPBR.0420317"),
|
|
||||||
|
|
||||||
BR_0420318("REPBR.0420318"),
|
|
||||||
|
|
||||||
BR_0420314_P1("REPBR.0420314.P1"), BR_0420314_P2("REPBR.0420314.P2"),
|
|
||||||
|
|
||||||
BR_0420312_P1("REPBR.0420312_р1-1"), BR_0420312_P2("REPBR.0420312_р1-2"), BR_0420312_P3("REPBR.0420312_р1-3"), BR_0420312_P4("REPBR.0420312_р1-4"),
|
|
||||||
BR_0420312_P5("REPBR.0420312_р1-5"), BR_0420312_P6("REPBR.0420312_р1-6"), BR_0420312_P7("REPBR.0420312_р1-7"), BR_0420312_P8("REPBR.0420312_р3-1"),
|
|
||||||
BR_0420312_P9("REPBR.0420312_р3-2"), BR_0420312_P10("REPBR.0420312_р3-3"),
|
|
||||||
|
|
||||||
OPERATIONAL_LIABILITIES_CLAIMS("operational_liabilities_claims"),
|
|
||||||
OPERATIONAL_MONEY_CHANGE("operational_money_change"),
|
|
||||||
SUMMARY_LIABILITIES_CLAIMS("summary_liabilities_claims"),
|
|
||||||
SUMMARY_L_MONEY_CHANGE("summary_lmoney_change"),
|
|
||||||
PERIOD_LIABILITIES_CLAIMS("period_liabilities_claims"),
|
|
||||||
PERIOD_MONEY_CHANGE("period_money_change"),
|
|
||||||
EXECUTED_DEAL_REPORT("executed_deal_report"),
|
|
||||||
UNFULFILLED_DEAL_REPORT("unfulfilled_deal_report"),
|
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
private final String key;
|
|
||||||
|
|
||||||
ReportId(String key) {
|
|
||||||
this.key = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getKey() {
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public abstract class ReportWithClearingStatus extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("clearingStatus")
|
|
||||||
protected String clearingStatus;
|
|
||||||
|
|
||||||
public ReportWithClearingStatus(ReportId reportId,
|
|
||||||
String version,
|
|
||||||
String code,
|
|
||||||
String name,
|
|
||||||
LocalDate startDate,
|
|
||||||
LocalDate endDate,
|
|
||||||
String clearingStatus) {
|
|
||||||
super(reportId, version, code, name, startDate, endDate);
|
|
||||||
this.clearingStatus = clearingStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Шапка для отчётов, содержащих startDate и endDate
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public abstract class ReportWithPeriod extends AbstractReport {
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("startDate")
|
|
||||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
|
||||||
protected LocalDate startDate;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("endDate")
|
|
||||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
|
||||||
protected LocalDate endDate;
|
|
||||||
|
|
||||||
|
|
||||||
public ReportWithPeriod(ReportId reportId,
|
|
||||||
String version,
|
|
||||||
String code,
|
|
||||||
String name,
|
|
||||||
LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(reportId, version, code, name);
|
|
||||||
this.startDate = startDate;
|
|
||||||
this.endDate = endDate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -5,7 +5,10 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.SessionIdListParams;
|
import ru.spcex.clearing.reports.reports.SessionIdListParams;
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
import ru.spcex.platform.enumeration.ReportType;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -29,9 +32,14 @@ public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepor
|
||||||
@Override
|
@Override
|
||||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdListParams params) {
|
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdListParams params) {
|
||||||
if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList();
|
if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList();
|
||||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||||
executionFondImdg.predicateBuilder().in("sessionId", params.getSessionIdList().toArray(new Long[0]))
|
// todo OR - временное решение. В изначальном плане была передача списка id сессий, но теперь нужно делать на текущий день
|
||||||
|
// пока не определятся, что именно им нужно - остается OR, в дальнейшем предикат будет правиться
|
||||||
|
ImdgPredicate predicate = pb.or(
|
||||||
|
pb.in("sessionId", params.getSessionIdList().toArray(new Long[0])),
|
||||||
|
pb.equals("clearingDate", LocalDate.now())
|
||||||
);
|
);
|
||||||
|
return executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
|
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
|
||||||
|
|
||||||
|
|
@ -18,12 +19,16 @@ public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Per
|
||||||
@Override
|
@Override
|
||||||
protected Collection<Registry> getRegistryForReport(PeriodParams params) {
|
protected Collection<Registry> getRegistryForReport(PeriodParams params) {
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
return registryImdg.getCollectionObjectsByPredicate(
|
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(
|
||||||
pb.and(
|
pb.and(
|
||||||
pb.greatEqual("clearingDate", params.getStartDate()),
|
pb.greatEqual("clearingDate", params.getStartDate()),
|
||||||
pb.lessEqual("clearingDate", params.getEndDate())
|
pb.lessEqual("clearingDate", params.getEndDate())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
registries = registries.stream()
|
||||||
|
.filter(registry -> registry.getRegistryCode().startsWith("AM"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
return registries;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
import ru.spcex.platform.enumeration.ReportType;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
@ -16,12 +18,18 @@ public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Collection<ExecutionFond> getExecutionFondsForReport(EmptyParams params) {
|
protected Collection<ExecutionFond> getExecutionFondsForReport(EmptyParams params) {
|
||||||
return executionFondImdg.getAllValues();
|
// todo Временное решение. В изначальном плане была передача списка id сессий, но теперь нужно делать на текущий день
|
||||||
|
// пока не определятся, что именно им нужно - остается OR, в дальнейшем предикат будет правиться
|
||||||
|
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||||
|
return executionFondImdg.getCollectionObjectsByPredicate(pb.equals("clearingDate", LocalDate.now()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Collection<ExecutionDeposit> getExecutionDepositsForReport(EmptyParams params) {
|
protected Collection<ExecutionDeposit> getExecutionDepositsForReport(EmptyParams params) {
|
||||||
return executionDepositImdg.getAllValues();
|
// todo Временное решение. В изначальном плане была передача списка id сессий, но теперь нужно делать на текущий день
|
||||||
|
// пока не определятся, что именно им нужно - остается OR, в дальнейшем предикат будет правиться
|
||||||
|
ImdgPredicateBuilder pb = executionDepositImdg.predicateBuilder();
|
||||||
|
return executionDepositImdg.getCollectionObjectsByPredicate(pb.equals("clearingDate", LocalDate.now()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,12 @@ import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
import ru.spcex.platform.enumeration.ReportType;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
|
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
|
||||||
public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||||
|
|
@ -15,7 +18,20 @@ public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Em
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Collection<Registry> getRegistryForReport(EmptyParams param) {
|
protected Collection<Registry> getRegistryForReport(EmptyParams param) {
|
||||||
return registryImdg.getAllValues();
|
// todo отсечение по периоду - временный код, пока не решили как передавать в GREP период.
|
||||||
|
// по изначальной задумке в summary отчет должны включаться все записи.
|
||||||
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
|
LocalDate now = LocalDate.now();
|
||||||
|
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(
|
||||||
|
pb.and(
|
||||||
|
pb.greatEqual("clearingDate", now),
|
||||||
|
pb.lessEqual("clearingDate", now)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
registries = registries.stream()
|
||||||
|
.filter(registry -> registry.getRegistryCode().startsWith("AM"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
return registries;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_12_2;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("netPositionBank")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportPA_B extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("clearingMemberCategory")
|
|
||||||
private String clearingMemberCategory;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private List<Info_PA_B> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
|
||||||
private Total total;
|
|
||||||
|
|
||||||
public ReportPA_B(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.PA_B,
|
|
||||||
"0.0.1",
|
|
||||||
"BT12.2",
|
|
||||||
"Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.clearingMemberCategory = ClearingCategory.B.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPPA.B.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotal(Total total) {
|
|
||||||
this.total = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_PA_B> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
|
||||||
public record Total(@XStreamAsAttribute @XStreamAlias("claimsAmount") String claimsAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesAmount") String liabilitiesAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("paymentAmount") String paymentAmount) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_PA_B(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("id") String id,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullName") String liabilitiesClaimsAssetsFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_settlementDate") String liabilitiesClaimsAssetsSettlementDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_refundDate") String liabilitiesClaimsAssetsRefundDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_tradingDate") String liabilitiesClaimsAssetsTradingDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_contract") String liabilitiesClaimsAssetsContract,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("chargeCommission") String chargeCommission,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity") String liabilitiesClaimsAssetsClaimsQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_refundPaymentId") String liabilitiesClaimsAssetsRefundPaymentId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_clearingStatus") String liabilitiesClaimsAssetsClearingStatus,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_comment") String liabilitiesClaimsAssetsComment
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_12_2;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("netPositionInitiator")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportPA_IV extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("clearingMemberCategory")
|
|
||||||
private String clearingMemberCategory;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private List<Info_PA_IV> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
|
||||||
private Total total;
|
|
||||||
|
|
||||||
|
|
||||||
public ReportPA_IV(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.PA_IV,
|
|
||||||
"0.0.1",
|
|
||||||
"BT2",
|
|
||||||
"Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.clearingMemberCategory = "%s,%s".formatted(
|
|
||||||
ClearingCategory.I.getKey(),
|
|
||||||
ClearingCategory.V.getKey()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPPA.IV.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotal(Total total) {
|
|
||||||
this.total = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_PA_IV> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("total")
|
|
||||||
public record Total(@XStreamAsAttribute @XStreamAlias("claimsAmount") String claimsAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesAmount") String liabilitiesAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("paymentAmount") String paymentAmount) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_PA_IV(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("id") String id,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullName") String liabilitiesClaimsAssetsFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_settlementDate") String liabilitiesClaimsAssetsSettlementDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_refundDate") String liabilitiesClaimsAssetsRefundDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_tradingDate") String liabilitiesClaimsAssetsTradingDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_contract") String liabilitiesClaimsAssetsContract,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("chargeCommission") String chargeCommission,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity") String liabilitiesClaimsAssetsClaimsQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_refundPaymentId") String liabilitiesClaimsAssetsRefundPaymentId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_clearingStatus") String liabilitiesClaimsAssetsClearingStatus,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_comment") String liabilitiesClaimsAssetsComment
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_13;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("incomingDocuments")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportDOCIN extends AbstractReport {
|
|
||||||
/**
|
|
||||||
* Дата в формате: dd.MM.yyyy
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("date")
|
|
||||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
|
||||||
private final LocalDate date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Время в формате: hh:mm:ss
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("time")
|
|
||||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
|
||||||
private final LocalTime time;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private List<Info_DOCIN> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportDOCIN(LocalDate date,
|
|
||||||
LocalTime time) {
|
|
||||||
super(ReportId.BT13_11,
|
|
||||||
"0.0.1",
|
|
||||||
"BT 13.11",
|
|
||||||
"Журнал Входящих документов");
|
|
||||||
this.date = date;
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_DOCIN> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "DOCIN.%s".formatted(
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_DOCIN(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("id") String id,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationDate") String inDocumentJournalRegistrationDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationTime") String inDocumentJournalRegistrationTime,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationNumber") String inDocumentJournalRegistrationNumber,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_documentName") String inDocumentJournalDocumentName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_sender") String inDocumentJournalSender,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_quantity") String inDocumentJournalQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_clearingCode") String inDocumentJournalClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_courierType") String inDocumentJournalCourierType,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_emailDate") String inDocumentJournal_emailDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_Amount") String inDocumentJournalAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_dossierNumber") String inDocumentJournalDossierNumber,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_Comment") String inDocumentJournalComment,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_receiptDate") String inDocumentJournalReceiptDate
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_13;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("incomingDocuments")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportDOCOUT extends AbstractReport {
|
|
||||||
/**
|
|
||||||
* Дата в формате: dd.MM.yyyy
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("date")
|
|
||||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
|
||||||
private final LocalDate date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Время в формате: hh:mm:ss
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("time")
|
|
||||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
|
||||||
private final LocalTime time;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private List<Info_DOCOUT> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportDOCOUT(LocalDate date,
|
|
||||||
LocalTime time) {
|
|
||||||
super(ReportId.BT13_12,
|
|
||||||
"0.0.1",
|
|
||||||
"BT 13.12",
|
|
||||||
"Журнал Исходящих документов");
|
|
||||||
this.date = date;
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_DOCOUT> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "DOCOUT.%s".formatted(
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_DOCOUT(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("id") String id,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationDate") String outDocumentJournalRegistrationDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationTime") String outDocumentJournalRegistrationTime,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationNumber") String outDocumentJournalRegistrationNumber,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_documentName") String outDocumentJournalDocumentName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_addressee") String outDocumentJournalAddressee,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_quantity") String outDocumentJournalQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_clearingCode") String outDocumentJournalClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_courierType") String outDocumentJournalCourierType,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_emailDate") String outDocumentJournal_emailDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_Amount") String outDocumentJournalAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_dossierNumber") String outDocumentJournalDossierNumber,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_postDate") String outDocumentJournalPostDate
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_16_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("accountBalanceInfo")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportINACCNT extends AbstractReport {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("clearingMemberCategory")
|
|
||||||
private final String companyClearingCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Дата в формате: dd.MM.yyyy
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("date")
|
|
||||||
// @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
|
|
||||||
private final LocalDate date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Время в формате: hh:mm:ss
|
|
||||||
*/
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("time")
|
|
||||||
// @XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
|
|
||||||
private final LocalTime time;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_INACCNT> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportINACCNT(String companyClearingCode, LocalDate date, LocalTime time) {
|
|
||||||
super(ReportId.BT16_5,
|
|
||||||
"0.0.1",
|
|
||||||
"BT16.5",
|
|
||||||
"Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга");
|
|
||||||
this.companyClearingCode = companyClearingCode;
|
|
||||||
this.date = date;
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "INACCNT.%s.%s".formatted(
|
|
||||||
companyClearingCode,
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_INACCNT> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_INACCNT(@XStreamAsAttribute @XStreamAlias("id") String id,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_account") String accountBalanceAccount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_openAccount") String accountBalanceOpenAccount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_debitAccount") String accountBalanceDebitAccount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_creditAccount") String accountBalanceCreditAccount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_closeAccount") String accountBalanceCloseAccount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_1;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilities")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("clearingMemberCategory")
|
|
||||||
private String clearingMemberCategory;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420315_P1> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420315_P1(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420315_P1,
|
|
||||||
"0.0.1",
|
|
||||||
"0420315",
|
|
||||||
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1",
|
|
||||||
startDate,
|
|
||||||
endDate,
|
|
||||||
ClearingStatus.OK.getKey());
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
this.clearingMemberCategory = "%s,%s".formatted(
|
|
||||||
ClearingCategory.I.getKey(),
|
|
||||||
ClearingCategory.V.getKey()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420315_P1> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420315.P1.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420315_P1(@XStreamAlias("company_id") @XStreamAsAttribute String companyId,
|
|
||||||
@XStreamAlias("company_fullName") @XStreamAsAttribute String companyFullName,
|
|
||||||
@XStreamAlias("listing_market") @XStreamAsAttribute String listingMarket,
|
|
||||||
@XStreamAlias("contract_qty") @XStreamAsAttribute String contractQty,
|
|
||||||
@XStreamAlias("liabilities_amount") @XStreamAsAttribute String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_1;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@XStreamAlias("clearedLiabilitiesTotal")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420315_P2 extends ReportWithPeriod {
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private Info_0420315_P2 rows;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
public ReportBR_0420315_P2(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420315_P2,
|
|
||||||
"0.0.1",
|
|
||||||
"0420315",
|
|
||||||
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420315.P2.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Info_0420315_P2 getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRows(Info_0420315_P2 rows) {
|
|
||||||
this.rows = rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
public record Info_0420315_P2(@XStreamAlias("contract_qty") @XStreamAsAttribute String contractQty,
|
|
||||||
@XStreamAlias("liabilities_amount") @XStreamAsAttribute String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_2;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingServiceStatus")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420317 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420317> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420317(LocalDate startDate, LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420317,
|
|
||||||
"0.0.1",
|
|
||||||
"0420317",
|
|
||||||
"Сведения о предоставлении, прекращении, приостановке," +
|
|
||||||
" возобновлении допуска к клиринговому обслуживанию",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420317> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420317.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420317(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("relation_supplierId") String relationSupplierId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("relation_serviceId") String relationServiceId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("relation_serviceStatus") String relationServiceStatus,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("relation_updatedAt") String relationUpdatedAt,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_code") String companySymbolCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companyInfo_countryCode") String companyInfoCountryCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("relation_comment") String relationComment) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_3;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("unfundedLiabilities")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420318 extends ReportWithClearingStatus {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420318> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420318(LocalDate startDate, LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420318,
|
|
||||||
"0.0.1",
|
|
||||||
"0420318",
|
|
||||||
"Сведения о неисполненных обязательствах",
|
|
||||||
startDate,
|
|
||||||
endDate,
|
|
||||||
ClearingStatus.FAIL.getKey());
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420318> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420318.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420318(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullName") String liabilitiesClaimsAssetsFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbols_code") String companySymbolsCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_countryCode") String liabilitiesClaimsAssetsCountryCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_settlementDate") String liabilitiesClaimsAssetsSettlementDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_Contract") String liabilitiesClaimsAssetsContract,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsMoney_currencyCode") String liabilitiesClaimsMoneyCurrencyCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsMoney_name") String liabilitiesClaimsMoneyName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilities") String liabilitiesClaimsAssetsLiabilities,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_comment") String liabilitiesClaimsAssetsComment,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_value") String companySymbolValue,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullNames") String liabilitiesClaimsAssetsFullNames) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_4;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("accountTransactionLiabilities")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420314_P1> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) {
|
|
||||||
super(ReportId.BR_0420314_P1,
|
|
||||||
"0.0.1",
|
|
||||||
"0420314",
|
|
||||||
"Сведения об УК и операциях, проведенных по торговым счетам, часть 1",
|
|
||||||
startDate,
|
|
||||||
endDate,
|
|
||||||
clearingStatus);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420314_P1> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420314.P1.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("partOne")
|
|
||||||
public record Info_0420314_P1(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("profileDocument_id") String profileDocumentId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_code") String companySymbolCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_value") String companySymbolValue,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("clearingMemberCategory_clearingMemberCategory") String clearingMemberCategoryClearingMemberCategory,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_contract") String liabilitiesClaimsAssets_contract,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_tradingDate") String liabilitiesClaimsAssets_tradingDate,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_4;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("accountTransactionTurnover")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420314_P2 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("transactionStatus")
|
|
||||||
protected String transactionStatus;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420314_P2> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate, String transactionStatus, String destination) {
|
|
||||||
super(ReportId.BR_0420314_P2,
|
|
||||||
"0.0.1",
|
|
||||||
"0420314",
|
|
||||||
"Сведения об УК и операциях, проведенных по торговым счетам, часть 2",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.transactionStatus = transactionStatus;
|
|
||||||
this.destination = destination;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420314_P2> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@XStreamAlias("partTwo")
|
|
||||||
public record Info_0420314_P2(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("profileDocument_id") String profileDocumentId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_openBalanceAmount") String accountBalanceOpenBalanceAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("paymentInstruction_creditLeg_amount") String paymentInstructionCreditLegAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("paymentInstruction_debitLeg_amount") String paymentInstructionDebitLegAmount,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("accountBalance_closeBalanceAmount") String accountBalanceCloseBalanceAmount) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420314.P2.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage1")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P1 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P1> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P1(LocalDate startDate,
|
|
||||||
LocalDate endDate,
|
|
||||||
String destination) {
|
|
||||||
super(ReportId.BR_0420312_P1,
|
|
||||||
"0.0.1",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 1",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = destination;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P1> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-1.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P1(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") String liabilitiesClaimsAssetsCompanyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullName") String liabilitiesClaimsAssetsFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_code") String companySymbolCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_value") String companySymbolValue,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companyInfo_countryCode") String companyInfoCountryCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("clearingMemberCategory_clearingMemberCategory") String clearingMemberCategoryClearingMemberCategory) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage10")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P10 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P10> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P10(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P10,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 10",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ReportBR_0420312_P10.Info_0420312_P10> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р3-3.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public record Info_0420312_P10(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilities_amount") String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage2")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P2 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P2> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P2(LocalDate startDate,
|
|
||||||
LocalDate endDate,
|
|
||||||
String destination) {
|
|
||||||
super(ReportId.BR_0420312_P2,
|
|
||||||
"0.0.1",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 2",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-2.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P2> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P2(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") String liabilitiesClaimsAssetsCompanyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilities") String liabilitiesClaimsAssetsLiabilities) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage3")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P3 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P3> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P3(LocalDate startDate,
|
|
||||||
LocalDate endDate,
|
|
||||||
String destination) {
|
|
||||||
super(ReportId.BR_0420312_P3,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 3",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-3.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P3> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P3(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") String liabilitiesClaimsAssetsCompanyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilities") String liabilitiesClaimsAssetsLiabilities) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage4")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P4 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P4> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P4(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P4,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 4",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-4.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P4> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P4(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilities_amount") String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage5")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P5 extends ReportWithPeriod {
|
|
||||||
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P5> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P5(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P5,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 5",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-5.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P5> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P5(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilities_amount") String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage6")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P6 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P6> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P6(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P6,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 6",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-6.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P6> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P6(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilities_amount") String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage7")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P7 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P7> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P7(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P7,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 7",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р1-7.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P7> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P7(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilities_amount") String liabilitiesAmount) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage8")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P8 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P8> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P8(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P8,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 8",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P8> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р3-1.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@XStreamAlias("row")
|
|
||||||
public record Info_0420312_P8(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("currency_id") String currencyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") String liabilitiesClaimsAssetsCompanyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_fullName") String liabilitiesClaimsAssetsFullName,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_code") String companySymbolCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companySymbol_value") String companySymbolValue,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("companyInfo_countryCode") String companyInfoCountryCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("clearingMemberCategory_clearingMemberCategory") String clearingMemberCategoryClearingMemberCategory
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.reports.bt.bt_17_5;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
|
||||||
import ru.spcex.clearing.reports.reports.Destination;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XStreamAlias("clearingCoverage9")
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P9 extends ReportWithPeriod {
|
|
||||||
@XStreamAsAttribute
|
|
||||||
@XStreamAlias("destination")
|
|
||||||
private String destination;
|
|
||||||
|
|
||||||
@XStreamAlias("rows")
|
|
||||||
private final List<Info_0420312_P9> rows = new ArrayList<>();
|
|
||||||
|
|
||||||
public ReportBR_0420312_P9(LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
super(ReportId.BR_0420312_P9,
|
|
||||||
"0.0.5",
|
|
||||||
"0420312",
|
|
||||||
"Сведения о клиринговом обеспечении, часть 9",
|
|
||||||
startDate,
|
|
||||||
endDate);
|
|
||||||
this.destination = Destination.BR.getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Info_0420312_P9> getRows() {
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getReportName(LocalDateTime reportDateTime) {
|
|
||||||
return "REPBR.0420312_р3-2.%s-%s.%s".formatted(
|
|
||||||
DATE_FORMATTER.format(startDate),
|
|
||||||
DATE_FORMATTER.format(endDate),
|
|
||||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public record Info_0420312_P9(
|
|
||||||
@XStreamAsAttribute @XStreamAlias("currency_id") String currencyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") String liabilitiesClaimsAssetsCompanyId,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsMoney_currencyCode") String liabilitiesClaimsMoneyCurrencyCode,
|
|
||||||
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilities") String liabilitiesClaimsAssetsLiabilities
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
import ru.spcex.clearing.reports.reports.ReportId;
|
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public abstract class AbstractReportCollector<T extends AbstractReport> {
|
|
||||||
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
|
||||||
public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
||||||
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
abstract public Class<T> getReportClass();
|
|
||||||
|
|
||||||
public ReportId getReportId() {
|
|
||||||
Class<T> theClass = getReportClass();
|
|
||||||
Constructor[] constructors = theClass.getConstructors(); // getConstructors - public, getDeclaredConstructors - all
|
|
||||||
Constructor<T> useConstructor = null;
|
|
||||||
for (int i = 0; i < constructors.length; i++) {
|
|
||||||
if (useConstructor == null || useConstructor.getParameterCount() > constructors[i].getParameterCount()) {
|
|
||||||
useConstructor = constructors[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Object[] cArg = new Object[useConstructor.getParameterCount()]; // all null
|
|
||||||
try {
|
|
||||||
T object = useConstructor.newInstance(cArg);
|
|
||||||
ReportId theId = object.getReportId();
|
|
||||||
return theId;
|
|
||||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
|
|
||||||
throw new RuntimeException("Can not found ReportId from class " + theClass.getName(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void validateDateRange(LocalDate startDate, LocalDate endDate) throws IllegalArgumentException {
|
|
||||||
if (startDate.isAfter(endDate)) {
|
|
||||||
throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Instant toInstantStartDay(LocalDate date) {
|
|
||||||
return date.atStartOfDay(TimeUtil.zone).toInstant();
|
|
||||||
}
|
|
||||||
protected Instant toInstantEndDay(LocalDate date) {
|
|
||||||
return date.plusDays(1).atStartOfDay(TimeUtil.zone).minusSeconds(1).toInstant();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String toString(String str) {
|
|
||||||
if (str == null) return "";
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String toString(Long val) {
|
|
||||||
if (val == null) return "";
|
|
||||||
return val.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Обеспечивает точность 2 знака после запятой
|
|
||||||
*/
|
|
||||||
protected String toString(Double val) {
|
|
||||||
if (val == null) return "";
|
|
||||||
return String.format(Locale.US, "%.2f", val);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Обеспечивает точность 2 знака после запятой
|
|
||||||
*/
|
|
||||||
protected String toString(BigDecimal val) {
|
|
||||||
if (val == null) return "";
|
|
||||||
return val.setScale(2, RoundingMode.HALF_UP).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String toString(Instant val) {
|
|
||||||
if (val == null) return "";
|
|
||||||
return DATE_TIME_FORMATTER.format(val.atZone(ZoneId.systemDefault()));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String toString(LocalDate date) {
|
|
||||||
if (date == null) return "";
|
|
||||||
return DATE_FORMATTER.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String toString(LocalTime date) {
|
|
||||||
if (date == null) return "";
|
|
||||||
return TIME_FORMATTER.format(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
|
||||||
import ru.spcex.platform.enumeration.Task;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.reports.services.ReportsServiceCommand.QUEUE_RUN_DAILY_REPORT_COMMAND;
|
|
||||||
import static ru.spcex.clearing.reports.services.ReportsServiceCommand.QUEUE_RUN_REPORT_COMMAND;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@Lazy // требуется получать экземпляр сервиса явно, когда надо его запустить
|
|
||||||
public class QCommandExecutor extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
ReportsServiceCommand reportsServiceCommand;
|
|
||||||
ReportsServiceSettings config;
|
|
||||||
|
|
||||||
public QCommandExecutor(Consumer<String, Object> kafkaQueue, ImdgProvider imdgProvider,
|
|
||||||
ReportsServiceCommand reportsServiceCommand,
|
|
||||||
ReportsServiceSettings config) {
|
|
||||||
super(kafkaQueue);
|
|
||||||
this.reportsServiceCommand = reportsServiceCommand;
|
|
||||||
this.config = config;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() {
|
|
||||||
log.info("Init queue listener {}", getClass().getSimpleName());
|
|
||||||
callback(LauncherCommandRequest.class)
|
|
||||||
.setConsumer(this::newReportWithPeriod)
|
|
||||||
.forDestination(Task.createReport_GREP.topic(), callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void newReportWithPeriod(BaseRequest<LauncherCommandRequest> reportRequest) {
|
|
||||||
LauncherCommandRequest request = reportRequest.getRequestPayload();
|
|
||||||
log.info("newReportWithPeriod request received: {}", request);
|
|
||||||
final String taskName = QUEUE_RUN_REPORT_COMMAND; //request.getTaskName();
|
|
||||||
|
|
||||||
// if (StringUtils.isBlank(request.getReportId()))
|
|
||||||
// throw new IllegalStateException("ReportID is empty");
|
|
||||||
// LocalDate startDate = request.getStartDate();
|
|
||||||
// LocalDate endDate = request.getEndDate();
|
|
||||||
LocalDate startDate = null;
|
|
||||||
LocalDate endDate = null;
|
|
||||||
if (startDate == null && endDate == null) {
|
|
||||||
endDate = LocalDate.now();
|
|
||||||
startDate = LocalDate.of(endDate.getYear(), endDate.getMonth(), 1);
|
|
||||||
log.debug("No date present, use default: {} - {}", startDate, endDate);
|
|
||||||
}
|
|
||||||
if (startDate == null || endDate == null)
|
|
||||||
throw new IllegalStateException("StartDate or EndDate is null");
|
|
||||||
if (startDate.isAfter(endDate))
|
|
||||||
throw new IllegalStateException("StartDate > EndDate");
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (QUEUE_RUN_REPORT_COMMAND.equals(taskName)
|
|
||||||
|| QUEUE_RUN_DAILY_REPORT_COMMAND.equals(taskName)) {
|
|
||||||
log.info("Generate all report by command {}", taskName);
|
|
||||||
reportsServiceCommand.generateReportAll(taskName, startDate, endDate);
|
|
||||||
} else {
|
|
||||||
log.info("Generate single report by command {}", taskName);
|
|
||||||
reportsServiceCommand.generateReportById(taskName, startDate, endDate);
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("successfully processed");
|
|
||||||
} catch (IOException e) {
|
|
||||||
log.error("Error create report {}: {}", taskName, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
public abstract class ReportForClearingCodeCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
|
||||||
/**
|
|
||||||
* Подготовка отчета по clearingCode
|
|
||||||
*/
|
|
||||||
abstract public T collectReportForClearingCode(String clearingCode);
|
|
||||||
}
|
|
||||||
|
|
@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
||||||
|
|
@ -20,11 +21,14 @@ import ru.spcex.clearing.reports.reports.*;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
import ru.spcex.platform.enumeration.ReportType;
|
||||||
|
import ru.spcex.platform.enumeration.Task;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -38,6 +42,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||||
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||||
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||||
|
private final Function<LauncherCommandRequest, IValidator> reportRequestGREPValidator;
|
||||||
private final Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
private final Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
||||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
private final Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
||||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
||||||
|
|
@ -65,7 +70,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
@Qualifier("reportRequestWithSessionIdListValidator")
|
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||||
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||||
@Qualifier("reportRequestWithPeriodValidator")
|
@Qualifier("reportRequestWithPeriodValidator")
|
||||||
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator) {
|
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator,
|
||||||
|
@Qualifier("reportRequestGREP")
|
||||||
|
Function<LauncherCommandRequest, IValidator> reportRequestGREPValidator) {
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
super(kafkaQueue, kafkaResponseQueue);
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
|
|
@ -77,6 +84,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
||||||
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
||||||
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
||||||
|
this.reportRequestGREPValidator = reportRequestGREPValidator;
|
||||||
this.outFolder = new File(reportsServiceSettings.getReportModuleOut());
|
this.outFolder = new File(reportsServiceSettings.getReportModuleOut());
|
||||||
assert outFolder.isDirectory();
|
assert outFolder.isDirectory();
|
||||||
}
|
}
|
||||||
|
|
@ -95,6 +103,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
callback(ReportRequestWithPeriod.class)
|
callback(ReportRequestWithPeriod.class)
|
||||||
.setFunction(this::createReportForPeriod)
|
.setFunction(this::createReportForPeriod)
|
||||||
.forDestination(Consts.CREATE_REPORT_FOR_PERIOD, callbacks::put);
|
.forDestination(Consts.CREATE_REPORT_FOR_PERIOD, callbacks::put);
|
||||||
|
callback(LauncherCommandRequest.class)
|
||||||
|
.setFunction(this::createReportForGREP)
|
||||||
|
.forDestination(Task.createReport_GREP.topic(), callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -233,5 +244,93 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RequestInfoUpdate createReportForGREP(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||||
|
log.debug("ReportRequestWithPeriod received");
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGREPValidator);
|
||||||
|
if (requestInfoUpdate != null) return null;
|
||||||
|
|
||||||
|
Long sessionId = userRequest.getRequestPayload().getSessionId();
|
||||||
|
|
||||||
|
int cntErrors = 0;
|
||||||
|
List<String> outFilenames = new ArrayList<>();
|
||||||
|
|
||||||
|
Collection<List<CSVReportBuilder<EmptyParams>>> buildersWithoutParams = reportBuildersWithoutParams.values();
|
||||||
|
for (List<CSVReportBuilder<EmptyParams>> builderList : buildersWithoutParams) {
|
||||||
|
for (CSVReportBuilder<EmptyParams> builder : builderList) {
|
||||||
|
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||||
|
if (outFile == null) {
|
||||||
|
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
||||||
|
cntErrors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
outFilenames.add(outFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sessionId != null) {
|
||||||
|
|
||||||
|
Collection<List<CSVReportBuilder<SessionIdParam>>> buildersWithSessionIdParam = reportBuildersWithSessionIdParam.values();
|
||||||
|
for (List<CSVReportBuilder<SessionIdParam>> builderList : buildersWithSessionIdParam) {
|
||||||
|
for (CSVReportBuilder<SessionIdParam> builder : builderList) {
|
||||||
|
if (
|
||||||
|
builder.getReportType() == ReportType.OPERATIONAL_MONEY_CHANGE ||
|
||||||
|
builder.getReportType() == ReportType.OPERATIONAL_LIABILITIES_CLAIMS
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||||
|
sessionIdParam.setSessionId(sessionId);
|
||||||
|
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||||
|
if (outFile == null) {
|
||||||
|
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
||||||
|
cntErrors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
outFilenames.add(outFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<List<CSVReportBuilder<SessionIdListParams>>> buildersWithSessionIdListParam = reportBuildersWithSessionIdListParam.values();
|
||||||
|
for (List<CSVReportBuilder<SessionIdListParams>> builderList : buildersWithSessionIdListParam) {
|
||||||
|
for (CSVReportBuilder<SessionIdListParams> builder : builderList) {
|
||||||
|
SessionIdListParams sessionIdListParams = new SessionIdListParams();
|
||||||
|
sessionIdListParams.setSessionIdList(List.of(sessionId));
|
||||||
|
File outFile = builder.createReport(sessionIdListParams, outFolder);
|
||||||
|
if (outFile == null) {
|
||||||
|
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
||||||
|
cntErrors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
outFilenames.add(outFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDate now = LocalDate.now();
|
||||||
|
Collection<List<CSVReportBuilder<PeriodParams>>> buildersWithPeriodParams = reportBuildersWithPeriodParams.values();
|
||||||
|
for (List<CSVReportBuilder<PeriodParams>> builderList : buildersWithPeriodParams) {
|
||||||
|
for (CSVReportBuilder<PeriodParams> builder : builderList) {
|
||||||
|
PeriodParams periodParams = new PeriodParams();
|
||||||
|
periodParams.setStartDate(now);
|
||||||
|
periodParams.setEndDate(now);
|
||||||
|
File outFile = builder.createReport(periodParams, outFolder);
|
||||||
|
if (outFile == null) {
|
||||||
|
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
||||||
|
cntErrors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
outFilenames.add(outFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cntErrors == 0) log.debug("All reports successfully created. Output files: {}", String.join(", ", outFilenames));
|
||||||
|
else log.debug("Some reports ({}) create failed. Output files: {}", cntErrors, String.join(", ", outFilenames));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public abstract class ReportWithPeriodCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
|
||||||
/**
|
|
||||||
* Подготовка отчета на период startDate..endDate
|
|
||||||
*/
|
|
||||||
abstract public T collectReportWithPeriod(LocalDate startDate, LocalDate endDate);
|
|
||||||
|
|
||||||
protected Collection<LiabilitiesClaimsAssets> searchLiabilitiesClaimsAssets(Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg,
|
|
||||||
LocalDate startDate,
|
|
||||||
LocalDate endDate) {
|
|
||||||
ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
|
||||||
// Instant dateTimeLo = toInstantStartDay(startDate);
|
|
||||||
// Instant dateTimeHi = toInstantEndDay(endDate);
|
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("refundDate", startDate), pb.lessEqual("refundDate", endDate));
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
return liabilities;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Collection<LiabilitiesClaimsAssets> searchLiabilitiesClaimsAssets(Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg,
|
|
||||||
LocalDate startDate, LocalDate endDate,
|
|
||||||
Long allowClearingStatusId) {
|
|
||||||
ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
|
||||||
// Instant dateTimeLo = toInstantStartDay(startDate);
|
|
||||||
// Instant dateTimeHi = toInstantEndDay(endDate);
|
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("refundDate", startDate), pb.lessEqual("refundDate", endDate),
|
|
||||||
pb.equals("clearingStatus", allowClearingStatusId));
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
return liabilities;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,320 +0,0 @@
|
||||||
//package ru.spcex.clearing.reports.services;
|
|
||||||
//
|
|
||||||
//import com.thoughtworks.xstream.XStream;
|
|
||||||
//import com.thoughtworks.xstream.io.naming.NoNameCoder;
|
|
||||||
//import com.thoughtworks.xstream.io.xml.XppDriver;
|
|
||||||
//import org.slf4j.Logger;
|
|
||||||
//import org.slf4j.LoggerFactory;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_B;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_IV;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
|
|
||||||
////import ru.spcex.clearing.reports.reports.bt_13.Report_BT13_12;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_16_5.Report_BT16_5;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P2;
|
|
||||||
//import ru.spcex.clearing.reports.reports.bt_17_5.*;
|
|
||||||
//
|
|
||||||
//import java.time.LocalDate;
|
|
||||||
//import java.time.LocalTime;
|
|
||||||
//
|
|
||||||
//@Deprecated
|
|
||||||
//public class ReportsService {
|
|
||||||
// private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
//
|
|
||||||
// public void writeXML() {
|
|
||||||
// XStream xStream = new XStream(new XppDriver(new NoNameCoder()));
|
|
||||||
//
|
|
||||||
// xStream.processAnnotations(ReportBR_0420315_P1.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420315_P2.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420317.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420318.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420314_P1.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420314_P2.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P1.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P2.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P3.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P4.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P5.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P6.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P7.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P8.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P9.class);
|
|
||||||
// xStream.processAnnotations(ReportBR_0420312_P10.class);
|
|
||||||
// xStream.processAnnotations(ReportPA_BT2_IV.class);
|
|
||||||
// xStream.processAnnotations(ReportPA_BT2_B.class);
|
|
||||||
// xStream.processAnnotations(Report_BT16_5.class);
|
|
||||||
// xStream.processAnnotations(ReportDOCIN.class);
|
|
||||||
//// xStream.processAnnotations(Report_BT13_12.class);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 17.1 ========== */
|
|
||||||
// // todo see ReportDataCollector
|
|
||||||
// ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(),
|
|
||||||
// LocalDate.now());
|
|
||||||
// ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId",
|
|
||||||
// "companyFullName",
|
|
||||||
// "listingMarket",
|
|
||||||
// "contractorQty",
|
|
||||||
// "liabilitiesAmount");
|
|
||||||
// reportBR_0420315_p1.getRows().add(info_0420315_p1);
|
|
||||||
// log.info("ReportBR_0420315_P1:\n{}\n", xStream.toXML(reportBR_0420315_p1));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//// ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "contractorQty",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420315_P2:\n{}\n", xStream.toXML(reportBR_0420315_p2));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 17.2 ========== */
|
|
||||||
// ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now());
|
|
||||||
// ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317("companyClearingCode",
|
|
||||||
// "relationSupplierId",
|
|
||||||
// "relationServiceId",
|
|
||||||
// "relationServiceStatus",
|
|
||||||
// "relationUpdatedAt",
|
|
||||||
// "companyFullName",
|
|
||||||
// "companySymbolCode",
|
|
||||||
// "companyInfoCountryCode",
|
|
||||||
// "relationComment");
|
|
||||||
// reportBR_0420317.getRows().add(info_0420317);
|
|
||||||
// log.info("ReportBR_0420317:\n{}\n", xStream.toXML(reportBR_0420317));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 17.3 ========== */
|
|
||||||
// ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now());
|
|
||||||
// ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318(
|
|
||||||
// "liabilitiesClaimsAssetsFullName",
|
|
||||||
// "companySymbolsCode",
|
|
||||||
// "liabilitiesClaimsAssetsCountryCode",
|
|
||||||
// "liabilitiesClaimsAssetsSettlementDate",
|
|
||||||
// "liabilitiesClaimsAssetsAccountType",
|
|
||||||
// "liabilitiesClaimsAssetsContract",
|
|
||||||
// "liabilitiesClaimsMoneyCurrencyCode",
|
|
||||||
// "liabilitiesAmountAmount",
|
|
||||||
// "liabilitiesClaimsMoneyName",
|
|
||||||
// "liabilitiesClaimsAssetsLiabilities",
|
|
||||||
// "liabilitiesClaimsAssetsComment",
|
|
||||||
// "companySymbolValue",
|
|
||||||
// "liabilitiesClaimsAssetsFullNames");
|
|
||||||
// reportBR_0420318.getRows().add(info_0420318);
|
|
||||||
// log.info("ReportBR_0420318:\n{}\n", xStream.toXML(reportBR_0420318));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 17.4 ========== */
|
|
||||||
// ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now(), "clearingStatus", "BR");
|
|
||||||
// ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1("companyClearingCode",
|
|
||||||
// "paymentInstructionSenderId",
|
|
||||||
// "profileDocumentId",
|
|
||||||
// "companyFullName",
|
|
||||||
// "companySymbolCode",
|
|
||||||
// "companySymbolValue",
|
|
||||||
// "clearingMemberCategoryClearingMemberCategory",
|
|
||||||
//// LocalDate.of(2022,11,10),
|
|
||||||
// "liabilitiesClaimsAssetsLiabilitiesQuantity"
|
|
||||||
// );
|
|
||||||
// reportBR_0420314P1.getRows().add(info_0420314P1);
|
|
||||||
// log.info("ReportBR_0420314_P1:\n{}\n", xStream.toXML(reportBR_0420314P1));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// ReportBR_0420314_P2 reportBR_0420314P2 = new ReportBR_0420314_P2(LocalDate.now(), LocalDate.now(), "transactionStatus", "BR");
|
|
||||||
// ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2("companyClearingCode",
|
|
||||||
// "profileDocumentId",
|
|
||||||
// "accountBalanceOpenBalanceAmt",
|
|
||||||
// "paymentInstructionCreditLegAmount",
|
|
||||||
// "paymentInstructionDebitLegAmount",
|
|
||||||
// "accountBalanceCloseBalanceAmount"
|
|
||||||
// );
|
|
||||||
// reportBR_0420314P2.getRows().add(info_0420314P2);
|
|
||||||
// log.info("ReportBR_0420314_P2:\n{}\n", xStream.toXML(reportBR_0420314P2));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
////
|
|
||||||
//// /* ========= БТ 17.5 ========== */
|
|
||||||
//// ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "companyClearingCode",
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitesClaimsAssetsCompanyId",
|
|
||||||
//// "liabilitesClaimsAssetsFullName",
|
|
||||||
//// "companySymbolCode",
|
|
||||||
//// "companySymbolValue",
|
|
||||||
//// "companyInfoCountryCode",
|
|
||||||
//// "clearingMemberCategory");
|
|
||||||
//// log.info("ReportBR_0420312_P1:\n{}\n", xStream.toXML(reportBR_0420312P1));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P2 reportBR_0420312P2 = new ReportBR_0420312_P2(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesClaimsAssetsCompanyId",
|
|
||||||
//// "liabilitiesClaimsAssetsLiabilities");
|
|
||||||
//// log.info("ReportBR_0420312_P2:\n{}\n", xStream.toXML(reportBR_0420312P2));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P3 reportBR_0420312P3 = new ReportBR_0420312_P3(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesClaimsAssetsCompanyId",
|
|
||||||
//// "liabilitiesClaimsAssetsLiabilities");
|
|
||||||
//// log.info("ReportBR_0420312_P3:\n{}\n", xStream.toXML(reportBR_0420312P3));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420312_P4:\n{}\n", xStream.toXML(reportBR_0420312P4));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420312_P5:\n{}\n", xStream.toXML(reportBR_0420312P5));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P6 reportBR_0420312P6 = new ReportBR_0420312_P6(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420312_P6:\n{}\n", xStream.toXML(reportBR_0420312P6));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P7 reportBR_0420312P7 = new ReportBR_0420312_P7(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420312_P7:\n{}\n", xStream.toXML(reportBR_0420312P7));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "currencyId",
|
|
||||||
//// "liabilitiesClaimsAssetsCompanyId",
|
|
||||||
//// "liabilitiesClaimsAssetsFullName",
|
|
||||||
//// "companySymbolCode",
|
|
||||||
//// "companySymbolValue",
|
|
||||||
//// "companyInfoCountryCode",
|
|
||||||
//// "clearingMemberCategory");
|
|
||||||
//// log.info("ReportBR_0420312_P8:\n{}\n", xStream.toXML(reportBR_0420312P8));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "currencyId",
|
|
||||||
//// "liabilitiesClaimsAssetsCompanyId",
|
|
||||||
//// "liabilitiesClaimsMoneyCurrencyCode",
|
|
||||||
//// "liabilitiesClaimsAssetsLiabilities");
|
|
||||||
//// log.info("ReportBR_0420312_P9:\n{}\n", xStream.toXML(reportBR_0420312P9));
|
|
||||||
////
|
|
||||||
//// ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "BR",
|
|
||||||
//// "liabilitiesAmount");
|
|
||||||
//// log.info("ReportBR_0420312_P10:\n{}\n", xStream.toXML(reportBR_0420312P10));
|
|
||||||
////
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 12.2 ========== */
|
|
||||||
//// ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "clearingMemberCategory",
|
|
||||||
//// "liabilitiesClaimsAssetsFullName",
|
|
||||||
//// "companyClearingCode",
|
|
||||||
//// "liabilitiesClaimsAssetsSettlementDate",
|
|
||||||
//// "liabilitiesClaimsAssetsRefundDate",
|
|
||||||
//// "liabilitiesClaimsAssetsTradingDate",
|
|
||||||
//// "liabilitiesClaimsAssetsContract",
|
|
||||||
//// "liabilitiesClaimsAssetsLiabilitiesQuantity",
|
|
||||||
//// "chargeCommission",
|
|
||||||
//// "liabilitiesClaimsAssetsClaimsQuantity",
|
|
||||||
//// "liabilitiesClaimsAssetsRefundPaymentId",
|
|
||||||
//// "liabilitiesClaimsAssetsClearingStatus",
|
|
||||||
//// "liabilitiesClaimsAssetsComment",
|
|
||||||
//// "claimsAmount",
|
|
||||||
//// "liabilitiesAmount",
|
|
||||||
//// "paymentAmount");
|
|
||||||
//// log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv));
|
|
||||||
//
|
|
||||||
//// ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(),
|
|
||||||
//// LocalDate.now(),
|
|
||||||
//// "clearingMemberCategory",
|
|
||||||
//// "liabilitiesClaimsAssetsFullName",
|
|
||||||
//// "companyClearingCode",
|
|
||||||
//// "liabilitiesClaimsAssetsSettlementDate",
|
|
||||||
//// "liabilitiesClaimsAssetsRefundDate",
|
|
||||||
//// "liabilitiesClaimsAssetsTradingDate",
|
|
||||||
//// "liabilitiesClaimsAssetsContract",
|
|
||||||
//// "liabilitiesClaimsAssetsLiabilitiesQuantity",
|
|
||||||
//// "chargeCommission",
|
|
||||||
//// "liabilitiesClaimsAssetsClaimsQuantity",
|
|
||||||
//// "liabilitiesClaimsAssetsRefundPaymentId",
|
|
||||||
//// "liabilitiesClaimsAssetsClearingStatus",
|
|
||||||
//// "liabilitiesClaimsAssetsComment",
|
|
||||||
//// "claimsAmount",
|
|
||||||
//// "liabilitiesAmount",
|
|
||||||
//// "paymentAmount");
|
|
||||||
//// log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 13 ========== */
|
|
||||||
//// ReportDOCIN report_bt13_11 = new ReportDOCIN(LocalDate.now(),
|
|
||||||
//// LocalTime.now(),
|
|
||||||
//// "inDocumentJournalRegistrationDate",
|
|
||||||
//// "inDocumentJournalRegistrationTime",
|
|
||||||
//// "inDocumentJournalRegistrationNumber",
|
|
||||||
//// "inDocumentJournalDocumentName" ,
|
|
||||||
//// "inDocumentJournalSender",
|
|
||||||
//// "inDocumentJournalQuality",
|
|
||||||
//// "inDocumentJournalClearingCode",
|
|
||||||
//// "inDocumentJournalCourierType",
|
|
||||||
//// "inDocumentJournalEmailDate",
|
|
||||||
//// "inDocumentJournalAmount",
|
|
||||||
//// "inDocumentJournalDossierNumber",
|
|
||||||
//// "inDocumentJournalComment",
|
|
||||||
//// "inDocumentJournalReceiptDate");
|
|
||||||
//// log.info("Report_BT13_11:\n{}\n", xStream.toXML(report_bt13_11));
|
|
||||||
//
|
|
||||||
// Report_BT13_12 report_bt13_12 = new Report_BT13_12(LocalDate.now(),
|
|
||||||
// LocalTime.now(),
|
|
||||||
// "outDocumentJournalRegistrationDate",
|
|
||||||
// "outDocumentJournalRegistrationTime",
|
|
||||||
// "outDocumentJournalRegistrationNumber",
|
|
||||||
// "outDocumentJournalDocumentName" ,
|
|
||||||
// "outDocumentJournalAddress",
|
|
||||||
// "outDocumentJournalQuality",
|
|
||||||
// "outDocumentJournalClearingCode",
|
|
||||||
// "outDocumentJournalCourierType",
|
|
||||||
// "outDocumentJournalEmailDate",
|
|
||||||
// "outDocumentJournalAmount",
|
|
||||||
// "outDocumentJournalDossierNumber",
|
|
||||||
// "outDocumentJournalPostDate");
|
|
||||||
// log.info("Report_BT13_12:\n{}\n", xStream.toXML(report_bt13_12));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /* ========= БТ 16.5 ========== */
|
|
||||||
// Report_BT16_5 report_bt16_5 = new Report_BT16_5(LocalDate.now(),
|
|
||||||
// LocalTime.now(),
|
|
||||||
// "clearingHouse",
|
|
||||||
// "companyClearingCode",
|
|
||||||
// "companyFullName",
|
|
||||||
// "accountBalanceAccount",
|
|
||||||
// "accountBalanceOpenAmount",
|
|
||||||
// "accountBalanceDebitAmount",
|
|
||||||
// "accountBalanceCreditAmount",
|
|
||||||
// "accountBalanceCloseAmount");
|
|
||||||
// log.info("Report_BT16_5:\n{}\n", xStream.toXML(report_bt16_5));
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
@ -1,270 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.lang.Nullable;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
|
||||||
import ru.spcex.clearing.reports.config.ReportBuildersConfig;
|
|
||||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
|
||||||
import ru.spcex.clearing.reports.reports.*;
|
|
||||||
import ru.spcex.clearing.reports.services.builders.XMLReportBuilder;
|
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Исполняет создание отчётов.
|
|
||||||
*
|
|
||||||
* @see QCommandExecutor
|
|
||||||
*/
|
|
||||||
@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 = QUEUE_RUN_REPORT_COMMAND; // дневные тоже по команде GREP запускать с остальными.
|
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
protected ReportsServiceSettings settings;
|
|
||||||
protected ImdgProvider imdg;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
protected List<ReportWithPeriodCollector> allPeriodReports; // Spring services
|
|
||||||
@Deprecated
|
|
||||||
protected List<SimpleReportCollector> allSimpleReports;
|
|
||||||
@Deprecated
|
|
||||||
private final Map<ReportId, AbstractReportCollector> collectorForReportById;
|
|
||||||
|
|
||||||
// new format report:
|
|
||||||
ReportService newReportService; // by ReportBuildersConfig
|
|
||||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
|
||||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
|
||||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
|
||||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams;
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportsServiceCommand(ImdgProvider imdg,
|
|
||||||
List<ReportWithPeriodCollector> allPeriodReports,
|
|
||||||
List<SimpleReportCollector> allSimpleReports,
|
|
||||||
@Qualifier("reportBuildersWithoutParams") Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams,
|
|
||||||
@Qualifier("reportBuildersWithSessionIdParam") Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam,
|
|
||||||
@Qualifier("reportBuildersWithSessionIdListParam") Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam,
|
|
||||||
@Qualifier("reportBuildersWithPeriodParams") Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams,
|
|
||||||
|
|
||||||
ReportService reportService,
|
|
||||||
ReportsServiceSettings settings) {
|
|
||||||
this.imdg = imdg;
|
|
||||||
this.settings = settings;
|
|
||||||
|
|
||||||
this.newReportService = reportService;
|
|
||||||
this.reportBuildersWithoutParams = reportBuildersWithoutParams;
|
|
||||||
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
|
||||||
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
|
||||||
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
|
||||||
|
|
||||||
this.allSimpleReports = allSimpleReports;
|
|
||||||
this.allPeriodReports = allPeriodReports; // allReports = context.getBeansOfType(ReportDataCollector.class);
|
|
||||||
this.collectorForReportById = new HashMap<>();
|
|
||||||
for (ReportWithPeriodCollector<?> collector : allPeriodReports) {
|
|
||||||
ReportId rId = collector.getReportId();
|
|
||||||
collectorForReportById.put(rId, collector);
|
|
||||||
String idStr = rId == null ? null : rId.getKey();
|
|
||||||
log.info("Register collector service {} (period report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName());
|
|
||||||
}
|
|
||||||
assert allPeriodReports.size() == collectorForReportById.size();
|
|
||||||
for (SimpleReportCollector<?> collector : allSimpleReports) {
|
|
||||||
ReportId rId = collector.getReportId();
|
|
||||||
collectorForReportById.put(rId, collector);
|
|
||||||
String idStr = rId == null ? null : rId.getKey();
|
|
||||||
log.info("Register collector service {} (simple report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() {
|
|
||||||
log.info("Wait IMDG...");
|
|
||||||
imdg.waitAvailable();
|
|
||||||
log.info("Report generator ready.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void generateReportAll(@Nullable String reportGroup, LocalDate startDate, LocalDate endDate) throws IOException {
|
|
||||||
// new reports:
|
|
||||||
{
|
|
||||||
HashSet<ReportType> reported=new HashSet<>();
|
|
||||||
for (ReportType rType : reportBuildersWithoutParams.keySet()) {
|
|
||||||
if (reported.contains(rType)) continue;
|
|
||||||
reported.add(rType);
|
|
||||||
log.info("Make report {}", rType);
|
|
||||||
try {
|
|
||||||
BaseRequest<ReportRequest> request = new BaseRequest<>();
|
|
||||||
request.setRequestPayload(new ReportRequest());
|
|
||||||
request.getRequestPayload().setReportId(rType.getKey());
|
|
||||||
newReportService.createReport(request);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error make report {}: {}", rType, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Imdg<Session> sessionImdg = imdg.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
|
||||||
Long sessionId = sessionImdg.aggregateLongMax("id", sessionImdg.predicateBuilder().greatEqual("id", 0L)); // max, always true
|
|
||||||
log.info("For all report sessionId={}", sessionId);
|
|
||||||
for (ReportType rType : reportBuildersWithSessionIdParam.keySet()) {
|
|
||||||
if (reported.contains(rType)) continue;
|
|
||||||
reported.add(rType);
|
|
||||||
log.info("Make report {}, session {}", rType, sessionId);
|
|
||||||
try {
|
|
||||||
BaseRequest<ReportRequestWithSessionId> request = new BaseRequest<>();
|
|
||||||
request.setRequestPayload(new ReportRequestWithSessionId());
|
|
||||||
request.getRequestPayload().setReportId(rType.getKey());
|
|
||||||
request.getRequestPayload().setSessionId(sessionId);
|
|
||||||
newReportService.createReportForSessionId(request);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error make report {}: {}", rType, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ReportType rType : reportBuildersWithSessionIdListParam.keySet()) {
|
|
||||||
if (reported.contains(rType)) continue;
|
|
||||||
reported.add(rType);
|
|
||||||
log.info("Make report {}, sessions {}", rType, sessionId);
|
|
||||||
try {
|
|
||||||
BaseRequest<ReportRequestWithSessionIdList> request = new BaseRequest<>();
|
|
||||||
request.setRequestPayload(new ReportRequestWithSessionIdList());
|
|
||||||
request.getRequestPayload().setReportId(rType.getKey());
|
|
||||||
request.getRequestPayload().setSessionIdList(Arrays.asList(sessionId));
|
|
||||||
newReportService.createReportForSessionIdList(request);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error make report {}: {}", rType, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (ReportType rType : reportBuildersWithPeriodParams.keySet()) {
|
|
||||||
if (reported.contains(rType)) continue;
|
|
||||||
reported.add(rType);
|
|
||||||
LocalDate d1=LocalDate.now().minusDays(1);
|
|
||||||
LocalDate d2=LocalDate.now().minusDays(1);
|
|
||||||
log.info("Make report {} period {} - {}", rType, d1, d2);
|
|
||||||
try {
|
|
||||||
BaseRequest<ReportRequestWithPeriod> request = new BaseRequest<>();
|
|
||||||
request.setRequestPayload(new ReportRequestWithPeriod());
|
|
||||||
request.getRequestPayload().setReportId(rType.getKey());
|
|
||||||
request.getRequestPayload().setStartDate(d1);
|
|
||||||
request.getRequestPayload().setStartDate(d2);
|
|
||||||
newReportService.createReportForPeriod(request);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error make report {}: {}", rType, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info(" Old format report...");
|
|
||||||
// deprecated code:
|
|
||||||
for (ReportWithPeriodCollector<?> reportDataCollector : allPeriodReports) {
|
|
||||||
if (reportGroup == null || QUEUE_RUN_REPORT_COMMAND.equals(reportGroup)) {
|
|
||||||
try {
|
|
||||||
makeSingleReport(reportDataCollector, startDate, endDate);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error generate report of type {}: {}", reportDataCollector, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (SimpleReportCollector<?> reportDataCollector : allSimpleReports) {
|
|
||||||
if (reportGroup == null || QUEUE_RUN_DAILY_REPORT_COMMAND.equals(reportGroup)) {
|
|
||||||
try {
|
|
||||||
makeSingleReport(reportDataCollector);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Error generate report of type {}: {}", reportDataCollector, ExceptionUtils.getStackTrace(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void generateReportById(String reportIdStr, LocalDate startDate, LocalDate endDate) throws IOException {
|
|
||||||
ReportId reportId = parseReportId(reportIdStr);
|
|
||||||
AbstractReportCollector<?> reportDataCollector = collectorForReportById.get(reportId);
|
|
||||||
if (reportDataCollector == null)
|
|
||||||
throw new IllegalStateException("Collector for ReportID " + reportId + " not implemented yet");
|
|
||||||
|
|
||||||
if (reportDataCollector instanceof ReportWithPeriodCollector) {
|
|
||||||
makeSingleReport((ReportWithPeriodCollector) reportDataCollector, startDate, endDate);
|
|
||||||
} else if (reportDataCollector instanceof SimpleReportCollector) {
|
|
||||||
makeSingleReport((SimpleReportCollector) reportDataCollector);
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException("Uncknown report class: " + reportDataCollector.getClass().getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ReportId parseReportId(String reportStr) {
|
|
||||||
ReportId id = IEnumKey.getEnumByKey(ReportId.class, reportStr);
|
|
||||||
if (id == null) {
|
|
||||||
log.trace("Can not find ReportId by name: {}", reportStr);
|
|
||||||
id = ReportId.valueOf(reportStr);
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void makeSingleReport(ReportWithPeriodCollector<?> reportDataCollector, LocalDate startDate, LocalDate endDate) throws IOException {
|
|
||||||
log.debug("Generate report by collector {} - {}", reportDataCollector.getClass().getSimpleName(), reportDataCollector.getReportClass().getSimpleName());
|
|
||||||
File outPath = new File(settings.getReportModuleOut());
|
|
||||||
XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath);
|
|
||||||
AbstractReport report = reportDataCollector.collectReportWithPeriod(startDate, endDate);
|
|
||||||
if (report == null) {
|
|
||||||
throw new NullPointerException("reportDataCollector " + reportDataCollector + " return null");
|
|
||||||
}
|
|
||||||
File reportFile = reportBuilder.createReport(report);
|
|
||||||
if (reportFile != null) {
|
|
||||||
log.debug("New report file done: \"{}\"", reportFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void makeSingleReport(SimpleReportCollector<?> reportDataCollector) throws IOException {
|
|
||||||
log.debug("Generate report by collector {} - {}", reportDataCollector.getClass().getSimpleName(), reportDataCollector.getReportClass().getSimpleName());
|
|
||||||
File outPath = new File(settings.getReportModuleOut());
|
|
||||||
XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath);
|
|
||||||
AbstractReport report = reportDataCollector.collectReport();
|
|
||||||
File reportFile = reportBuilder.createReport(report);
|
|
||||||
if (reportFile != null) {
|
|
||||||
log.debug("New report file done: \"{}\"", reportFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void writeAllXML() throws IOException {
|
|
||||||
log.info("Report types with data range: {}", allPeriodReports);
|
|
||||||
for (ReportWithPeriodCollector collector : allPeriodReports) {
|
|
||||||
log.info("Make report {}", collector);
|
|
||||||
LocalDate date2 = LocalDate.now();
|
|
||||||
LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
|
|
||||||
makeSingleReport(collector, date1, date2);
|
|
||||||
}
|
|
||||||
log.info("Report types: {}", allSimpleReports);
|
|
||||||
for (SimpleReportCollector collector : allSimpleReports) {
|
|
||||||
log.info("Make report {}", collector);
|
|
||||||
LocalDate date2 = LocalDate.now();
|
|
||||||
makeSingleReport(collector);
|
|
||||||
}
|
|
||||||
log.info("All done");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void writeAllDocx() {
|
|
||||||
log.info("TODO write docx"); // todo write docx
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
|
||||||
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public abstract class SimpleReportCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
|
||||||
/**
|
|
||||||
* Подготовка отчета (без входных параметров)
|
|
||||||
*/
|
|
||||||
abstract public T collectReport();
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.builders;
|
|
||||||
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public abstract class FileReportBuilder {
|
|
||||||
protected final Class<? extends AbstractReport> reportClass;
|
|
||||||
|
|
||||||
protected FileReportBuilder(Class<? extends AbstractReport> reportClass) {
|
|
||||||
this.reportClass = reportClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String makeFileName(String reportName, String extension) {
|
|
||||||
if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_");
|
|
||||||
return reportName + extension;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract File createReport(AbstractReport report) throws IOException;
|
|
||||||
}
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.builders;
|
|
||||||
|
|
||||||
import com.thoughtworks.xstream.XStream;
|
|
||||||
import com.thoughtworks.xstream.io.naming.NoNameCoder;
|
|
||||||
import com.thoughtworks.xstream.io.xml.XppDriver;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class XMLReportBuilder extends FileReportBuilder {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
protected final XStream xStream;
|
|
||||||
protected final File outFolder;
|
|
||||||
|
|
||||||
public XMLReportBuilder(Class<? extends AbstractReport> reportClass, File outFolder) {
|
|
||||||
super(reportClass);
|
|
||||||
this.xStream = new XStream(new XppDriver(new NoNameCoder()));
|
|
||||||
xStream.processAnnotations(reportClass);
|
|
||||||
this.outFolder = outFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File createReport(AbstractReport report) throws IOException {
|
|
||||||
String reportName = report.getReportName(LocalDateTime.now());
|
|
||||||
String reportFileName = makeFileName(reportName, ".xml");
|
|
||||||
|
|
||||||
File reportFile = new File(outFolder, reportFileName);
|
|
||||||
if (reportFile.exists()) {
|
|
||||||
if (reportFile.isFile()) {
|
|
||||||
log.warn("Файл {} существует и будет перезаписан", reportFileName);
|
|
||||||
boolean deleteOk = reportFile.delete();
|
|
||||||
if (!deleteOk) throw new IOException("Не удалось удалить файл " + reportFileName);
|
|
||||||
} else throw new IOException(reportFileName + " существует, но не является файлом");
|
|
||||||
}
|
|
||||||
try (FileOutputStream fos = new FileOutputStream(reportFile)) {
|
|
||||||
xStream.toXML(report, fos);
|
|
||||||
}
|
|
||||||
return reportFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class MapUtil {
|
|
||||||
|
|
||||||
public static <V> String joinMultiString(Collection<V> from, Function<V, String> stringFieldExtractor) {
|
|
||||||
ArrayList<String> strToJoin = new ArrayList<>(from.size());
|
|
||||||
for (V obj : from) {
|
|
||||||
String v = stringFieldExtractor.apply(obj);
|
|
||||||
if (v != null) {
|
|
||||||
strToJoin.add(v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return StringUtils.join(strToJoin, ",");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <K, V extends WithId> Map<K, V> index(Collection<V> from, Function<V, K> indexFieldExtractor) {
|
|
||||||
Map<K, V> index = new HashMap<>();
|
|
||||||
for (V obj : from) {
|
|
||||||
K key = indexFieldExtractor.apply(obj);
|
|
||||||
V exist = index.put(key, obj);
|
|
||||||
if (exist != null) {
|
|
||||||
throw new IllegalStateException(String.format("%s with id=%s,%s has duplicate key=\"%s\"",
|
|
||||||
exist.getClass().getSimpleName(), exist.getId(), obj.getId(), key
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <K, V extends WithId> Map<K, List<V>> indexList(Collection<V> from, Function<V, K> indexFieldExtractor) {
|
|
||||||
Map<K, List<V>> index = new HashMap<>();
|
|
||||||
for (V obj : from) {
|
|
||||||
K key = indexFieldExtractor.apply(obj);
|
|
||||||
List<V> lst = index.computeIfAbsent(key, (_key_) -> new ArrayList<>());
|
|
||||||
lst.add(obj);
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <TD extends AbstractDictionary> Long getDictionaryIdByCode(Imdg<TD> dImdg, String code) {
|
|
||||||
TD dictItem = dImdg.getSingleObjectByFieldValues(Map.of("code", code));
|
|
||||||
if (dictItem == null) {
|
|
||||||
throw new IllegalStateException(dImdg.getMapName() + " with code=\"" + code + "\" not fount");
|
|
||||||
}
|
|
||||||
return dictItem.getId();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,105 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_12_2;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_B;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportPA_B_Collector extends ReportWithPeriodCollector<ReportPA_B> {
|
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
|
|
||||||
public ReportPA_B_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
|
||||||
LiabilitiesClaimsAssets.class
|
|
||||||
);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
|
||||||
ClearingMemberCategory.class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportPA_B collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<ClearingMemberCategory> clearingMemberCategories =
|
|
||||||
clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of(
|
|
||||||
"clearingMemberCategory", ClearingCategory.B.getKey()
|
|
||||||
));
|
|
||||||
Set<Long> companyIds = clearingMemberCategories.stream()
|
|
||||||
.map(ClearingMemberCategory::getCompanyId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
|
|
||||||
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
|
||||||
ImdgPredicate refundDatePredicate = builder.and(
|
|
||||||
builder.greatEqual("refundDate", (startDate)),
|
|
||||||
builder.lessEqual("refundDate", (endDate))
|
|
||||||
);
|
|
||||||
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
|
||||||
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
|
||||||
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
|
||||||
|
|
||||||
ReportPA_B report = new ReportPA_B(startDate, endDate);
|
|
||||||
BigDecimal claimsAmount = BigDecimal.ZERO;
|
|
||||||
BigDecimal liabilitiesAmount = BigDecimal.ZERO;
|
|
||||||
BigDecimal paymentAmount = BigDecimal.ZERO;
|
|
||||||
for (LiabilitiesClaimsAssets liabilitiesClaimsAsset : liabilitiesClaimsAssets) {
|
|
||||||
ReportPA_B.Info_PA_B infoPAB = new ReportPA_B.Info_PA_B(
|
|
||||||
toString(liabilitiesClaimsAsset.getId()),
|
|
||||||
toString(liabilitiesClaimsAsset.getFullName()),
|
|
||||||
toString(liabilitiesClaimsAsset.getClearingCode()),
|
|
||||||
toString(liabilitiesClaimsAsset.getSettlementDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getRefundDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getTradingDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getContract()),
|
|
||||||
toString(liabilitiesClaimsAsset.getLiabilitiesQuantity()),
|
|
||||||
"",
|
|
||||||
toString(liabilitiesClaimsAsset.getClaimsQuantity()),
|
|
||||||
toString(liabilitiesClaimsAsset.getRefundPaymentId()),
|
|
||||||
toString(liabilitiesClaimsAsset.getClearingStatus()),
|
|
||||||
toString(liabilitiesClaimsAsset.getComment())
|
|
||||||
);
|
|
||||||
report.getRows().add(infoPAB);
|
|
||||||
if (liabilitiesClaimsAsset.getClaimsQuantity() != null) {
|
|
||||||
claimsAmount = claimsAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
|
||||||
paymentAmount = paymentAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
|
||||||
}
|
|
||||||
if (liabilitiesClaimsAsset.getLiabilitiesQuantity() != null) {
|
|
||||||
liabilitiesAmount = liabilitiesAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity());
|
|
||||||
paymentAmount = paymentAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity().negate());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ReportPA_B.Total total = new ReportPA_B.Total(
|
|
||||||
toString(claimsAmount),
|
|
||||||
toString(liabilitiesAmount),
|
|
||||||
toString(paymentAmount));
|
|
||||||
report.setTotal(total);
|
|
||||||
|
|
||||||
return report;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportPA_B> getReportClass() {
|
|
||||||
return ReportPA_B.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_12_2;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_12_2.ReportPA_IV;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportPA_IV_Collector extends ReportWithPeriodCollector<ReportPA_IV> {
|
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private final Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
|
|
||||||
public ReportPA_IV_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_LiabilitiesClaimsAssets,
|
|
||||||
LiabilitiesClaimsAssets.class
|
|
||||||
);
|
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingStatusDictionary,
|
|
||||||
ClearingStatusDictionary.class
|
|
||||||
);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
|
||||||
ClearingMemberCategory.class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportPA_IV collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
String clearingMemberCategorySql = "clearingMemberCategory='%s' or clearingMemberCategory='%s'".formatted(
|
|
||||||
ClearingCategory.I.getKey(), ClearingCategory.V.getKey()
|
|
||||||
);
|
|
||||||
Collection<ClearingMemberCategory> clearingMemberCategories =
|
|
||||||
clearingMemberCategoryImdg.getCollectionObjectsBySQL(clearingMemberCategorySql);
|
|
||||||
Set<Long> companyIds = clearingMemberCategories.stream()
|
|
||||||
.map(ClearingMemberCategory::getCompanyId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
|
|
||||||
ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder();
|
|
||||||
ImdgPredicate refundDatePredicate = builder.and(
|
|
||||||
builder.greatEqual("refundDate", (startDate)),
|
|
||||||
builder.lessEqual("refundDate", (endDate))
|
|
||||||
);
|
|
||||||
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
|
||||||
ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates);
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilitiesClaimsAssets =
|
|
||||||
liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(finalPredicate);
|
|
||||||
|
|
||||||
ReportPA_IV report = new ReportPA_IV(startDate, endDate);
|
|
||||||
BigDecimal claimsAmount = BigDecimal.ZERO;
|
|
||||||
BigDecimal liabilitiesAmount = BigDecimal.ZERO;
|
|
||||||
BigDecimal paymentAmount = BigDecimal.ZERO;
|
|
||||||
for (LiabilitiesClaimsAssets liabilitiesClaimsAsset : liabilitiesClaimsAssets) {
|
|
||||||
ReportPA_IV.Info_PA_IV row = new ReportPA_IV.Info_PA_IV(
|
|
||||||
toString(liabilitiesClaimsAsset.getId()),
|
|
||||||
toString(liabilitiesClaimsAsset.getFullName()),
|
|
||||||
toString(liabilitiesClaimsAsset.getClearingCode()),
|
|
||||||
toString(liabilitiesClaimsAsset.getSettlementDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getRefundDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getTradingDate()),
|
|
||||||
toString(liabilitiesClaimsAsset.getContract()),
|
|
||||||
toString(liabilitiesClaimsAsset.getLiabilitiesQuantity()),
|
|
||||||
"",
|
|
||||||
toString(liabilitiesClaimsAsset.getClaimsQuantity()),
|
|
||||||
toString(liabilitiesClaimsAsset.getRefundPaymentId()),
|
|
||||||
toString(liabilitiesClaimsAsset.getClearingStatus()),
|
|
||||||
toString(liabilitiesClaimsAsset.getComment()));
|
|
||||||
report.getRows().add(row);
|
|
||||||
if (liabilitiesClaimsAsset.getClaimsQuantity() != null) {
|
|
||||||
claimsAmount = claimsAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
|
||||||
paymentAmount = paymentAmount.add(liabilitiesClaimsAsset.getClaimsQuantity());
|
|
||||||
}
|
|
||||||
if (liabilitiesClaimsAsset.getLiabilitiesQuantity() != null) {
|
|
||||||
liabilitiesAmount = liabilitiesAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity());
|
|
||||||
paymentAmount = paymentAmount.add(liabilitiesClaimsAsset.getLiabilitiesQuantity().negate());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ReportPA_IV.Total total = new ReportPA_IV.Total(
|
|
||||||
toString(claimsAmount),
|
|
||||||
toString(liabilitiesAmount),
|
|
||||||
toString(paymentAmount));
|
|
||||||
report.setTotal(total);
|
|
||||||
|
|
||||||
return report;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportPA_IV> getReportClass() {
|
|
||||||
return ReportPA_IV.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_13;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCIN;
|
|
||||||
import ru.spcex.clearing.reports.services.SimpleReportCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
|
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
private final Imdg<InDocumentJournal> inDocumentJournalImdg;
|
|
||||||
|
|
||||||
public ReportDOCIN_Collector(ImdgProvider imdgProvider) {
|
|
||||||
this.inDocumentJournalImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_InDocumentJournal,
|
|
||||||
InDocumentJournal.class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportDOCIN collectReport() {
|
|
||||||
LocalDate currentDate = LocalDate.now();
|
|
||||||
ImdgPredicateBuilder pb = inDocumentJournalImdg.predicateBuilder();
|
|
||||||
ImdgPredicate p = pb.equals("registrationDate", currentDate);
|
|
||||||
Collection<InDocumentJournal> inDocumentsJournal = inDocumentJournalImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
ReportDOCIN reportDOCIN = new ReportDOCIN(LocalDate.now(), LocalTime.now());
|
|
||||||
for (InDocumentJournal inDocumentJournal : inDocumentsJournal) {
|
|
||||||
ReportDOCIN.Info_DOCIN infoDOCIN = new ReportDOCIN.Info_DOCIN(
|
|
||||||
toString(inDocumentJournal.getId()),
|
|
||||||
toString(inDocumentJournal.getRegistrationDate()),
|
|
||||||
toString(inDocumentJournal.getRegistrationTime()),
|
|
||||||
toString(inDocumentJournal.getRegistrationNumber()),
|
|
||||||
toString(inDocumentJournal.getDocumentName()),
|
|
||||||
toString(inDocumentJournal.getSender()),
|
|
||||||
toString(inDocumentJournal.getQuantity()),
|
|
||||||
toString(inDocumentJournal.getClearingCode()),
|
|
||||||
toString(inDocumentJournal.getCourierType()),
|
|
||||||
toString(inDocumentJournal.getEmailDate()),
|
|
||||||
toString(inDocumentJournal.getAmount()),
|
|
||||||
toString(inDocumentJournal.getDossierNumber()),
|
|
||||||
toString(inDocumentJournal.getComment()),
|
|
||||||
toString(inDocumentJournal.getReceiptDate()));
|
|
||||||
reportDOCIN.getRows().add(infoDOCIN);
|
|
||||||
}
|
|
||||||
return reportDOCIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportDOCIN> getReportClass() {
|
|
||||||
return ReportDOCIN.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_13;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_13.ReportDOCOUT;
|
|
||||||
import ru.spcex.clearing.reports.services.SimpleReportCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
|
|
||||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
private final Imdg<OutDocumentJournal> inDocumentJournalImdg;
|
|
||||||
|
|
||||||
public ReportDOCOUT_Collector(ImdgProvider imdgProvider) {
|
|
||||||
this.inDocumentJournalImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_OutDocumentJournal,
|
|
||||||
OutDocumentJournal.class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportDOCOUT collectReport() {
|
|
||||||
LocalDate currentDate = LocalDate.now();
|
|
||||||
ImdgPredicateBuilder pb = inDocumentJournalImdg.predicateBuilder();
|
|
||||||
ImdgPredicate p = pb.equals("registrationDate", currentDate);
|
|
||||||
Collection<OutDocumentJournal> outDocumentsJournal = inDocumentJournalImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
ReportDOCOUT reportDOCOUT = new ReportDOCOUT(LocalDate.now(), LocalTime.now());
|
|
||||||
for (OutDocumentJournal outDocumentJournal : outDocumentsJournal) {
|
|
||||||
ReportDOCOUT.Info_DOCOUT infoDOCOUT = new ReportDOCOUT.Info_DOCOUT(
|
|
||||||
toString(outDocumentJournal.getId()),
|
|
||||||
toString(outDocumentJournal.getRegistrationDate()),
|
|
||||||
toString(outDocumentJournal.getRegistrationTime()),
|
|
||||||
toString(outDocumentJournal.getRegistrationNumber()),
|
|
||||||
toString(outDocumentJournal.getDocumentName()),
|
|
||||||
toString(outDocumentJournal.getAddressee()),
|
|
||||||
toString(outDocumentJournal.getQuantity()),
|
|
||||||
toString(outDocumentJournal.getClearingCode()),
|
|
||||||
toString(outDocumentJournal.getCourierType()),
|
|
||||||
toString(outDocumentJournal.getEmailDate()),
|
|
||||||
toString(outDocumentJournal.getAmount()),
|
|
||||||
toString(outDocumentJournal.getDossierNumber()),
|
|
||||||
toString(outDocumentJournal.getPostDate()));
|
|
||||||
reportDOCOUT.getRows().add(infoDOCOUT);
|
|
||||||
}
|
|
||||||
return reportDOCOUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportDOCOUT> getReportClass() {
|
|
||||||
return ReportDOCOUT.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_16_5;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_16_5.ReportINACCNT;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportForClearingCodeCollector;
|
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
|
||||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
|
||||||
private final Imdg<Company> companyImdg;
|
|
||||||
|
|
||||||
public ReportINACCNT_Collector(ImdgProvider imdgProvider) {
|
|
||||||
accountBalanceImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_AccountBalance,
|
|
||||||
AccountBalance.class
|
|
||||||
);
|
|
||||||
companyImdg = imdgProvider.getImdg(
|
|
||||||
IMDGDistributedNames.Map_Company,
|
|
||||||
Company.class
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportINACCNT collectReportForClearingCode(String clearingCode) {
|
|
||||||
ImdgPredicateBuilder builder = companyImdg.predicateBuilder();
|
|
||||||
|
|
||||||
ImdgPredicate clearingCodePredicate = builder.equals("clearingCode", clearingCode);
|
|
||||||
Collection<Company> companies = companyImdg.getCollectionObjectsByPredicate(clearingCodePredicate);
|
|
||||||
Set<Long> companyIds = companies.stream()
|
|
||||||
.map(Company::getId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
|
|
||||||
ImdgPredicate accountTypePredicate = builder.or(
|
|
||||||
builder.equals("accountType", AccountType.Clrn.getKey()),
|
|
||||||
builder.equals("accountType", AccountType.Info.getKey())
|
|
||||||
);
|
|
||||||
ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0]));
|
|
||||||
|
|
||||||
ImdgPredicate finalPredicate = builder.and(accountTypePredicate, companyIdPredicates);
|
|
||||||
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(finalPredicate);
|
|
||||||
|
|
||||||
ReportINACCNT reportINACCNT = new ReportINACCNT(clearingCode, LocalDate.now(), LocalTime.now());
|
|
||||||
for (AccountBalance accountBalance : accountBalances) {
|
|
||||||
ReportINACCNT.Info_INACCNT infoReport = new ReportINACCNT.Info_INACCNT(
|
|
||||||
toString(accountBalance.getId()),
|
|
||||||
toString(accountBalance.getFullName()),
|
|
||||||
toString(clearingCode),
|
|
||||||
toString(accountBalance.getAccount()),
|
|
||||||
toString(accountBalance.getOpenBalanceAmount()),
|
|
||||||
toString(accountBalance.getDebitAmount()),
|
|
||||||
toString(accountBalance.getCreditAmount()),
|
|
||||||
toString(accountBalance.getCloseBalanceAmount()));
|
|
||||||
reportINACCNT.getRows().add(infoReport);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportINACCNT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportINACCNT> getReportClass() {
|
|
||||||
return ReportINACCNT.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,125 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_1;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.classes.statics.data.misc.Listing;
|
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P1;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
|
||||||
import ru.spcex.platform.enumeration.Market;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420315_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420315_P1> {
|
|
||||||
protected static final List<String> ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey());
|
|
||||||
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
|
||||||
private Imdg<Listing> listingImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420315_P1_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
|
||||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param onMarket Market.mkrs.getKey()
|
|
||||||
* @param securityId liability.getSecurityId()
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected Listing findListing(Market onMarket, Long securityId) {
|
|
||||||
Map qParam = new HashMap<>();
|
|
||||||
qParam.put("market", onMarket.getKey());
|
|
||||||
qParam.put("securityId", securityId);
|
|
||||||
return listingImdg.getSingleObjectByFieldValues(qParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420315_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate);
|
|
||||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ClearingStatus.OK.getKey());
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
|
||||||
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
company_for:
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
List<LiabilitiesClaimsAssets> liabilitiesOfCompany = companyEntry.getValue();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company != null) {
|
|
||||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
|
||||||
boolean checkCategory = cmcLst.stream()
|
|
||||||
.anyMatch(cmc -> ALLOW_CLEARING_MEMBER_CATEGORY.contains(cmc.getClearingMemberCategory()));
|
|
||||||
if (!checkCategory) {
|
|
||||||
// фильтруются <> I, V
|
|
||||||
log.trace("Filtered company[{}] ClearingMemberCategory no match: {}",
|
|
||||||
companyId, cmcLst);
|
|
||||||
continue company_for;
|
|
||||||
}
|
|
||||||
|
|
||||||
HashSet<String> onMarket = new HashSet<>();
|
|
||||||
|
|
||||||
long contractorQty;
|
|
||||||
BigDecimal liabilitiesAmount = BigDecimal.ZERO;
|
|
||||||
{
|
|
||||||
HashSet<String> collectedContract = new HashSet<>();
|
|
||||||
HashSet<Long> onMarketSecurity = new HashSet<>();
|
|
||||||
for (LiabilitiesClaimsAssets lContract : liabilitiesOfCompany) {
|
|
||||||
if (!onMarketSecurity.contains(lContract.getSecurityId())) {
|
|
||||||
Listing listing = findListing(Market.mkrs, lContract.getSecurityId());
|
|
||||||
if (listing != null) {
|
|
||||||
onMarket.add(listing.getMarket());
|
|
||||||
}
|
|
||||||
onMarketSecurity.add(lContract.getSecurityId());
|
|
||||||
}
|
|
||||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
|
||||||
collectedContract.add(lContract.getContract());
|
|
||||||
liabilitiesAmount = liabilitiesAmount.add(lContract.getLiabilitiesQuantity());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
contractorQty = collectedContract.size();
|
|
||||||
}
|
|
||||||
String onMarketString = StringUtils.join(onMarket, ",");
|
|
||||||
if (onMarket.size() != 1) { // Сейчас по коду ожидается один listing.market="MKRS" но потом могут быть несколько
|
|
||||||
log.warn("Market for companyId[{}]: {}", companyId, onMarketString);
|
|
||||||
}
|
|
||||||
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1(
|
|
||||||
company.getId().toString(),
|
|
||||||
toString(company.getFullName()),
|
|
||||||
onMarketString,
|
|
||||||
toString(contractorQty),
|
|
||||||
toString(liabilitiesAmount));
|
|
||||||
reportBR_0420315_p1.getRows().add(info_0420315_p1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420315_p1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420315_P1> getReportClass() {
|
|
||||||
return ReportBR_0420315_P1.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_1;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_1.ReportBR_0420315_P2;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420315_P2_collector extends ReportWithPeriodCollector<ReportBR_0420315_P2> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420315_P2_collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
long liabilitiesAmount;
|
|
||||||
BigDecimal contractorQty = BigDecimal.ZERO;
|
|
||||||
{
|
|
||||||
HashSet<String> collectedToSumm = new HashSet<>();
|
|
||||||
for (LiabilitiesClaimsAssets lContract : liabilities) {
|
|
||||||
if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract())) {
|
|
||||||
collectedToSumm.add(lContract.getContract());
|
|
||||||
contractorQty = contractorQty.add(lContract.getLiabilitiesQuantity());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
liabilitiesAmount = collectedToSumm.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate);
|
|
||||||
reportBR_0420315_p2.setRows(new ReportBR_0420315_P2.Info_0420315_P2(toString(contractorQty),
|
|
||||||
toString(liabilitiesAmount)));
|
|
||||||
|
|
||||||
return reportBR_0420315_p2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420315_P2> getReportClass() {
|
|
||||||
return ReportBR_0420315_P2.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_2;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_2.ReportBR_0420317;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420317_Collector extends ReportWithPeriodCollector<ReportBR_0420317> {
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<Relation> relationImdg;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420317_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
Collection<Relation> searchRelation(LocalDate startDate, LocalDate endDate, String service) {
|
|
||||||
ImdgPredicateBuilder pb = relationImdg.predicateBuilder();
|
|
||||||
Instant dateTimeLo = toInstantStartDay(startDate);
|
|
||||||
Instant dateTimeHi = toInstantEndDay(endDate);
|
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("updated", dateTimeLo), pb.lessEqual("updated", dateTimeHi),
|
|
||||||
pb.equals("service", service));
|
|
||||||
Collection<Relation> relations = relationImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
return relations;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<Relation> relations = searchRelation(startDate, endDate, "MKR");
|
|
||||||
|
|
||||||
ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(startDate, endDate);
|
|
||||||
for (Relation relation: relations) {
|
|
||||||
Company company = relation.getConsumerId() == null ? null : companyImdg.getSingleObjectByID(relation.getConsumerId());
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company.id={} not found for relation.id={}", relation.getConsumerId(), relation.getId());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companySymbol", DocumentTypes.inn.getKey(),// ИНН или TIN участника клиринга
|
|
||||||
"companyId", company.getId()
|
|
||||||
));
|
|
||||||
ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317(
|
|
||||||
toString(company.getClearingCode()),
|
|
||||||
toString(toString(relation.getSupplierId())),
|
|
||||||
toString(relation.getService()),
|
|
||||||
toString(relation.getServiceStatus()),
|
|
||||||
toString(relation.getUpdated()),
|
|
||||||
toString(company.getFullName()),
|
|
||||||
companySymbol == null ? "" : toString(companySymbol.getCompanySymbolValue()),
|
|
||||||
toString(company.getProfile().getCountryCode()),
|
|
||||||
toString(relation.getComment()));
|
|
||||||
reportBR_0420317.getRows().add(info_0420317);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420317;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420317> getReportClass() {
|
|
||||||
return ReportBR_0420317.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_3;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_3.ReportBR_0420318;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420318_Collector extends ReportWithPeriodCollector<ReportBR_0420318> {
|
|
||||||
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private Imdg<LiabilitiesClaimsMoney> liabilitiesClaimsMoneyImdg;
|
|
||||||
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420318_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
liabilitiesClaimsMoneyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsMoney, LiabilitiesClaimsMoney.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
|
||||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companySymbol", docType.getKey(),
|
|
||||||
"companyId", companyId
|
|
||||||
));
|
|
||||||
return companySymbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420318 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
Collection<LiabilitiesClaimsAssets> allLiabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(startDate, endDate);
|
|
||||||
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(allLiabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> liabilitiesByCompanyE : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = liabilitiesByCompanyE.getKey();
|
|
||||||
final List<LiabilitiesClaimsAssets> liabilitiesByCompany = liabilitiesByCompanyE.getValue();
|
|
||||||
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
|
||||||
|
|
||||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
|
||||||
|
|
||||||
boolean checkCategoryB = cmcLst.stream().anyMatch(cmc -> ClearingCategory.B.equalsByKey(cmc.getClearingMemberCategory()));
|
|
||||||
boolean checkCategoryIV = cmcLst.stream().anyMatch(cmc -> ClearingCategory.I.equalsByKey(cmc.getClearingMemberCategory()) || ClearingCategory.V.equalsByKey(cmc.getClearingMemberCategory()));
|
|
||||||
|
|
||||||
for (LiabilitiesClaimsAssets liability : liabilitiesByCompany) {
|
|
||||||
final String currencyCode = liability.getCurrency();
|
|
||||||
|
|
||||||
LocalDate liabilitiesClaimsAssets_settlementDate = null;
|
|
||||||
if (checkCategoryB) {
|
|
||||||
liabilitiesClaimsAssets_settlementDate = liability.getRefundDate();
|
|
||||||
}
|
|
||||||
if (checkCategoryIV) {
|
|
||||||
liabilitiesClaimsAssets_settlementDate = liability.getSettlementDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
BigDecimal liabilitiesClaimsAssets_liabilitiesQuantity = liability.getLiabilitiesQuantity();
|
|
||||||
|
|
||||||
LiabilitiesClaimsMoney liabilitiesClaimsMoney = liabilitiesClaimsMoneyImdg.getSingleObjectByFieldValues(Map.of("currency", currencyCode));
|
|
||||||
|
|
||||||
BigDecimal liabilitiesCount = liability.getClaimsQuantity();
|
|
||||||
|
|
||||||
ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318(
|
|
||||||
toString(liability.getFullName()),
|
|
||||||
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
|
||||||
toString(company.getProfile().getCountryCode()),
|
|
||||||
toString(liabilitiesClaimsAssets_settlementDate),
|
|
||||||
toString(liability.getContract()),
|
|
||||||
toString(currencyCode),
|
|
||||||
toString(liabilitiesClaimsAssets_liabilitiesQuantity),
|
|
||||||
liabilitiesClaimsMoney == null ? "" : toString(liabilitiesClaimsMoney.getFullName()),
|
|
||||||
toString(liabilitiesCount),
|
|
||||||
toString(liability.getComment()),
|
|
||||||
companySymbolINN == null ? "" : toString(companySymbolINN.getCompanySymbolValue()),
|
|
||||||
toString(liability.getFullName())
|
|
||||||
);
|
|
||||||
reportBR_0420318.getRows().add(info_0420318);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return reportBR_0420318;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420318> getReportClass() {
|
|
||||||
return ReportBR_0420318.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.platform.dictionary.ClearingStatusDictionary;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P1;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingStatus;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* accountTransactionLiabilities
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420314_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P1> {
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private Imdg<ClearingStatusDictionary> clearingStatusDictionaryImdg;
|
|
||||||
|
|
||||||
protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey();
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420314_P1_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
|
||||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companySymbol", docType.getKey(),
|
|
||||||
"companyId", companyId
|
|
||||||
));
|
|
||||||
return companySymbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420314_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420314_P1 reportBR_0420312P1 = new ReportBR_0420314_P1(startDate, endDate, "BR",
|
|
||||||
ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK"
|
|
||||||
);
|
|
||||||
final Long allowClearingStatusId = MapUtil.getDictionaryIdByCode(clearingStatusDictionaryImdg, ALLOW_CLEARING_STATUS); // "OK"
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate, allowClearingStatusId);
|
|
||||||
|
|
||||||
for (LiabilitiesClaimsAssets liability: liabilities) {
|
|
||||||
final Long companyId = liability.getCompanyId();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Collection<ClearingMemberCategory> cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId));
|
|
||||||
String cleanMemberCategories = MapUtil.joinMultiString(cmcLst, ClearingMemberCategory::getClearingMemberCategory);
|
|
||||||
|
|
||||||
CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId());
|
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
|
||||||
|
|
||||||
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1(
|
|
||||||
toString(company.getClearingCode()),
|
|
||||||
toString(companySymbolCntr == null? null : companySymbolCntr.getId()),
|
|
||||||
toString(company.getFullName()),
|
|
||||||
toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()),
|
|
||||||
toString(companySymbolOGRN == null? null : companySymbolOGRN.getCompanySymbolValue()),
|
|
||||||
toString(cleanMemberCategories), // может быть несколько, тогда через запятую перечислить
|
|
||||||
toString(liability.getRefundPaymentId()),
|
|
||||||
toString(liability.getTradingDate()),
|
|
||||||
toString(liability.getLiabilitiesQuantity())
|
|
||||||
);
|
|
||||||
reportBR_0420312P1.getRows().add(info_0420314P1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420314_P1> getReportClass() {
|
|
||||||
return ReportBR_0420314_P1.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,131 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_4;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_4.ReportBR_0420314_P2;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* accountTransactionLiabilities
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420314_P2> {
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
|
||||||
private Imdg<AccountBalance> accountBalanceImdg;
|
|
||||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420314_P2_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
|
||||||
accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
|
|
||||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
Collection<PaymentInstruction> searchPaymentInstruction(LocalDate startDate, LocalDate endDate) {
|
|
||||||
ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder();
|
|
||||||
Instant dateTimeLo = toInstantStartDay(startDate);
|
|
||||||
Instant dateTimeHi = toInstantEndDay(endDate);
|
|
||||||
ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi));
|
|
||||||
Collection<PaymentInstruction> paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p);
|
|
||||||
return paymentInstructionsAll;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420314_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420314_P2 reportBR_0420312P2 = new ReportBR_0420314_P2(startDate, endDate,
|
|
||||||
"", "BR"
|
|
||||||
);
|
|
||||||
|
|
||||||
Collection<PaymentInstruction> paymentInstructionsAll = searchPaymentInstruction(startDate, endDate);
|
|
||||||
|
|
||||||
Map<Long, List<PaymentInstruction>> companyIdPyPaymtInstruction =
|
|
||||||
MapUtil.indexList(paymentInstructionsAll, PaymentInstruction::getSenderId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<PaymentInstruction>> entry : companyIdPyPaymtInstruction.entrySet()) {
|
|
||||||
final Long companyId = entry.getKey();
|
|
||||||
List<PaymentInstruction> paymentInstructionsByCompany = entry.getValue();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company not found, id={}", companyId);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
ProfileDocument profileDocumentCntr = profileDocumentImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companyId", companyId,
|
|
||||||
"documentType", DocumentTypes.cntr.getKey()
|
|
||||||
));
|
|
||||||
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"accountType", AccountType.Clrn.getKey(),
|
|
||||||
"companyId", companyId
|
|
||||||
));
|
|
||||||
|
|
||||||
String documentTypeStr = null;
|
|
||||||
if (profileDocumentCntr != null) {
|
|
||||||
documentTypeStr = profileDocumentCntr.getNumber();
|
|
||||||
if (profileDocumentCntr.getValidFromDate() != null) {
|
|
||||||
if (StringUtils.isEmpty(documentTypeStr)) {
|
|
||||||
documentTypeStr = "";
|
|
||||||
} else {
|
|
||||||
documentTypeStr += " ";
|
|
||||||
}
|
|
||||||
documentTypeStr += toString(profileDocumentCntr.getValidFromDate());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BigDecimal paymentInstruction_creditLeg_amount = paymentInstructionsByCompany.stream()
|
|
||||||
.map(PaymentInstruction::getCreditLeg_amount)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add)
|
|
||||||
.orElse(BigDecimal.ZERO);
|
|
||||||
BigDecimal paymentInstructiont_debitLeg_amount = paymentInstructionsByCompany.stream()
|
|
||||||
.map(PaymentInstruction::getDebitLeg_amount)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add)
|
|
||||||
.orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
|
|
||||||
ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2(
|
|
||||||
toString(company.getClearingCode()),
|
|
||||||
toString(documentTypeStr),
|
|
||||||
toString(accountBalance == null ? null : accountBalance.getOpenBalanceAmount()),
|
|
||||||
toString(paymentInstruction_creditLeg_amount),
|
|
||||||
toString(paymentInstructiont_debitLeg_amount),
|
|
||||||
toString(accountBalance == null ? null : accountBalance.getCloseBalanceAmount())
|
|
||||||
);
|
|
||||||
|
|
||||||
reportBR_0420312P2.getRows().add(info_0420314P2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420314_P2> getReportClass() {
|
|
||||||
return ReportBR_0420314_P2.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P10;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P10_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P10> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P10_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P10 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(startDate, endDate);
|
|
||||||
ReportBR_0420312_P10.Info_0420312_P10 reportInfo = new ReportBR_0420312_P10.Info_0420312_P10(toString(liabilitiesQuantitySum));
|
|
||||||
reportBR_0420312P10.getRows().add(reportInfo);
|
|
||||||
|
|
||||||
return reportBR_0420312P10;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P10> getReportClass() {
|
|
||||||
return ReportBR_0420312_P10.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P1;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P1_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P1> {
|
|
||||||
private final Imdg<Company> companyImdg;
|
|
||||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
private final Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P1_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
|
||||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companySymbol", docType.getKey(),
|
|
||||||
"companyId", companyId
|
|
||||||
));
|
|
||||||
return companySymbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR");
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
|
||||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
|
||||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
|
||||||
ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1(
|
|
||||||
toString(company.getClearingCode()),
|
|
||||||
toString(companyId),
|
|
||||||
toString(company.getFullName()),
|
|
||||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
|
||||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
|
||||||
toString(company.getProfile().getCountryCode()),
|
|
||||||
toString(clearingMemberCategory));
|
|
||||||
reportBR_0420312P1.getRows().add(info_0420312_p1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P1> getReportClass() {
|
|
||||||
return ReportBR_0420312_P1.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P2;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P2_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P2> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P2_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420312_P2 reportBR_0420312P1 = new ReportBR_0420312_P2(startDate, endDate, "BR");
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P2.Info_0420312_P2 info_0420312_p2 = new ReportBR_0420312_P2.Info_0420312_P2(
|
|
||||||
toString(companyId),
|
|
||||||
toString(liabilitiesQuantitySum)
|
|
||||||
);
|
|
||||||
reportBR_0420312P1.getRows().add(info_0420312_p2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P2> getReportClass() {
|
|
||||||
return ReportBR_0420312_P2.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P3;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P3_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P3> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P3_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P3 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420312_P3 reportBR_0420312P1 = new ReportBR_0420312_P3(startDate, endDate, "BR");
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities=companyEntry.getValue();
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = companyLiabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
// расчёт похож на ReportBR_0420312_P2
|
|
||||||
ReportBR_0420312_P3.Info_0420312_P3 info_0420312_p3 = new ReportBR_0420312_P3.Info_0420312_P3(
|
|
||||||
toString(companyId),
|
|
||||||
toString(liabilitiesQuantitySum)
|
|
||||||
);
|
|
||||||
reportBR_0420312P1.getRows().add(info_0420312_p3);
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P3> getReportClass() {
|
|
||||||
return ReportBR_0420312_P3.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P4;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P4_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P4> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P4_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P4 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(startDate, endDate);
|
|
||||||
ReportBR_0420312_P4.Info_0420312_P4 reportInfo = new ReportBR_0420312_P4.Info_0420312_P4(toString(liabilitiesQuantitySum));
|
|
||||||
reportBR_0420312P4.getRows().add(reportInfo);
|
|
||||||
|
|
||||||
return reportBR_0420312P4;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P4> getReportClass() {
|
|
||||||
return ReportBR_0420312_P4.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P5;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P5_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P5> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P5_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P5 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(startDate, endDate);
|
|
||||||
ReportBR_0420312_P5.Info_0420312_P5 reportInfo = new ReportBR_0420312_P5.Info_0420312_P5(toString(liabilitiesQuantitySum));
|
|
||||||
reportBR_0420312P5.getRows().add(reportInfo);
|
|
||||||
|
|
||||||
return reportBR_0420312P5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P5> getReportClass() {
|
|
||||||
return ReportBR_0420312_P5.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P6;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P6_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P6> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P6_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P6 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P6 reportBR_0420312P5 = new ReportBR_0420312_P6(startDate, endDate);
|
|
||||||
ReportBR_0420312_P6.Info_0420312_P6 reportInfo = new ReportBR_0420312_P6.Info_0420312_P6(toString(liabilitiesQuantitySum));
|
|
||||||
reportBR_0420312P5.getRows().add(reportInfo);
|
|
||||||
|
|
||||||
return reportBR_0420312P5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P6> getReportClass() {
|
|
||||||
return ReportBR_0420312_P6.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P7;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P7_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P7> {
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P7_Collector(ImdgProvider imdgProvider) {
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P7 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
|
|
||||||
BigDecimal liabilitiesQuantitySum = liabilities.stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
ReportBR_0420312_P7 reportBR_0420312P5 = new ReportBR_0420312_P7(startDate, endDate);
|
|
||||||
ReportBR_0420312_P7.Info_0420312_P7 reportInfo = new ReportBR_0420312_P7.Info_0420312_P7(toString(liabilitiesQuantitySum));
|
|
||||||
reportBR_0420312P5.getRows().add(reportInfo);
|
|
||||||
|
|
||||||
return reportBR_0420312P5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P7> getReportClass() {
|
|
||||||
return ReportBR_0420312_P7.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P8;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P8_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P8> {
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
private Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P8_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) {
|
|
||||||
CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
|
||||||
"companySymbol", docType.getKey(),
|
|
||||||
"companyId", companyId
|
|
||||||
));
|
|
||||||
return companySymbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P8 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId());
|
|
||||||
CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId());
|
|
||||||
ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
|
||||||
String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory();
|
|
||||||
|
|
||||||
|
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
|
||||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
|
||||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
|
||||||
String currencyCode = currencyEntry.getKey();
|
|
||||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
|
||||||
if (currencyId == null) {
|
|
||||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
|
||||||
}
|
|
||||||
ReportBR_0420312_P8.Info_0420312_P8 info_0420312_p8 = new ReportBR_0420312_P8.Info_0420312_P8(
|
|
||||||
toString(currencyId),
|
|
||||||
toString(companyId),
|
|
||||||
toString(company.getFullName()),
|
|
||||||
companySymbolINN == null ? null : toString(companySymbolINN.getCompanySymbolValue()),
|
|
||||||
companySymbolOGRN == null ? null : toString(companySymbolOGRN.getCompanySymbolValue()),
|
|
||||||
toString(company.getProfile().getCountryCode()),
|
|
||||||
toString(clearingMemberCategory)
|
|
||||||
);
|
|
||||||
reportBR_0420312P8.getRows().add(info_0420312_p8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P8;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P8> getReportClass() {
|
|
||||||
return ReportBR_0420312_P8.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
package ru.spcex.clearing.reports.services.collector.bt.bt_17_5;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
|
||||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.reports.reports.bt.bt_17_5.ReportBR_0420312_P9;
|
|
||||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
|
||||||
import ru.spcex.clearing.reports.services.collector.MapUtil;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Deprecated
|
|
||||||
public class ReportBR_0420312_P9_Collector extends ReportWithPeriodCollector<ReportBR_0420312_P9> {
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<LiabilitiesClaimsAssets> liabilitiesClaimsAssetsImdg;
|
|
||||||
private Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public ReportBR_0420312_P9_Collector(ImdgProvider imdgProvider) {
|
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class);
|
|
||||||
currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReportBR_0420312_P9 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
|
||||||
validateDateRange(startDate, endDate);
|
|
||||||
|
|
||||||
ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(startDate, endDate);
|
|
||||||
|
|
||||||
Collection<LiabilitiesClaimsAssets> liabilities = searchLiabilitiesClaimsAssets(liabilitiesClaimsAssetsImdg, startDate, endDate);
|
|
||||||
Map<Long, List<LiabilitiesClaimsAssets>> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId);
|
|
||||||
|
|
||||||
for (Map.Entry<Long, List<LiabilitiesClaimsAssets>> companyEntry : indexByCompany.entrySet()) {
|
|
||||||
final Long companyId = companyEntry.getKey();
|
|
||||||
Company company = companyImdg.getSingleObjectByID(companyId);
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company not found by LiabilitiesClaimsAssets.CompanyId={}", companyId);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
List<LiabilitiesClaimsAssets> companyLiabilities = companyEntry.getValue();
|
|
||||||
Map<String, List<LiabilitiesClaimsAssets>> indexByCurrency = MapUtil.indexList(companyLiabilities, LiabilitiesClaimsAssets::getCurrency);
|
|
||||||
for (Map.Entry<String, List<LiabilitiesClaimsAssets>> currencyEntry : indexByCurrency.entrySet()) {
|
|
||||||
String currencyCode = currencyEntry.getKey();
|
|
||||||
Long currencyId = MapUtil.getDictionaryIdByCode(currencyCodeDictionaryImdg, currencyCode);
|
|
||||||
if (currencyId == null) {
|
|
||||||
log.warn("No currency found for code \"{}\"", currencyEntry.getKey());
|
|
||||||
}
|
|
||||||
BigDecimal sumOfLiabilities = currencyEntry.getValue().stream()
|
|
||||||
.map(LiabilitiesClaimsAssets::getLiabilitiesQuantity)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.reduce(BigDecimal::add)
|
|
||||||
.orElse(BigDecimal.ZERO);
|
|
||||||
ReportBR_0420312_P9.Info_0420312_P9 info_0420312_p9 = new ReportBR_0420312_P9.Info_0420312_P9(
|
|
||||||
toString(currencyId),
|
|
||||||
toString(companyId),
|
|
||||||
toString(currencyCode),
|
|
||||||
toString(sumOfLiabilities)
|
|
||||||
);
|
|
||||||
reportBR_0420312P9.getRows().add(info_0420312_p9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return reportBR_0420312P9;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<ReportBR_0420312_P9> getReportClass() {
|
|
||||||
return ReportBR_0420312_P9.class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
package ru.spcex.clearing.reports.services;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.spcex.clearing.reports.services;
|
package ru.spcex.clearing.reports.services;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import ru.spcex.clearing.reports.notifications.DOCXService;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue