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.builder.SpringApplicationBuilder;
|
||||
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
|
||||
public class ReportsServiceApplication {
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
ReportCmdParser cmdArgs = new ReportCmdParser(args);
|
||||
|
||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class);
|
||||
ConfigurableApplicationContext context = builder.run(args);
|
||||
|
||||
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) {
|
||||
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
||||
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.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
||||
|
||||
/**
|
||||
* Параметр запуска: XMLReportBuilder
|
||||
* --spring.config.location=E:/MFD_GIT_REPO/clearing/clearing-parent/reports-service/src/main/resources
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
@PropertySource("file:${spring.config.location}/application.properties")
|
||||
@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.ReportRequestWithSessionId;
|
||||
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.validation.common.ValidationHelper;
|
||||
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.slf4j.Logger;
|
||||
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.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
|
@ -16,26 +19,26 @@ import java.util.regex.PatternSyntaxException;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* todo Пока неизвестно нужны ли будут ещё эти уведомления, поэтому весь связанный код переместил в один пакет
|
||||
* <p>
|
||||
* Сервис для работы с DOCX файлами
|
||||
* Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения
|
||||
* Пример ключа по умолчанию: ${ключ}
|
||||
*
|
||||
* <p>
|
||||
* При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном
|
||||
* элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно,
|
||||
* идентификатору потом можно установить стиль, который будет применён к вставляемой строке.
|
||||
*/
|
||||
public class DOCXService {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
/**
|
||||
* При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа
|
||||
*/
|
||||
private List<KeyPositionInDoc> keyPositions = new LinkedList<>();
|
||||
|
||||
/**
|
||||
* Паттерн поиска ключей в файле по умолчанию
|
||||
*/
|
||||
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) {
|
||||
initialized = false;
|
||||
if (templateFile == null /*|| !templateFile.exists() || !templateFile.isFile()*/) {
|
||||
if (templateFile == null) {
|
||||
log.warn("Invalid templateFile {}", templateFile);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -82,10 +85,9 @@ public class DOCXService {
|
|||
* valuesMap.
|
||||
*
|
||||
* @param outputFile Выходной файл. Должен быть либо файлом (будет перезаписан), либо отсутствовать
|
||||
* @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения.
|
||||
* @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap.
|
||||
* False - мягкий режим, отсутствующие ключи будут пропущены
|
||||
*
|
||||
* @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения.
|
||||
* @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap.
|
||||
* False - мягкий режим, отсутствующие ключи будут пропущены
|
||||
* @return true - если вставка прошла успешно
|
||||
*/
|
||||
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)) {
|
||||
XWPFDocument doc = new XWPFDocument(inputStream);
|
||||
|
||||
|
|
@ -127,7 +129,7 @@ public class DOCXService {
|
|||
boolean checkOk = checkIntersection(valuesMap, notPresentInMap);
|
||||
if (!checkOk) {
|
||||
log.error("Can't insert values in file {}. Keys not in map: {}.",
|
||||
templateFile.toExternalForm()/*templateFile.getAbsolutePath()*/,
|
||||
templateFile.toExternalForm(),
|
||||
String.join(", ", notPresentInMap));
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.reports.notifications;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.spcex.clearing.reports.exceptions.ConfigException;
|
||||
import ru.spcex.clearing.reports.services.DOCXService;
|
||||
|
||||
import java.io.File;
|
||||
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.platform.enumeration.ReportType;
|
||||
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.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
|
@ -29,9 +32,14 @@ public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepor
|
|||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdListParams params) {
|
||||
if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
executionFondImdg.predicateBuilder().in("sessionId", params.getSessionIdList().toArray(new Long[0]))
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
|
||||
|
||||
|
|
@ -18,12 +19,16 @@ public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Per
|
|||
@Override
|
||||
protected Collection<Registry> getRegistryForReport(PeriodParams params) {
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
return registryImdg.getCollectionObjectsByPredicate(
|
||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.greatEqual("clearingDate", params.getStartDate()),
|
||||
pb.lessEqual("clearingDate", params.getEndDate())
|
||||
)
|
||||
);
|
||||
registries = registries.stream()
|
||||
.filter(registry -> registry.getRegistryCode().startsWith("AM"))
|
||||
.collect(Collectors.toList());
|
||||
return registries;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
|||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
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.util.Collection;
|
||||
|
||||
|
|
@ -16,12 +18,18 @@ public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepo
|
|||
|
||||
@Override
|
||||
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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -4,9 +4,12 @@ import ru.clearing.classes.statics.data.registry.Registry;
|
|||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
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.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
|
||||
public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
|
|
@ -15,7 +18,20 @@ public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Em
|
|||
|
||||
@Override
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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.ReportRequestWithSessionId;
|
||||
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.RequestInfoUpdate;
|
||||
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.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||
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<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
||||
|
|
@ -65,7 +70,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||
@Qualifier("reportRequestWithPeriodValidator")
|
||||
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator) {
|
||||
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator,
|
||||
@Qualifier("reportRequestGREP")
|
||||
Function<LauncherCommandRequest, IValidator> reportRequestGREPValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
|
|
@ -77,6 +84,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
||||
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
||||
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
||||
this.reportRequestGREPValidator = reportRequestGREPValidator;
|
||||
this.outFolder = new File(reportsServiceSettings.getReportModuleOut());
|
||||
assert outFolder.isDirectory();
|
||||
}
|
||||
|
|
@ -95,6 +103,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
callback(ReportRequestWithPeriod.class)
|
||||
.setFunction(this::createReportForPeriod)
|
||||
.forDestination(Consts.CREATE_REPORT_FOR_PERIOD, callbacks::put);
|
||||
callback(LauncherCommandRequest.class)
|
||||
.setFunction(this::createReportForGREP)
|
||||
.forDestination(Task.createReport_GREP.topic(), callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
|
|
@ -233,5 +244,93 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
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;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package ru.spcex.clearing.reports.services;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import ru.spcex.clearing.reports.notifications.DOCXService;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue