diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java new file mode 100644 index 000000000..c344fc1d2 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/EmptyParams.java @@ -0,0 +1,7 @@ +package ru.spcex.clearing.reports.reports; + +/** + * Класс для формирования отчета без параметров + */ +public class EmptyParams { +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java index 35bc8635e..516f3f9fe 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/LiabilitiesClaimsReportBuilder.java @@ -10,13 +10,11 @@ import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.CSVReportBuilder; -import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.Market; import ru.spcex.platform.enumeration.Side; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import java.math.RoundingMode; import java.time.Instant; @@ -26,23 +24,23 @@ import java.util.List; import java.util.Map; // todo check typo -public abstract class LiabilitiesClaimsReportBuilder extends CSVReportBuilder { - private final Imdg executionFondImdg; - private final Imdg executionDepositImdg; - private final Imdg companyImdg; - private final Imdg registryImdg; - private final Imdg listingImdg; - private final Imdg fixedIncomeSecurityImdg; - private final Imdg tradingClearingRegistryImdg; +public abstract class LiabilitiesClaimsReportBuilder

extends CSVReportBuilder

{ + protected final Imdg executionFondImdg; + protected final Imdg executionDepositImdg; + protected final Imdg companyImdg; + protected final Imdg registryImdg; + protected final Imdg

listingImdg; + protected final Imdg fixedIncomeSecurityImdg; + protected final Imdg tradingClearingRegistryImdg; - private final String[] headers = { + protected final String[] headers = { "id", "doc_date", "doc_time", "doc_type", "clearingHouse", "firmId", "firName", "session_id", "clearing_date", "clearing_time", "trdAccId", "account", "depo_account", "currency", "tr_id", "securityId", "tr_buySell", "tr_date", "tr_execDate", "exec_status", "repaym_date", "tr_price", "nominal", "lot_value", "tr_lot", "tr_quantity", "tr_value", "tr_accruedint", "accruedint", "tr_clrComm", "tr_exhComm", "cash_liability", "depo_liability", "cash_netto", "depo_netto" }; - private List lines = null; + protected List lines = null; public LiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); @@ -68,17 +66,14 @@ public abstract class LiabilitiesClaimsReportBuilder extends CSVReportBuilder executionFonds = executionFondImdg.getCollectionObjectsByPredicate(executionFondPredicate); + protected abstract Collection getExecutionFondsForReport(P params); - ImdgPredicate executionDepositPredicate = executionDepositImdg - .predicateBuilder() - .equals("sessionId", params.getSessionId()); - Collection executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate(executionDepositPredicate); + protected abstract Collection getExecutionDepositsForReport(P params); + + @Override + protected void collect(P params) { + Collection executionFonds = getExecutionFondsForReport(params); + Collection executionDeposits = getExecutionDepositsForReport(params); List executions = new ArrayList<>(executionFonds.size() + executionDeposits.size()); executions.addAll(executionFonds); @@ -114,7 +109,7 @@ public abstract class LiabilitiesClaimsReportBuilder extends CSVReportBuilder { - private final Imdg registryImdg; - private final Imdg companyImdg; - private final Imdg listingImdg; - private final Imdg statementImdg; - private final Imdg paymentInstructionImdg; - private final String[] headers = { +public abstract class MoneyChangeReportBuilder

extends CSVReportBuilder

{ + protected final Imdg registryImdg; + protected final Imdg companyImdg; + protected final Imdg

listingImdg; + protected final Imdg statementImdg; + protected final Imdg paymentInstructionImdg; + protected final String[] headers = { "id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "trdAccId", "account", "currency", "registry_code", "registry_name", "open_balance", "change_balance", "add_withdraw", "close_balance", "remarks", "add_sum", "add_time", "withdraw_sum", "withdraw_time" }; - private List lines = null; + protected List lines = null; public MoneyChangeReportBuilder(ImdgProvider imdgProvider) { this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -51,15 +50,12 @@ public abstract class MoneyChangeReportBuilder extends CSVReportBuilder getRegistryForReport(P param); + @Override - protected void collect(PeriodParams params) { + protected void collect(P params) { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); - Collection registries = registryImdg.getCollectionObjectsByPredicate( - pb.and( - pb.greatEqual("clearingDate", params.getStartDate()), - pb.lessEqual("clearingDate", params.getEndDate()) - ) - ); + Collection registries = getRegistryForReport(params); Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L); String clearingHouse = clearingHouseCompany.getFullName(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java index ecaaadbf9..f90e713cc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalLiabilitiesClaimsReportBuilder.java @@ -1,16 +1,34 @@ package ru.spcex.clearing.reports.reports.bp; +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.ReportType; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.Instant; +import java.util.Collection; +import java.util.Map; -public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { +public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { public OperationalLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { super(imdgProvider); } + @Override + protected Collection getExecutionFondsForReport(SessionIdParam params) { + return executionFondImdg.getCollectionObjectsByFieldValues( + Map.of("sessionId", params.getSessionId()) + ); + } + + @Override + protected Collection getExecutionDepositsForReport(SessionIdParam params) { + return executionDepositImdg.getCollectionObjectsByFieldValues( + Map.of("sessionId", params.getSessionId()) + ); + } + @Override protected String getReportFilename(SessionIdParam params) { return "operational_liabilities_claims.%s".formatted(Instant.now()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java index c0c85f5b6..0f014e4a4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/OperationalMoneyChangeReportBuilder.java @@ -1,25 +1,31 @@ package ru.spcex.clearing.reports.reports.bp; -import ru.spcex.clearing.reports.reports.PeriodParams; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.platform.enumeration.ReportType; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.Instant; +import java.util.Collection; +import java.util.Map; -public class OperationalMoneyChangeReportBuilder extends MoneyChangeReportBuilder { +public class OperationalMoneyChangeReportBuilder extends MoneyChangeReportBuilder { public OperationalMoneyChangeReportBuilder(ImdgProvider imdgProvider) { super(imdgProvider); } @Override - protected String getReportFilename(PeriodParams params) { - return "operational_money_change.%s-%s.%s".formatted( - dateFormatter.format(params.getStartDate()), - dateFormatter.format(params.getEndDate()), - dateTimeFormatter.format(Instant.now()) + protected Collection getRegistryForReport(SessionIdParam param) { + return registryImdg.getCollectionObjectsByFieldValues( + Map.of("sessionId", param.getSessionId()) ); } + @Override + protected String getReportFilename(SessionIdParam params) { + return "operational_money_change.%s".formatted(dateTimeFormatter.format(Instant.now())); + } + @Override protected ReportType getReportType() { return ReportType.OPERATIONAL_MONEY_CHANGE; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaims.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaims.java deleted file mode 100644 index 5ed9d1367..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaims.java +++ /dev/null @@ -1,51 +0,0 @@ -package ru.spcex.clearing.reports.reports.bp; - -import ru.spcex.clearing.reports.reports.ReportId; -import ru.spcex.clearing.reports.reports.ReportWithPeriod; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -public class PeriodLiabilitiesClaims extends ReportWithPeriod { - - private final String[] headers = { - "id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "session_id", - "clearing_date", "clearing_time", "trdAccId", "account", "depo_account", "currency", "tr_id", "securityId", - "tr_buySell", "tr_date", "tr_execDate", "exec_status", "repaym_date", "tr_price", "nominal", "lot_value", - "tr_lot", "tr_quantity", "tr_value", "tr_accruedint", "accruedint", "tr_clrComm", "tr_exhComm", - "cash_liability", "depo_liability", "cash_netto", "depo_netto" - }; - - public PeriodLiabilitiesClaims(LocalDate startDate, LocalDate endDate) { - super(ReportId.PERIOD_LIABILITIES_CLAIMS, - "0.0.1", - "BP", - "Отчет за период. Отчет об обязательствах", - startDate, - endDate); - } - - @Override - public String getReportName(LocalDateTime reportDateTime) { - return "period_liabilities_claims.%s-%s.%s".formatted( - DATE_FORMATTER.format(startDate), - DATE_FORMATTER.format(endDate), - DATE_TIME_FORMATTER.format(reportDateTime) - ); - } - - public String[] getHeaders() { - return headers; - } - - public record InfoPeriodLiabilitiesClaims(String id, String docDate, String docTime, String docName, - String docType, String clearingHouse, String firmId, String firName, - String sessionId, String clearingDate, String clearingTime, String trdAccId, - String account, String depoAccount, String currency, String trId, String securityId, - String trBuySell, String trDate, String trExecDate, String execStatus, - String repaymDate, String trPrice, String nominal, String lotValue, - String trLot, String trQuantity, String trValue, String trAccruedInt, - String accruedInt, String trClrComm, String trExhComm, String cashLiability, - String depoLiability, String cashNetto, String depoNetto) { - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java new file mode 100644 index 000000000..65eb2b11d --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodLiabilitiesClaimsReportBuilder.java @@ -0,0 +1,54 @@ +package ru.spcex.clearing.reports.reports.bp; + +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +import ru.clearing.classes.statics.data.execution.ExecutionFond; +import ru.spcex.clearing.reports.reports.PeriodParams; +import ru.spcex.platform.enumeration.ReportType; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; + +import java.time.Instant; +import java.util.Collection; + +public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { + + public PeriodLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected String getReportFilename(PeriodParams params) { + return "period_liabilities_claims.%s-%s.%s".formatted( + dateFormatter.format(params.getStartDate()), + dateFormatter.format(params.getEndDate()), + dateTimeFormatter.format(Instant.now()) + ); + } + + @Override + protected ReportType getReportType() { + return ReportType.PERIOD_LIABILITIES_CLAIMS; + } + + @Override + protected Collection getExecutionFondsForReport(PeriodParams params) { + ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); + return executionFondImdg.getCollectionObjectsByPredicate( + pb.and( + pb.greatEqual("clearingDate", params.getStartDate()), + pb.lessEqual("clearingDate", params.getEndDate()) + ) + ); + } + + @Override + protected Collection getExecutionDepositsForReport(PeriodParams params) { + ImdgPredicateBuilder pb = executionDepositImdg.predicateBuilder(); + return executionDepositImdg.getCollectionObjectsByPredicate( + pb.and( + pb.greatEqual("clearingDate", params.getStartDate()), + pb.lessEqual("clearingDate", params.getEndDate()) + ) + ); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChange.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChange.java deleted file mode 100644 index 999b3b903..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChange.java +++ /dev/null @@ -1,46 +0,0 @@ -package ru.spcex.clearing.reports.reports.bp; - -import ru.spcex.clearing.reports.reports.ReportId; -import ru.spcex.clearing.reports.reports.ReportWithPeriod; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -public class PeriodMoneyChange extends ReportWithPeriod { - - private final String[] headers = { - "id", "doc_date", "doc_time", "doc_name", "doc_type", "clearingHouse", "firmId", "firName", "trdAccId", - "account", "currency", "registry_code", "registry_name", "open_balance", "change_balance", "add_withdraw", - "close_balance", "remarks", "add_sum", "add_time", "withdraw_sum", "withdraw_time" - }; - - public PeriodMoneyChange(LocalDate startDate, LocalDate endDate) { - super(ReportId.PERIOD_MONEY_CHANGE, - "0.0.1", - "BP", - "Отчет за период. Отчет о денежных средствах", - startDate, - endDate); - } - - @Override - public String getReportName(LocalDateTime reportDateTime) { - return "period_money_change.%s-%s.%s".formatted( - DATE_FORMATTER.format(startDate), - DATE_FORMATTER.format(endDate), - DATE_TIME_FORMATTER.format(reportDateTime) - ); - } - - public String[] getHeaders() { - return headers; - } - - public record InfoPeriodMoneyChange(String id, String docDate, String docTime, String docName, String docType, - String clearingHouse, String firmId, String firName, String trdAccId, - String account, String currency, String registryCode, String registryName, - String openBalance, String changeBalance, String addWithdraw, - String closeBalance, String remarks, String addSum, String addTime, - String withdrawSum, String withdrawTime) { - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java new file mode 100644 index 000000000..c56dbbcda --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/PeriodMoneyChangeReportBuilder.java @@ -0,0 +1,43 @@ +package ru.spcex.clearing.reports.reports.bp; + +import ru.clearing.classes.statics.data.registry.Registry; +import ru.spcex.clearing.reports.reports.PeriodParams; +import ru.spcex.platform.enumeration.ReportType; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; + +import java.time.Instant; +import java.util.Collection; + +public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder { + + public PeriodMoneyChangeReportBuilder(ImdgProvider imdgProvider) { + super(imdgProvider); + } + + @Override + protected Collection getRegistryForReport(PeriodParams params) { + ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); + return registryImdg.getCollectionObjectsByPredicate( + pb.and( + pb.greatEqual("clearingDate", params.getStartDate()), + pb.lessEqual("clearingDate", params.getEndDate()) + ) + ); + } + + @Override + public String getReportFilename(PeriodParams params) { + return "period_money_change.%s-%s.%s".formatted( + dateFormatter.format(params.getStartDate()), + dateFormatter.format(params.getEndDate()), + dateTimeFormatter.format(Instant.now()) + ); + } + + @Override + protected ReportType getReportType() { + return ReportType.PERIOD_MONEY_CHANGE; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java index 17f406a65..f63e3bfbf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryLiabilitiesClaimsReportBuilder.java @@ -1,18 +1,31 @@ package ru.spcex.clearing.reports.reports.bp; -import ru.spcex.clearing.reports.reports.SessionIdParam; +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +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 java.time.Instant; +import java.util.Collection; -public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { +public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { public SummaryLiabilitiesClaimsReportBuilder(ImdgProvider imdgProvider) { super(imdgProvider); } @Override - protected String getReportFilename(SessionIdParam params) { + protected Collection getExecutionFondsForReport(EmptyParams params) { + return executionFondImdg.getAllValues(); + } + + @Override + protected Collection getExecutionDepositsForReport(EmptyParams params) { + return executionDepositImdg.getAllValues(); + } + + @Override + protected String getReportFilename(EmptyParams params) { return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now())); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java index 802ea25e1..aa14c1055 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/SummaryMoneyChangeReportBuilder.java @@ -1,27 +1,31 @@ package ru.spcex.clearing.reports.reports.bp; -import ru.spcex.clearing.reports.reports.PeriodParams; +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 java.time.Instant; +import java.util.Collection; -public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder { +public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder { public SummaryMoneyChangeReportBuilder(ImdgProvider imdgProvider) { super(imdgProvider); } @Override - protected String getReportFilename(PeriodParams params) { - return "summary_money_change.%s-%s.%s".formatted( - dateFormatter.format(params.getStartDate()), - dateFormatter.format(params.getEndDate()), - dateTimeFormatter.format(Instant.now()) - ); + protected Collection getRegistryForReport(EmptyParams param) { + return registryImdg.getAllValues(); + } + + @Override + protected String getReportFilename(EmptyParams params) { + return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now())); } @Override protected ReportType getReportType() { return ReportType.SUMMARY_MONEY_CHANGE; } + }