From 742d29c76ad7c7b5633ad9506ae254df709f9677 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Wed, 21 Jun 2023 09:37:00 +0200 Subject: [PATCH] RED-6543: Fixed findings in license report --- .../service/LicenseReportService.java | 46 +++++++++++++------ .../integration/tests/LicenseReportTest.java | 2 +- .../shared/model/license/LicenseReport.java | 1 - .../model/license/MonthlyReportData.java | 4 ++ 4 files changed, 38 insertions(+), 15 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 f41527da2..7a089444f 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 @@ -50,16 +50,16 @@ public class LicenseReportService { adds.computeIfAbsent(YearMonth.from(file.getAdded()), entry -> new ArrayList<>()).add(file); - if (file.getDeleted() != null) { + if (file.getDeleted() != null && file.getDeleted().toInstant().isBefore(licenseReportRequest.getEndDate())) { softDeletes.computeIfAbsent(YearMonth.from(file.getDeleted()), entry -> new ArrayList<>()).add(file); } - if (file.getHardDeletedTime() != null) { + if (file.getHardDeletedTime() != null && file.getHardDeletedTime().toInstant().isBefore(licenseReportRequest.getEndDate())) { hardDeletes.computeIfAbsent(YearMonth.from(file.getHardDeletedTime()), entry -> new ArrayList<>()).add(file); } - if (dossiersById.get(file.getDossierId()).getArchivedTime() != null) { + 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); } - if (file.getOcrStartTime() != null) { + if (file.getOcrStartTime() != null && file.getOcrStartTime().toInstant().isBefore(licenseReportRequest.getEndDate())) { ocrs.computeIfAbsent(YearMonth.from(file.getOcrStartTime()), entry -> new ArrayList<>()).add(file); } } @@ -70,24 +70,35 @@ public class LicenseReportService { List monthlyData = new ArrayList<>(); + // This values are what is in system at that point. Including all added values before the period. long activeFilesUploadedBytes = 0; long trashFilesUploadedBytes = 0; long archivedFilesUploadedBytes = 0; + + // This values are not what is currently in the system at that point. They are what is added in the period. int numberOfAnalyzedPages = 0; int numberOfOcrPages = 0; int numberOfAnalyzedFiles = 0; - int numberOfAnalyses = 0; int numberOfOcrFiles = 0; + while (!currentMonth.isAfter(endMonth)) { + int currentMonthNumberOfAnalyzedPages = 0; + int currentMonthNumberOfOcrPages = 0; + + var addedFilesInMonth = adds.get(currentMonth); if (addedFilesInMonth != null) { for (var add : addedFilesInMonth) { activeFilesUploadedBytes += add.getFileSize(); - numberOfAnalyzedPages += add.getNumberOfPages(); - numberOfAnalyzedFiles++; - numberOfAnalyses += add.getNumberOfAnalyses(); + + if(add.getAdded().toInstant().isAfter(licenseReportRequest.getStartDate())) { + + numberOfAnalyzedPages += add.getNumberOfPages(); + currentMonthNumberOfAnalyzedPages += add.getNumberOfPages(); + numberOfAnalyzedFiles++; + } } } @@ -121,19 +132,28 @@ public class LicenseReportService { var ocrFilesInMonth = ocrs.get(currentMonth); if (ocrFilesInMonth != null) { for (var ocrFile : ocrFilesInMonth) { - numberOfOcrPages += ocrFile.getNumberOfPages(); // We count the entire document if ocr is performed. - numberOfOcrFiles++; + + if(ocrFile.getOcrStartTime().toInstant().isAfter(licenseReportRequest.getStartDate())) { + numberOfOcrPages += ocrFile.getNumberOfPages(); // We count the entire document if ocr is performed. + currentMonthNumberOfOcrPages += ocrFile.getNumberOfPages(); + numberOfOcrFiles++; + } } } if (currentMonth.equals(reportStartMonth) || currentMonth.isAfter(reportStartMonth)) { + + var monthEndDate = currentMonth.atEndOfMonth().atTime(23, 59).atZone(UTC_ZONE_ID).toInstant(); + monthlyData.add(MonthlyReportData.builder() + .startDate(currentMonth.atDay(1).atStartOfDay(UTC_ZONE_ID).toInstant()) + .endDate(monthEndDate.isBefore(licenseReportRequest.getEndDate()) ? monthEndDate : licenseReportRequest.getEndDate()) .activeFilesUploadedBytes(activeFilesUploadedBytes) .trashFilesUploadedBytes(trashFilesUploadedBytes) .archivedFilesUploadedBytes(archivedFilesUploadedBytes) .totalFilesUploadedBytes(activeFilesUploadedBytes + trashFilesUploadedBytes + archivedFilesUploadedBytes) - .numberOfAnalyzedPages(numberOfAnalyzedPages) - .numberOfOcrPages(numberOfOcrPages) + .numberOfAnalyzedPages(currentMonthNumberOfAnalyzedPages) + .numberOfOcrPages(currentMonthNumberOfOcrPages) .build()); } @@ -148,7 +168,6 @@ public class LicenseReportService { .numberOfAnalyzedPages(numberOfAnalyzedPages) .numberOfOcrPages(numberOfOcrPages) .numberOfAnalyzedFiles(numberOfAnalyzedFiles) - .numberOfAnalyses(numberOfAnalyses) .numberOfOcrFiles(numberOfOcrFiles) .numberOfDossiers(addDossiers.stream() .filter(dossier -> dossier.getHardDeletedTime() == null || dossier.getHardDeletedTime() @@ -161,4 +180,5 @@ public class LicenseReportService { .build(); } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java index 9c83d96f0..2b58fdafa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java @@ -77,7 +77,7 @@ public class LicenseReportTest extends AbstractPersistenceServerServiceTest { LicenseReport licenseReport = licenseReportClient.getReport(LicenseReportRequest.builder() .startDate(Instant.parse("2023-01-01T10:00:00Z")) - .endDate(Instant.parse("2023-05-01T10:00:00Z")) + .endDate(Instant.parse("2023-05-01T11:00:00Z")) .build()); assertThat(licenseReport.getTotalFilesUploadedBytes()).isEqualTo(900L); 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 f3ba0f0a3..24afa9c95 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 @@ -24,7 +24,6 @@ public class LicenseReport { private int numberOfDossiers; private int numberOfAnalyzedPages; private int numberOfOcrPages; - private int numberOfAnalyses; 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 a13e3127a..36c9153e3 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 @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.license; +import java.time.Instant; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,6 +13,8 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class MonthlyReportData { + private Instant startDate; + private Instant endDate; private long totalFilesUploadedBytes; private long activeFilesUploadedBytes; private long trashFilesUploadedBytes; -- 2.47.2