From 939941d789b6bcce1634a4721e0e26157a15c6f9 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 6 Jul 2023 12:53:29 +0200 Subject: [PATCH] RED-6543: Adapted license report to new requirements --- .../service/LicenseReportService.java | 63 ++++++++++--------- .../shared/model/license/LicenseReport.java | 1 + .../model/license/MonthlyReportData.java | 1 + 3 files changed, 36 insertions(+), 29 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/LicenseReportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/LicenseReportService.java index 8e679b838..301c6d61f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/LicenseReportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/LicenseReportService.java @@ -6,8 +6,10 @@ import java.time.ZoneId; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -35,56 +37,53 @@ public class LicenseReportService { public LicenseReport getLicenseReport(LicenseReportRequest licenseReportRequest) { - if(licenseReportRequest.getEndDate().isBefore(licenseReportRequest.getStartDate())){ + if (licenseReportRequest.getEndDate().isBefore(licenseReportRequest.getStartDate())) { throw new BadRequestException("Invalid date period: End date is before start date."); } var files = fileStatusService.getStatusesAddedBefore(OffsetDateTime.ofInstant(licenseReportRequest.getEndDate(), UTC_ZONE_ID)); var addDossiers = dossierService.getAllDossiers(); - if (files == null || files.isEmpty()) { - return LicenseReport.builder() - .startDate(licenseReportRequest.getStartDate()) - .endDate(licenseReportRequest.getEndDate()) - .numberOfDossiers(addDossiers.stream() - .filter(dossier -> dossier.getDate().toInstant().isAfter(licenseReportRequest.getStartDate()) && (dossier.getHardDeletedTime() == null || dossier.getHardDeletedTime() - .isAfter(OffsetDateTime.ofInstant(licenseReportRequest.getEndDate(), UTC_ZONE_ID)))) - .collect(Collectors.toSet()) - .size()).build(); - } - files.sort(Comparator.comparing(FileModel::getAdded)); var dossiersById = addDossiers.stream().collect(Collectors.toMap(DossierEntity::getId, Function.identity())); - Map> adds = new HashMap<>(); - Map> softDeletes = new HashMap<>(); - Map> archives = new HashMap<>(); - Map> hardDeletes = new HashMap<>(); - Map> ocrs = new HashMap<>(); + Map> adds = new HashMap<>(); + Map> softDeletes = new HashMap<>(); + Map> archives = new HashMap<>(); + Map> hardDeletes = new HashMap<>(); + Map> ocrs = new HashMap<>(); + for (var file : files) { - adds.computeIfAbsent(YearMonth.from(file.getAdded()), entry -> new ArrayList<>()).add(file); + adds.computeIfAbsent(YearMonth.from(file.getAdded()), entry -> new HashSet<>()).add(file); if (file.getDeleted() != null && file.getDeleted().toInstant().isBefore(licenseReportRequest.getEndDate())) { - softDeletes.computeIfAbsent(YearMonth.from(file.getDeleted()), entry -> new ArrayList<>()).add(file); + softDeletes.computeIfAbsent(YearMonth.from(file.getDeleted()), entry -> new HashSet<>()).add(file); + } + if(dossiersById.get(file.getDossierId()).getSoftDeletedTime() != null && dossiersById.get(file.getDossierId()).getSoftDeletedTime().toInstant().isBefore(licenseReportRequest.getEndDate())){ + softDeletes.computeIfAbsent(YearMonth.from(dossiersById.get(file.getDossierId()).getSoftDeletedTime()), entry -> new HashSet<>()).add(file); } if (file.getHardDeletedTime() != null && file.getHardDeletedTime().toInstant().isBefore(licenseReportRequest.getEndDate())) { - hardDeletes.computeIfAbsent(YearMonth.from(file.getHardDeletedTime()), entry -> new ArrayList<>()).add(file); + hardDeletes.computeIfAbsent(YearMonth.from(file.getHardDeletedTime()), entry -> new HashSet<>()).add(file); + } + if(dossiersById.get(file.getDossierId()).getHardDeletedTime() != null && dossiersById.get(file.getDossierId()).getHardDeletedTime().toInstant().isBefore(licenseReportRequest.getEndDate())){ + hardDeletes.computeIfAbsent(YearMonth.from(dossiersById.get(file.getDossierId()).getHardDeletedTime()), entry -> new HashSet<>()).add(file); } if (dossiersById.get(file.getDossierId()).getArchivedTime() != null && dossiersById.get(file.getDossierId()) .getArchivedTime() .toInstant() .isBefore(licenseReportRequest.getEndDate())) { - archives.computeIfAbsent(YearMonth.from(dossiersById.get(file.getDossierId()).getArchivedTime()), entry -> new ArrayList<>()).add(file); + archives.computeIfAbsent(YearMonth.from(dossiersById.get(file.getDossierId()).getArchivedTime()), entry -> new HashSet<>()).add(file); } if (file.getOcrStartTime() != null && file.getOcrStartTime().toInstant().isBefore(licenseReportRequest.getEndDate())) { - ocrs.computeIfAbsent(YearMonth.from(file.getOcrStartTime()), entry -> new ArrayList<>()).add(file); + ocrs.computeIfAbsent(YearMonth.from(file.getOcrStartTime()), entry -> new HashSet<>()).add(file); } } - YearMonth currentMonth = files.get(0).getAdded().toInstant().isBefore(licenseReportRequest.getStartDate()) ? YearMonth.from(files.get(0).getAdded()) : YearMonth.from(licenseReportRequest.getStartDate().atZone(UTC_ZONE_ID).toLocalDate()); + YearMonth currentMonth = !files.isEmpty() && files.get(0).getAdded().toInstant().isBefore(licenseReportRequest.getStartDate()) ? YearMonth.from(files.get(0) + .getAdded()) : YearMonth.from(licenseReportRequest.getStartDate().atZone(UTC_ZONE_ID).toLocalDate()); YearMonth endMonth = YearMonth.from(licenseReportRequest.getEndDate().atZone(UTC_ZONE_ID).toLocalDate()); YearMonth reportStartMonth = YearMonth.from(licenseReportRequest.getStartDate().atZone(UTC_ZONE_ID).toLocalDate()); @@ -99,11 +98,13 @@ public class LicenseReportService { int numberOfAnalyzedPages = 0; int numberOfOcrPages = 0; int numberOfAnalyzedFiles = 0; + long analysedFilesBytes = 0; int numberOfOcrFiles = 0; while (!currentMonth.isAfter(endMonth)) { int currentMonthNumberOfAnalyzedPages = 0; + int currentanalysedFilesBytes = 0; int currentMonthNumberOfOcrPages = 0; var addedFilesInMonth = adds.get(currentMonth); @@ -116,6 +117,8 @@ public class LicenseReportService { numberOfAnalyzedPages += add.getNumberOfPages(); currentMonthNumberOfAnalyzedPages += add.getNumberOfPages(); numberOfAnalyzedFiles++; + analysedFilesBytes += add.getFileSize(); + currentanalysedFilesBytes += add.getFileSize(); } } } @@ -144,7 +147,7 @@ public class LicenseReportService { var hardDeletedFilesInMonth = hardDeletes.get(currentMonth); if (hardDeletedFilesInMonth != null) { for (var hardDeleted : hardDeletedFilesInMonth) { - if (hardDeleted.getDeleted() != null) { + if (hardDeleted.getDeleted() != null || dossiersById.get(hardDeleted.getDossierId()).getSoftDeletedTime() != null) { trashFilesUploadedBytes -= hardDeleted.getFileSize(); } else { activeFilesUploadedBytes -= hardDeleted.getFileSize(); @@ -177,6 +180,7 @@ public class LicenseReportService { .totalFilesUploadedBytes(activeFilesUploadedBytes + trashFilesUploadedBytes + archivedFilesUploadedBytes) .numberOfAnalyzedPages(currentMonthNumberOfAnalyzedPages) .numberOfOcrPages(currentMonthNumberOfOcrPages) + .analysedFilesBytes(currentanalysedFilesBytes) .build()); } @@ -191,12 +195,13 @@ public class LicenseReportService { .numberOfAnalyzedPages(numberOfAnalyzedPages) .numberOfOcrPages(numberOfOcrPages) .numberOfAnalyzedFiles(numberOfAnalyzedFiles) + .analysedFilesBytes(analysedFilesBytes) .numberOfOcrFiles(numberOfOcrFiles) - .numberOfDossiers(addDossiers.stream() - .filter(dossier -> dossier.getDate().toInstant().isAfter(licenseReportRequest.getStartDate()) && (dossier.getHardDeletedTime() == null || dossier.getHardDeletedTime() - .isAfter(OffsetDateTime.ofInstant(licenseReportRequest.getEndDate(), UTC_ZONE_ID)))) - .collect(Collectors.toSet()) - .size()) + .numberOfDossiers(addDossiers.stream().filter(dossier -> // + dossier.getDate().toInstant().isAfter(licenseReportRequest.getStartDate()) // + && dossier.getDate().toInstant().isBefore(licenseReportRequest.getEndDate()) // + && (dossier.getHardDeletedTime() == null || dossier.getHardDeletedTime() + .isAfter(OffsetDateTime.ofInstant(licenseReportRequest.getEndDate(), UTC_ZONE_ID)))).collect(Collectors.toSet()).size()) .startDate(licenseReportRequest.getStartDate()) .endDate(licenseReportRequest.getEndDate()) .monthlyData(monthlyData) diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/LicenseReport.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/LicenseReport.java index 24afa9c95..0b0e2a857 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/LicenseReport.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/LicenseReport.java @@ -23,6 +23,7 @@ public class LicenseReport { private int numberOfOcrFiles; private int numberOfDossiers; private int numberOfAnalyzedPages; + private long analysedFilesBytes; private int numberOfOcrPages; private Instant startDate; private Instant endDate; diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/MonthlyReportData.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/MonthlyReportData.java index 36c9153e3..0af7a4d66 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/MonthlyReportData.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/license/MonthlyReportData.java @@ -20,6 +20,7 @@ public class MonthlyReportData { private long trashFilesUploadedBytes; private long archivedFilesUploadedBytes; private int numberOfAnalyzedPages; + private long analysedFilesBytes; private int numberOfOcrPages; } -- 2.47.2