diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index cf7a5911a..e9c50595f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -26,8 +26,8 @@ public class ReportsServiceApplication { //todo это тест. Переписать код с учётом параметров запуска - как сервис или разово все из командной строки. ReportsServiceCommand reportCommand = context.getBean(ReportsServiceCommand.class); reportCommand.writeAllXML(); - Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class); - log.info("Shutdown application after work"); +// Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class); +// log.info("Shutdown application after work"); // context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому. } catch (Throwable e) { LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); 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 45163542b..e35ec5587 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 @@ -30,23 +30,34 @@ public class ReportsServiceCommand implements InitializingBean { protected ReportsServiceSettings settings; protected ImdgProvider imdg; - protected List allReports; // Spring services - private final Map collectorForReportById; + protected List allPeriodReports; // Spring services + protected List allSimpleReports; + private final Map collectorForReportById; @Autowired - public ReportsServiceCommand(ImdgProvider imdg, List allReports, ReportsServiceSettings settings) { + public ReportsServiceCommand(ImdgProvider imdg, List allPeriodReports, + List allSimpleReports, + ReportsServiceSettings settings) { this.imdg = imdg; this.settings = settings; - this.allReports = allReports; // allReports = context.getBeansOfType(ReportDataCollector.class); + this.allSimpleReports = allSimpleReports; + this.allPeriodReports = allPeriodReports; // allReports = context.getBeansOfType(ReportDataCollector.class); this.collectorForReportById = new HashMap<>(); - for (ReportWithPeriodCollector collector : allReports) { + for (ReportWithPeriodCollector collector : allPeriodReports) { ReportId rId = collector.getReportId(); collectorForReportById.put(rId, collector); String idStr = rId == null ? null : rId.getKey(); - log.info("Register collector service {} (report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName()); + log.info("Register collector service {} (period report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName()); } - assert allReports.size() == collectorForReportById.size(); + assert allPeriodReports.size() == collectorForReportById.size(); + for (SimpleReportCollector collector : allSimpleReports) { + ReportId rId = collector.getReportId(); + collectorForReportById.put(rId, collector); + String idStr = rId == null ? null : rId.getKey(); + log.info("Register collector service {} (simple report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName()); + } + } @Override @@ -57,18 +68,27 @@ public class ReportsServiceCommand implements InitializingBean { } public void generateReportAll(LocalDate startDate, LocalDate endDate) throws IOException { - for (ReportWithPeriodCollector reportDataCollector : allReports) { + for (ReportWithPeriodCollector reportDataCollector : allPeriodReports) { makeSingleReport(reportDataCollector, startDate, endDate); } + for (SimpleReportCollector reportDataCollector : allSimpleReports) { + makeSingleReport(reportDataCollector); + } } public void generateReportById(String reportIdStr, LocalDate startDate, LocalDate endDate) throws IOException { ReportId reportId = parseReportId(reportIdStr); - ReportWithPeriodCollector reportDataCollector = collectorForReportById.get(reportId); + AbstractReportCollector reportDataCollector = collectorForReportById.get(reportId); if (reportDataCollector == null) throw new IllegalStateException("Collector for ReportID " + reportId + " not implemented yet"); - makeSingleReport(reportDataCollector, startDate, endDate); + if (reportDataCollector instanceof ReportWithPeriodCollector) { + makeSingleReport((ReportWithPeriodCollector) reportDataCollector, startDate, endDate); + } else if (reportDataCollector instanceof SimpleReportCollector) { + makeSingleReport((SimpleReportCollector) reportDataCollector); + } else { + throw new IllegalArgumentException("Uncknown report class: " + reportDataCollector.getClass().getName()); + } } @@ -86,23 +106,39 @@ public class ReportsServiceCommand implements InitializingBean { File outPath = new File(settings.getReportModuleOut()); XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath); AbstractReport report = reportDataCollector.collectReportWithPeriod(startDate, endDate); - File reportFile = null; - reportFile = reportBuilder.createReport(report); - + File reportFile = reportBuilder.createReport(report); if (reportFile != null) { log.debug("New report file done: \"{}\"", reportFile); } } + protected void makeSingleReport(SimpleReportCollector reportDataCollector) throws IOException { + log.debug("Generate report by collector {} - {}", reportDataCollector.getClass().getSimpleName(), reportDataCollector.getReportClass().getSimpleName()); + File outPath = new File(settings.getReportModuleOut()); + XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath); + AbstractReport report = reportDataCollector.collectReport(); + File reportFile = reportBuilder.createReport(report); + if (reportFile != null) { + log.debug("New report file done: \"{}\"", reportFile); + } + } + + public void writeAllXML() throws IOException { - log.info("Report types: {}", allReports); - for (ReportWithPeriodCollector collector : allReports) { + log.info("Report types with data range: {}", allPeriodReports); + for (ReportWithPeriodCollector collector : allPeriodReports) { log.info("Make report {}", collector); LocalDate date2 = LocalDate.now(); LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); makeSingleReport(collector, date1, date2); } - log.info("Shutdown application after work"); + log.info("Report types: {}", allSimpleReports); + for (SimpleReportCollector collector : allSimpleReports) { + log.info("Make report {}", collector); + LocalDate date2 = LocalDate.now(); + makeSingleReport(collector); + } + log.info("All done"); } public void writeAllDocx() {