Dossier Status dossier count

This commit is contained in:
Timo Bejan 2022-02-01 15:12:08 +02:00
parent 8ce645c227
commit a3e42db426
7 changed files with 28 additions and 19 deletions

View File

@ -22,5 +22,6 @@ public class DossierStatusInfo {
private String description;
private String color;
private String dossierTemplateId;
private Long dossierCount;
}

View File

@ -27,11 +27,6 @@ public interface DossierStatusResource {
@PostMapping(value = DOSSIER_STATUS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
DossierStatusInfo createOrUpdateDossierStatus(@RequestBody CreateOrUpdateDossierStatusRequest dossierStatusRequest);
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
List<DossierStatusInfo> getAllDossierStatus();
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)

View File

@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Formula;
import javax.persistence.*;
import java.util.ArrayList;
@ -38,4 +39,5 @@ public class DossierStatusEntity {
@OneToMany(mappedBy = "dossierStatus")
private List<DossierEntity> dossiers = new ArrayList<>();
}

View File

@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -48,12 +49,14 @@ public class DossierStatusPersistenceService {
}
}
public List<DossierStatusEntity> getAllDossierStatus() {
return dossierStatusRepository.findAll();
public List<DossierStatusInfo> getAllDossierStatusForTemplate(String dossierTemplateId) {
var x = dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
return x;
}
public List<DossierStatusEntity> getAllDossierStatusForTemplate(String dossierTemplateId) {
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
public DossierStatusInfo getDossierStatusInfo(String dossierStatusId) {
return dossierStatusRepository.findProjectionById(dossierStatusId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, dossierStatusId)));
}
public DossierStatusEntity getDossierStatus(String dossierStatusId) {

View File

@ -1,13 +1,20 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
@Query("select s from DossierStatusEntity s where s.dossierTemplateId = :dossierTemplateId")
List<DossierStatusEntity> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId = :dossierTemplateId group by s")
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId")
Optional<DossierStatusInfo> findProjectionById(String dossierStatusId);
}

View File

@ -27,11 +27,6 @@ public class DossierStatusController implements DossierStatusResource {
return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class);
}
@Override
public List<DossierStatusInfo> getAllDossierStatus() {
return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class);
}
@Override
public List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
@ -41,7 +36,7 @@ public class DossierStatusController implements DossierStatusResource {
@Override
public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) {
return convert(dossierStatusPersistenceService.getDossierStatus(dossierStatusId), DossierStatusInfo.class);
return dossierStatusPersistenceService.getDossierStatusInfo(dossierStatusId);
}
@Override

View File

@ -31,7 +31,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
public void testDossierStatus() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var allDossierStatus = dossierStatusClient.getAllDossierStatus();
var allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isZero();
@ -43,7 +43,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(loadedDossierStatus).isNotNull();
allDossierStatus = dossierStatusClient.getAllDossierStatus();
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);
var testDossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "1", allDossierStatus.iterator().next());
@ -56,6 +56,12 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
cru.setDossierTemplateId(testDossier.getDossierTemplateId());
cru.setDossierStatusId(null);
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);
assertThat(allDossierStatus.iterator().next().getDossierCount()).isEqualTo(1);
var updated = dossierClient.updateDossier(cru, testDossier.getId());
assertThat(updated.getDossierStatusId()).isNull();