From 1ae5676d640570e1098a499a26864a5935df5a60 Mon Sep 17 00:00:00 2001 From: devplant Date: Thu, 2 Jun 2022 15:13:36 +0300 Subject: [PATCH] RED-4145-Dossier template stats updates - add dossier template status in the stats, ignore incompletate status from the list, remove inactive status (when no dossiers active) - update junit tests --- .../dossiertemplate/DossierTemplateStats.java | 1 + .../service/DossierTemplateStatsService.java | 22 ++++++++++++++----- .../tests/DossierTemplateStatsTest.java | 16 ++++++++++++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/DossierTemplateStats.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/DossierTemplateStats.java index 03f5bd898..cff73c573 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/DossierTemplateStats.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/DossierTemplateStats.java @@ -18,6 +18,7 @@ public class DossierTemplateStats { private String dossierTemplateId; private String name; + private DossierTemplateStatus dossierTemplateStatus; private int numberOfDeletedDossiers; private int numberOfActiveDossiers; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java index 89709b873..fbbec6c26 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java @@ -2,11 +2,13 @@ package com.iqser.red.service.peristence.v1.server.service; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateDictionaryStats; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStats; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummary; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse; import lombok.RequiredArgsConstructor; @@ -23,6 +25,8 @@ public class DossierTemplateStatsService { private final DictionaryPersistenceService dictionaryPersistenceService; + private final DossierTemplatePersistenceService dossierTemplatePersistenceService; + private final DossierTemplateRepository dossierTemplateRepository; private final FileRepository fileRepository; @@ -33,19 +37,24 @@ public class DossierTemplateStatsService { public DossierTemplateStats getDossierTemplateStats(String dossierTemplateId) { var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId).orElseThrow(() -> new NotFoundException("Dossier Template with id: " + dossierTemplateId + " not found.")); - - return getDossierTemplateStats(dossierTemplateId, dossierTemplate.getName()); + dossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(dossierTemplate)); + return getDossierTemplateStats(dossierTemplateId, dossierTemplate.getName(), dossierTemplate.getDossierTemplateStatus()); } public List getDossierTemplateStats() { var allUnDeletedTemplates = dossierTemplateRepository.findAllWhereDeletedIsFalse(); + allUnDeletedTemplates.forEach(dt -> dt.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(dt))); + allUnDeletedTemplates.stream().filter(dt -> DossierTemplateStatus.INCOMPLETE.equals(dt.getDossierTemplateStatus())).collect(Collectors.toList()); + final List dossierTemplateStatsList = Collections.synchronizedList(new ArrayList<>()); - allUnDeletedTemplates.parallelStream().forEach(dt -> dossierTemplateStatsList.add(getDossierTemplateStats(dt.getId(), dt.getName()))); + allUnDeletedTemplates.parallelStream().forEach(dt -> dossierTemplateStatsList.add(getDossierTemplateStats(dt.getId(), dt.getName(), dt.getDossierTemplateStatus()))); - dossierTemplateStatsList.sort(Comparator.comparing(DossierTemplateStats::getName)); + List result = dossierTemplateStatsList.stream().filter(stat -> !(DossierTemplateStatus.INACTIVE.equals(stat.getDossierTemplateStatus()) + && stat.getNumberOfActiveDossiers() == 0 && stat.getNumberOfArchivedDossiers() == 0)).collect(Collectors.toList()); + result.sort(Comparator.comparing(DossierTemplateStats::getName)); - return dossierTemplateStatsList; + return result; } public List getDossierTemplateStats(Set dossierTemplateIds) { @@ -73,12 +82,13 @@ public class DossierTemplateStatsService { return new DictionarySummary(response.getId(), response.getType(), response.getName(), response.getEntriesCount()); } - private DossierTemplateStats getDossierTemplateStats(String dossierTemplateId, String dossierTemplateName) { + private DossierTemplateStats getDossierTemplateStats(String dossierTemplateId, String dossierTemplateName, DossierTemplateStatus dossierTemplateStatus) { DossierTemplateStats dts = new DossierTemplateStats(); dts.setDossierTemplateId(dossierTemplateId); dts.setName(dossierTemplateName); + dts.setDossierTemplateStatus(dossierTemplateStatus); dts.setNumberOfArchivedDossiers(dossierRepository.countArchived(dossierTemplateId)); dts.setNumberOfActiveDossiers(dossierRepository.countActive(dossierTemplateId)); dts.setNumberOfDeletedDossiers(dossierRepository.countSofDeleted(dossierTemplateId)); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 58d11215d..958d11585 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -283,6 +283,22 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe } } + + var template = dossierTemplateTesterAndProvider.provideTestTemplate("test template inactive: "); + + var status = dossierStatusClient.createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest.builder() + .dossierTemplateId(template.getId()).name("test").rank(100).build()); + var dossier = dossierTesterAndProvider.provideTestDossierQuick(template, "test dossier: ", status); + dossierClient.delete(dossier.getId()); + + CreateOrUpdateDossierTemplateRequest cru = new CreateOrUpdateDossierTemplateRequest(); + cru.setDossierTemplateId(template.getId()); + cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL)); + cru.setName(template.getName()); + cru.setValidTo(OffsetDateTime.now().minusHours(1).truncatedTo(ChronoUnit.MILLIS)); + + DossierTemplate result = dossierTemplateClient.createOrUpdateDossierTemplate(cru); + long t1 = System.currentTimeMillis(); var stats = dossierTemplateStatsClient.getDossierTemplateStats(); assertThat(stats.size()).isEqualTo(2);