diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java new file mode 100644 index 000000000..2b198bf17 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdListParams.java @@ -0,0 +1,18 @@ +package ru.spcex.clearing.reports.reports; + +import java.util.List; + +/** + * Параметры для формирования отчета по списку SessionId + */ +public class SessionIdListParams { + private List sessionIdList; + + public List getSessionIdList() { + return sessionIdList; + } + + public void setSessionIdList(List sessionIdList) { + this.sessionIdList = sessionIdList; + } +} 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 index 65eb2b11d..b73394678 100644 --- 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 @@ -2,27 +2,23 @@ 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.clearing.reports.reports.SessionIdListParams; 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; +import java.util.Collections; -public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder { +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()) - ); + protected String getReportFilename(SessionIdListParams params) { + return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(Instant.now())); } @Override @@ -31,24 +27,24 @@ public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepor } @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()) - ) - ); + protected Collection getExecutionFondsForReport(SessionIdListParams params) { + if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList(); + StringBuilder sql = new StringBuilder("sessionId in ("); + for (Long sessionId : params.getSessionIdList()) { + sql.append(sessionId).append(","); + } + sql.append(")"); + return executionFondImdg.getCollectionObjectsBySQL(sql.toString()); } @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()) - ) - ); + protected Collection getExecutionDepositsForReport(SessionIdListParams params) { + if (params.getSessionIdList() == null || params.getSessionIdList().isEmpty()) return Collections.emptyList(); + StringBuilder sql = new StringBuilder("sessionId in ("); + for (Long sessionId : params.getSessionIdList()) { + sql.append(sessionId).append(","); + } + sql.append(")"); + return executionDepositImdg.getCollectionObjectsBySQL(sql.toString()); } }