From adc4d101f0f5214f410bce778ba811ea3b984851 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Sat, 27 May 2023 15:33:49 +0300 Subject: [PATCH] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8088/brow?= =?UTF-8?q?se/CLS-283=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=BE=20GREP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/AbstractReportCollector.java | 1 + .../services/ReportWithPeriodCollector.java | 1 + .../services/ReportsServiceCommand.java | 116 ++++++++++++++++-- .../services/SimpleReportCollector.java | 1 + 4 files changed, 112 insertions(+), 7 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/AbstractReportCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/AbstractReportCollector.java index f6276c2cc..8c79bf7df 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/AbstractReportCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/AbstractReportCollector.java @@ -17,6 +17,7 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Locale; +@Deprecated public abstract class AbstractReportCollector { public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java index b11179d01..607d35ede 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java @@ -10,6 +10,7 @@ import java.time.Instant; import java.time.LocalDate; import java.util.Collection; +@Deprecated public abstract class ReportWithPeriodCollector extends AbstractReportCollector { /** * Подготовка отчета на период startDate..endDate diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java index 499228968..a9244df38 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsServiceCommand.java @@ -4,12 +4,22 @@ 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.AbstractReport; -import ru.spcex.clearing.reports.reports.ReportId; +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; @@ -17,9 +27,7 @@ import ru.spcex.platform.utils.log.ExceptionUtils; import java.io.File; import java.io.IOException; import java.time.LocalDate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Исполняет создание отчётов. @@ -35,17 +43,42 @@ public class ReportsServiceCommand implements InitializingBean { protected ReportsServiceSettings settings; protected ImdgProvider imdg; + + @Deprecated protected List allPeriodReports; // Spring services + @Deprecated protected List allSimpleReports; + @Deprecated private final Map collectorForReportById; + // new format report: + ReportService newReportService; // by ReportBuildersConfig + Map>> reportBuildersWithoutParams; + Map>> reportBuildersWithSessionIdParam; + Map>> reportBuildersWithSessionIdListParam; + Map>> reportBuildersWithPeriodParams; + + @Autowired - public ReportsServiceCommand(ImdgProvider imdg, List allPeriodReports, + public ReportsServiceCommand(ImdgProvider imdg, + List allPeriodReports, List allSimpleReports, + @Qualifier("reportBuildersWithoutParams") Map>> reportBuildersWithoutParams, + @Qualifier("reportBuildersWithSessionIdParam") Map>> reportBuildersWithSessionIdParam, + @Qualifier("reportBuildersWithSessionIdListParam") Map>> reportBuildersWithSessionIdListParam, + @Qualifier("reportBuildersWithPeriodParams") Map>> 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<>(); @@ -73,6 +106,75 @@ public class ReportsServiceCommand implements InitializingBean { } public void generateReportAll(@Nullable String reportGroup, LocalDate startDate, LocalDate endDate) throws IOException { + // new reports: + { + HashSet reported=new HashSet<>(); + for (ReportType rType : reportBuildersWithoutParams.keySet()) { + if (reported.contains(rType)) continue; + reported.add(rType); + log.info("Make report {}", rType); + try { + BaseRequest 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 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 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 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 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 { @@ -124,7 +226,7 @@ public class ReportsServiceCommand implements InitializingBean { XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath); AbstractReport report = reportDataCollector.collectReportWithPeriod(startDate, endDate); if (report == null) { - throw new NullPointerException("reportDataCollector "+ reportDataCollector +" return null"); + throw new NullPointerException("reportDataCollector " + reportDataCollector + " return null"); } File reportFile = reportBuilder.createReport(report); if (reportFile != null) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/SimpleReportCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/SimpleReportCollector.java index 7f637d611..c25db9cd2 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/SimpleReportCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/SimpleReportCollector.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services; import ru.spcex.clearing.reports.reports.AbstractReport; +@Deprecated public abstract class SimpleReportCollector extends AbstractReportCollector { /** * Подготовка отчета (без входных параметров)