diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java index 835add584..c74f48f5a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java @@ -9,8 +9,10 @@ import com.opencsv.exceptions.CsvFieldAssignmentException; import com.opencsv.exceptions.CsvRequiredFieldEmptyException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.platform.enumeration.ReportBuilderType; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.imdg.api.Imdg; import java.io.File; import java.io.FileWriter; @@ -19,10 +21,11 @@ import java.io.Writer; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Locale; +import java.util.*; +import java.util.stream.Collectors; /** * Класс для построения отчетов в формате CSV @@ -139,6 +142,16 @@ public abstract class CSVReportBuilder { return filename; } + protected List getSessionIdsForCurrentDate(Imdg sessionImdg) { + Collection sessionForCurrentDay = sessionImdg.getCollectionObjectsByFieldValues( + Map.of( + "clearingDate", LocalDate.now() + ) + ); + Set sessionIds = sessionForCurrentDay.stream().map(Session::getId).collect(Collectors.toSet()); + return sessionIds.stream().toList(); + } + static class CustomStrategy extends ColumnPositionMappingStrategy { @Override public String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java index 44cc8b3da..fb40d6946 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilderCommon.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.bp; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.misc.STrades; +import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.bean.ExecutedDealReport; @@ -21,6 +22,7 @@ import java.util.Map; public abstract class ExecutedDealReportBuilderCommon

extends CSVReportBuilder { protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); protected final Imdg executionFondImdg; + protected final Imdg sessionImdg; private final Imdg companyImdg; private final Imdg sTradesImdg; @@ -32,6 +34,7 @@ public abstract class ExecutedDealReportBuilderCommon

extends CSVReportBuilde public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) { this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); + this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java index 625915547..31f8eadd7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java @@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.time.LocalDate; import java.util.Collection; +import java.util.List; @Component public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon { @@ -30,9 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild @Override protected Collection getExecutionFondsForReport(SessionIdParam params) { ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); + List sessionIds = params.getSessionId(); + if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg); return executionFondImdg.getCollectionObjectsByPredicate( pb.and( - pb.in("sessionId", params.getSessionId().toArray(new Long[0])), + pb.in("sessionId", sessionIds.toArray(new Long[0])), pb.less("tradingDate", LocalDate.now()), pb.equals("settlementDate", LocalDate.now()) ) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java index 176120811..04a0a7b4b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java @@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.time.LocalDate; import java.util.Collection; +import java.util.List; @Component public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon { @@ -30,9 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild @Override protected Collection getExecutionFondsForReport(SessionIdParam params) { ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); + List sessionIds = params.getSessionId(); + if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg); return executionFondImdg.getCollectionObjectsByPredicate( pb.and( - pb.in("sessionId", params.getSessionId().toArray(new Long[0])), + pb.in("sessionId",sessionIds.toArray(new Long[0])), pb.equals("tradingDate", LocalDate.now()), pb.equals("settlementDate", LocalDate.now()) ) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java index 213ab2068..d97e80dc8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.misc.STrades; +import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.SessionIdParam; @@ -27,11 +28,13 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder executionFondImdg; private final Imdg companyImdg; private final Imdg sTradesImdg; + private final Imdg sessionImdg; public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) { executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); + sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); } private List rows = null; @@ -64,8 +67,10 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder sessionIds = params.getSessionId(); + if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg); ImdgPredicate predicate = pb.and( - pb.in("sessionId", params.getSessionId().toArray(new Long[0])), + pb.in("sessionId", sessionIds.toArray(new Long[0])), pb.equals("coverageStatus", Allowed.DENIED.getKey()) ); Collection executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java index aa4a8a5e5..2856e5c9b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java @@ -63,8 +63,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder sessionIds = params.getSessionId(); + if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg); ImdgPredicate finalPredicate = pb.and( - pb.in("sessionId", params.getSessionId().toArray(new Long[0])), + pb.in("sessionId", sessionIds.toArray(new Long[0])), pb.equals("clearingDate", nowDate), pb.sql(sql), pb.or( diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java index 019704419..23ad27518 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java @@ -62,9 +62,11 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder sessionIds = params.getSessionId(); + if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg); String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TS_T, RegistryTradingParams.OS_T).build(); ImdgPredicate finalPredicate = pb.and( - pb.in("sessionId", params.getSessionId().toArray(new Long[0])), + pb.in("sessionId", sessionIds.toArray(new Long[0])), pb.equals("clearingDate", nowDate), pb.sql(sql), pb.equals("accountType", AccountType.Depo.getKey()), diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java index b022b223c..380683ee5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java @@ -37,7 +37,6 @@ 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.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -239,8 +238,6 @@ public class ReportService extends QueueConsumer implements InitializingBean { List sessionIds = null; if (userRequest.getRequestPayload().getSessionId() != null) { sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); - } else { - sessionIds = getSessionIdsForDate(LocalDate.now()); } Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREP.values()); @@ -261,8 +258,6 @@ public class ReportService extends QueueConsumer implements InitializingBean { List sessionIds = null; if (userRequest.getRequestPayload().getSessionId() != null) { sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); - } else { - sessionIds = getSessionIdsForDate(LocalDate.now()); } Map outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values()); @@ -301,8 +296,6 @@ public class ReportService extends QueueConsumer implements InitializingBean { List sessionIds = null; if (userRequest.getRequestPayload().getSessionId() != null) { sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); - } else { - sessionIds = getSessionIdsForDate(LocalDate.now()); } Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREF.values()); @@ -380,16 +373,6 @@ public class ReportService extends QueueConsumer implements InitializingBean { } } - private List getSessionIdsForDate(LocalDate date) { - Collection sessionForCurrentDay = sessionImdg.getCollectionObjectsByFieldValues( - Map.of( - "clearingDate", date - ) - ); - Set sessionIds = sessionForCurrentDay.stream().map(Session::getId).collect(Collectors.toSet()); - return sessionIds.stream().toList(); - } - private void sendFilesToSftp(Collection files) { for (File file : files) { reportsSftpGateway.sendToSftp(file);