From c5f9b94a86f74180ea0dbfb6e6e221f597c5c2a2 Mon Sep 17 00:00:00 2001 From: pierre-maraval Date: Mon, 6 Jan 2025 15:10:50 +0100 Subject: [PATCH 1/5] =?UTF-8?q?FEAT=20:=20Ajout=20param=C3=A8tre=20permett?= =?UTF-8?q?ant=20de=20lancer=20le=20batch=20sur=20un=20gros=20volume=20de?= =?UTF-8?q?=20donn=C3=A9es=20-=20mise=20en=20place=20requ=C3=AAtes=20diff?= =?UTF-8?q?=C3=A9rentes=20en=20fonction=20du=20param=C3=A8tre=20-=20ajout?= =?UTF-8?q?=20de=20la=20limite=20en=20nombre=20de=20ligne=20d'une=20demand?= =?UTF-8?q?e=20dans=20les=20properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/traitement/GetNextDemandeTasklet.java | 17 ++++++++++------- .../main/resources/application-dev.properties | 3 --- .../main/resources/application-prod.properties | 3 --- .../main/resources/application-test.properties | 3 --- batch/src/main/resources/application.properties | 4 ++++ .../core/repository/item/IDemandeExempDao.java | 14 ++++++++++---- .../core/repository/item/IDemandeModifDao.java | 7 +++++-- .../core/repository/item/IDemandeRecouvDao.java | 17 ++++++++++++----- .../core/repository/item/IDemandeSuppDao.java | 9 ++++++--- .../abes/item/core/service/IDemandeService.java | 2 +- .../core/service/impl/DemandeExempService.java | 15 ++++++++++++--- .../core/service/impl/DemandeModifService.java | 12 ++++++++++-- .../core/service/impl/DemandeRecouvService.java | 15 ++++++++++++--- .../core/service/impl/DemandeSuppService.java | 12 ++++++++++-- web/src/main/resources/application.properties | 1 + 15 files changed, 93 insertions(+), 41 deletions(-) diff --git a/batch/src/main/java/fr/abes/item/batch/traitement/GetNextDemandeTasklet.java b/batch/src/main/java/fr/abes/item/batch/traitement/GetNextDemandeTasklet.java index 5916d702..5ea11b7b 100644 --- a/batch/src/main/java/fr/abes/item/batch/traitement/GetNextDemandeTasklet.java +++ b/batch/src/main/java/fr/abes/item/batch/traitement/GetNextDemandeTasklet.java @@ -28,6 +28,7 @@ public class GetNextDemandeTasklet implements Tasklet, StepExecutionListener { private final TYPE_DEMANDE typeDemande; private final int minHour; private final int maxHour; + private boolean bigVolume = false; public GetNextDemandeTasklet(StrategyFactory strategyFactory, int minHour, int maxHour, TYPE_DEMANDE typeDemande) { this.strategyFactory = strategyFactory; @@ -36,12 +37,20 @@ public GetNextDemandeTasklet(StrategyFactory strategyFactory, int minHour, int m this.typeDemande = typeDemande; } + @Override + public void beforeStep(@NonNull StepExecution stepExecution) { + log.info(Constant.JOB_TRAITER_LIGNE_FICHIER_START + Utilitaires.getLabelTypeDemande(this.typeDemande)); + if (System.getProperty("bigVolume") != null) { + this.bigVolume = Boolean.parseBoolean(System.getProperty("bigVolume")); + } + } + @Override public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception { log.info(Constant.ENTER_EXECUTE_FROM_GETNEXTDEMANDETASKLET); try { IDemandeService service = strategyFactory.getStrategy(IDemandeService.class, this.typeDemande); - this.demande = service.getIdNextDemandeToProceed(minHour, maxHour); + this.demande = service.getIdNextDemandeToProceed(minHour, maxHour, bigVolume); if (this.demande == null) { log.info(Constant.NO_DEMANDE_TO_PROCESS); stepContribution.setExitStatus(new ExitStatus("AUCUNE DEMANDE")); @@ -61,12 +70,6 @@ public RepeatStatus execute(StepContribution stepContribution, ChunkContext chun return RepeatStatus.FINISHED; } - @Override - public void beforeStep(@NonNull StepExecution stepExecution) { - log.info(Constant.JOB_TRAITER_LIGNE_FICHIER_START + Utilitaires.getLabelTypeDemande(this.typeDemande)); - } - - @Override public ExitStatus afterStep(StepExecution stepExecution) { if (stepExecution.getExitStatus().equals(ExitStatus.COMPLETED)) { diff --git a/batch/src/main/resources/application-dev.properties b/batch/src/main/resources/application-dev.properties index 5609aef2..76f137dc 100644 --- a/batch/src/main/resources/application-dev.properties +++ b/batch/src/main/resources/application-dev.properties @@ -27,9 +27,6 @@ sudoc.port= sudoc.login= sudoc.pass= -batch.min.hour=8 -batch.max.hour=20 - # Configuration des logs logging.level.root=INFO logging.level.fr.abes.item=INFO diff --git a/batch/src/main/resources/application-prod.properties b/batch/src/main/resources/application-prod.properties index 4f797c8e..f695a1cc 100644 --- a/batch/src/main/resources/application-prod.properties +++ b/batch/src/main/resources/application-prod.properties @@ -28,9 +28,6 @@ sudoc.port= sudoc.login= sudoc.pass= -batch.min.hour=8 -batch.max.hour=20 - spring.batch.jdbc.initialize-schema=never # Configuration des logs diff --git a/batch/src/main/resources/application-test.properties b/batch/src/main/resources/application-test.properties index 5664bd82..7b35d93e 100644 --- a/batch/src/main/resources/application-test.properties +++ b/batch/src/main/resources/application-test.properties @@ -28,9 +28,6 @@ sudoc.port= sudoc.login= sudoc.pass= -batch.min.hour=8 -batch.max.hour=20 - spring.batch.jdbc.initialize-schema=never # Configuration des logs diff --git a/batch/src/main/resources/application.properties b/batch/src/main/resources/application.properties index 670861ef..547b53d3 100644 --- a/batch/src/main/resources/application.properties +++ b/batch/src/main/resources/application.properties @@ -9,6 +9,10 @@ mail.admin=item@abes.fr files.upload.path=/workdir/ files.upload.statistiques.path=/stat/ +batch.min.hour=8 +batch.max.hour=20 +batch.bigVolume.limit=5000 + # Configuration des logs logging.config=classpath:log4j2.xml spring.main.banner-mode=off 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 08e0037b..11ae5279 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 @@ -18,11 +18,17 @@ @Repository @ItemConfiguration public interface IDemandeExempDao extends JpaRepository { - @Query("select d from DemandeExemp d where d.etatDemande.numEtat = 5 order by d.dateModification asc") - List getNextDemandeToProceed(); + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); - @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 d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + List getDemandesEnAttentePetitVolume(@Param("limite") int limite); + + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) > :limite order by d.dateModification asc") + List getDemandesToProceedWithoutDATGrosVolume(@Param("limite") int limite); + + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) <= :limite order by d.dateModification asc") + List getDemandesToProceedWithoutDATPetitVolume(@Param("limite") int limite); @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); 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 8ca1d99e..b6e45079 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 @@ -37,8 +37,11 @@ public interface IDemandeModifDao extends JpaRepository { @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") - List getNextDemandeToProceed(); + @Query("select d from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); + + @Query("select d from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + List getDemandesEnAttentePetitVolume(@Param("limite") int limite); @Query("select d from DemandeModif d where d.etatDemande.numEtat = 10 order by d.dateModification asc") List getListDemandesToClean(); 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 e310ae58..9b44ceab 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 @@ -12,15 +12,22 @@ @Repository @ItemConfiguration public interface IDemandeRecouvDao extends JpaRepository { - @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 5 order by d.dateModification asc") - List getNextDemandeToProceed(); + + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); + + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + List getDemandesEnAttentePetitVolume(@Param("limite") int limite); + + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) > :limite order by d.dateModification asc") + List getDemandesToProceedWithoutDATGrosVolume(@Param("limite") int limite); + + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) <= :limite order by d.dateModification asc") + List getDemandesToProceedWithoutDATPetitVolume(@Param("limite") int limite); @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 10 order by d.dateModification asc") List getNextDemandeToClean(); - @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' order by d.dateModification asc") - List getNextDemandeToProceedWithoutDAT(); - @Query("select d from DemandeRecouv d where d.iln = :iln and d.etatDemande.numEtat not in (9, 10)") List getActiveDemandesRecouvForUserExceptedPreparedStatus(@Param("iln") String iln); 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 7065a7fc..0bd542f3 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 @@ -3,13 +3,11 @@ import fr.abes.item.core.configuration.ItemConfiguration; import fr.abes.item.core.dto.DemandeDto; import fr.abes.item.core.entities.item.DemandeSupp; -import fr.abes.item.core.entities.item.EtatDemande; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import javax.validation.constraints.NotNull; import java.util.List; @Repository @@ -31,7 +29,11 @@ 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 = 9 GROUP BY d") List getAllArchivedDemandesSuppExtended(); - List findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Integer id); + @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); + + @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + List getDemandesEnAttentePetitVolume(@Param("limite") int limite); @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") List getNextDemandeToArchive(); @@ -53,4 +55,5 @@ public interface IDemandeSuppDao extends JpaRepository { boolean existsDemandeSuppByEtatDemande_Id(Integer etatDemande); + } 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 bd09c7db..959751d4 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 @@ -36,7 +36,7 @@ public interface IDemandeService { List getActiveDemandesForUser(String iln); - Demande getIdNextDemandeToProceed(int minHour, int maxHour); + Demande getIdNextDemandeToProceed(int minHour, int maxHour, boolean bigVolume); String getInfoHeaderFichierResultat(Demande demande, LocalDateTime dateDebut); 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 a142857d..757478b2 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 @@ -51,6 +51,9 @@ public class DemandeExempService extends DemandeService implements IDemandeServi @Value("${files.upload.path}") private String uploadPath; + @Value("${batch.bigVolume.limit}") + private int limite; + public DemandeExempService(ILibProfileDao libProfileDao, IDemandeExempDao demandeExempDao, FileSystemStorageService storageService, LigneFichierExempService ligneFichierExempService, ReferenceService referenceService, JournalService journalService, TraitementService traitementService, UtilisateurService utilisateurService, IZonesAutoriseesDao zonesAutoriseesDao, ILigneFichierExempDao ligneFichierExempDao, @Qualifier("itemEntityManager") EntityManager entityManager) { super(libProfileDao, entityManager); this.demandeExempDao = demandeExempDao; @@ -335,14 +338,20 @@ public Demande closeDemande(Demande demande) throws DemandeCheckingException { * @return demande récupérée dans la base */ @Override - public Demande getIdNextDemandeToProceed(int minHour, int maxHour) { + public Demande getIdNextDemandeToProceed(int minHour, int maxHour, boolean bigVolume) { int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); List listeDemandes; if (currentHour >= minHour && currentHour < maxHour) { - listeDemandes = demandeExempDao.getNextDemandeToProceedWithoutDAT(); + if (bigVolume) + listeDemandes = demandeExempDao.getDemandesToProceedWithoutDATGrosVolume(limite); + else + listeDemandes = demandeExempDao.getDemandesToProceedWithoutDATPetitVolume(limite); } else { - listeDemandes = demandeExempDao.getNextDemandeToProceed(); + if (bigVolume) + listeDemandes = demandeExempDao.getDemandesEnAttenteGrosVolume(limite); + else + listeDemandes = demandeExempDao.getDemandesEnAttentePetitVolume(limite); } if (!listeDemandes.isEmpty()) return listeDemandes.get(0); 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 5e8d8c97..e7254c14 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 @@ -47,6 +47,9 @@ public class DemandeModifService extends DemandeService implements IDemandeServi @Value("${files.upload.path}") private String uploadPath; + @Value("${batch.bigVolume.limit}") + private int limite; + private FichierInitial fichierInit; private FichierPrepare fichierPrepare; @@ -360,8 +363,13 @@ public Demande changeState(Demande demande, int etatDemande) throws DemandeCheck } @Override - public Demande getIdNextDemandeToProceed(int minHour, int maxHour) { - List demandes = demandeModifDao.getNextDemandeToProceed(); + public Demande getIdNextDemandeToProceed(int minHour, int maxHour, boolean bigVolume) { + List demandes; + if (bigVolume) { + demandes = demandeModifDao.getDemandesEnAttenteGrosVolume(limite); + } else { + demandes = demandeModifDao.getDemandesEnAttentePetitVolume(limite); + } if (!demandes.isEmpty()) return demandes.get(0); return null; 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 f96ea687..590b359f 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 @@ -44,6 +44,9 @@ public class DemandeRecouvService extends DemandeService implements IDemandeServ @Value("${files.upload.path}") private String uploadPath; + @Value("${batch.bigVolume.limit}") + private int limite; + public DemandeRecouvService(ILibProfileDao libProfileDao, IDemandeRecouvDao demandeRecouvDao, FileSystemStorageService storageService, ReferenceService referenceService, LigneFichierRecouvService ligneFichierRecouvService, UtilisateurService utilisateurService, @Qualifier("itemEntityManager") EntityManager entityManager, JournalService journalService) { super(libProfileDao, entityManager); this.demandeRecouvDao = demandeRecouvDao; @@ -167,13 +170,19 @@ public Demande closeDemande(Demande demande) throws DemandeCheckingException { } @Override - public Demande getIdNextDemandeToProceed(int minHour, int maxHour) { + public Demande getIdNextDemandeToProceed(int minHour, int maxHour, boolean bigVolume) { int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); List listeDemandes; if (currentHour >= minHour && currentHour <= maxHour) { - listeDemandes = demandeRecouvDao.getNextDemandeToProceedWithoutDAT(); + if (bigVolume) + listeDemandes = demandeRecouvDao.getDemandesEnAttenteGrosVolume(limite); + else + listeDemandes = demandeRecouvDao.getDemandesEnAttentePetitVolume(limite); } else { - listeDemandes = demandeRecouvDao.getNextDemandeToProceed(); + if (bigVolume) + listeDemandes = demandeRecouvDao.getDemandesToProceedWithoutDATGrosVolume(limite); + else + listeDemandes = demandeRecouvDao.getDemandesToProceedWithoutDATPetitVolume(limite); } if (!listeDemandes.isEmpty()) return listeDemandes.get(0); 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 e970f37f..db6c8fb3 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 @@ -52,6 +52,9 @@ public class DemandeSuppService extends DemandeService implements IDemandeServic @Value("${files.upload.path}") private String uploadPath; + @Value("${batch.bigVolume.limit}") + private int limite; + public DemandeSuppService(ILibProfileDao libProfileDao, IDemandeSuppDao demandeSuppDao, FileSystemStorageService storageService, ReferenceService referenceService, UtilisateurService utilisateurService, Ppntoepn procStockeePpnToEpn, Epntoppn procStockeeEpnToPpn, LigneFichierSuppService ligneFichierSuppService, @Qualifier("itemEntityManager") EntityManager entityManager, JournalService journalService) { super(libProfileDao, entityManager); this.demandeSuppDao = demandeSuppDao; @@ -249,8 +252,13 @@ public List getActiveDemandesForUser(String iln) { } @Override - public Demande getIdNextDemandeToProceed(int minHour, int maxHour) { - List demandesSupp = this.demandeSuppDao.findDemandeSuppsByEtatDemande_IdOrderByDateModificationAsc(Constant.ETATDEM_ATTENTE); + public Demande getIdNextDemandeToProceed(int minHour, int maxHour, boolean bigVolume) { + List demandesSupp; + if (bigVolume) { + demandesSupp = this.demandeSuppDao.getDemandesEnAttenteGrosVolume(limite); + } else { + demandesSupp = this.demandeSuppDao.getDemandesEnAttentePetitVolume(limite); + } return demandesSupp.isEmpty() ? null : demandesSupp.get(0); } diff --git a/web/src/main/resources/application.properties b/web/src/main/resources/application.properties index a757f4e7..4b264560 100644 --- a/web/src/main/resources/application.properties +++ b/web/src/main/resources/application.properties @@ -14,6 +14,7 @@ spring.jpa.open-in-view=false batch.min.hour=8 batch.max.hour=20 +batch.bigVolume.limit=5000 # Configuration des logs logging.config=classpath:log4j2.xml From 8078b66c71813b7bd7df1df2988e05aa898a0033 Mon Sep 17 00:00:00 2001 From: pierre-maraval Date: Tue, 7 Jan 2025 15:27:22 +0100 Subject: [PATCH 2/5] =?UTF-8?q?FIX=20:=20update=20accesCbs=20&=20ajout=20g?= =?UTF-8?q?roup=20by=20dans=20requ=C3=AAte=20jpql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../abes/item/core/repository/item/IDemandeExempDao.java | 8 ++++---- .../abes/item/core/repository/item/IDemandeModifDao.java | 4 ++-- .../abes/item/core/repository/item/IDemandeRecouvDao.java | 8 ++++---- .../abes/item/core/repository/item/IDemandeSuppDao.java | 4 ++-- pom.xml | 2 +- 5 files changed, 13 insertions(+), 13 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 11ae5279..626a768f 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 @@ -18,16 +18,16 @@ @Repository @ItemConfiguration public interface IDemandeExempDao extends JpaRepository { - @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite order by d.dateModification") List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite order by d.dateModification") List getDemandesEnAttentePetitVolume(@Param("limite") int limite); - @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) > :limite order by d.dateModification asc") + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' group by d having count(l) > :limite order by d.dateModification asc") List getDemandesToProceedWithoutDATGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) <= :limite order by d.dateModification asc") + @Query("select d from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' group by d having count(l) <= :limite order by d.dateModification asc") List getDemandesToProceedWithoutDATPetitVolume(@Param("limite") int limite); @Query("select e from TypeExemp e where e.numTypeExemp in (select d.typeExemp.numTypeExemp from DemandeExemp d where d.numDemande = :numDemande)") 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 b6e45079..9bfcb4e8 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 @@ -37,10 +37,10 @@ public interface IDemandeModifDao extends JpaRepository { @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 join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + @Query("select d from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite order by d.dateModification") List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + @Query("select d from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite order by d.dateModification") List getDemandesEnAttentePetitVolume(@Param("limite") int limite); @Query("select d from DemandeModif d where d.etatDemande.numEtat = 10 order by d.dateModification asc") 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 9b44ceab..881bc296 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 @@ -13,16 +13,16 @@ @ItemConfiguration public interface IDemandeRecouvDao extends JpaRepository { - @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite order by d.dateModification") List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite order by d.dateModification") List getDemandesEnAttentePetitVolume(@Param("limite") int limite); - @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) > :limite order by d.dateModification asc") + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' group by d having count(l) > :limite order by d.dateModification asc") List getDemandesToProceedWithoutDATGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' having count(l) <= :limite order by d.dateModification asc") + @Query("select d from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 and d.indexRecherche.code != 'DAT' group by d having count(l) <= :limite order by d.dateModification asc") List getDemandesToProceedWithoutDATPetitVolume(@Param("limite") int limite); @Query("select d from DemandeRecouv d where d.etatDemande.numEtat = 10 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 0bd542f3..707978f1 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 @@ -29,10 +29,10 @@ 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 = 9 GROUP BY d") List getAllArchivedDemandesSuppExtended(); - @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 having count(l) > :limite order by d.dateModification") + @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite order by d.dateModification") List getDemandesEnAttenteGrosVolume(@Param("limite") int limite); - @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 having count(l) <= :limite order by d.dateModification") + @Query("select d from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite order by d.dateModification") List getDemandesEnAttentePetitVolume(@Param("limite") int limite); @Query("select d from DemandeSupp d where d.etatDemande.numEtat = 7 and (day(current_date) - day(d.dateModification)) > 90 order by d.dateModification asc") diff --git a/pom.xml b/pom.xml index 70c2b13b..9e4d6fd6 100644 --- a/pom.xml +++ b/pom.xml @@ -77,7 +77,7 @@ fr.abes.api-communes AccesCbs - 2.5.77 + 2.5.78 From 20eabfa641c28795bdd4255858ba31f1f232abd6 Mon Sep 17 00:00:00 2001 From: SamuelQuetin Date: Wed, 8 Jan 2025 09:35:04 +0100 Subject: [PATCH 3/5] ITEM-449 Ajout check demandes en attente big volume --- .../abes/item/core/repository/item/IDemandeExempDao.java | 6 ++++++ .../abes/item/core/repository/item/IDemandeModifDao.java | 5 +++++ .../abes/item/core/repository/item/IDemandeRecouvDao.java | 6 ++++++ .../abes/item/core/repository/item/IDemandeSuppDao.java | 4 ++++ .../java/fr/abes/item/core/service/IDemandeService.java | 2 ++ .../abes/item/core/service/impl/DemandeExempService.java | 8 ++++++++ .../abes/item/core/service/impl/DemandeModifService.java | 8 ++++++++ .../abes/item/core/service/impl/DemandeRecouvService.java | 8 ++++++++ .../abes/item/core/service/impl/DemandeSuppService.java | 8 ++++++++ .../main/java/fr/abes/item/web/DemandeRestService.java | 7 +++++-- 10 files changed, 60 insertions(+), 2 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 626a768f..49de0449 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 @@ -61,4 +61,10 @@ public interface IDemandeExempDao extends JpaRepository { boolean existsDemandeExempByEtatDemande_Id(Integer etatDemande); + @Query("select count(d) > 0 from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") + boolean existsDemandeExempByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); + + @Query("select count(d) > 0 from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") + boolean existsDemandeExempByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); + } 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 9bfcb4e8..56c3d18d 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 @@ -59,4 +59,9 @@ public interface IDemandeModifDao extends JpaRepository { boolean existsDemandeModifByEtatDemande_Id(Integer etatDemande); + @Query("select count(d) > 0 from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") + boolean existsDemandeModifByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); + + @Query("select count(d) > 0 from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") + boolean existsDemandeModifByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 881bc296..a72e34c3 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 @@ -58,4 +58,10 @@ public interface IDemandeRecouvDao extends JpaRepository List getNextDemandeToDelete(); boolean existsDemandeRecouvByEtatDemande_Id(Integer etatDemande); + + @Query("select count(d) > 0 from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") + boolean existsDemandeRecouvByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); + + @Query("select count(d) > 0 from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") + boolean existsDemandeRecouvByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 707978f1..e22bfbe4 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 @@ -55,5 +55,9 @@ public interface IDemandeSuppDao extends JpaRepository { boolean existsDemandeSuppByEtatDemande_Id(Integer etatDemande); + @Query("select count(d) > 0 from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") + boolean existsDemandeSuppByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); + @Query("select count(d) > 0 from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") + boolean existsDemandeSuppByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 959751d4..4fd03246 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 @@ -61,4 +61,6 @@ public interface IDemandeService { void refreshEntity(Demande demande); Boolean checkDemandesEnAttente(); + + Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume); } 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 757478b2..f45e717e 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 @@ -479,7 +479,15 @@ public void cleanLignesFichierDemande(Demande demande) { ligneFichierService.deleteByDemande(demandeExemp); } + @Override public Boolean checkDemandesEnAttente(){ return demandeExempDao.existsDemandeExempByEtatDemande_Id(Constant.ETATDEM_ATTENTE); } + + @Override + public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { + return bigVolume ? + demandeExempDao.existsDemandeExempByEtatDemande_EnAttente_BigVolume(limite) : + demandeExempDao.existsDemandeExempByEtatDemande_EnAttente_SmallVolume(limite); + } } 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 e7254c14..3b6e5060 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 @@ -549,7 +549,15 @@ public void refreshEntity(Demande demande) { entityManager.refresh(demande); } + @Override public Boolean checkDemandesEnAttente(){ return demandeModifDao.existsDemandeModifByEtatDemande_Id(Constant.ETATDEM_ATTENTE); } + + @Override + public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { + return bigVolume ? + demandeModifDao.existsDemandeModifByEtatDemande_EnAttente_BigVolume(limite) : + demandeModifDao.existsDemandeModifByEtatDemande_EnAttente_SmallVolume(limite); + } } 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 590b359f..5920b032 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 @@ -368,7 +368,15 @@ public void refreshEntity(Demande demande) { entityManager.refresh(demande); } + @Override public Boolean checkDemandesEnAttente(){ return demandeRecouvDao.existsDemandeRecouvByEtatDemande_Id(Constant.ETATDEM_ATTENTE); } + + @Override + public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { + return bigVolume ? + demandeRecouvDao.existsDemandeRecouvByEtatDemande_EnAttente_BigVolume(limite) : + demandeRecouvDao.existsDemandeRecouvByEtatDemande_EnAttente_SmallVolume(limite); + } } 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 db6c8fb3..e71bffa2 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 @@ -422,7 +422,15 @@ public void cleanLignesFichierDemande(Demande demande) { ligneFichierService.deleteByDemande(demandeSupp); } + @Override public Boolean checkDemandesEnAttente(){ return demandeSuppDao.existsDemandeSuppByEtatDemande_Id(Constant.ETATDEM_ATTENTE); } + + @Override + public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { + return bigVolume ? + demandeSuppDao.existsDemandeSuppByEtatDemande_EnAttente_BigVolume(limite) : + demandeSuppDao.existsDemandeSuppByEtatDemande_EnAttente_SmallVolume(limite); + } } 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 6e67fecb..2eb6d1cf 100644 --- a/web/src/main/java/fr/abes/item/web/DemandeRestService.java +++ b/web/src/main/java/fr/abes/item/web/DemandeRestService.java @@ -376,9 +376,12 @@ public DemandeWebDto restaurerDemande(@PathVariable("type") TYPE_DEMANDE type, @ return builder.buildDemandeDto(service.restaurerDemande(service.findById(id)), type); } - @GetMapping("/demandes/en-attente/{type}") - public Boolean checkDemandesEnAttente(@PathVariable("type") TYPE_DEMANDE type){ + @GetMapping("/demandes/en-attente/{type}/{bigVolume}") + public Boolean checkDemandesEnAttente(@PathVariable("type") TYPE_DEMANDE type, @PathVariable Optional bigVolume){ IDemandeService service = strategy.getStrategy(IDemandeService.class, type); + if(bigVolume.isPresent()){ + return service.checkDemandesEnAttenteBigVolume(bigVolume.get()); + } return service.checkDemandesEnAttente(); } } From 4e376415837c30382f36e2f74b9fd671311433c4 Mon Sep 17 00:00:00 2001 From: SamuelQuetin Date: Wed, 8 Jan 2025 10:30:22 +0100 Subject: [PATCH 4/5] ITEM-448 Fix ws --- .../abes/item/core/repository/item/IDemandeExempDao.java | 7 ------- .../abes/item/core/repository/item/IDemandeModifDao.java | 6 ------ .../abes/item/core/repository/item/IDemandeRecouvDao.java | 6 ------ .../fr/abes/item/core/repository/item/IDemandeSuppDao.java | 6 ------ .../abes/item/core/service/impl/DemandeExempService.java | 4 ++-- .../abes/item/core/service/impl/DemandeModifService.java | 4 ++-- .../abes/item/core/service/impl/DemandeRecouvService.java | 4 ++-- .../fr/abes/item/core/service/impl/DemandeSuppService.java | 4 ++-- web/src/main/java/fr/abes/item/web/DemandeRestService.java | 4 ++-- 9 files changed, 10 insertions(+), 35 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 49de0449..84db7d6c 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 @@ -60,11 +60,4 @@ public interface IDemandeExempDao extends JpaRepository { List getNextDemandeToDelete(); boolean existsDemandeExempByEtatDemande_Id(Integer etatDemande); - - @Query("select count(d) > 0 from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") - boolean existsDemandeExempByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); - - @Query("select count(d) > 0 from DemandeExemp d join d.ligneFichierExemps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") - boolean existsDemandeExempByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); - } 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 56c3d18d..c09ed5bd 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 @@ -58,10 +58,4 @@ public interface IDemandeModifDao extends JpaRepository { List getNextDemandeToDelete(); boolean existsDemandeModifByEtatDemande_Id(Integer etatDemande); - - @Query("select count(d) > 0 from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") - boolean existsDemandeModifByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); - - @Query("select count(d) > 0 from DemandeModif d join d.ligneFichierModifs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") - boolean existsDemandeModifByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 a72e34c3..881bc296 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 @@ -58,10 +58,4 @@ public interface IDemandeRecouvDao extends JpaRepository List getNextDemandeToDelete(); boolean existsDemandeRecouvByEtatDemande_Id(Integer etatDemande); - - @Query("select count(d) > 0 from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") - boolean existsDemandeRecouvByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); - - @Query("select count(d) > 0 from DemandeRecouv d join d.ligneFichierRecouvs l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") - boolean existsDemandeRecouvByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 e22bfbe4..79102e3a 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 @@ -54,10 +54,4 @@ public interface IDemandeSuppDao extends JpaRepository { int getNbLigneFichierSuccessByDemande(@Param("numDemande") Integer numDemande); boolean existsDemandeSuppByEtatDemande_Id(Integer etatDemande); - - @Query("select count(d) > 0 from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) > :limite") - boolean existsDemandeSuppByEtatDemande_EnAttente_BigVolume(@Param("limite") Integer limite); - - @Query("select count(d) > 0 from DemandeSupp d join d.ligneFichierSupps l where d.etatDemande.numEtat = 5 group by d having count(l) <= :limite") - boolean existsDemandeSuppByEtatDemande_EnAttente_SmallVolume(@Param("limite") Integer limite); } 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 f45e717e..a5f0fb8c 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 @@ -487,7 +487,7 @@ public Boolean checkDemandesEnAttente(){ @Override public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { return bigVolume ? - demandeExempDao.existsDemandeExempByEtatDemande_EnAttente_BigVolume(limite) : - demandeExempDao.existsDemandeExempByEtatDemande_EnAttente_SmallVolume(limite); + !demandeExempDao.getDemandesEnAttenteGrosVolume(limite).isEmpty() : + !demandeExempDao.getDemandesEnAttentePetitVolume(limite).isEmpty(); } } 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 3b6e5060..663317fd 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 @@ -557,7 +557,7 @@ public Boolean checkDemandesEnAttente(){ @Override public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { return bigVolume ? - demandeModifDao.existsDemandeModifByEtatDemande_EnAttente_BigVolume(limite) : - demandeModifDao.existsDemandeModifByEtatDemande_EnAttente_SmallVolume(limite); + !demandeModifDao.getDemandesEnAttenteGrosVolume(limite).isEmpty() : + !demandeModifDao.getDemandesEnAttentePetitVolume(limite).isEmpty(); } } 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 5920b032..38bb3a6a 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 @@ -376,7 +376,7 @@ public Boolean checkDemandesEnAttente(){ @Override public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { return bigVolume ? - demandeRecouvDao.existsDemandeRecouvByEtatDemande_EnAttente_BigVolume(limite) : - demandeRecouvDao.existsDemandeRecouvByEtatDemande_EnAttente_SmallVolume(limite); + !demandeRecouvDao.getDemandesEnAttenteGrosVolume(limite).isEmpty() : + !demandeRecouvDao.getDemandesEnAttentePetitVolume(limite).isEmpty(); } } 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 e71bffa2..842eb885 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 @@ -430,7 +430,7 @@ public Boolean checkDemandesEnAttente(){ @Override public Boolean checkDemandesEnAttenteBigVolume(Boolean bigVolume) { return bigVolume ? - demandeSuppDao.existsDemandeSuppByEtatDemande_EnAttente_BigVolume(limite) : - demandeSuppDao.existsDemandeSuppByEtatDemande_EnAttente_SmallVolume(limite); + !demandeSuppDao.getDemandesEnAttenteGrosVolume(limite).isEmpty() : + !demandeSuppDao.getDemandesEnAttentePetitVolume(limite).isEmpty(); } } 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 2eb6d1cf..7f028ee3 100644 --- a/web/src/main/java/fr/abes/item/web/DemandeRestService.java +++ b/web/src/main/java/fr/abes/item/web/DemandeRestService.java @@ -376,8 +376,8 @@ public DemandeWebDto restaurerDemande(@PathVariable("type") TYPE_DEMANDE type, @ return builder.buildDemandeDto(service.restaurerDemande(service.findById(id)), type); } - @GetMapping("/demandes/en-attente/{type}/{bigVolume}") - public Boolean checkDemandesEnAttente(@PathVariable("type") TYPE_DEMANDE type, @PathVariable Optional bigVolume){ + @GetMapping("/demandes/en-attente/{type}") + public Boolean checkDemandesEnAttente(@PathVariable("type") TYPE_DEMANDE type, @RequestParam("bigVolume") Optional bigVolume){ IDemandeService service = strategy.getStrategy(IDemandeService.class, type); if(bigVolume.isPresent()){ return service.checkDemandesEnAttenteBigVolume(bigVolume.get()); From d333970672898c38ed5b2e8ce770f6dbe8187103 Mon Sep 17 00:00:00 2001 From: SamuelQuetin Date: Wed, 8 Jan 2025 10:30:50 +0100 Subject: [PATCH 5/5] ITEM-449 Ajout condition pour avoir deux canaux de traitement --- .../itemBatchTraiterLigneFichierExemp.sh | 19 +++++++++++++++---- .../itemBatchTraiterLigneFichierModif.sh | 19 +++++++++++++++---- .../itemBatchTraiterLigneFichierRecouv.sh | 19 +++++++++++++++---- .../batch/itemBatchTraiterLigneFichierSupp.sh | 19 +++++++++++++++---- 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/docker/batch/itemBatchTraiterLigneFichierExemp.sh b/docker/batch/itemBatchTraiterLigneFichierExemp.sh index 0f01d61f..30a31e4a 100644 --- a/docker/batch/itemBatchTraiterLigneFichierExemp.sh +++ b/docker/batch/itemBatchTraiterLigneFichierExemp.sh @@ -1,11 +1,22 @@ # dans la cron tab : # * * * * * /home/batch/item/current/bin/itemBatchTraiterLigneFichierExemp.sh > /dev/null 2>&1 -url="${URL_BACK}/demandes/en-attente/EXEMP" +urlIsEnAttente="${URL_BACK}/demandes/en-attente/EXEMP" +urlIsEnAttenteBigVolume="$urlIsEnAttente?bigVolume=true" +urlIsEnAttenteSmallVolume="$urlIsEnAttente?bigVolume=false" -isEnAttente=$(curl -s $url) +isEnAttente=$(curl -s $urlIsEnAttente) LANG=fr_FR.UTF-8 -if [[ $isEnAttente == 'true' && $(pgrep -cf "traiterLigneFichierExemp") < 2 ]]; +if [[ $isEnAttente == 'true' ]]; then - java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierExemp --server.port=0 + isEnAttenteBigVolume=$(curl -s $urlIsEnAttenteBigVolume) + isEnAttenteSmallVolume=$(curl -s $urlIsEnAttenteSmallVolume) + if [[ $isEnAttenteBigVolume == 'true' && $(pgrep -cf "traiterLigneFichierExemp --bigVolume=true") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierExemp --bigVolume=true --server.port=0 + fi + if [[ $isEnAttenteSmallVolume == 'true' && $(pgrep -cf "traiterLigneFichierExemp --bigVolume=false") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierExemp --bigVolume=false --server.port=0 + fi fi diff --git a/docker/batch/itemBatchTraiterLigneFichierModif.sh b/docker/batch/itemBatchTraiterLigneFichierModif.sh index 07d4c056..c763d9b5 100644 --- a/docker/batch/itemBatchTraiterLigneFichierModif.sh +++ b/docker/batch/itemBatchTraiterLigneFichierModif.sh @@ -1,11 +1,22 @@ # dans la cron tab : # * * * * * /home/batch/item/current/bin/itemBatchTraiterLigneFichierModif.sh > /dev/null 2>&1 -url="${URL_BACK}/demandes/en-attente/MODIF" +urlIsEnAttente="${URL_BACK}/demandes/en-attente/MODIF" +urlIsEnAttenteBigVolume="$urlIsEnAttente?bigVolume=true" +urlIsEnAttenteSmallVolume="$urlIsEnAttente?bigVolume=false" -isEnAttente=$(curl -s $url) +isEnAttente=$(curl -s $urlIsEnAttente) LANG=fr_FR.UTF-8 -if [[ $isEnAttente == 'true' && $(pgrep -cf "traiterLigneFichierModif") < 2 ]]; +if [[ $isEnAttente == 'true' ]]; then - java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierModif --server.port=0 + isEnAttenteBigVolume=$(curl -s $urlIsEnAttenteBigVolume) + isEnAttenteSmallVolume=$(curl -s $urlIsEnAttenteSmallVolume) + if [[ $isEnAttenteBigVolume == 'true' && $(pgrep -cf "traiterLigneFichierModif --bigVolume=true") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierModif --bigVolume=true --server.port=0 + fi + if [[ $isEnAttenteSmallVolume == 'true' && $(pgrep -cf "traiterLigneFichierModif --bigVolume=false") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierModif --bigVolume=false --server.port=0 + fi fi diff --git a/docker/batch/itemBatchTraiterLigneFichierRecouv.sh b/docker/batch/itemBatchTraiterLigneFichierRecouv.sh index f2fd6c82..a0906b31 100644 --- a/docker/batch/itemBatchTraiterLigneFichierRecouv.sh +++ b/docker/batch/itemBatchTraiterLigneFichierRecouv.sh @@ -1,11 +1,22 @@ # dans la cron tab : # * * * * * /home/batch/item/current/bin/itemBatchTraiterLigneFichierRecouv.sh > /dev/null 2>&1 -url="${URL_BACK}/demandes/en-attente/RECOUV" +urlIsEnAttente="${URL_BACK}/demandes/en-attente/RECOUV" +urlIsEnAttenteBigVolume="$urlIsEnAttente?bigVolume=true" +urlIsEnAttenteSmallVolume="$urlIsEnAttente?bigVolume=false" -isEnAttente=$(curl -s $url) +isEnAttente=$(curl -s $urlIsEnAttente) LANG=fr_FR.UTF-8 -if [[ $isEnAttente == 'true' && $(pgrep -cf "traiterLigneFichierRecouv") < 2 ]]; +if [[ $isEnAttente == 'true' ]]; then - java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierRecouv --server.port=0 + isEnAttenteBigVolume=$(curl -s $urlIsEnAttenteBigVolume) + isEnAttenteSmallVolume=$(curl -s $urlIsEnAttenteSmallVolume) + if [[ $isEnAttenteBigVolume == 'true' && $(pgrep -cf "traiterLigneFichierRecouv --bigVolume=true") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierRecouv --bigVolume=true --server.port=0 + fi + if [[ $isEnAttenteSmallVolume == 'true' && $(pgrep -cf "traiterLigneFichierRecouv --bigVolume=false") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierRecouv --bigVolume=false --server.port=0 + fi fi diff --git a/docker/batch/itemBatchTraiterLigneFichierSupp.sh b/docker/batch/itemBatchTraiterLigneFichierSupp.sh index 5d8f4b31..92d11f95 100644 --- a/docker/batch/itemBatchTraiterLigneFichierSupp.sh +++ b/docker/batch/itemBatchTraiterLigneFichierSupp.sh @@ -1,12 +1,23 @@ # dans la cron tab : # * * * * * /home/batch/item/current/bin/itemBatchTraiterLigneFichierSupp.sh > /dev/null 2>&1 -url="${URL_BACK}/demandes/en-attente/SUPP" +urlIsEnAttente="${URL_BACK}/demandes/en-attente/SUPP" +urlIsEnAttenteBigVolume="$urlIsEnAttente?bigVolume=true" +urlIsEnAttenteSmallVolume="$urlIsEnAttente?bigVolume=false" -isEnAttente=$(curl -s $url) +isEnAttente=$(curl -s $urlIsEnAttente) LANG=fr_FR.UTF-8 -if [[ $isEnAttente == 'true' && $(pgrep -cf "traiterLigneFichierSupp") < 2 ]]; +if [[ $isEnAttente == 'true' ]]; then - java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierSupp --server.port=0 + isEnAttenteBigVolume=$(curl -s $urlIsEnAttenteBigVolume) + isEnAttenteSmallVolume=$(curl -s $urlIsEnAttenteSmallVolume) + if [[ $isEnAttenteBigVolume == 'true' && $(pgrep -cf "traiterLigneFichierSupp --bigVolume=true") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierSupp --bigVolume=true --server.port=0 + fi + if [[ $isEnAttenteSmallVolume == 'true' && $(pgrep -cf "traiterLigneFichierSupp --bigVolume=false") < 1 ]]; + then + java -XX:MaxRAMPercentage=80 org.springframework.boot.loader.JarLauncher --spring.batch.job.name=traiterLigneFichierSupp --bigVolume=false --server.port=0 + fi fi