From 3b30b34a348d5dd753ffe90709b02b135a625f18 Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 13 Jul 2023 16:42:54 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-358 fix SessionIdParam reports --- .../reports/reports/SessionIdParam.java | 8 ++- .../ExecutedDealReportBuilder_INFTYPE_1.java | 2 +- .../ExecutedDealReportBuilder_INFTYPE_2.java | 2 +- .../bp/UnfulfilledDealReportBuilder.java | 2 +- .../ks/KSRepCashNettoReportBuilder.java | 2 +- .../ks/KSRepDepoNettoReportBuilder.java | 2 +- .../reports/services/ReportService.java | 68 ++++++++++++++----- .../domain/cud/gateway/SendReportRequest.java | 6 +- 8 files changed, 65 insertions(+), 27 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java index e2a529e6b..716071a2e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/SessionIdParam.java @@ -1,16 +1,18 @@ package ru.spcex.clearing.reports.reports; +import java.util.List; + /** * Параметры для формирования отчета по SessionId */ public class SessionIdParam { - private Long sessionId; + private List sessionId; - public Long getSessionId() { + public List getSessionId() { return sessionId; } - public void setSessionId(Long sessionId) { + public void setSessionId(List sessionId) { this.sessionId = sessionId; } } 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 ca7ebb1b3..188bedf37 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 @@ -35,7 +35,7 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); return executionFondImdg.getCollectionObjectsByPredicate( pb.and( - pb.equals("sessionId", params.getSessionId()), + pb.in("sessionId", params.getSessionId().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 f0b349ccd..0faf0cf2f 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 @@ -35,7 +35,7 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder(); return executionFondImdg.getCollectionObjectsByPredicate( pb.and( - pb.equals("sessionId", params.getSessionId()), + pb.in("sessionId", params.getSessionId().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 3f7aaf4c8..90a58a1ae 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 @@ -68,7 +68,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder 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 d819fb40a..6ea25c7d5 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 @@ -67,7 +67,7 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder>> reportBuildersForGREF; private final Map>> reportBuildersForGRET; + private final Imdg sessionImdg; + private final File outFolder; public ReportService(Consumer kafkaQueue, @@ -84,7 +92,9 @@ public class ReportService extends QueueConsumer implements InitializingBean { @Qualifier("reportRequestGRETValidator") Function reportRequestGRETValidator, @Qualifier("reportRequestGREFValidator") - Function reportRequestGREFValidator + Function reportRequestGREFValidator, + + ImdgProvider imdgProvider ) { super(kafkaQueue, kafkaResponseQueue); @@ -102,6 +112,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { this.reportBuildersForGREP = reportBuildersForGREP; this.reportBuildersForGREF = reportBuildersForGREF; this.reportBuildersForGRET = reportBuildersForGRET; + this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); assert outFolder.isDirectory(); } @@ -180,7 +191,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { List outFilenames = new ArrayList<>(); for (CSVReportBuilder builder : builders) { SessionIdParam sessionIdParam = new SessionIdParam(); - sessionIdParam.setSessionId(req.getSessionId()); + sessionIdParam.setSessionId(List.of(req.getSessionId())); File outFile = builder.createReport(sessionIdParam, outFolder); if (outFile == null) continue; outFilenames.add(outFile.getAbsolutePath()); @@ -206,10 +217,15 @@ public class ReportService extends QueueConsumer implements InitializingBean { if (requestInfoUpdate != null) return null; logUnknownProperties(userRequest); - Long sessionId = userRequest.getRequestPayload().getSessionId(); - Map outFilenames = createReportsForTask(sessionId, reportBuildersForGREP.values()); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + } else { + sessionIds = getSessionIdsForDate(LocalDate.now()); + } + Map outFilenames = createReportsForTask(sessionIds, reportBuildersForGREP.values()); - sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_TMP.getKey()); + sendReportsToGateway(sessionIds, outFilenames, ReportType.REPORT_KS_TMP.getKey()); return null; } @@ -222,10 +238,15 @@ public class ReportService extends QueueConsumer implements InitializingBean { if (requestInfoUpdate != null) return null; logUnknownProperties(userRequest); - Long sessionId = userRequest.getRequestPayload().getSessionId(); - Map outFilenames = createReportsForTask(sessionId, reportBuildersForGRET.values()); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + } else { + sessionIds = getSessionIdsForDate(LocalDate.now()); + } + Map outFilenames = createReportsForTask(sessionIds, reportBuildersForGRET.values()); - sendReportsToGateway(sessionId, outFilenames, null); + sendReportsToGateway(sessionIds, outFilenames, null); return null; } @@ -238,14 +259,19 @@ public class ReportService extends QueueConsumer implements InitializingBean { if (requestInfoUpdate != null) return null; logUnknownProperties(userRequest); - Long sessionId = userRequest.getRequestPayload().getSessionId(); - Map outFilenames = createReportsForTask(sessionId, reportBuildersForGREF.values()); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + } else { + sessionIds = getSessionIdsForDate(LocalDate.now()); + } + Map outFilenames = createReportsForTask(sessionIds, reportBuildersForGREF.values()); - sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_FINAL.getKey()); + sendReportsToGateway(sessionIds, outFilenames, ReportType.REPORT_KS_FINAL.getKey()); return null; } - private Map createReportsForTask(Long sessionId, Collection>> buildersForTask) { + private Map createReportsForTask(List sessionIds, Collection>> buildersForTask) { Map outFilenames = new HashMap<>(); int cntErrors = 0; for (List> builders : buildersForTask) { @@ -258,9 +284,9 @@ public class ReportService extends QueueConsumer implements InitializingBean { continue; } outFilenames.put(outFile.getName(), builder.getReportKey()); - } else if (builder.getParamsClass() == SessionIdParam.class && sessionId != null) { + } else if (builder.getParamsClass() == SessionIdParam.class) { SessionIdParam sessionIdParam = new SessionIdParam(); - sessionIdParam.setSessionId(sessionId); + sessionIdParam.setSessionId(sessionIds); File outFile = ((CSVReportBuilder) builder).createReport(sessionIdParam, outFolder); if (outFile == null) { log.warn("Something wrong, report type: {}", builder.getReportType().getKey()); @@ -277,9 +303,9 @@ public class ReportService extends QueueConsumer implements InitializingBean { return outFilenames; } - private void sendReportsToGateway(Long sessionId, Map reportsWithReportType, String type) { + private void sendReportsToGateway(List sessionIds, Map reportsWithReportType, String type) { SendReportRequest sendReportRequest = new SendReportRequest(); - sendReportRequest.setSessionId(sessionId); + sendReportRequest.setSessionId(sessionIds); sendReportRequest.setType(type); List reports = new ArrayList<>(reportsWithReportType.size()); for (Map.Entry entry : reportsWithReportType.entrySet()) { @@ -299,4 +325,14 @@ 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(); + } + } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendReportRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendReportRequest.java index 6494cfe71..6952a6c4a 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendReportRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/SendReportRequest.java @@ -6,7 +6,7 @@ import java.util.List; public class SendReportRequest { @JsonProperty - private Long sessionId; + private List sessionId; @JsonProperty private String type; @@ -14,11 +14,11 @@ public class SendReportRequest { @JsonProperty private List reports; - public Long getSessionId() { + public List getSessionId() { return sessionId; } - public void setSessionId(Long sessionId) { + public void setSessionId(List sessionId) { this.sessionId = sessionId; }