@Override public void generateDailyReports() { DateTimeFormatter formatter = DateTimeFormat.forPattern(EbodacConstants.REPORT_DATE_FORMAT); Config config = configService.getConfig(); if (config.getGenerateReports() != null && config.getGenerateReports()) { String lastCalculationDate = config.getLastCalculationDate(); String calculationStartDate = config.getFirstCalculationStartDate(); LocalDate startDate; if (StringUtils.isNotBlank(lastCalculationDate)) { startDate = LocalDate.parse(lastCalculationDate, formatter).plusDays(1); } else if (StringUtils.isNotBlank(calculationStartDate)) { startDate = LocalDate.parse(calculationStartDate, formatter); } else { startDate = subjectService.findOldestPrimerVaccinationDate(); } updateBoosterVaccinationReportsForDates( reportUpdateService.getBoosterVaccinationReportsToUpdate()); updatePrimerVaccinationReportsForDates( reportUpdateService.getPrimerVaccinationReportsToUpdate()); generateDailyReportsFromDate(startDate); config = configService.getConfig(); config.setGenerateReports(false); config.setLastCalculationDate(DateUtil.now().minusDays(1).toString(formatter)); configService.updateConfig(config); } }