From 2f5d6eff16e064fc89478f154f8928177b20c5de Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:44:16 +0100 Subject: [PATCH 1/4] =?UTF-8?q?FEAT=20ITEM-342-back-modifier-dto-et-requet?= =?UTF-8?q?e=20:=20=20=20=20=20=20-=20cr=C3=A9ation=20de=20DemandeDto.java?= =?UTF-8?q?=20=20=20=20=20=20-=20modification=20des=20requ=C3=AAtes=20JPA?= =?UTF-8?q?=20=20=20=20=20=20-=20adaptation=20du=20code=20et=20des=20TU?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/abes/item/core/dto/DemandeDto.java | 51 ++++++++++++++++ .../repository/item/IDemandeExempDao.java | 21 +++---- .../repository/item/IDemandeModifDao.java | 21 +++---- .../core/repository/item/IDemandeSuppDao.java | 30 +++++++--- .../item/core/service/IDemandeService.java | 11 ++-- .../service/impl/DemandeExempService.java | 46 +++++++-------- .../service/impl/DemandeModifService.java | 46 +++++++-------- .../service/impl/DemandeRecouvService.java | 59 +++++++++++-------- .../core/service/impl/DemandeService.java | 35 +++++++++++ .../core/service/impl/DemandeSuppService.java | 46 +++++++-------- .../fr/abes/item/dto/DemandeExempWebDto.java | 29 +++++++++ .../fr/abes/item/dto/DemandeModifWebDto.java | 33 +++++++++++ .../fr/abes/item/dto/DemandeSuppWebDto.java | 28 +++++++++ .../java/fr/abes/item/dto/DemandeWebDto.java | 1 + .../java/fr/abes/item/dto/DtoBuilder.java | 17 ++++++ .../fr/abes/item/web/DemandeRestService.java | 6 +- .../item/web/impl/DemandeRestServiceTest.java | 47 ++++++++------- 17 files changed, 369 insertions(+), 158 deletions(-) create mode 100644 core/src/main/java/fr/abes/item/core/dto/DemandeDto.java diff --git a/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java new file mode 100644 index 00000000..3ad97369 --- /dev/null +++ b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java @@ -0,0 +1,51 @@ +package fr.abes.item.core.dto; + +import fr.abes.item.core.entities.baseXml.LibProfile; +import fr.abes.item.core.entities.item.Demande; +import jakarta.persistence.Column; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; +import java.util.Objects; + +@Getter +@Setter +public class DemandeDto { + private Demande demande; + + @Column(name = "NB_LIGNEFICHIER") + private Integer nbLignes; + + public DemandeDto(Demande demande, Integer nbLignes) { + this.demande = demande; + this.nbLignes = nbLignes; + } + + public DemandeDto(Demande demande) { + this.demande = demande; + } + + public String getRcr() { + return this.demande.getRcr(); + } + + public void feedIlnAndShortname(List libProfileList){ + //Si l'iln de la demande est nul, on l'alimente avec la liste d'entités Libprofile récupérée précédemment + if(this.demande.getIln() == null) { + for (LibProfile libProfile : libProfileList) { + if (Objects.equals(libProfile.getRcr(), this.demande.getRcr())) { + this.demande.setIln(libProfile.getIln()); + } + } + } + //Si le shortname de la demande est nul, on l'alimente avec la liste d'entités Libprofile récupérée précédemment + if (this.demande.getShortname() == null) { + for (LibProfile libProfile : libProfileList) { + if (libProfile.getRcr().equals(this.demande.getRcr())) { + this.demande.setShortname(libProfile.getShortName()); + } + } + } + } +} diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java index b0656627..a549a762 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java @@ -1,6 +1,7 @@ package fr.abes.item.core.repository.item; import fr.abes.item.core.configuration.ItemConfiguration; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeExemp; import fr.abes.item.core.entities.item.TypeExemp; import org.springframework.data.jpa.repository.JpaRepository; @@ -26,20 +27,20 @@ public interface IDemandeExempDao extends JpaRepository { @Query("select e from TypeExemp e where e.numTypeExemp in (select d.typeExemp.numTypeExemp from DemandeExemp d where d.numDemande = :numDemande)") TypeExemp getTypeExemp(@Param("numDemande") Integer numDemande); - @Query("select d from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") - List getActiveDemandesExempForUserExceptedPreparedStatus(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + List getActiveDemandesExempForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query("select d from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") - List getAllActiveDemandesExempForAdmin(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + List getAllActiveDemandesExempForAdmin(@Param("iln") String iln); - @Query("select d from DemandeExemp d where d.etatDemande.numEtat not in (9, 10)") - List getAllActiveDemandesExempForAdminExtended(); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + List getAllActiveDemandesExempForAdminExtended(); - @Query("select d from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat = 9") - List getAllArchivedDemandesExemp(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesExemp(@Param("iln") String iln); - @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 9") - List getAllArchivedDemandesExempExtended(); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesExempExtended(); //Même si l'ide signale la requête elle est correcte, demandes en statut terminé avec une ancienneté de plus de 90 jours sur la dernière date de modification récupérées @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java index 1c1f6a5b..981cee94 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java @@ -1,6 +1,7 @@ package fr.abes.item.core.repository.item; import fr.abes.item.core.configuration.ItemConfiguration; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeModif; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -21,20 +22,20 @@ public interface IDemandeModifDao extends JpaRepository { * @return les demandes appartenant à l'iln de l'utilisateur (un iln comprenant plusieurs rcr) * et qui sont ni dans l'état préparé, ni dans l'état archivé */ - @Query("select d from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") - List getActiveDemandesModifForUserExceptedPreparedStatus(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + List getActiveDemandesModifForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query("select d from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") - List getAllActiveDemandesModifForAdmin(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + List getAllActiveDemandesModifForAdmin(@Param("iln") String iln); - @Query("select d from DemandeModif d where d.etatDemande.numEtat not in (9, 2, 10)") - List getAllActiveDemandesModifForAdminExtended(); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + List getAllActiveDemandesModifForAdminExtended(); - @Query("select d from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat = 9") - List getAllArchivedDemandesModif(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesModif(@Param("iln") String iln); - @Query("select d from DemandeModif d where d.etatDemande.numEtat = 9") - List getAllArchivedDemandesModifExtended(); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesModifExtended(); @Query("select d from DemandeModif d where d.etatDemande.numEtat = 5 order by d.dateModification asc") List getNextDemandeToProceed(); diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java index b954a611..6901ea28 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java @@ -1,6 +1,7 @@ package fr.abes.item.core.repository.item; import fr.abes.item.core.configuration.ItemConfiguration; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeSupp; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -8,21 +9,23 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository @ItemConfiguration public interface IDemandeSuppDao extends JpaRepository { - @Query("select d from DemandeSupp d where d.etatDemande.numEtat not in (9, 10)") - List getAllActiveDemandesSuppForAdminExtended(); - @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") - List getAllActiveDemandesSuppForAdmin(@Param("iln") String iln); - @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat = 9") - List getAllArchivedDemandesSupp(@Param("iln") String iln); + + @Query(value ="select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + List getAllActiveDemandesSuppForAdminExtended(); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + List getAllActiveDemandesSuppForAdmin(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesSupp(@Param("iln") String iln); @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") - List getActiveDemandesSuppForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 9") - List getAllArchivedDemandesSuppExtended(); + List getActiveDemandesSuppForUserExceptedPreparedStatus(@Param("iln") String iln); + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.etatDemande.numEtat = 9", nativeQuery = true) + List getAllArchivedDemandesSuppExtended(); List findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Integer id); @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") @@ -34,4 +37,13 @@ public interface IDemandeSuppDao extends JpaRepository { @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 10 and (day(current_date) - day(d.dateModification)) > 210 order by d.dateModification asc") List getNextDemandeToDelete(); + + /** + * @param numDemande le numéro de la demande + * @return Le nombre de ligne du fichier qui ont été traitées sur cette demande et dont le retour du sudoc à été + * positif pour le traitement + */ + @Query("select count(lf) from LigneFichierSupp lf where lf.demandeSupp.numDemande = :numDemande and lf.traitee=1 and lf.retourSudoc = 'exemplaire supprimé'") + int getNbLigneFichierSuccessByDemande(@Param("numDemande") Integer numDemande); + } diff --git a/core/src/main/java/fr/abes/item/core/service/IDemandeService.java b/core/src/main/java/fr/abes/item/core/service/IDemandeService.java index d3a9c175..6f888d1a 100644 --- a/core/src/main/java/fr/abes/item/core/service/IDemandeService.java +++ b/core/src/main/java/fr/abes/item/core/service/IDemandeService.java @@ -2,6 +2,7 @@ import fr.abes.cbs.exception.CBSException; import fr.abes.cbs.exception.ZoneException; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.Demande; import fr.abes.item.core.entities.item.LigneFichier; import fr.abes.item.core.exception.DemandeCheckingException; @@ -35,7 +36,7 @@ public interface IDemandeService { Demande closeDemande(Demande demande) throws DemandeCheckingException; - List getActiveDemandesForUser(String iln); + List getActiveDemandesForUser(String iln); Demande getIdNextDemandeToProceed(int minHour, int maxHour); @@ -45,13 +46,13 @@ public interface IDemandeService { Demande changeStateCanceled(Demande demande, int etatDemande); - List getAllArchivedDemandes(String iln); + List getAllArchivedDemandes(String iln); - List getAllArchivedDemandesAllIln(); + List getAllArchivedDemandesAllIln(); - List getAllActiveDemandesForAdminExtended(); + List getAllActiveDemandesForAdminExtended(); - List getAllActiveDemandesForAdmin(String iln); + List getAllActiveDemandesForAdmin(String iln); Demande returnState(Integer etape, Demande demande) throws DemandeCheckingException; diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeExempService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeExempService.java index 9c0be969..7461d4ae 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeExempService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeExempService.java @@ -13,6 +13,7 @@ import fr.abes.item.core.configuration.factory.Strategy; import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.*; import fr.abes.item.core.exception.DemandeCheckingException; import fr.abes.item.core.exception.FileCheckingException; @@ -87,21 +88,19 @@ public List findAll() { } @Override - public List getAllActiveDemandesForAdmin(String iln) { - List demandeExemps = demandeExempDao.getAllActiveDemandesExempForAdmin(iln); - List demandeList = new ArrayList<>(demandeExemps); + public List getAllActiveDemandesForAdmin(String iln) { + List ListeDemandeDto = demandeExempDao.getAllActiveDemandesExempForAdmin(iln); //TODO 1 chopper les rcr en une iste string, 2 dao xml pour recuperer la liste des libelle avec un tableau mappé, 3 alimenter les entites LIB iteration - setIlnShortNameOnList(demandeList); - return demandeList; + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } @Override - public List getAllActiveDemandesForAdminExtended() { - List demandeExemp = demandeExempDao.getAllActiveDemandesExempForAdminExtended(); - List demandeList = new ArrayList<>(demandeExemp); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdminExtended() { + List ListeDemandeDto = demandeExempDao.getAllActiveDemandesExempForAdminExtended(); + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } public String getLibelleTypeExempDemande(Integer idDemande) { @@ -140,11 +139,10 @@ public void deleteById(Integer id) { * @return liste des demandeModifs de l'utilisateur (hors demandeModifs archivées) */ @Override - public List getActiveDemandesForUser(String iln) { - List demandeExemps = demandeExempDao.getActiveDemandesExempForUserExceptedPreparedStatus(iln); - List listeDemande = new ArrayList<>(demandeExemps); - setIlnShortNameOnList(listeDemande); - return listeDemande; + public List getActiveDemandesForUser(String iln) { + List listeDemandeDto = demandeExempDao.getActiveDemandesExempForUserExceptedPreparedStatus(iln); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } public boolean hasDonneeLocaleExistante() { @@ -670,19 +668,17 @@ public String getInfoHeaderFichierResultat(Demande demande, LocalDateTime dateDe } @Override - public List getAllArchivedDemandes(String iln) { - List demandeExemp = demandeExempDao.getAllArchivedDemandesExemp(iln); - List demandeList = new ArrayList<>(demandeExemp); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllArchivedDemandes(String iln) { + List listDemandeDto = demandeExempDao.getAllArchivedDemandesExemp(iln); + setIlnShortNameOnDemandeDtoList(listDemandeDto); + return listDemandeDto; } @Override - public List getAllArchivedDemandesAllIln() { - List demandeExemp = demandeExempDao.getAllArchivedDemandesExempExtended(); - List demandeList = new ArrayList<>(demandeExemp); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllArchivedDemandesAllIln() { + List listeDemandeDto = demandeExempDao.getAllArchivedDemandesExempExtended(); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeModifService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeModifService.java index 30c69ad5..5c3f8336 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeModifService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeModifService.java @@ -8,6 +8,7 @@ import fr.abes.item.core.configuration.factory.Strategy; import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.*; import fr.abes.item.core.exception.DemandeCheckingException; import fr.abes.item.core.exception.FileCheckingException; @@ -60,11 +61,10 @@ public DemandeModifService(ILibProfileDao libProfileDao, IDemandeModifDao demand } @Override - public List getAllActiveDemandesForAdminExtended() { - List demandeModif = demandeModifDao.getAllActiveDemandesModifForAdminExtended(); - List demandeList = new ArrayList<>(demandeModif); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdminExtended() { + List ListeDemandeDto = demandeModifDao.getAllActiveDemandesModifForAdminExtended(); + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } @@ -75,27 +75,24 @@ public List getAllActiveDemandesForAdminExtended() { * @return liste des demandeModifs de l'utilisateur (hors demandeModifs archivées) */ @Override - public List getActiveDemandesForUser(String iln) { - List demandeModifs = this.demandeModifDao.getActiveDemandesModifForUserExceptedPreparedStatus(iln); - List listeDemande = new ArrayList<>(demandeModifs); - setIlnShortNameOnList(listeDemande); - return listeDemande; + public List getActiveDemandesForUser(String iln) { + List ListeDemandeDto = this.demandeModifDao.getActiveDemandesModifForUserExceptedPreparedStatus(iln); + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } @Override - public List getAllArchivedDemandes(String iln) { - List demandeModifs = this.demandeModifDao.getAllArchivedDemandesModif(iln); - List listeDemandes = new ArrayList<>(demandeModifs); - setIlnShortNameOnList(listeDemandes); - return listeDemandes; + public List getAllArchivedDemandes(String iln) { + List ListeDemandeDto = this.demandeModifDao.getAllArchivedDemandesModif(iln); + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } @Override - public List getAllArchivedDemandesAllIln() { - List demandeModifs = this.demandeModifDao.getAllArchivedDemandesModifExtended(); - List listeDemandes = new ArrayList<>(demandeModifs); - setIlnShortNameOnList(listeDemandes); - return listeDemandes; + public List getAllArchivedDemandesAllIln() { + List ListeDemandeDto = this.demandeModifDao.getAllArchivedDemandesModifExtended(); + setIlnShortNameOnDemandeDtoList(ListeDemandeDto); + return ListeDemandeDto; } /** @@ -326,11 +323,10 @@ public Exemplaire getNoticeTraitee(Demande demande, String exemplaire, LigneFich * @return la liste de toutes les demandeModifs */ @Override - public List getAllActiveDemandesForAdmin(String iln) { - List demandeModifs = demandeModifDao.getAllActiveDemandesModifForAdmin(iln); - List demandeList = new ArrayList<>(demandeModifs); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdmin(String iln) { + List listeDemandeDto = demandeModifDao.getAllActiveDemandesModifForAdmin(iln); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } /** diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeRecouvService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeRecouvService.java index 6214a375..6a17f62c 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeRecouvService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeRecouvService.java @@ -6,6 +6,7 @@ import fr.abes.item.core.configuration.factory.Strategy; import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.Demande; import fr.abes.item.core.entities.item.DemandeRecouv; import fr.abes.item.core.entities.item.EtatDemande; @@ -61,11 +62,11 @@ public List findAll() { } @Override - public List getAllActiveDemandesForAdmin(String iln) { - List demandeRecouvs = demandeRecouvDao.getAllActiveDemandesRecouvForAdmin(iln); - List demandeList = new ArrayList<>(demandeRecouvs); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdmin(String iln) { + List listeDemandeRecouv = demandeRecouvDao.getAllActiveDemandesRecouvForAdmin(iln); + List listeDemandeDto = getListDemandeDtoFromListDemandeRecouv(listeDemandeRecouv); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } @Override @@ -109,19 +110,19 @@ public DemandeRecouv creerDemande(String rcr, Integer userNum) { * @return liste des demandeModifs de l'utilisateur (hors demandeModifs archivées) */ @Override - public List getActiveDemandesForUser(String iln) { - List demandeRecouvs = this.demandeRecouvDao.getActiveDemandesRecouvForUserExceptedPreparedStatus(iln); - List listeDemande = new ArrayList<>(demandeRecouvs); - setIlnShortNameOnList(listeDemande); - return listeDemande; + public List getActiveDemandesForUser(String iln) { + List listeDemandeRecouv = this.demandeRecouvDao.getActiveDemandesRecouvForUserExceptedPreparedStatus(iln); + List listeDemandeDto = getListDemandeDtoFromListDemandeRecouv(listeDemandeRecouv); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } @Override - public List getAllActiveDemandesForAdminExtended() { - List demandeRecouv = demandeRecouvDao.getAllActiveDemandesRecouvForAdminExtended(); - List demandeList = new ArrayList<>(demandeRecouv); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdminExtended() { + List listeDemandeRecouv = demandeRecouvDao.getAllActiveDemandesRecouvForAdminExtended(); + List listeDemandeDto = getListDemandeDtoFromListDemandeRecouv(listeDemandeRecouv); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } @Override @@ -209,19 +210,19 @@ public Demande changeStateCanceled(Demande demande, int etatDemande) { } @Override - public List getAllArchivedDemandes(String iln) { - List demandeRecouvs = this.demandeRecouvDao.getAllArchivedDemandesRecouv(iln); - List demandeList = new ArrayList<>(demandeRecouvs); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllArchivedDemandes(String iln) { + List listeDemandeRecouv = this.demandeRecouvDao.getAllArchivedDemandesRecouv(iln); + List listeDemandeDto = getListDemandeDtoFromListDemandeRecouv(listeDemandeRecouv); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } @Override - public List getAllArchivedDemandesAllIln() { - List demandeRecouvs = this.demandeRecouvDao.getAllArchivedDemandesRecouvExtended(); - List demandeList = new ArrayList<>(demandeRecouvs); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllArchivedDemandesAllIln() { + List listeDemandeRecouv = this.demandeRecouvDao.getAllArchivedDemandesRecouvExtended(); + List listeDemandeDto = getListDemandeDtoFromListDemandeRecouv(listeDemandeRecouv); + setIlnShortNameOnDemandeDtoList(listeDemandeDto); + return listeDemandeDto; } @Override @@ -281,6 +282,14 @@ private int getPreviousState(int etatDemande) { }; } + private List getListDemandeDtoFromListDemandeRecouv(List listeDemandeRecouv) { + List listeDemandeDto = new ArrayList<>(); + for (DemandeRecouv demandeRecouv: listeDemandeRecouv) { + listeDemandeDto.add(new DemandeDto(demandeRecouv)); + } + return listeDemandeDto; + } + public int launchQueryToSudoc(String codeIndex, String valeurs) throws IOException, QueryToSudocException { String[] tabvaleurs = valeurs.split(";"); String query = getQueryToSudoc(codeIndex, null, tabvaleurs); diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeService.java index 17160079..df4d08a6 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeService.java @@ -1,5 +1,6 @@ package fr.abes.item.core.service.impl; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.baseXml.LibProfile; import fr.abes.item.core.entities.item.Demande; import fr.abes.item.core.repository.baseXml.ILibProfileDao; @@ -27,6 +28,10 @@ public void setIlnShortNameOnList(List demandeList) { setIlnShortNameOnDemandes(demandeList); } + public void setIlnShortNameOnDemandeDtoList(List demandeDtoList) { + setIlnShortNameOnDemandesDto(demandeDtoList); + } + /** * Effectue une recherche pour retournée une entité LibProfile qui correspond à un établissement à partir * du rcr associé au numéro de la demande @@ -74,4 +79,34 @@ public void setIlnShortNameOnDemandes(List demandeList) { } } + public void setIlnShortNameOnDemandesDto(List demandeDtoList) { + List demandesIdListe = new ArrayList<>(); + + //Alimentation d'une liste de rcr + for (DemandeDto demandeDto : demandeDtoList) { + demandesIdListe.add(demandeDto.getRcr()); + } + + //Dédoublonnage de la liste de rcr + Set set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + Iterator i = demandesIdListe.iterator(); + while (i.hasNext()) { + String s = i.next(); + if (set.contains(s)) { + i.remove(); + } + else { + set.add(s); + } + } + + //Récupération d'une liste d'entités LibProfile avec une liste rcr passée en paramètre + List listLibProfile = libProfileDao.getShortnameAndIlnFromRcr(demandesIdListe); + + //Alimentation des attributs shortname et iln de chaque entité demande en cas de manquant / vide + for (DemandeDto demandeDto : demandeDtoList) { + demandeDto.feedIlnAndShortname(listLibProfile); + } + } + } diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index 1d484a79..8601980d 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -10,6 +10,7 @@ import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; import fr.abes.item.core.constant.TYPE_SUPPRESSION; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.*; import fr.abes.item.core.exception.DemandeCheckingException; import fr.abes.item.core.exception.FileCheckingException; @@ -238,11 +239,10 @@ public Demande closeDemande(Demande demande) throws DemandeCheckingException { * @return liste des demandesSupp de l'utilisateur (hors demandesSupp archivées) */ @Override - public List getActiveDemandesForUser(String iln) { - List demandesSupp = this.demandeSuppDao.getActiveDemandesSuppForUserExceptedPreparedStatus(iln); - List listeDemande = new ArrayList<>(demandesSupp); - setIlnShortNameOnList(listeDemande); - return listeDemande; + public List getActiveDemandesForUser(String iln) { + List listeDemandesDto = this.demandeSuppDao.getActiveDemandesSuppForUserExceptedPreparedStatus(iln); + setIlnShortNameOnDemandeDtoList(listeDemandesDto); + return listeDemandesDto; } @Override @@ -295,27 +295,24 @@ public Demande changeStateCanceled(Demande demande, int etatDemande) { } @Override - public List getAllArchivedDemandes(String iln) { - List demandesSupp = this.demandeSuppDao.getAllArchivedDemandesSupp(iln); - List listeDemandes = new ArrayList<>(demandesSupp); - setIlnShortNameOnList(listeDemandes); - return listeDemandes; + public List getAllArchivedDemandes(String iln) { + List listeDemandesDto = this.demandeSuppDao.getAllArchivedDemandesSupp(iln); + setIlnShortNameOnDemandeDtoList(listeDemandesDto); + return listeDemandesDto; } @Override - public List getAllArchivedDemandesAllIln() { - List demandesSupp = this.demandeSuppDao.getAllArchivedDemandesSuppExtended(); - List listeDemandes = new ArrayList<>(demandesSupp); - setIlnShortNameOnList(listeDemandes); - return listeDemandes; + public List getAllArchivedDemandesAllIln() { + List listeDemandesDto = this.demandeSuppDao.getAllArchivedDemandesSuppExtended(); + setIlnShortNameOnDemandeDtoList(listeDemandesDto); + return listeDemandesDto; } @Override - public List getAllActiveDemandesForAdminExtended() { - List demandeSupps = demandeSuppDao.getAllActiveDemandesSuppForAdminExtended(); - List demandesList = new ArrayList<>(demandeSupps); - setIlnShortNameOnList(demandesList); - return demandesList; + public List getAllActiveDemandesForAdminExtended() { + List listeDemandesDto = demandeSuppDao.getAllActiveDemandesSuppForAdminExtended(); + setIlnShortNameOnDemandeDtoList(listeDemandesDto); + return listeDemandesDto; } /** @@ -327,11 +324,10 @@ public List getAllActiveDemandesForAdminExtended() { * @return la liste de toutes les demandesSupp */ @Override - public List getAllActiveDemandesForAdmin(String iln) { - List demandesSupp = demandeSuppDao.getAllActiveDemandesSuppForAdmin(iln); - List demandeList = new ArrayList<>(demandesSupp); - setIlnShortNameOnList(demandeList); - return demandeList; + public List getAllActiveDemandesForAdmin(String iln) { + List listeDemandesDto = demandeSuppDao.getAllActiveDemandesSuppForAdmin(iln); + setIlnShortNameOnDemandeDtoList(listeDemandesDto); + return listeDemandesDto; } @Override diff --git a/web/src/main/java/fr/abes/item/dto/DemandeExempWebDto.java b/web/src/main/java/fr/abes/item/dto/DemandeExempWebDto.java index b6ae7612..b6bd33e2 100644 --- a/web/src/main/java/fr/abes/item/dto/DemandeExempWebDto.java +++ b/web/src/main/java/fr/abes/item/dto/DemandeExempWebDto.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeExemp; import lombok.AllArgsConstructor; import lombok.Getter; @@ -21,6 +22,8 @@ public class DemandeExempWebDto extends DemandeWebDto { private String typeExemp; @JsonProperty("indexRecherche") private String indexRecherche; + @JsonProperty("nbExemplaires") + protected Integer nbExemplaires; public DemandeExempWebDto(Integer id, String rcr, String shortName, String iln, String etatDemande, String commentaire, Integer pourcentageProgressionTraitement, String dateCreation, String dateModification, String typeExemp, String indexRecherche) { super(id, rcr, shortName, iln, etatDemande, commentaire, pourcentageProgressionTraitement, dateCreation, dateModification); @@ -48,4 +51,30 @@ public DemandeExempWebDto(DemandeExemp demande) { if (demande.getIndexRecherche() != null) this.indexRecherche = demande.getIndexRecherche().getLibelle(); } + + /** + * Constructeurs qui gèrent l'ajout du nombre de lignes dans la demande + * @param demandeDto un objet DemandeDto + */ + public DemandeExempWebDto(DemandeDto demandeDto) { + DemandeExemp demande = (DemandeExemp) demandeDto.getDemande(); + DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm"); + String dateCreation = format.format(demande.getDateCreation()); + String dateModification = format.format(demande.getDateModification()); + this.id = demande.getId(); + this.rcr = demande.getRcr(); + this.shortName = demande.getShortname(); + this.iln = demande.getIln(); + if (demande.getEtatDemande() != null) + this.etatDemande = demande.getEtatDemande().getLibelle(); + this.commentaire = demande.getCommentaire(); + this.pourcentageProgressionTraitement = demande.getPourcentageProgressionTraitement(); + this.dateCreation = dateCreation; + this.dateModification = dateModification; + if (demande.getTypeExemp() != null) + this.typeExemp = demande.getTypeExemp().getLibelle(); + if (demande.getIndexRecherche() != null) + this.indexRecherche = demande.getIndexRecherche().getLibelle(); + this.nbExemplaires = demandeDto.getNbLignes(); + } } diff --git a/web/src/main/java/fr/abes/item/dto/DemandeModifWebDto.java b/web/src/main/java/fr/abes/item/dto/DemandeModifWebDto.java index 8cc15eff..32488a0c 100644 --- a/web/src/main/java/fr/abes/item/dto/DemandeModifWebDto.java +++ b/web/src/main/java/fr/abes/item/dto/DemandeModifWebDto.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeModif; import lombok.Getter; import lombok.NoArgsConstructor; @@ -19,6 +20,8 @@ public class DemandeModifWebDto extends DemandeWebDto { private String zoneEtSousZone; @JsonProperty("traitement") private String traitement; + @JsonProperty("nbExemplaires") + protected Integer nbExemplaires; public DemandeModifWebDto(Integer id, String rcr, String shortName, String iln, String etatDemande, String commentaire, Integer pourcentageProgressionTraitement, String dateCreation, String dateModification, String zoneEtSousZone, String traitement) { super(id, rcr, shortName, iln, etatDemande, commentaire, pourcentageProgressionTraitement, dateCreation, dateModification); @@ -49,4 +52,34 @@ public DemandeModifWebDto(DemandeModif demande) { if (demande.getTraitement() != null) this.traitement = demande.getTraitement().getLibelle(); } + + /** + * Constructeurs qui gèrent l'ajout du nombre de lignes dans la demande + * @param demandeDto un objet DemandeDto + */ + public DemandeModifWebDto(DemandeDto demandeDto) { + DemandeModif demande = (DemandeModif) demandeDto.getDemande(); + DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm"); + String dateCreation = format.format(demande.getDateCreation()); + String dateModification = format.format(demande.getDateModification()); + this.id = demande.getId(); + this.rcr = demande.getRcr(); + this.shortName = demande.getShortname(); + this.iln = demande.getIln(); + if (demande.getEtatDemande() != null) + this.etatDemande = demande.getEtatDemande().getLibelle(); + this.commentaire = demande.getCommentaire(); + this.pourcentageProgressionTraitement = demande.getPourcentageProgressionTraitement(); + this.dateCreation = dateCreation; + this.dateModification = dateModification; + if (demande.getZone() != null) { + this.zoneEtSousZone = demande.getZone(); + if (demande.getSousZone() != null) { + this.zoneEtSousZone += " " + demande.getSousZone(); + } + } + if (demande.getTraitement() != null) + this.traitement = demande.getTraitement().getLibelle(); + this.nbExemplaires = demandeDto.getNbLignes(); + } } diff --git a/web/src/main/java/fr/abes/item/dto/DemandeSuppWebDto.java b/web/src/main/java/fr/abes/item/dto/DemandeSuppWebDto.java index df28e116..bed23048 100644 --- a/web/src/main/java/fr/abes/item/dto/DemandeSuppWebDto.java +++ b/web/src/main/java/fr/abes/item/dto/DemandeSuppWebDto.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; import fr.abes.item.core.constant.TYPE_SUPPRESSION; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeSupp; import lombok.Getter; import lombok.NoArgsConstructor; @@ -18,6 +19,8 @@ public class DemandeSuppWebDto extends DemandeWebDto { @JsonProperty("typeSuppression") private String typeSuppression; + @JsonProperty("nbExemplaires") + protected Integer nbExemplaires; public DemandeSuppWebDto(Integer id, String rcr, String shortName, String iln, String etatDemande, String commentaire, Integer pourcentageProgressionTraitement, String dateCreation, String dateModification, String typeSuppression) { super(id, rcr, shortName, iln, etatDemande, commentaire, pourcentageProgressionTraitement, dateCreation, dateModification); this.typeSuppression = typeSuppression; @@ -41,4 +44,29 @@ public DemandeSuppWebDto(DemandeSupp demande) { if (demande.getTypeSuppression() != null) this.typeSuppression = demande.getTypeSuppression().toString(); } + + /** + * Constructeurs qui gèrent l'ajout du nombre de lignes dans la demande + * @param demandeDto un objet DemandeDto + */ + public DemandeSuppWebDto(DemandeDto demandeDto) { + DemandeSupp demande = (DemandeSupp) demandeDto.getDemande(); + DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm"); + String dateCreation = format.format(demande.getDateCreation()); + String dateModification = format.format(demande.getDateModification()); + this.id = demande.getId(); + this.rcr = demande.getRcr(); + this.shortName = demande.getShortname(); + this.iln = demande.getIln(); + if (demande.getEtatDemande() != null) + this.etatDemande = demande.getEtatDemande().getLibelle(); + this.commentaire = demande.getCommentaire(); + this.pourcentageProgressionTraitement = demande.getPourcentageProgressionTraitement(); + this.dateCreation = dateCreation; + this.dateModification = dateModification; + + if (demande.getTypeSuppression() != null) + this.typeSuppression = demande.getTypeSuppression().toString(); + this.nbExemplaires = demandeDto.getNbLignes(); + } } diff --git a/web/src/main/java/fr/abes/item/dto/DemandeWebDto.java b/web/src/main/java/fr/abes/item/dto/DemandeWebDto.java index f93abc03..e556fd4c 100644 --- a/web/src/main/java/fr/abes/item/dto/DemandeWebDto.java +++ b/web/src/main/java/fr/abes/item/dto/DemandeWebDto.java @@ -15,6 +15,7 @@ @JsonSubTypes.Type(value = DemandeModifWebDto.class, name = "MODIF"), @JsonSubTypes.Type(value = DemandeExempWebDto.class, name = "EXEMP"), @JsonSubTypes.Type(value = DemandeRecouvWebDto.class, name = "RECOUV"), + @JsonSubTypes.Type(value = DemandeSuppWebDto.class, name = "SUPP"), }) @AllArgsConstructor @NoArgsConstructor diff --git a/web/src/main/java/fr/abes/item/dto/DtoBuilder.java b/web/src/main/java/fr/abes/item/dto/DtoBuilder.java index 3304d85e..74606886 100644 --- a/web/src/main/java/fr/abes/item/dto/DtoBuilder.java +++ b/web/src/main/java/fr/abes/item/dto/DtoBuilder.java @@ -1,6 +1,7 @@ package fr.abes.item.dto; import fr.abes.item.core.constant.TYPE_DEMANDE; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.*; import jakarta.annotation.PostConstruct; import org.springframework.stereotype.Service; @@ -32,6 +33,22 @@ public DemandeWebDto buildDemandeDto(Demande demande, TYPE_DEMANDE type) { }; } + /** + * Méthode qui permet d'appeler les constructeurs qui gèrent l'ajout du nombre de lignes par demande + * @param demandeDto un objet DemandeDto + * @param type un ENUM TYPE_DEMANDE + * @return DemandeWebDto + */ + public DemandeWebDto buildDemandeDtoWithNbLines(DemandeDto demandeDto, TYPE_DEMANDE type) { + return switch (type) { + case EXEMP -> new DemandeExempWebDto(demandeDto); + case MODIF -> new DemandeModifWebDto(demandeDto); + case RECOUV -> new DemandeRecouvWebDto((DemandeRecouv) demandeDto.getDemande()); + case SUPP -> new DemandeSuppWebDto(demandeDto); + }; + } + + public UtilisateurWebDto buildUtilisateurDto(Utilisateur utilisateur) { return new UtilisateurWebDto(utilisateur.getId(), utilisateur.getEmail()); } diff --git a/web/src/main/java/fr/abes/item/web/DemandeRestService.java b/web/src/main/java/fr/abes/item/web/DemandeRestService.java index f91215ee..9b756eb2 100644 --- a/web/src/main/java/fr/abes/item/web/DemandeRestService.java +++ b/web/src/main/java/fr/abes/item/web/DemandeRestService.java @@ -73,14 +73,14 @@ public List getAllActiveDemandes(@PathVariable("type") TYPE_DEMAN IDemandeService service = strategy.getStrategy(IDemandeService.class, type); if (role.equals("ADMIN")) { if (archive) { - return (!extension) ? service.getAllArchivedDemandes(iln).stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()) : service.getAllArchivedDemandesAllIln().stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()); + return (!extension) ? service.getAllArchivedDemandes(iln).stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()) : service.getAllArchivedDemandesAllIln().stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()); } else { - return (!extension) ? service.getAllActiveDemandesForAdmin(iln).stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()) : service.getAllActiveDemandesForAdminExtended().stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()); + return (!extension) ? service.getAllActiveDemandesForAdmin(iln).stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()) : service.getAllActiveDemandesForAdminExtended().stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()); } } //role USER - return (archive) ? service.getAllArchivedDemandes(iln).stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()) : service.getActiveDemandesForUser(iln).stream().map(element -> builder.buildDemandeDto(element, type)).collect(Collectors.toList()); + return (archive) ? service.getAllArchivedDemandes(iln).stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()) : service.getActiveDemandesForUser(iln).stream().map(element -> builder.buildDemandeDtoWithNbLines(element, type)).collect(Collectors.toList()); } /** diff --git a/web/src/test/java/fr/abes/item/web/impl/DemandeRestServiceTest.java b/web/src/test/java/fr/abes/item/web/impl/DemandeRestServiceTest.java index a739114d..7754c134 100644 --- a/web/src/test/java/fr/abes/item/web/impl/DemandeRestServiceTest.java +++ b/web/src/test/java/fr/abes/item/web/impl/DemandeRestServiceTest.java @@ -5,6 +5,7 @@ import fr.abes.item.core.configuration.factory.StrategyFactory; import fr.abes.item.core.constant.TYPE_DEMANDE; import fr.abes.item.core.constant.TYPE_SUPPRESSION; +import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.*; import fr.abes.item.core.service.impl.DemandeExempService; import fr.abes.item.core.service.impl.DemandeModifService; @@ -58,7 +59,7 @@ class DemandeRestServiceTest { @Autowired ObjectMapper mapper; - List demandeExemps = new ArrayList<>(); + List demandeDto = new ArrayList<>(); MockMvc mockMvc; @@ -80,13 +81,17 @@ void init() { demande2.setDateCreation(cal.getTime()); cal.set(2024, Calendar.MARCH, 20); demande2.setDateModification(cal.getTime()); - demandeExemps.addAll(Lists.newArrayList(demande1, demande2)); + + DemandeDto demandeDto1 = new DemandeDto(demande1, 1); + DemandeDto demandeDto2 = new DemandeDto(demande2, 2); + demandeDto.addAll(Lists.newArrayList(demandeDto1, demandeDto2)); + } @Test @WithMockUser(authorities = {"ADMIN"}) void testGetAllActiveDemandesForAdmin() throws Exception { - Mockito.when(demandeExempService.getAllActiveDemandesForAdminExtended()).thenReturn(this.demandeExemps); + Mockito.when(demandeExempService.getAllActiveDemandesForAdminExtended()).thenReturn(this.demandeDto); this.mockMvc.perform(get("/api/v1/demandes/EXEMP/?archive=false&extension=true").requestAttr("iln", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$[0].id").value("1")) @@ -101,7 +106,7 @@ void testGetAllActiveDemandesForAdmin() throws Exception { @Test @WithMockUser(authorities = {"ADMIN"}) void testGetAllActiveDemandesForAdminExtender() throws Exception { - Mockito.when(demandeExempService.getAllActiveDemandesForAdmin("1")).thenReturn(this.demandeExemps); + Mockito.when(demandeExempService.getAllActiveDemandesForAdmin("1")).thenReturn(this.demandeDto); this.mockMvc.perform(get("/api/v1/demandes/EXEMP/?archive=false&extension=false").requestAttr("iln", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$[0].id").value("1")) @@ -113,7 +118,7 @@ void testGetAllActiveDemandesForAdminExtender() throws Exception { @Test @WithMockUser(authorities = {"USER"}) void testChercher() throws Exception { - Mockito.when(demandeExempService.getActiveDemandesForUser("1")).thenReturn(this.demandeExemps); + Mockito.when(demandeExempService.getActiveDemandesForUser("1")).thenReturn(this.demandeDto); this.mockMvc.perform(get("/api/v1/demandes/EXEMP/?archive=false&extension=true").requestAttr("iln", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$[0].id").value("1")) @@ -125,7 +130,7 @@ void testChercher() throws Exception { @Test @WithMockUser(authorities = {"USER"}) void testGetAllArtiveDemandes() throws Exception { - Mockito.when(demandeExempService.getActiveDemandesForUser("1")).thenReturn(this.demandeExemps); + Mockito.when(demandeExempService.getActiveDemandesForUser("1")).thenReturn(this.demandeDto); this.mockMvc.perform(get("/api/v1/demandes/EXEMP?archive=false&extension=true").requestAttr("iln", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$[0].id").value("1")) @@ -137,7 +142,7 @@ void testGetAllArtiveDemandes() throws Exception { @Test @WithMockUser(authorities = {"USER"}) void testGetAllArchivedDemandes() throws Exception { - Mockito.when(demandeExempService.getAllArchivedDemandes("1")).thenReturn(this.demandeExemps); + Mockito.when(demandeExempService.getAllArchivedDemandes("1")).thenReturn(this.demandeDto); this.mockMvc.perform(get("/api/v1/demandes/EXEMP?archive=true&extension=false").requestAttr("iln", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$[0].id").value("1")) @@ -150,7 +155,7 @@ void testGetAllArchivedDemandes() throws Exception { @WithMockUser(authorities = {"USER"}) void testGetDemande() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); this.mockMvc.perform(get("/api/v1/demandes/EXEMP/1").requestAttr("userNum", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value("1")) @@ -162,7 +167,7 @@ void testGetDemande() throws Exception { @WithMockUser(authorities = {"USER"}) void testCreerDemande() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); this.mockMvc.perform(post("/api/v1/demandes/EXEMP?rcr=341720001").requestAttr("userNum", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value("1")) @@ -175,7 +180,7 @@ void testCreerDemande() throws Exception { void testModifDemandeRcr() throws Exception { Calendar cal = Calendar.getInstance(); Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); EtatDemande etat = new EtatDemande(1, "A compléter"); Utilisateur utilisateur = new Utilisateur(1, "test@test.com"); DemandeExemp demandeIn = new DemandeExemp(1, "341720001", cal.getTime(), cal.getTime(), etat, "", utilisateur); @@ -195,7 +200,7 @@ void testModifDemandeRcr() throws Exception { void testModifDemandeTypeExemp() throws Exception { Calendar cal = Calendar.getInstance(); Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); EtatDemande etat = new EtatDemande(1, "A compléter"); Utilisateur utilisateur = new Utilisateur(1, "test@test.com"); DemandeExemp demandeIn = new DemandeExemp(1, "341720001", cal.getTime(), cal.getTime(), etat, "", utilisateur); @@ -233,7 +238,7 @@ void testModifDemandeTypeSuppression() throws Exception { void testModifDemandeCommentaire() throws Exception { Calendar cal = Calendar.getInstance(); Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); EtatDemande etat = new EtatDemande(1, "A compléter"); Utilisateur utilisateur = new Utilisateur(1, "test@test.com"); DemandeExemp demandeIn = new DemandeExemp(1, "341720001", cal.getTime(), cal.getTime(), etat, "", utilisateur); @@ -254,7 +259,7 @@ void testModifDemandeCommentaire() throws Exception { void testModifDemandeTraitement() throws Exception { Calendar cal = Calendar.getInstance(); Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.MODIF); - Mockito.when(demandeModifService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeModifService.creerDemande(Mockito.anyString(), Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); EtatDemande etat = new EtatDemande(1, "A compléter"); Utilisateur utilisateur = new Utilisateur(1, "test@test.com"); Traitement traitement = new Traitement(1, "Créer nouvelle zone", "creerNouvelleZone"); @@ -298,7 +303,7 @@ void testUpload() throws Exception { @Test void testSimulerLigne() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); Mockito.when(ligneFichierExempService.getLigneFichierbyDemandeEtPos(Mockito.any(), Mockito.anyInt())).thenReturn(new LigneFichierExemp()); Mockito.when(demandeExempService.getNoticeExemplaireAvantApres(Mockito.any(), Mockito.any())).thenReturn(new String[]{"avant", "après"}); this.mockMvc.perform(get("/api/v1/simulerLigne/EXEMP/1/1").requestAttr("userNum", "1")) @@ -310,8 +315,8 @@ void testSimulerLigne() throws Exception { @Test void testPasserEnAttente() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeExemps.get(0)); - DemandeExemp demande = (DemandeExemp) this.demandeExemps.get(0); + Mockito.when(demandeExempService.findById(1)).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); + DemandeExemp demande = (DemandeExemp) this.demandeDto.get(0).getDemande(); demande.setEtatDemande(new EtatDemande(3, "En attente")); Mockito.when(demandeExempService.changeState(Mockito.any(), Mockito.anyInt())).thenReturn(demande); this.mockMvc.perform(patch("/api/v1/passerEnAttente/EXEMP/1").requestAttr("userNum", "1")) @@ -324,7 +329,7 @@ void testPasserEnAttente() throws Exception { @Test void testArchiver() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - DemandeExemp demande = (DemandeExemp) this.demandeExemps.get(0); + DemandeExemp demande = (DemandeExemp) this.demandeDto.get(0).getDemande(); demande.setEtatDemande(new EtatDemande(7, "Archivée")); Mockito.when(demandeExempService.archiverDemande(Mockito.any())).thenReturn(demande); this.mockMvc.perform(get("/api/v1/archiverDemande/EXEMP/1").requestAttr("userNum", "1")) @@ -337,7 +342,7 @@ void testArchiver() throws Exception { @Test void testPreviousStep() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - DemandeExemp demande = (DemandeExemp) this.demandeExemps.get(0); + DemandeExemp demande = (DemandeExemp) this.demandeDto.get(0).getDemande(); demande.setEtatDemande(new EtatDemande(3, "En attente")); Mockito.when(demandeExempService.previousState(Mockito.any())).thenReturn(demande); this.mockMvc.perform(patch("/api/v1/etapePrecedente/EXEMP/1").requestAttr("userNum", "1")) @@ -350,7 +355,7 @@ void testPreviousStep() throws Exception { @Test void testChosenStep() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - DemandeExemp demande = (DemandeExemp) this.demandeExemps.get(0); + DemandeExemp demande = (DemandeExemp) this.demandeDto.get(0).getDemande(); demande.setEtatDemande(new EtatDemande(3, "En attente")); Mockito.when(demandeExempService.returnState(Mockito.anyInt(), Mockito.any())).thenReturn(demande); this.mockMvc.perform(patch("/api/v1/etapeChoisie/EXEMP/1").param("etape", "3").requestAttr("userNum", "1")) @@ -363,10 +368,10 @@ void testChosenStep() throws Exception { @Test void testGetNbLigneFichier() throws Exception { Mockito.doNothing().when(checkAccessToServices).autoriserAccesDemandeParIln(1, "1", TYPE_DEMANDE.EXEMP); - Mockito.when(demandeExempService.findById(Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeExemps.get(0)); + Mockito.when(demandeExempService.findById(Mockito.anyInt())).thenReturn((DemandeExemp) this.demandeDto.get(0).getDemande()); Mockito.when(ligneFichierExempService.getNbLigneFichierTotalByDemande(Mockito.any())).thenReturn(30); this.mockMvc.perform(get("/api/v1/nbLignesFichier/EXEMP/1").requestAttr("userNum", "1")) .andExpect(status().isOk()) .andExpect(jsonPath("$").value(30)); } -} \ No newline at end of file +} From 23956b457a38d6ea79478b33fd2608dc7fc90b1f Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:15:55 +0100 Subject: [PATCH 2/4] =?UTF-8?q?FEAT=20ITEM-342-back-modifier-dto-et-requet?= =?UTF-8?q?e=20:=20=20=20=20=20=20-=20cr=C3=A9ation=20de=20DemandeDto.java?= =?UTF-8?q?=20=20=20=20=20=20-=20modification=20des=20requ=C3=AAtes=20JPA?= =?UTF-8?q?=20=20=20=20=20=20-=20adaptation=20du=20code=20et=20des=20TU?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abes/item/core/repository/item/IDemandeExempDao.java | 4 ++-- .../abes/item/core/repository/item/IDemandeSuppDao.java | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java index a549a762..12edadb9 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java @@ -27,10 +27,10 @@ public interface IDemandeExempDao extends JpaRepository { @Query("select e from TypeExemp e where e.numTypeExemp in (select d.typeExemp.numTypeExemp from DemandeExemp d where d.numDemande = :numDemande)") TypeExemp getTypeExemp(@Param("numDemande") Integer numDemande); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = d.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) List getActiveDemandesExempForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = d.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) List getAllActiveDemandesExempForAdmin(@Param("iln") String iln); @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java index 6901ea28..a0934285 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java @@ -15,16 +15,15 @@ @ItemConfiguration public interface IDemandeSuppDao extends JpaRepository { - @Query(value ="select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.etatDemande.numEtat not in (9, 10)") List getAllActiveDemandesSuppForAdminExtended(); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") List getAllActiveDemandesSuppForAdmin(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat = 9") List getAllArchivedDemandesSupp(@Param("iln") String iln); @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") - List getActiveDemandesSuppForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_supp WHERE ref_demande = demande_supp.num_demande) as nb_lignefichier from DemandeSupp d where d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.etatDemande.numEtat = 9") List getAllArchivedDemandesSuppExtended(); List findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Integer id); From d920f058c82b1624ec7f3121472497acd3bd62bb Mon Sep 17 00:00:00 2001 From: SamuelQuetin Date: Fri, 8 Nov 2024 15:41:44 +0100 Subject: [PATCH 3/4] Ajout de l'instantiation de la dto dans la requete --- .../main/java/fr/abes/item/core/dto/DemandeDto.java | 5 +++++ .../item/core/repository/item/IDemandeExempDao.java | 10 +++++----- .../item/core/repository/item/IDemandeModifDao.java | 10 +++++----- .../item/core/repository/item/IDemandeSuppDao.java | 8 ++++---- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java index 3ad97369..1459c128 100644 --- a/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java +++ b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java @@ -22,6 +22,11 @@ public DemandeDto(Demande demande, Integer nbLignes) { this.nbLignes = nbLignes; } + public DemandeDto(Demande demande, Long nbLignes) { + this.demande = demande; + this.nbLignes = Math.toIntExact(nbLignes); + } + public DemandeDto(Demande demande) { this.demande = demande; } diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java index 12edadb9..4681f4fd 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeExempDao.java @@ -27,19 +27,19 @@ public interface IDemandeExempDao extends JpaRepository { @Query("select e from TypeExemp e where e.numTypeExemp in (select d.typeExemp.numTypeExemp from DemandeExemp d where d.numDemande = :numDemande)") TypeExemp getTypeExemp(@Param("numDemande") Integer numDemande); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = d.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeExemp d JOIN d.ligneFichierExemps l where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10) GROUP BY d") List getActiveDemandesExempForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = d.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeExemp d JOIN d.ligneFichierExemps l where d.iln = :iln and d.etatDemande.numEtat not in (9, 10) GROUP BY d") List getAllActiveDemandesExempForAdmin(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeExemp d JOIN d.ligneFichierExemps l where d.etatDemande.numEtat not in (9, 10) GROUP BY d") List getAllActiveDemandesExempForAdminExtended(); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeExemp d JOIN d.ligneFichierExemps l where d.iln = :iln and d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesExemp(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_exemp WHERE ref_demande = demande_exemp.num_demande) as nb_lignefichier from DemandeExemp d where d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeExemp d JOIN d.ligneFichierExemps l where d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesExempExtended(); //Même si l'ide signale la requête elle est correcte, demandes en statut terminé avec une ancienneté de plus de 90 jours sur la dernière date de modification récupérées diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java index 981cee94..2a892d7c 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeModifDao.java @@ -22,19 +22,19 @@ public interface IDemandeModifDao extends JpaRepository { * @return les demandes appartenant à l'iln de l'utilisateur (un iln comprenant plusieurs rcr) * et qui sont ni dans l'état préparé, ni dans l'état archivé */ - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeModif d JOIN d.ligneFichierModifs l where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10) GROUP BY d") List getActiveDemandesModifForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeModif d JOIN d.ligneFichierModifs l where d.iln = :iln and d.etatDemande.numEtat not in (9, 10) GROUP BY d") List getAllActiveDemandesModifForAdmin(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.etatDemande.numEtat not in (9, 2, 10)", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeModif d JOIN d.ligneFichierModifs l where d.etatDemande.numEtat not in (9, 2, 10) GROUP BY d") List getAllActiveDemandesModifForAdminExtended(); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.iln = :iln and d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeModif d JOIN d.ligneFichierModifs l where d.iln = :iln and d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesModif(@Param("iln") String iln); - @Query(value = "select d, (SELECT count(num_lignefichier) FROM ligne_fichier_modif WHERE ref_demande = demande_modif.num_demande) as nb_lignefichier from DemandeModif d where d.etatDemande.numEtat = 9", nativeQuery = true) + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) from DemandeModif d JOIN d.ligneFichierModifs l where d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesModifExtended(); @Query("select d from DemandeModif d where d.etatDemande.numEtat = 5 order by d.dateModification asc") diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java index a0934285..a3c83355 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java @@ -15,15 +15,15 @@ @ItemConfiguration public interface IDemandeSuppDao extends JpaRepository { - @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.etatDemande.numEtat not in (9, 10)") + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l WHERE d.etatDemande.numEtat NOT IN (9, 10) GROUP BY d") List getAllActiveDemandesSuppForAdminExtended(); - @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.iln = :iln and d.etatDemande.numEtat not in (9, 10) GROUP BY d") List getAllActiveDemandesSuppForAdmin(@Param("iln") String iln); - @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat = 9") + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.iln = :iln and d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesSupp(@Param("iln") String iln); @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") List getActiveDemandesSuppForUserExceptedPreparedStatus(@Param("iln") String iln); - @Query("select d, (SELECT count(l.numLigneFichier) FROM LigneFichierSupp l WHERE l.demandeSupp.numDemande = d.numDemande) as nbLignes from DemandeSupp d where d.etatDemande.numEtat = 9") + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesSuppExtended(); List findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Integer id); From 2d36caf8da9d5132a3fcbc65dbcdf0d35807719d Mon Sep 17 00:00:00 2001 From: pierre-maraval Date: Tue, 12 Nov 2024 15:30:33 +0100 Subject: [PATCH 4/4] refactor : Retouche sauts de lignes, suppression @column --- core/src/main/java/fr/abes/item/core/dto/DemandeDto.java | 2 -- .../fr/abes/item/core/repository/item/IDemandeSuppDao.java | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java index 1459c128..dc65d623 100644 --- a/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java +++ b/core/src/main/java/fr/abes/item/core/dto/DemandeDto.java @@ -2,7 +2,6 @@ import fr.abes.item.core.entities.baseXml.LibProfile; import fr.abes.item.core.entities.item.Demande; -import jakarta.persistence.Column; import lombok.Getter; import lombok.Setter; @@ -14,7 +13,6 @@ public class DemandeDto { private Demande demande; - @Column(name = "NB_LIGNEFICHIER") private Integer nbLignes; public DemandeDto(Demande demande, Integer nbLignes) { diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java index a3c83355..0b32ee06 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeSuppDao.java @@ -9,7 +9,6 @@ import org.springframework.stereotype.Repository; import java.util.List; -import java.util.Optional; @Repository @ItemConfiguration @@ -17,14 +16,19 @@ public interface IDemandeSuppDao extends JpaRepository { @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l WHERE d.etatDemande.numEtat NOT IN (9, 10) GROUP BY d") List getAllActiveDemandesSuppForAdminExtended(); + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.iln = :iln and d.etatDemande.numEtat not in (9, 10) GROUP BY d") List getAllActiveDemandesSuppForAdmin(@Param("iln") String iln); + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.iln = :iln and d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesSupp(@Param("iln") String iln); + @Query("select d from DemandeSupp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") List getActiveDemandesSuppForUserExceptedPreparedStatus(@Param("iln") String iln); + @Query("select new fr.abes.item.core.dto.DemandeDto(d, COUNT(l)) FROM DemandeSupp d JOIN d.ligneFichierSupps l where d.etatDemande.numEtat = 9 GROUP BY d") List getAllArchivedDemandesSuppExtended(); + List findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Integer id); @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc")