akulikov 2023-05-29 16:31:08 +03:00
parent 8dc2cb0398
commit 22ffb02971
71 changed files with 183 additions and 4205 deletions

View file

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

View file

@ -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>
но сейчас достаточно один параметр проверять
*/

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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
) {
}
}

View file

@ -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
) {
}
}

View file

@ -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
) {
}
}

View file

@ -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
) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

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

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

@ -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
) {
}
}

View file

@ -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
) {
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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