RED-3011 - DossierTemplate Stats
- modify query to include dossier templates without dictionaries and to include only the results with not deleted entries and not dossier specific - add junit test
This commit is contained in:
parent
d049bb5e32
commit
a22382d415
@ -38,9 +38,12 @@ public interface TypeRepository extends JpaRepository<TypeEntity, String> {
|
||||
@Query("select coalesce(sum(t.version),0) from TypeEntity t where t.dossierTemplateId = :dossierTemplateId and t.dossierId is null")
|
||||
long getVersionForDossierTemplateId(String dossierTemplateId);
|
||||
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse(t.dossierTemplateId, t.id, t.type, t.label, count(e)) " +
|
||||
"from TypeEntity t left join DictionaryEntryEntity e on e.type.id = t.id " +
|
||||
"group by t.dossierTemplateId, t.id, t.type, t.label having t.dossierTemplateId in :dossierTemplateIds")
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse(dt.id, t.id, t.type, t.label, count(e)) " +
|
||||
"from DossierTemplateEntity dt " +
|
||||
"left join TypeEntity t on t.dossierTemplateId = dt.id " +
|
||||
"left join DictionaryEntryEntity e on e.type.id = t.id " +
|
||||
"where dt.id in :dossierTemplateIds and t.dossierId is null and (e.id is null or e.deleted = false) " +
|
||||
"group by dt.id, t.id, t.type, t.label ")
|
||||
List<DictionarySummaryResponse> findDictionarySummaryList(Set<String> dossierTemplateIds);
|
||||
|
||||
}
|
||||
|
||||
@ -30,7 +30,9 @@ public class DossierTemplateStatsService {
|
||||
Collectors.mapping(this::getDossierTemplateStats, Collectors.toList())));
|
||||
List<DossierTemplateStats> dossierTemplateStatsList = dictionarySummaryMap.entrySet().stream()
|
||||
.map(e ->
|
||||
new DossierTemplateStats(e.getKey(), e.getValue().size(), e.getValue()))
|
||||
(e.getValue().size() == 1 && e.getValue().get(0).getId() == null)?
|
||||
new DossierTemplateStats(e.getKey(), 0, new ArrayList<>()):
|
||||
new DossierTemplateStats(e.getKey(), e.getValue().size(), e.getValue()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return dossierTemplateStatsList;
|
||||
|
||||
@ -107,19 +107,42 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
entryList = dictionaryClient.getEntriesForType(addedType3.getTypeId());
|
||||
assertThat(entryList.size()).isEqualTo(entries3.size());
|
||||
|
||||
var dossierTemplate3 = provideTestTemplate("dossierTemp3");
|
||||
|
||||
Set<String> dossierTemplateIds = new HashSet<>();
|
||||
dossierTemplateIds.add(dossier.getDossierTemplateId());
|
||||
dossierTemplateIds.add(dossierTemplate2.getId());
|
||||
dossierTemplateIds.add(dossierTemplate3.getId());
|
||||
|
||||
List<DossierTemplateStats> dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
||||
DossierTemplateStats dossierTemplateStats = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get();
|
||||
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
||||
DossierTemplateStats dossierTemplateStats1 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get();
|
||||
|
||||
assertThat(dossierTemplateStats.getDossierTemplateId()).isEqualTo(dossier.getDossierTemplateId());
|
||||
assertThat(dossierTemplateStats.getNumberOfDictionaries()).isEqualTo(2);
|
||||
List<DictionarySummary> dictionarySummaryList = dossierTemplateStats.getDictionarySummaryList();
|
||||
assertThat(dossierTemplateStats1.getDossierTemplateId()).isEqualTo(dossier.getDossierTemplateId());
|
||||
assertThat(dossierTemplateStats1.getNumberOfDictionaries()).isEqualTo(2);
|
||||
List<DictionarySummary> dictionarySummaryList = dossierTemplateStats1.getDictionarySummaryList();
|
||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_1)).findAny().get().getEntriesCount()).isEqualTo(entries1.size());
|
||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size());
|
||||
|
||||
// dossier template with no type
|
||||
DossierTemplateStats dossierTemplateStats3 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossierTemplate3.getId())).findAny().get();
|
||||
assertThat(dossierTemplateStats3.getDossierTemplateId()).isEqualTo(dossierTemplate3.getId());
|
||||
assertThat(dossierTemplateStats3.getNumberOfDictionaries()).isZero();
|
||||
|
||||
// delete some entries, stats should be updated
|
||||
var entries22 = new ArrayList<String>();
|
||||
entries22.add(entries2.get(2));
|
||||
|
||||
dictionaryClient.deleteEntries(addedType2.getTypeId(), entries22);
|
||||
dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
||||
|
||||
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
||||
DossierTemplateStats dossierTemplateStats2 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get();
|
||||
|
||||
dictionarySummaryList = dossierTemplateStats2.getDictionarySummaryList();
|
||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size() - entries22.size());
|
||||
|
||||
|
||||
}
|
||||
|
||||
public DossierTemplate provideTestTemplate(String dossierTemplateName) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user