From d38784b682b4d6e592f947b9c10b10534bb799de Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Tue, 4 Aug 2026 12:18:55 +0100 Subject: [PATCH] reajustement workflow --- .../rfu/parametre/ExerciceController.java | 2 + .../entities/rfu/parametre/Exercice.java | 5 +++ .../rfu/parametre/ExerciceServiceImpl.java | 11 +++++- .../integrer_situation_fiscale_parcelle.sql | 11 +++--- .../rfu/parametre/ExerciceRepository.java | 3 ++ .../user/AvoirFonctionRepository.java | 39 ++++++++++--------- 6 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/ExerciceController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/ExerciceController.java index 6f03e8c..583e216 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/ExerciceController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/ExerciceController.java @@ -38,6 +38,8 @@ public class ExerciceController { @PreAuthorize("hasAuthority('CREATE_EXERCICE')") public ResponseEntity createExercice(@RequestBody @Valid @Validated Exercice exercice) { try { + + exercice = exerciceService.createExercice(exercice); return new ResponseEntity<>( new ApiResponse<>(true, exercice, "Exercice créé avec succès."), diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Exercice.java b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Exercice.java index caa61e6..098af1c 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Exercice.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Exercice.java @@ -21,6 +21,11 @@ import java.time.LocalDate; @NoArgsConstructor @AllArgsConstructor @Where(clause = " deleted = false") +@Table( + uniqueConstraints = { + @UniqueConstraint(name = "uk_exercice_annee", columnNames = "annee") + } +) public class Exercice extends BaseEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/ExerciceServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/ExerciceServiceImpl.java index f199b22..f6c273a 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/ExerciceServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/ExerciceServiceImpl.java @@ -1,6 +1,7 @@ package io.gmss.fiscad.implementations.rfu.parametre; import io.gmss.fiscad.entities.rfu.parametre.Exercice; +import io.gmss.fiscad.exceptions.ApplicationException; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.parametre.ExerciceService; @@ -22,8 +23,14 @@ public class ExerciceServiceImpl implements ExerciceService { @Override public Exercice createExercice(Exercice exercice) throws BadRequestException { - if (exercice.getId() != null) { - throw new BadRequestException("Impossible de créer une nouvelle campgne ayant un id non null."); + if (exercice.getId() == null) { + if (exerciceRepository.existsByAnnee(exercice.getAnnee())) { + throw new ApplicationException("Un exercice existe déjà pour l'année " + exercice.getAnnee() + "."); + } + } else { + if (exerciceRepository.existsByAnneeAndIdNot(exercice.getAnnee(), exercice.getId())) { + throw new ApplicationException("Un exercice existe déjà pour l'année " + exercice.getAnnee() + "."); + } } return exerciceRepository.save(exercice); } diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/integrer_situation_fiscale_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/integrer_situation_fiscale_parcelle.sql index 5e0877e..84d1ba2 100644 --- a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/integrer_situation_fiscale_parcelle.sql +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/integrer_situation_fiscale_parcelle.sql @@ -20,8 +20,8 @@ BEGIN AS SELECT * FROM dblink - ( 'host=193.181.208.4 port=5433 dbname=sigibe_test user=sigibe_test_user password=sigibe_test_pwd', - --v_conn, + ( + v_conn, format($SQL$ SELECT exercice, @@ -55,7 +55,7 @@ BEGIN ilot, parcelle - $SQL$, '08.1')--commune_id) + $SQL$, commune_id) ) AS src ( @@ -149,10 +149,9 @@ select left(code,4) as code_commune_fiscad, code as code_quartier_fiscad,nom as from quartier; -create or replace function get_dblink_connection_sigibe() returns text +create function get_dblink_connection_sigibe() returns text language sql as $$ SELECT 'host=193.181.208.4 port=5433 dbname=sigibe_test user=sigibe_test_user password=sigibe_test_pwd'; -$$; - +$$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/ExerciceRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/ExerciceRepository.java index ba581f0..58c03d9 100644 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/ExerciceRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/ExerciceRepository.java @@ -10,5 +10,8 @@ import java.util.Optional; public interface ExerciceRepository extends JpaRepository { Optional findFirstByAnnee(int annee); + boolean existsByAnnee(Integer annee); + + boolean existsByAnneeAndIdNot(Integer annee, Long id); } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/user/AvoirFonctionRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/user/AvoirFonctionRepository.java index 9e3309d..73d5b64 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/user/AvoirFonctionRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/user/AvoirFonctionRepository.java @@ -88,25 +88,26 @@ public interface AvoirFonctionRepository extends JpaRepository findAllAvoirFonctionToDtoPageable(Pageable pageable); @Query(""" - SELECT new io.gmss.fiscad.paylaods.request.crudweb.AvoirFonctionPaylaodWeb( - af.id, - af.dateDebut, - af.dateFin, - f.id, - f.code, - f.nom, - u.id, - u.username, - u.nom, - u.prenom, - u.email, - af.titre - ) - FROM AvoirFonction af - LEFT JOIN af.user u - LEFT JOIN af.fonction f - WHERE u.id = :userId - """) + SELECT new io.gmss.fiscad.paylaods.request.crudweb.AvoirFonctionPaylaodWeb( + af.id, + af.dateDebut, + af.dateFin, + f.id, + f.code, + f.nom, + u.id, + u.username, + u.nom, + u.prenom, + u.email, + af.titre + ) + FROM AvoirFonction af + LEFT JOIN af.user u + LEFT JOIN af.fonction f + WHERE u.id = :userId + AND (af.dateFin IS NULL OR af.dateFin >= CURRENT_DATE) + """) List findAllAvoirFonctionByUserToDto(@Param("userId") Long userId); -- 2.49.1