Pull request #422: RED-4145-Dossier template stats updates
Merge in RED/persistence-service from feature/RED-4145 to master * commit '1ae5676d640570e1098a499a26864a5935df5a60': RED-4145-Dossier template stats updates
This commit is contained in:
commit
a406e4b434
@ -18,6 +18,7 @@ public class DossierTemplateStats {
|
||||
|
||||
private String dossierTemplateId;
|
||||
private String name;
|
||||
private DossierTemplateStatus dossierTemplateStatus;
|
||||
|
||||
private int numberOfDeletedDossiers;
|
||||
private int numberOfActiveDossiers;
|
||||
|
||||
@ -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<DossierTemplateStats> 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<DossierTemplateStats> 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<DossierTemplateStats> 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<DossierTemplateDictionaryStats> getDossierTemplateStats(Set<String> 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));
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user