From 9d9149744296861cc178484709b1fe29eae6f5a0 Mon Sep 17 00:00:00 2001 From: pierre-maraval Date: Mon, 22 Apr 2024 11:43:55 +0200 Subject: [PATCH] =?UTF-8?q?Feat=20:=20Ajout=20webDto=20+=20mapper=20Ajout?= =?UTF-8?q?=20des=20requestParam=20dans=20les=20controllers=20Modif=20des?= =?UTF-8?q?=20requ=C3=AAtes=20sur=20dates=20dans=20les=20dao=20remplacemen?= =?UTF-8?q?t=20constructeur=20date=20par=20calendar=20Modification=20diale?= =?UTF-8?q?ct=20Oracle12c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abes/item/core/components/Ppntoepn.java | 3 +- .../configuration/OracleCustomDriver.java | 4 +- .../repository/item/IDemandeExempDao.java | 8 ++-- .../repository/item/IDemandeModifDao.java | 6 +-- .../repository/item/IDemandeRecouvDao.java | 6 +-- .../core/service/IDemandeExempService.java | 2 +- .../item/core/service/JournalService.java | 6 +-- .../item/core/service/ReferenceService.java | 5 +++ .../item/core/service/TraitementService.java | 4 +- .../service/impl/DemandeExempService.java | 15 +++---- .../service/impl/DemandeModifService.java | 4 +- .../service/impl/DemandeRecouvService.java | 6 +-- .../item/core/utilitaire/UtilsMapper.java | 42 +++++++++++++++++++ pom.xml | 10 ++++- web/pom.xml | 2 +- .../java/fr/abes/item/dto/DemandeDto.java | 32 ++++++++++++++ .../fr/abes/item/dto/DemandeExempDto.java | 20 +++++++++ .../fr/abes/item/dto/DemandeModifDto.java | 21 ++++++++++ .../fr/abes/item/dto/DemandeRecouvDto.java | 16 +++++++ .../abes/item/security/JwtTokenProvider.java | 3 +- .../java/fr/abes/item/utils/WebDtoMapper.java | 31 ++++++++++++++ .../fr/abes/item/web/DemandeRestService.java | 41 +++++++++--------- .../item/web/DownloadFichierRestService.java | 2 +- .../item/web/impl/DemandeRestService.java | 0 24 files changed, 232 insertions(+), 57 deletions(-) create mode 100644 core/src/main/java/fr/abes/item/core/utilitaire/UtilsMapper.java create mode 100644 web/src/main/java/fr/abes/item/dto/DemandeDto.java create mode 100644 web/src/main/java/fr/abes/item/dto/DemandeExempDto.java create mode 100644 web/src/main/java/fr/abes/item/dto/DemandeModifDto.java create mode 100644 web/src/main/java/fr/abes/item/dto/DemandeRecouvDto.java create mode 100644 web/src/main/java/fr/abes/item/utils/WebDtoMapper.java delete mode 100644 web/src/main/java/fr/abes/item/web/impl/DemandeRestService.java diff --git a/core/src/main/java/fr/abes/item/core/components/Ppntoepn.java b/core/src/main/java/fr/abes/item/core/components/Ppntoepn.java index bb151494..7f3be564 100644 --- a/core/src/main/java/fr/abes/item/core/components/Ppntoepn.java +++ b/core/src/main/java/fr/abes/item/core/components/Ppntoepn.java @@ -1,6 +1,7 @@ package fr.abes.item.core.components; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -9,7 +10,7 @@ public class Ppntoepn { private final JdbcTemplate baseXmlJdbcTemplate; - public Ppntoepn(JdbcTemplate baseXmlJdbcTemplate) { + public Ppntoepn(@Qualifier("baseXmlJdbcTemplate") JdbcTemplate baseXmlJdbcTemplate) { this.baseXmlJdbcTemplate = baseXmlJdbcTemplate; } diff --git a/core/src/main/java/fr/abes/item/core/configuration/OracleCustomDriver.java b/core/src/main/java/fr/abes/item/core/configuration/OracleCustomDriver.java index dba97ab3..73fcb1a6 100644 --- a/core/src/main/java/fr/abes/item/core/configuration/OracleCustomDriver.java +++ b/core/src/main/java/fr/abes/item/core/configuration/OracleCustomDriver.java @@ -1,8 +1,8 @@ package fr.abes.item.core.configuration; -import org.hibernate.dialect.Oracle12cDialect; +import org.hibernate.dialect.OracleDialect; -public class OracleCustomDriver extends Oracle12cDialect { +public class OracleCustomDriver extends OracleDialect { public String getQuerySequencesString() { return "select * from all_sequences"; } 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 ca8e3fce..4523c883 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 @@ -22,7 +22,7 @@ public interface IDemandeExempDao extends JpaRepository { @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' order by d.dateModification asc") List getNextDemandeToProceedWithoutDAT(); - @Query("select e.libelle from TypeExemp e where e.numTypeExemp in (select d.typeExemp from DemandeExemp d where d.numDemande = :numDemande)") + @Query("select e.libelle from TypeExemp e where e.numTypeExemp in (select d.typeExemp.numTypeExemp from DemandeExemp d where d.numDemande = :numDemande)") String getTypeExemp(@Param("numDemande") Integer numDemande); @Query("select d from DemandeExemp d where d.iln = :iln and d.etatDemande.numEtat not in (9, 2, 10)") @@ -41,13 +41,13 @@ public interface IDemandeExempDao extends JpaRepository { 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 d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToArchive(); //Même si l'ide signale la requête elle est correcte, demandes en statut archivé 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 = 9 and d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 9 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToPlaceInDeletedStatus(); - @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 10 and d.dateModification < current_date - 210 order by d.dateModification asc") + @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 10 and (day(current_date) - day(d.dateModification)) > 210 order by d.dateModification asc") List getNextDemandeToDelete(); } 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 ecf4b14c..1c1f6a5b 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 @@ -43,13 +43,13 @@ public interface IDemandeModifDao extends JpaRepository { List getListDemandesToClean(); //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 DemandeModif d where d.etatDemande.numEtat = 7 and d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeModif d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToArchive(); //Même si l'ide signale la requête elle est correcte, demandes en statut archivé avec une ancienneté de plus de 90 jours sur la dernière date de modification récupérées - @Query("select d from DemandeModif d where d.etatDemande.numEtat = 9 and d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeModif d where d.etatDemande.numEtat = 9 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToPlaceInDeletedStatus(); - @Query("select d from DemandeModif d where d.etatDemande.numEtat = 10 and d.dateModification < current_date - 210 order by d.dateModification asc") + @Query("select d from DemandeModif d where d.etatDemande.numEtat = 10 and (day(current_date) - day(d.dateModification)) > 210 order by d.dateModification asc") List getNextDemandeToDelete(); } diff --git a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeRecouvDao.java b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeRecouvDao.java index 242d9485..666af8c3 100644 --- a/core/src/main/java/fr/abes/item/core/repository/item/IDemandeRecouvDao.java +++ b/core/src/main/java/fr/abes/item/core/repository/item/IDemandeRecouvDao.java @@ -40,13 +40,13 @@ public interface IDemandeRecouvDao extends JpaRepository List getListDemandesToClean(); //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 DemandeRecouv d where d.etatDemande.numEtat = 7 and d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToArchive(); //Même si l'ide signale la requête elle est correcte, demandes en statut archivé avec une ancienneté de plus de 90 jours sur la dernière date de modification récupérées - @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 9 and d.dateModification < current_date - 90 order by d.dateModification asc") + @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 9 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToPlaceInDeletedStatus(); - @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 10 and d.dateModification < current_date - 210 order by d.dateModification asc") + @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 10 and (day(current_date) - day(d.dateModification)) > 210 order by d.dateModification asc") List getNextDemandeToDelete(); } diff --git a/core/src/main/java/fr/abes/item/core/service/IDemandeExempService.java b/core/src/main/java/fr/abes/item/core/service/IDemandeExempService.java index f7f34590..a8a1178c 100644 --- a/core/src/main/java/fr/abes/item/core/service/IDemandeExempService.java +++ b/core/src/main/java/fr/abes/item/core/service/IDemandeExempService.java @@ -48,7 +48,7 @@ public interface IDemandeExempService extends IDemandeService { String launchQueryToSudoc(DemandeExemp demande, String valeurs) throws CBSException, QueryToSudocException, IOException; - DemandeExemp majTypeExemp(Integer idDemande, TypeExemp typeExemp); + DemandeExemp majTypeExemp(Integer idDemande, Integer typeExemp); Demande changeState(Demande demande, int etatDemande) throws DemandeCheckingException; diff --git a/core/src/main/java/fr/abes/item/core/service/JournalService.java b/core/src/main/java/fr/abes/item/core/service/JournalService.java index 83c7a68c..24272aed 100644 --- a/core/src/main/java/fr/abes/item/core/service/JournalService.java +++ b/core/src/main/java/fr/abes/item/core/service/JournalService.java @@ -5,7 +5,7 @@ import fr.abes.item.core.repository.item.IJournalDemandeModifDao; import org.springframework.stereotype.Service; -import java.util.Date; +import java.util.Calendar; @Service public class JournalService { @@ -18,10 +18,10 @@ public JournalService(IJournalDemandeExempDao journalDemandeExempDao, IJournalDe } public void addEntreeJournal(DemandeExemp demande, EtatDemande etat) { - journalDemandeExempDao.save(new JournalDemandeExemp(new Date(), demande.getUtilisateur(), etat, demande)); + journalDemandeExempDao.save(new JournalDemandeExemp(Calendar.getInstance().getTime(), demande.getUtilisateur(), etat, demande)); } public void addEntreeJournal(DemandeModif demandeModif, EtatDemande etat) { - journalDemandeModifDao.save(new JournalDemandeModif(new Date(), demandeModif.getUtilisateur(), etat, demandeModif)); + journalDemandeModifDao.save(new JournalDemandeModif(Calendar.getInstance().getTime(), demandeModif.getUtilisateur(), etat, demandeModif)); } } diff --git a/core/src/main/java/fr/abes/item/core/service/ReferenceService.java b/core/src/main/java/fr/abes/item/core/service/ReferenceService.java index 6acedd1a..b2e377e0 100644 --- a/core/src/main/java/fr/abes/item/core/service/ReferenceService.java +++ b/core/src/main/java/fr/abes/item/core/service/ReferenceService.java @@ -35,6 +35,11 @@ public List findAllTypeExemp() { return typeExempDao.findAll(); } + public TypeExemp findTypeExempById(Integer id) { + Optional typeExemp = typeExempDao.findById(id); + return typeExemp.orElseThrow(); + } + public Set getIndexRechercheFromTypeExemp(Integer id) { return typeExempDao.findById(id).get().getIndexRechercheSet(); } diff --git a/core/src/main/java/fr/abes/item/core/service/TraitementService.java b/core/src/main/java/fr/abes/item/core/service/TraitementService.java index 8958267b..8d3c65e4 100644 --- a/core/src/main/java/fr/abes/item/core/service/TraitementService.java +++ b/core/src/main/java/fr/abes/item/core/service/TraitementService.java @@ -18,7 +18,7 @@ import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.Calendar; import java.util.List; @Slf4j @@ -158,7 +158,7 @@ public Exemplaire remplacerSousZone(String exemp, String tag, String subTag, Str public Exemplaire ajout991(Exemplaire exemp) throws ZoneException { String datePattern = "dd-MM-yyyy HH:mm"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datePattern); - String date = simpleDateFormat.format(new Date()); + String date = simpleDateFormat.format(Calendar.getInstance().getTime()); char[] indicateurs = new char[2]; indicateurs[0] = '#'; indicateurs[1] = '#'; 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 c1a28802..e5cd796a 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 @@ -72,7 +72,7 @@ public class DemandeExempService extends DemandeService implements IDemandeExemp @Getter private int nbReponses; - public DemandeExempService(ILibProfileDao libProfileDao, IDemandeExempDao demandeExempDao, FileSystemStorageService storageService, ILigneFichierService ligneFichierExempService, ReferenceService referenceService, JournalService journalService, TraitementService traitementService, IZonesAutoriseesDao zonesAutoriseesDao, ILigneFichierExempDao ligneFichierExempDao) { + public DemandeExempService(ILibProfileDao libProfileDao, IDemandeExempDao demandeExempDao, FileSystemStorageService storageService, LigneFichierExempService ligneFichierExempService, ReferenceService referenceService, JournalService journalService, TraitementService traitementService, IZonesAutoriseesDao zonesAutoriseesDao, ILigneFichierExempDao ligneFichierExempDao) { super(libProfileDao); this.demandeExempDao = demandeExempDao; this.storageService = storageService; @@ -116,7 +116,7 @@ public String getTypeExempDemande(Integer idDemande) { @Override public Demande save(Demande entity) { DemandeExemp demande = (DemandeExemp) entity; - entity.setDateModification(new Date()); + entity.setDateModification(Calendar.getInstance().getTime()); return demandeExempDao.save(demande); } @@ -156,15 +156,16 @@ public boolean hasDonneeLocaleExistante() { * mise à jour du type d'exemplarisation en fonction de l'option choisie coté front * * @param demandeId identifiant de la demande - * @param typeExemp valeur du type d'exemplarisation + * @param typeExempId valeur du type d'exemplarisation * @return la demande modifiée */ @Override - public DemandeExemp majTypeExemp(Integer demandeId, TypeExemp typeExemp) { + public DemandeExemp majTypeExemp(Integer demandeId, Integer typeExempId) { Optional demandeExemp = demandeExempDao.findById(demandeId); + TypeExemp typeExemp = referenceService.findTypeExempById(typeExempId); if (demandeExemp.isPresent()) { DemandeExemp dem = demandeExemp.get(); - dem.setDateModification(new Date()); + dem.setDateModification(Calendar.getInstance().getTime()); dem.setTypeExemp(typeExemp); dem.setEtatDemande(new EtatDemande(Constant.ETATDEM_ACOMPLETER)); return demandeExempDao.save(dem); @@ -503,7 +504,7 @@ public List getIdNextDemandeToDelete() { @Override public DemandeExemp creerDemande(String rcr, Date dateCreation, Date dateModification, EtatDemande etatDemande, String commentaire, Utilisateur utilisateur) { DemandeExemp demandeExemp = new DemandeExemp(rcr, dateCreation, dateModification, etatDemande, commentaire, utilisateur); - demandeExemp.setIln(libProfileDao.findById(rcr).orElse(null).getIln()); + demandeExemp.setIln(Objects.requireNonNull(libProfileDao.findById(rcr).orElse(null)).getIln()); return demandeExemp; } @@ -628,7 +629,7 @@ public String creerExemplaireFromHeaderEtValeur(String header, String valeurZone private void ajout991(Exemplaire exemp) throws ZoneException { String datePattern = "dd-MM-yyyy HH:mm"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datePattern); - String date = simpleDateFormat.format(new Date()); + String date = simpleDateFormat.format(Calendar.getInstance().getTime()); String valeur991 = Constant.TEXTE_991_CREA + " le " + date; char[] indicateurs = {'#', '#'}; exemp.addZone("991", "$a", valeur991, indicateurs); 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 0faf6a65..f5cb39ad 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 @@ -45,7 +45,7 @@ public class DemandeModifService extends DemandeService implements IDemandeModif private FichierInitial fichierInit; private FichierPrepare fichierPrepare; - public DemandeModifService(ILibProfileDao libProfileDao, IDemandeModifDao demandeModifDao, FileSystemStorageService storageService, ILigneFichierService ligneFichierModifService, TraitementService traitementService, JournalService journalService, ReferenceService referenceService, Ppntoepn procStockee) { + public DemandeModifService(ILibProfileDao libProfileDao, IDemandeModifDao demandeModifDao, FileSystemStorageService storageService, LigneFichierModifService ligneFichierModifService, TraitementService traitementService, JournalService journalService, ReferenceService referenceService, Ppntoepn procStockee) { super(libProfileDao); this.demandeModifDao = demandeModifDao; this.storageService = storageService; @@ -358,7 +358,7 @@ public DemandeModif findById(Integer id) { @Override public Demande save(Demande entity) { DemandeModif demande = (DemandeModif) entity; - entity.setDateModification(new Date()); + entity.setDateModification(Calendar.getInstance().getTime()); return demandeModifDao.save(demande); } 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 b99f6ecb..3d9187a5 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 @@ -43,7 +43,7 @@ public class DemandeRecouvService extends DemandeService implements IDemandeReco @Value("${files.upload.path}") private String uploadPath; - public DemandeRecouvService(ILibProfileDao libProfileDao, IDemandeRecouvDao demandeRecouvDao, FileSystemStorageService storageService, ReferenceService referenceService, ILigneFichierService ligneFichierRecouvService, TraitementService traitementService) { + public DemandeRecouvService(ILibProfileDao libProfileDao, IDemandeRecouvDao demandeRecouvDao, FileSystemStorageService storageService, ReferenceService referenceService, LigneFichierRecouvService ligneFichierRecouvService, TraitementService traitementService) { super(libProfileDao); this.demandeRecouvDao = demandeRecouvDao; this.storageService = storageService; @@ -69,7 +69,7 @@ public List getAllActiveDemandesForAdmin(String iln) { @Override public Demande save(Demande entity) { DemandeRecouv demande = (DemandeRecouv) entity; - entity.setDateModification(new Date()); + entity.setDateModification(Calendar.getInstance().getTime()); return demandeRecouvDao.save(demande); } @@ -311,7 +311,7 @@ public String getInfoFooterFichierResultat(Demande demande) { System.lineSeparator() + System.lineSeparator() + "Fin du recouvrement : " + - new Date(); + Calendar.getInstance().getTime(); } /** diff --git a/core/src/main/java/fr/abes/item/core/utilitaire/UtilsMapper.java b/core/src/main/java/fr/abes/item/core/utilitaire/UtilsMapper.java new file mode 100644 index 00000000..f6b4319c --- /dev/null +++ b/core/src/main/java/fr/abes/item/core/utilitaire/UtilsMapper.java @@ -0,0 +1,42 @@ +package fr.abes.item.core.utilitaire; + +import lombok.extern.slf4j.Slf4j; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class UtilsMapper extends ModelMapper { + + /** + * Fonction de mapping générique pour des listes + * + * @param source Liste source + * @param targetClass Classe des objets cibles + * @return Liste des objets cibles + */ + public List mapList(List source, Class targetClass) { + return source + .stream() + .map(element -> this.map(element, targetClass)) + .collect(Collectors.toList()); + } + + /** + * Fonction de mapping générique pour des sets + * + * @param source Liste source + * @param targetClass Classe des objets cibles + * @return Liste des objets cibles + */ + public Set mapSet(Set source, Class targetClass) { + return source + .stream() + .map(element -> this.map(element, targetClass)) + .collect(Collectors.toSet()); + } +} diff --git a/pom.xml b/pom.xml index 4e6e826e..2ceeb189 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ org.springframework.boot spring-boot-dependencies - 3.1.3 + 3.2.4 pom import @@ -130,6 +130,12 @@ + + + org.modelmapper + modelmapper + 3.1.1 + commons-io commons-io @@ -164,7 +170,7 @@ maven-release-plugin 3.0.0-M5 - no + false @{prefix} Version @{releaseLabel} [maven-release-plugin] [no ci] diff --git a/web/pom.xml b/web/pom.xml index 5d97c5c7..eb29d115 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -58,7 +58,7 @@ org.springdoc springdoc-openapi-starter-webmvc-ui - 2.0.0 + 2.1.0 diff --git a/web/src/main/java/fr/abes/item/dto/DemandeDto.java b/web/src/main/java/fr/abes/item/dto/DemandeDto.java new file mode 100644 index 00000000..d2d2eb73 --- /dev/null +++ b/web/src/main/java/fr/abes/item/dto/DemandeDto.java @@ -0,0 +1,32 @@ +package fr.abes.item.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") +@JsonSubTypes({ + @JsonSubTypes.Type(value = DemandeModifDto.class, name = "MODIF"), + @JsonSubTypes.Type(value = DemandeExempDto.class, name = "EXEMP"), + @JsonSubTypes.Type(value = DemandeRecouvDto.class, name = "RECOUV"), +}) +public abstract class DemandeDto { + @JsonProperty("id") + protected Integer id; + @JsonProperty("rcr") + protected String rcr; + @JsonProperty("utilisateur") + protected Integer userNum; + @JsonProperty("iln") + protected Integer iln; + @JsonProperty("etatDemande") + protected Integer etatDemande; + @JsonProperty("commentaire") + protected String commentaire; + @JsonProperty("pourcentageProgressionTraitement") + protected Integer pourcentageProgressionTraitement; +} diff --git a/web/src/main/java/fr/abes/item/dto/DemandeExempDto.java b/web/src/main/java/fr/abes/item/dto/DemandeExempDto.java new file mode 100644 index 00000000..550c02d8 --- /dev/null +++ b/web/src/main/java/fr/abes/item/dto/DemandeExempDto.java @@ -0,0 +1,20 @@ +package fr.abes.item.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@JsonTypeName("EXEMP") +public class DemandeExempDto extends DemandeDto { + @JsonProperty("typeExemp") + private Integer typeExemp; + @JsonProperty("listeZones") + private String listeZones; + @JsonProperty("indexRecherche") + private Integer indexRecherche; +} diff --git a/web/src/main/java/fr/abes/item/dto/DemandeModifDto.java b/web/src/main/java/fr/abes/item/dto/DemandeModifDto.java new file mode 100644 index 00000000..184bbc46 --- /dev/null +++ b/web/src/main/java/fr/abes/item/dto/DemandeModifDto.java @@ -0,0 +1,21 @@ +package fr.abes.item.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@JsonTypeName("MODIF") +public class DemandeModifDto extends DemandeDto { + @JsonProperty("zone") + private String zone; + @JsonProperty("sousZone") + private String sousZone; + @JsonProperty("traitement") + private Integer traitement; + +} diff --git a/web/src/main/java/fr/abes/item/dto/DemandeRecouvDto.java b/web/src/main/java/fr/abes/item/dto/DemandeRecouvDto.java new file mode 100644 index 00000000..73019ff8 --- /dev/null +++ b/web/src/main/java/fr/abes/item/dto/DemandeRecouvDto.java @@ -0,0 +1,16 @@ +package fr.abes.item.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@JsonTypeName("RECOUV") +public class DemandeRecouvDto extends DemandeDto { + @JsonProperty("indexRecherche") + private Integer indexRecherche; +} diff --git a/web/src/main/java/fr/abes/item/security/JwtTokenProvider.java b/web/src/main/java/fr/abes/item/security/JwtTokenProvider.java index 0800bacb..35c44e59 100644 --- a/web/src/main/java/fr/abes/item/security/JwtTokenProvider.java +++ b/web/src/main/java/fr/abes/item/security/JwtTokenProvider.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; +import java.util.Calendar; import java.util.Date; @Component @@ -22,7 +23,7 @@ public class JwtTokenProvider { public String generateToken(User u) { - Date now = new Date(); + Date now = Calendar.getInstance().getTime(); Date expiryDate = new Date(now.getTime() + jwtExpirationInMs); return Jwts.builder() diff --git a/web/src/main/java/fr/abes/item/utils/WebDtoMapper.java b/web/src/main/java/fr/abes/item/utils/WebDtoMapper.java new file mode 100644 index 00000000..3ec8e095 --- /dev/null +++ b/web/src/main/java/fr/abes/item/utils/WebDtoMapper.java @@ -0,0 +1,31 @@ +package fr.abes.item.utils; + +import fr.abes.item.core.entities.item.DemandeExemp; +import fr.abes.item.core.utilitaire.UtilsMapper; +import fr.abes.item.dto.DemandeExempDto; +import org.modelmapper.Converter; +import org.modelmapper.spi.MappingContext; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +@Component +public class WebDtoMapper { + private final UtilsMapper mapper; + + public WebDtoMapper(UtilsMapper mapper) { + this.mapper = mapper; + } + + @Bean + public void converterDemandeExempDtoToDemandeExemp() { + Converter myConverter = new Converter() { + @Override + public DemandeExemp convert(MappingContext mappingContext) { + DemandeExempDto source = mappingContext.getSource(); + DemandeExemp target = new DemandeExemp(source.getId()); + return target; + } + }; + mapper.addConverter(myConverter); + } +} 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 6d1ca038..3b7b3ffb 100644 --- a/web/src/main/java/fr/abes/item/web/DemandeRestService.java +++ b/web/src/main/java/fr/abes/item/web/DemandeRestService.java @@ -64,8 +64,7 @@ public DemandeRestService(DemandeExempService demandeExempService, DemandeRecouv @PreAuthorize("hasAuthority('ADMIN')") @Operation(summary = "renvoie les demandes pour les administrateurs", description = "renvoie les demande terminées et en erreur de tout le monde et toutes les demandeModifs créées par cet iln") - - public List getAllActiveDemandes(TYPE_DEMANDE type, boolean extension, HttpServletRequest request) { + public List getAllActiveDemandes(@RequestParam("type") TYPE_DEMANDE type, @RequestParam("extension")boolean extension, HttpServletRequest request) { String iln = request.getAttribute("iln").toString(); return switch (type) { case EXEMP -> @@ -85,7 +84,7 @@ public List getAllActiveDemandes(TYPE_DEMANDE type, boolean extension, @PreAuthorize("hasAuthority('USER')") @Operation(summary = "renvoie les demandes de modif pour ce usernum", description = "renvoie toutes les demandes créées par cet iln") - public List chercher(TYPE_DEMANDE type, HttpServletRequest request) { + public List chercher(@RequestParam("type") TYPE_DEMANDE type, HttpServletRequest request) { String iln = request.getAttribute("iln").toString(); return switch (type) { case MODIF -> demandeModifService.getActiveDemandesForUser(iln); @@ -103,7 +102,7 @@ public List chercher(TYPE_DEMANDE type, HttpServletRequest request) { @PreAuthorize("hasAnyAuthority('USER', 'ADMIN')") @Operation(summary = "renvoie les demandes archivées pour cet iln", description = "renvoie les demandeModifs archivées créées par cet iln") - public List getAllArchivedDemandes(TYPE_DEMANDE type, boolean extension, HttpServletRequest request) { + public List getAllArchivedDemandes(@RequestParam("type")TYPE_DEMANDE type, @RequestParam("extension") boolean extension, HttpServletRequest request) { String iln = request.getAttribute("iln").toString(); return switch (type) { case MODIF -> @@ -123,7 +122,7 @@ public List getAllArchivedDemandes(TYPE_DEMANDE type, boolean extension */ @GetMapping(value = "/demandes/{id}") @Operation(summary = "renvoie une demande précise") - public Demande getDemande(TYPE_DEMANDE type, @PathVariable Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande getDemande(@RequestParam("type") TYPE_DEMANDE type, @PathVariable("id") Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); return switch (type) { case MODIF -> demandeModifService.findById(id); @@ -141,7 +140,7 @@ public Demande getDemande(TYPE_DEMANDE type, @PathVariable Integer id, HttpServl */ @GetMapping(value = "/creerdemande") @Operation(summary = "permet de créer une nouvelle demande de modif pour un rcr donné") - public Demande saveModif(TYPE_DEMANDE type, String rcr, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande saveModif(@RequestParam("type") TYPE_DEMANDE type, @RequestParam("rcr") String rcr, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserCreationDemandeParUserNum(rcr, request.getAttribute(Constant.USER_NUM).toString()); Date datejour = new Date(); Demande demToReturn; @@ -172,7 +171,7 @@ public Demande saveModif(TYPE_DEMANDE type, String rcr, HttpServletRequest reque */ @DeleteMapping(value = "/demandes/{id}") @Operation(summary = "permet de supprimer une demande") - public void supprimer(TYPE_DEMANDE type, @PathVariable Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { + public void supprimer(@RequestParam("type") TYPE_DEMANDE type, @PathVariable("id") Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); switch (type) { case MODIF: @@ -189,7 +188,7 @@ public void supprimer(TYPE_DEMANDE type, @PathVariable Integer id, HttpServletRe @GetMapping(value ="/supprimerDemande") @Operation(summary = "permet de supprimer une demande tout en la conservant en base, elle passe en statut 10 invisible pour l'utilisateur sur l'interface web") - public Demande supprimerAvecConservationEnBase(TYPE_DEMANDE type, Integer numDemande, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande supprimerAvecConservationEnBase(@RequestParam("type") TYPE_DEMANDE type, @RequestParam("numDemande")Integer numDemande, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute(Constant.USER_NUM).toString()); switch (type) { case MODIF: @@ -221,7 +220,7 @@ public Demande supprimerAvecConservationEnBase(TYPE_DEMANDE type, Integer numDem @PutMapping(value = "/demandes/{id}") @Operation(summary= "permet de créer une nouvelle demande de modif") @SuppressWarnings("squid:S4684") - public Demande saveModif(@PathVariable Integer id, DemandeModif dem, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande saveModif(@PathVariable("id") Integer id, @RequestParam("dem") DemandeModif dem, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); dem.setNumDemande(id); return demandeModifService.save(dem); @@ -230,7 +229,7 @@ public Demande saveModif(@PathVariable Integer id, DemandeModif dem, HttpServlet @GetMapping(value = "/getTypeExemplarisationDemande/{id}") @Operation(summary = "permer de récupérer le type d'exemplarisation choisi pour une demande") - public String getTypeExemplarisationDemande(@PathVariable Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { + public String getTypeExemplarisationDemande(@PathVariable("id")Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); return demandeExempService.getTypeExempDemande(id); } @@ -238,7 +237,7 @@ public String getTypeExemplarisationDemande(@PathVariable Integer id, HttpServle @PutMapping(value = "/demandesExemp/{id}") @Operation(summary = "Mise à jour du type d'exemplarisation") - public Demande saveExemp(@PathVariable Integer id, DemandeExemp dem, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande saveExemp(@PathVariable("id")Integer id, @RequestParam("dem")DemandeExemp dem, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); dem.setNumDemande(id); return demandeExempService.save(dem); @@ -246,16 +245,16 @@ public Demande saveExemp(@PathVariable Integer id, DemandeExemp dem, HttpServlet @PutMapping(value = "/demandesRecouv/{id}") @Operation(summary = "Mise à jour d'une demande de recouvrement'") - public Demande saveRecouv(@PathVariable Integer id, DemandeRecouv dem, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande saveRecouv(@PathVariable("id")Integer id, @RequestParam("dem")DemandeRecouv dem, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); dem.setNumDemande(id); return demandeRecouvService.save(dem); } @PostMapping(value = "/majTypeExemp/{id}") - public Demande majTypeExemp(@PathVariable Integer id, TypeExemp typeExemp, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Demande majTypeExemp(@PathVariable("id")Integer id, @RequestParam("type") Integer type, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); - return demandeExempService.majTypeExemp(id, typeExemp); + return demandeExempService.majTypeExemp(id, type); } @@ -273,7 +272,7 @@ public Demande majTypeExemp(@PathVariable Integer id, TypeExemp typeExemp, HttpS */ @PostMapping("/uploadDemande") @Operation(summary = "permet de charger le fichier pour une demande") - public String uploadDemande(TYPE_DEMANDE type, MultipartFile file, Integer numDemande, HttpServletRequest request) + public String uploadDemande(@RequestParam("type")TYPE_DEMANDE type, @RequestParam("file")MultipartFile file, @RequestParam("numDemande")Integer numDemande, HttpServletRequest request) throws FileTypeException, FileCheckingException, DemandeCheckingException, IOException, UserExistException, ForbiddenException { /*autorisation d'accès utilisateur - controle*/ checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute(Constant.USER_NUM).toString()); @@ -321,7 +320,7 @@ public String uploadDemande(TYPE_DEMANDE type, MultipartFile file, Integer numDe */ @GetMapping("/simulerLigne") @Operation(summary = "permet de simuler la modification d'un exemplaire", description="pour un exemplaire donné du fichier enrichi, renvoie un tableau contenant la notice avant et après modification") - public String[] simulerLigne(TYPE_DEMANDE type, @RequestParam Integer numDemande, @RequestParam Integer numLigne, HttpServletRequest request) + public String[] simulerLigne(@RequestParam("type") TYPE_DEMANDE type, @RequestParam("numDemande") Integer numDemande, @RequestParam("numLigne") Integer numLigne, HttpServletRequest request) throws CBSException, UserExistException, ForbiddenException, ZoneException { checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute(Constant.USER_NUM).toString()); switch (type) { @@ -367,7 +366,7 @@ public String[] simulerLigne(TYPE_DEMANDE type, @RequestParam Integer numDemande */ @GetMapping("/passerEnAttente") @Operation(summary = "permet de modifier le statut de la demande pour la passer à : en attente") - public Demande passerEnAttente(TYPE_DEMANDE type, Integer numDemande, HttpServletRequest request) throws DemandeCheckingException, UserExistException, ForbiddenException { + public Demande passerEnAttente(@RequestParam("type")TYPE_DEMANDE type, @RequestParam("numDemande") Integer numDemande, HttpServletRequest request) throws DemandeCheckingException, UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute(Constant.USER_NUM).toString()); return switch (type) { case MODIF -> { @@ -399,7 +398,7 @@ public Demande passerEnAttente(TYPE_DEMANDE type, Integer numDemande, HttpServle */ @GetMapping("/archiverDemande") @Operation(summary = "permet de passer la demande en statut archivé") - public Demande archiverDemande(TYPE_DEMANDE type, Integer numDemande, HttpServletRequest request) throws + public Demande archiverDemande(@RequestParam("type") TYPE_DEMANDE type, @RequestParam("numDemande") Integer numDemande, HttpServletRequest request) throws DemandeCheckingException, UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute(Constant.USER_NUM).toString()); return switch (type) { @@ -432,7 +431,7 @@ public Demande archiverDemande(TYPE_DEMANDE type, Integer numDemande, HttpServle */ @GetMapping("/etapePrecedente/{id}") @Operation(summary = "permet de revenir à l'étape précédente dans le workflow de création d'une demande") - public Demande previousStep(TYPE_DEMANDE type, @PathVariable Integer id, HttpServletRequest request) throws + public Demande previousStep(@RequestParam("type") TYPE_DEMANDE type, @PathVariable("id") Integer id, HttpServletRequest request) throws DemandeCheckingException, IOException, UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); return switch (type) { @@ -462,7 +461,7 @@ public Demande previousStep(TYPE_DEMANDE type, @PathVariable Integer id, HttpSer */ @GetMapping("/etapeChoisie/{id}") @Operation(summary = "permet de revenir à une étape bien précise dans le workflow de création d'une demande") - public Demande chosenStep(TYPE_DEMANDE type, @PathVariable Integer id, Integer etape, HttpServletRequest request) throws + public Demande chosenStep(@RequestParam("type") TYPE_DEMANDE type, @PathVariable("id") Integer id, @RequestParam("etape") Integer etape, HttpServletRequest request) throws DemandeCheckingException, UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); return switch (type) { @@ -490,7 +489,7 @@ public Demande chosenStep(TYPE_DEMANDE type, @PathVariable Integer id, Integer e */ @GetMapping("/getNbLigneFichier/{id}") @Operation(summary = "permet de récupérer le nombre de ligne du fichier enrichi d'une demande") - public Integer getNbLigneFichier(TYPE_DEMANDE type, @PathVariable Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { + public Integer getNbLigneFichier(@RequestParam("type")TYPE_DEMANDE type, @PathVariable("id") Integer id, HttpServletRequest request) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(id, request.getAttribute(Constant.USER_NUM).toString()); Demande demande; return switch (type) { diff --git a/web/src/main/java/fr/abes/item/web/DownloadFichierRestService.java b/web/src/main/java/fr/abes/item/web/DownloadFichierRestService.java index 88158c4b..53eb78c3 100644 --- a/web/src/main/java/fr/abes/item/web/DownloadFichierRestService.java +++ b/web/src/main/java/fr/abes/item/web/DownloadFichierRestService.java @@ -37,7 +37,7 @@ public DownloadFichierRestService(FileSystemStorageService storageService, Check @GetMapping(value="/files/{filename:.+}") @Operation(summary = "permet de récupérer les fichiers relatifs à une demandeModif") public ResponseEntity downloadFile( - @PathVariable String filename, @RequestParam("id") Integer numDemande, HttpServletRequest request + @PathVariable("filename") String filename, @RequestParam("id") Integer numDemande, HttpServletRequest request ) throws UserExistException, ForbiddenException { checkAccessToServices.autoriserAccesDemandeParIln(numDemande, request.getAttribute("userNum").toString()); diff --git a/web/src/main/java/fr/abes/item/web/impl/DemandeRestService.java b/web/src/main/java/fr/abes/item/web/impl/DemandeRestService.java deleted file mode 100644 index e69de29b..00000000