diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java index 175a003..a53f9cb 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java @@ -163,6 +163,31 @@ public class DonneesImpositionTfuController { } } + + @GetMapping("/all-page/by-imposition-id/{impositionId}") + public ResponseEntity getAllDonneesImpositionTfuByImpositionIdPaged(@PathVariable Long impositionId, @RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, donneesImpositionTfuService.getDonneesFiscalesByImpositionTfuIdPageable(impositionId, pageable), "Liste des caractéristiques chargée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + @GetMapping("/id/{id}") public ResponseEntity getDonneesImpositionTfuById(@PathVariable Long id) { try { diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/BaremRfuNonBatiController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/BaremRfuNonBatiController.java index 1f8b3e7..9c19476 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/BaremRfuNonBatiController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/BaremRfuNonBatiController.java @@ -35,7 +35,7 @@ public class BaremRfuNonBatiController { @PostMapping("/create") - public ResponseEntity createBaremRfuNonBati(@RequestBody @Valid @Validated BaremRfuNonBatiPayloadWeb baremRfuNonBatiPayloadWeb) { + public ResponseEntity createBaremRfuNonBati(@RequestBody BaremRfuNonBatiPayloadWeb baremRfuNonBatiPayloadWeb) { try { baremRfuNonBatiPayloadWeb = baremRfuNonBatiService.createBaremRfuNonBati(baremRfuNonBatiPayloadWeb); return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java b/src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java index 425d3e9..a202f86 100644 --- a/src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java +++ b/src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java @@ -97,6 +97,7 @@ public class ParcelleGeom extends BaseEntity implements Serializable { @Enumerated(EnumType.STRING) private SourceDonnee sourceDonnees; private String observations; + @Enumerated(EnumType.STRING) private StatutParcelle statutParcelle; private Long uploadId; diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java index 8c72c1e..ead1ff8 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java @@ -8,6 +8,8 @@ import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.infocad.metier.Enquete; import io.gmss.fiscad.entities.infocad.metier.Parcelle; import io.gmss.fiscad.entities.infocad.metier.Tpe; +import io.gmss.fiscad.entities.infocad.parametre.Structure; +import io.gmss.fiscad.entities.rfu.parametre.ZoneRfu; import io.gmss.fiscad.enums.NatureImpot; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -95,9 +97,19 @@ public class DonneesImpositionTfu extends BaseEntity implements Serializable { @JsonDeserialize(using = LocalDateDeserializer.class) private LocalDate dateEnquete; private Long enqueteId; - private Long structureId; + //private Long structureId; + @JsonIgnore + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "structure_id") + private Structure structure ; + private Long secteurId; - private Long zoneRfuId; + + //private Long zoneRfuId; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "zone_rfu_id") + private ZoneRfu zoneRfu ; + @ColumnDefault("0") private Long valeurAdminParcelleNb; private Float tauxTfu; diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java index 2a29be7..48dbe60 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java @@ -8,6 +8,7 @@ import io.gmss.fiscad.enums.StatusAvis; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService; +import io.gmss.fiscad.paylaods.request.crudweb.DonneesImpositionPaylaodWeb; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import io.gmss.fiscad.paylaods.response.DonneesImpositionTfuResponse; import io.gmss.fiscad.persistence.repositories.decoupage.ArrondissementRepository; @@ -144,4 +145,9 @@ public class DonneesImpositionTfuServiceImpl implements DonneesImpositionTfuServ return null; } } + + @Override + public Page getDonneesFiscalesByImpositionTfuIdPageable(Long impositionsTfuId, Pageable pageable) { + return donneesImpositionTfuRepository.findAllByImpositionTfuIdPageable(impositionsTfuId,pageable); + } } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java index 21e64ac..9f21a85 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java @@ -4,6 +4,7 @@ import io.gmss.fiscad.entities.rfu.metier.DonneesImpositionTfu; import io.gmss.fiscad.entities.rfu.metier.ImpositionsTfu; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.DonneesImpositionPaylaodWeb; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -30,4 +31,5 @@ public interface DonneesImpositionTfuService { ImpositionsTfuPaylaodWeb genererDonneesFiscalesParcelleNonBatie(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb,Long userId); List getDonneesFiscalesByImposition(Long impositionsId); List getDonneesFiscalesByImpositionArrondissement(Long impositionsId,Long arrondissementId); + Page getDonneesFiscalesByImpositionTfuIdPageable(Long impositionsTfuId, Pageable pageable); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java index d550b2a..fe759bd 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java @@ -21,9 +21,17 @@ public class BaremRfuNonBatiPayloadWeb { private Long valeurAdministrativeMetreCarre; private Boolean auMetreCarre; - public BaremRfuNonBatiPayloadWeb(Long id, Long valeurAdministrative, float taux, Long communeId, String communeCode, String communeNom, Long zoneRfuId, String zoneRfuCode, String zoneRfuNom, - Long valeurAdministrativeMetreCarre, - Boolean auMetreCarre) { + public BaremRfuNonBatiPayloadWeb(Long id, + Long valeurAdministrative, + Float taux, + Long communeId, + String communeCode, + String communeNom, + Long zoneRfuId, + String zoneRfuCode, + String zoneRfuNom, + Long valeurAdministrativeMetreCarre, + Boolean auMetreCarre) { this.id = id; this.valeurAdministrative = valeurAdministrative; this.taux = taux; diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java index 1a623a9..64d6638 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java @@ -77,7 +77,40 @@ public class DonneesImpositionPaylaodWeb { private Long valeurAdminParcelleNbMetreCarre; private Float montantTaxe; - public DonneesImpositionPaylaodWeb(Long id, Long annee, String codeDepartement, String nomDepartement, String codeCommune, String nomCommune, String codeArrondissement, String nomArrondissement, String codeQuartierVillage, String nomQuartierVillage, String q, String ilot, String parcelle, String nup, String titreFoncier, String numBatiment, String numUniteLogement, String ifu, String npi, String telProp, String emailProp, String nomProp, String prenomProp, String raisonSociale, String adresseProp, String telRep, String emailRep, String nomRep, String prenomRep, String adresseRep, String longitude, String latitude, Integer superficieParc, Long superficieAuSolBat, Long superficieAuSolUlog, + public DonneesImpositionPaylaodWeb(Long id, + Long annee, + String codeDepartement, + String nomDepartement, + String codeCommune, + String nomCommune, + String codeArrondissement, + String nomArrondissement, + String codeQuartierVillage, + String nomQuartierVillage, + String q, String ilot, + String parcelle, + String nup, + String titreFoncier, + String numBatiment, + String numUniteLogement, + String ifu, + String npi, + String telProp, + String emailProp, + String nomProp, + String prenomProp, + String raisonSociale, + String adresseProp, + String telRep, + String emailRep, + String nomRep, + String prenomRep, + String adresseRep, + String longitude, + String latitude, + Integer superficieParc, + Long superficieAuSolBat, + Long superficieAuSolUlog, Boolean batie, Boolean exonere, Boolean batimentExonere, @@ -93,7 +126,8 @@ public class DonneesImpositionPaylaodWeb { Long nombreBat, LocalDate dateEnquete, Long serviceId, - Long zoneRfuId, Float tauxParcelleNonBati, Long valeurAdministrativeParcelleNonBati, + Long zoneRfuId, + Long valeurAdministrativeParcelleNonBati, NatureImpot natureImpot, String serviceCode, String zoneRfuNom, @@ -154,7 +188,6 @@ public class DonneesImpositionPaylaodWeb { this.dateEnquete = dateEnquete; this.serviceId = serviceId; this.zoneRfuId = zoneRfuId; - this.tauxTfu = tauxParcelleNonBati; this.valeurAdminParcelleNb = valeurAdministrativeParcelleNonBati; this.natureImpot = natureImpot; this.serviceCode = serviceCode; diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/ParcelleGeomRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/ParcelleGeomRepository.java index e3b8f71..07fdbca 100644 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/ParcelleGeomRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/ParcelleGeomRepository.java @@ -78,6 +78,40 @@ public interface ParcelleGeomRepository extends JpaRepository findAllByImpositionsTfu_Id(Long impositionId); List findAllByImpositionsTfu_IdAndCodeArrondissement(Long impositionId,String arrondissementCode); + + @Query(""" +SELECT new io.gmss.fiscad.paylaods.request.crudweb.DonneesImpositionPaylaodWeb( + d.id, + d.annee, + d.codeDepartement, + d.nomDepartement, + d.codeCommune, + d.nomCommune, + d.codeArrondissement, + d.nomArrondissement, + d.codeQuartierVillage, + d.nomQuartierVillage, + d.q, + d.ilot, + d.parcelle, + d.nup, + d.titreFoncier, + d.numBatiment, + d.numUniteLogement, + d.ifu, + d.npi, + d.telProp, + d.emailProp, + d.nomProp, + d.prenomProp, + d.raisonSociale, + d.adresseProp, + d.telSc, + d.emailSc, + d.nomSc, + d.prenomSc, + d.adresseSc, + d.longitude, + d.latitude, + d.superficieParc, + d.superficieAuSolBat, + d.superficieAuSolUlog, + d.batie, + d.exonere, + d.batimentExonere, + d.uniteLogementExonere, + d.valeurLocativeAdm, + d.montantLoyerAnnuel, + d.tfuMetreCarre, + d.tfuMinimum, + d.standingBat, + d.categorieBat, + d.nombrePiscine, + d.nombreUlog, + d.nombreBat, + d.dateEnquete, + s.id, + z.id, + d.valeurAdminParcelleNb, + d.natureImpot, + s.code, + z.nom, + d.valeurBatiment, + d.valeurParcelle, + d.valeurLocativeAdmMetreCarre, + d.valeurAdminParcelleNbMetreCarre, + d.montantTaxe + ) + FROM DonneesImpositionTfu d + JOIN d.impositionsTfu itfu + LEFT join d.structure s + LEFT join d.zoneRfu z + WHERE itfu.id = :impositionTfuId + """) + Page findAllByImpositionTfuIdPageable( + Long impositionTfuId, + Pageable pageable + ); + @Query(value = "SELECT generer_donnees_imposition_tfu_batie(:structureId, :impositionId)", nativeQuery = true) Integer genererDonneesTfuBatie( @Param("structureId") Long structureId, @@ -144,4 +222,5 @@ public interface DonneesImpositionTfuRepository extends JpaRepository