reports-service http://jira.mfd.msk:8088/browse/CLS-283 запуск новых отчётов по GREP
This commit is contained in:
parent
3c252ca3f6
commit
adc4d101f0
4 changed files with 112 additions and 7 deletions
|
|
@ -17,6 +17,7 @@ import java.time.ZoneId;
|
|||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
|
||||
@Deprecated
|
||||
public abstract class AbstractReportCollector<T extends AbstractReport> {
|
||||
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
||||
public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import java.time.Instant;
|
|||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
|
||||
@Deprecated
|
||||
public abstract class ReportWithPeriodCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
||||
/**
|
||||
* Подготовка отчета на период startDate..endDate
|
||||
|
|
|
|||
|
|
@ -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<ReportWithPeriodCollector> allPeriodReports; // Spring services
|
||||
@Deprecated
|
||||
protected List<SimpleReportCollector> allSimpleReports;
|
||||
@Deprecated
|
||||
private final Map<ReportId, AbstractReportCollector> collectorForReportById;
|
||||
|
||||
// new format report:
|
||||
ReportService newReportService; // by ReportBuildersConfig
|
||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams;
|
||||
|
||||
|
||||
@Autowired
|
||||
public ReportsServiceCommand(ImdgProvider imdg, List<ReportWithPeriodCollector> allPeriodReports,
|
||||
public ReportsServiceCommand(ImdgProvider imdg,
|
||||
List<ReportWithPeriodCollector> allPeriodReports,
|
||||
List<SimpleReportCollector> allSimpleReports,
|
||||
@Qualifier("reportBuildersWithoutParams") Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams,
|
||||
@Qualifier("reportBuildersWithSessionIdParam") Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam,
|
||||
@Qualifier("reportBuildersWithSessionIdListParam") Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam,
|
||||
@Qualifier("reportBuildersWithPeriodParams") Map<ReportType, List<CSVReportBuilder<PeriodParams>>> 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<ReportType> reported=new HashSet<>();
|
||||
for (ReportType rType : reportBuildersWithoutParams.keySet()) {
|
||||
if (reported.contains(rType)) continue;
|
||||
reported.add(rType);
|
||||
log.info("Make report {}", rType);
|
||||
try {
|
||||
BaseRequest<ReportRequest> 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<Session> 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<ReportRequestWithSessionId> 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<ReportRequestWithSessionIdList> 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<ReportRequestWithPeriod> 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) {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.services;
|
|||
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
|
||||
@Deprecated
|
||||
public abstract class SimpleReportCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
||||
/**
|
||||
* Подготовка отчета (без входных параметров)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue