diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java index 43fc66c09..58e233ad4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java @@ -35,7 +35,6 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.BaseDictionaryEntry; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; @@ -357,11 +356,7 @@ public class DossierTemplateImportService { if (CollectionUtils.isNotEmpty(request.getTypes())) { this.updateTypes(request, dossierTemplateId); } else { // no types to add, but remove existing ones - List currentTypes = dossierTemplatePersistenceService.getDossierTemplate(dossierTemplateId) - .getDossierTypes() - .stream() - .filter(t -> t.getDossierId() == null) - .collect(Collectors.toList()); + List currentTypes = dossierTemplatePersistenceService.getTypesForDossierTemplate(dossierTemplateId); this.deleteTypes(currentTypes, new HashSet<>()); } @@ -390,11 +385,7 @@ public class DossierTemplateImportService { if (CollectionUtils.isNotEmpty(request.getLegalBases())) { legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); } else { // delete existing - var existingLegalBasis = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId) - .stream() - .map(LegalBasisEntity::getName) - .collect(Collectors.toList()); - legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, existingLegalBasis); + legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId); } } else { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index d2402cc0f..6848ee5f2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -12,11 +12,13 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; 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.TypeRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; @@ -32,6 +34,8 @@ public class DossierTemplatePersistenceService { private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; private final RulesPersistenceService rulesPersistenceService; + private final TypeRepository typeRepository; + @Transactional public DossierTemplateEntity createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest createOrUpdateDossierRequest) { @@ -134,6 +138,13 @@ public class DossierTemplatePersistenceService { } + @Transactional + public List getTypesForDossierTemplate(String dossierTemplateId) { + + return typeRepository.findAllByDossierTemplateIdAndDossierId(dossierTemplateId, null); + } + + @Transactional public void deleteDossierTemplate(String dossierTemplateId, String deletingUserId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index 41db7acd2..572199ee9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -37,6 +38,16 @@ public class LegalBasisMappingPersistenceService { } + @Transactional + public void deleteLegalBasis(String dossierTemplateId) { + + var mapping = getLegalBasisMappingOrCreate(dossierTemplateId); + mapping.setLegalBasis(Collections.emptyList()); + mapping.setVersion(mapping.getVersion() + 1); + legalBasisMappingRepository.save(mapping); + } + + private LegalBasisMappingEntity getLegalBasisMappingOrCreate(String dossierTemplateId) { return legalBasisMappingRepository.findById(dossierTemplateId).orElseGet(() -> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java index cd8e77e74..bed9413ec 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java @@ -37,6 +37,9 @@ public interface TypeRepository extends JpaRepository { List findAllTypesByDossierTemplateIdOrDossierId(String dossierTemplateId, String dossierId); + List findAllByDossierTemplateIdAndDossierId(String dossierTemplateId, String dossierId); + + @Query("select coalesce(sum(t.version),0) from TypeEntity t where t.dossierId = :dossierId") long getVersionForDossierId(String dossierId); @@ -45,7 +48,13 @@ public interface TypeRepository extends JpaRepository { long getVersionForDossierTemplateId(String dossierTemplateId); - @Query("select new com.iqser.red.service.persistence.service.v1.api.shared.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.typeId = t.id " + "where t.softDeletedTime is null and 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 ") + @Query(""" + select new com.iqser.red.service.persistence.service.v1.api.shared.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.typeId = t.id + where t.softDeletedTime is null and dt.id in :dossierTemplateIds and t.dossierId is null and (e.entryId is null or e.deleted = false) + group by dt.id, t.id, t.type, t.label""") List findDictionarySummaryList(Set dossierTemplateIds);