From 35393954c355e746c6066f13792b0022bda83269 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Sun, 1 Mar 2026 02:39:38 +0100 Subject: [PATCH] Gestion parcelle geom --- .../metier/ParcelleGeomController.java | 20 ++- .../entities/infocad/metier/Enquete.java | 1 + .../entities/infocad/metier/Parcelle.java | 10 ++ .../entities/infocad/metier/ParcelleGeom.java | 82 +++++---- .../fiscad/entities/rfu/metier/Batiment.java | 7 + .../metier/CaracteristiqueUniteLogement.java | 2 + .../entities/rfu/metier/EnqueteBatiment.java | 5 + .../rfu/metier/EnqueteUniteLogement.java | 2 + .../entities/rfu/metier/UniteLogement.java | 7 + .../io/gmss/fiscad/enums/SourceDonnee.java | 7 + .../io/gmss/fiscad/enums/StatutEnquete.java | 1 + .../metier/ParcelleGeomServiceImpl.java | 17 ++ .../infocad/metier/ParcelleGeomService.java | 4 + .../crudweb/ParcelleGeomPaylaodWeb.java | 160 ++++++++++++++++++ .../metier/ParcelleGeomRepository.java | 150 +++++++++++++++- .../service/EntityFromPayLoadService.java | 21 ++- 16 files changed, 461 insertions(+), 35 deletions(-) create mode 100644 src/main/java/io/gmss/fiscad/enums/SourceDonnee.java create mode 100644 src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParcelleGeomPaylaodWeb.java diff --git a/src/main/java/io/gmss/fiscad/controllers/infocad/metier/ParcelleGeomController.java b/src/main/java/io/gmss/fiscad/controllers/infocad/metier/ParcelleGeomController.java index f5c71b6..f68031e 100644 --- a/src/main/java/io/gmss/fiscad/controllers/infocad/metier/ParcelleGeomController.java +++ b/src/main/java/io/gmss/fiscad/controllers/infocad/metier/ParcelleGeomController.java @@ -20,7 +20,7 @@ import org.springframework.web.multipart.MultipartFile; @SecurityRequirement(name = "bearer") @Tag(name = "ParcelleGeometrie") @CrossOrigin(origins = "*") -@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") +//@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") public class ParcelleGeomController { private final ParcelleGeomService parcelleGeomService; @@ -63,6 +63,24 @@ public class ParcelleGeomController { ); } + + @GetMapping("/by-quartier-id/{quartierId}") + public ResponseEntity getParcellesGeomsByQuartierId(@PathVariable Long quartierId) { + return new ResponseEntity<>( + new ApiResponse<>(true, parcelleGeomService.getParcelleGeomListByQuatierId(quartierId), "Liste des parcelle chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/page/by-quartier-id/{quartierId}") + public ResponseEntity getParcellesGeomsByQuartierIdPaged(@PathVariable Long quartierId,@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, parcelleGeomService.getParcelleGeomListByQuatierIdPaged(quartierId,pageable), "Liste des parcelle chargée avec succès."), + HttpStatus.OK + ); + } + @GetMapping("/by-arrondissement/{codeArrondissement}") public ResponseEntity getParcellesGeomsByArrondissement(@PathVariable String codeArrondissement) { return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java index 90ad216..be7b0b5 100644 --- a/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java +++ b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java @@ -188,6 +188,7 @@ public class Enquete extends BaseEntity implements Serializable { private Long montantAnnuelleLocation; private Long valeurParcelleEstime; private Long valeurParcelleReel; + private Long valeurParcelleCalcule; private String ncProprietaire; @JsonFormat(pattern = "dd-MM-yyyy") diff --git a/src/main/java/io/gmss/fiscad/entities/infocad/metier/Parcelle.java b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Parcelle.java index 63cc312..ea28720 100644 --- a/src/main/java/io/gmss/fiscad/entities/infocad/metier/Parcelle.java +++ b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Parcelle.java @@ -1,6 +1,9 @@ package io.gmss.fiscad.entities.infocad.metier; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.fiscad.deserializer.LocalDateDeserializer; import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.decoupage.Quartier; import io.gmss.fiscad.entities.infocad.parametre.NatureDomaine; @@ -73,6 +76,13 @@ public class Parcelle extends BaseEntity implements Serializable { private Integer nombrePiscine; @ManyToOne private Usage usage; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExemption; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExemption; // private String ncProprietaire ; // @JsonIgnore // @OneToMany(mappedBy = "parcelle") 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 0284ab3..425d3e9 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 @@ -10,6 +10,7 @@ import io.gmss.fiscad.entities.decoupage.Arrondissement; import io.gmss.fiscad.entities.decoupage.Commune; import io.gmss.fiscad.entities.decoupage.Departement; import io.gmss.fiscad.entities.decoupage.Quartier; +import io.gmss.fiscad.enums.SourceDonnee; import io.gmss.fiscad.enums.StatutParcelle; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -24,6 +25,7 @@ import org.n52.jackson.datatype.jts.GeometryDeserializer; import org.n52.jackson.datatype.jts.GeometrySerializer; import java.io.Serializable; +import java.time.LocalDate; @EqualsAndHashCode(callSuper = true) @Entity @@ -39,26 +41,61 @@ public class ParcelleGeom extends BaseEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - private String NomDepartement; - private String NomCommune; - private String NomArrondissement; - private String NomVillageQuartier; - private String codeBloc; - private String q; - private String ilot; - private String zone; - private String p; @Column(unique = true,nullable = true) private String nup; @Column(unique = true,nullable = true) private String nupProvisoire; private String longitude; private String latitude; + private String codeDepartement; + private String nomDepartement; + private String codeCommune; + private String nomCommune; + private String codeArrondissement; + private String nomArrondissement; + private String codeQuartierVillage; + private String nomVillageQuartier; + private String codeBloc; + private String numeroRue; + private String numeroEntreePorte; + + private String codeInstad; + private String numeroEtatLieux; + private String numeroTitreFoncier; + private LocalDate dateTitreFoncier; + private Boolean batie ; + + private String npi; + private String ifu; + private String nom; + private String prenom; + private String raisonSociale; + private String nomEtPrenoms; + private String telephone; + private String adresse; + + private String nomRepresentant; + private String prenomRepresentant; + private String raisonSocialeRepresentant; + private String nomEtPrenomsRepresentant; + private String telephoneRepresentant; + private String adresseRepresentant; + + private String q; + private String zone; + private String ilot; + private String p; + + private String qLotissement; + private String ilotLotissement; + private String pLotissement; + private String pointsPolygone; private Integer superficie; - private String nomEtPrenoms; + private String dateCollecte; - private String sourceDonnees; + @Enumerated(EnumType.STRING) + private SourceDonnee sourceDonnees; private String observations; @Enumerated(EnumType.STRING) private StatutParcelle statutParcelle; @@ -77,7 +114,7 @@ public class ParcelleGeom extends BaseEntity implements Serializable { private Arrondissement arrondissement; @ManyToOne //(fetch = FetchType.LAZY) - //@JsonBackReference + @JsonBackReference private Quartier quartier ; @ColumnDefault("0") @@ -88,24 +125,11 @@ public class ParcelleGeom extends BaseEntity implements Serializable { private Polygon geometry; @Column(columnDefinition = "TEXT") private String geometryString; - private String codeInsae; - private String numeroEtatLieux; - private String numeroTitreFoncier; - private String telephone; - //private String codeParcelle; - //private String codeEquipe; - //private String elLot; - //private String elLettreParcelle; - //private String rfuQuartierOuZone; - //private String rfuIlot; - //private String rfuLettreParcelle; - - //private String nomLotissement; - //////////// -// @JsonIgnore -// @OneToOne -// private Parcelle parcelle; + @JsonIgnore + @ManyToOne + @JsonBackReference + private Parcelle parcelle; // @JsonSerialize(using = GeometrySerializer.class) // @JsonDeserialize(contentUsing = GeometryDeserializer.class) // @Column(name = "geom",columnDefinition = "geometry(Polygon,4326)") diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/Batiment.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/Batiment.java index e71a859..f591ac9 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/Batiment.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/Batiment.java @@ -65,4 +65,11 @@ public class Batiment extends BaseEntity implements Serializable { // private Long enqueteId; private Long mobileDataId; private Long parcelleExternalKey; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExemption; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExemption; } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueUniteLogement.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueUniteLogement.java index a2a1b28..4935c09 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueUniteLogement.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueUniteLogement.java @@ -47,3 +47,5 @@ public class CaracteristiqueUniteLogement extends BaseEntity implements Serializ private Long enqueteId; private Long mobileDataId; } + + diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java index d70f16b..7d923f7 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java @@ -54,6 +54,8 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { private Boolean soneb; private String numCompteurSoneb; private Integer nbreLotUnite; + private Integer nbreUniteLogement; + private Integer nbrePiece; private Integer nbreUniteLocation; private Float superficieLouee; private Float superficieAuSol; @@ -61,9 +63,11 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { private Integer nbreHabitant; private Long montantMensuelLocation; private Long montantLocatifAnnuelDeclare; + private Long montantLocatifAnnuelEstime; private Long montantLocatifAnnuelCalcule; private Long valeurBatimentEstime; private Long valeurBatimentReel; + private Long valeurBatimentCalcule; private Integer nombrePiscine; private Integer nbreMoisLocation; private String autreCaracteristiquePhysique; @@ -134,4 +138,5 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { private CategorieBatiment categorieBatiment ; @ManyToOne private Usage usage ; + } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java index 69c2d07..d7a368e 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java @@ -53,8 +53,10 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable { private Integer nbreMoisLocation; private Long montantLocatifAnnuelDeclare; private Long montantLocatifAnnuelCalcule; + private Long montantLocatifAnnuelEstime; private Long valeurUniteLogementEstime; private Long valeurUniteLogementReel; + private Long valeurUniteLogementCalcule; private Integer nombrePiscine; private Float superficieLouee; private Float superficieAuSol; diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/UniteLogement.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/UniteLogement.java index 58b472b..2ffb75b 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/UniteLogement.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/UniteLogement.java @@ -60,4 +60,11 @@ public class UniteLogement extends BaseEntity implements Serializable { private Long mobileDataId; @ManyToOne private CategorieBatiment categorieBatiment ; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExemption; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExemption; } diff --git a/src/main/java/io/gmss/fiscad/enums/SourceDonnee.java b/src/main/java/io/gmss/fiscad/enums/SourceDonnee.java new file mode 100644 index 0000000..5e091c4 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/enums/SourceDonnee.java @@ -0,0 +1,7 @@ +package io.gmss.fiscad.enums; + +public enum SourceDonnee { + RFU, + ANDF, + SIGIBE +} diff --git a/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java b/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java index 5aa4e79..5fde2b4 100755 --- a/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java +++ b/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java @@ -2,6 +2,7 @@ package io.gmss.fiscad.enums; public enum StatutEnquete { EN_COURS, + DECLARATION, FINALISE, REJETE, VALIDE, diff --git a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/ParcelleGeomServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/ParcelleGeomServiceImpl.java index 700a126..c3ac973 100644 --- a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/ParcelleGeomServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/ParcelleGeomServiceImpl.java @@ -8,6 +8,7 @@ import io.gmss.fiscad.entities.infocad.metier.Upload; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.infocad.metier.ParcelleGeomService; +import io.gmss.fiscad.paylaods.request.crudweb.ParcelleGeomPaylaodWeb; import io.gmss.fiscad.paylaods.response.EnqueteCheckResponse; import io.gmss.fiscad.persistence.repositories.infocad.metier.EnqueteRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleGeomRepository; @@ -79,6 +80,7 @@ public class ParcelleGeomServiceImpl implements ParcelleGeomService { return n; } + private Upload saveGeoJsonUpload(MultipartFile file,String reference,String desc) { Upload upload = new Upload(); String fileName = fileStorageService.storeFile(file); @@ -176,6 +178,16 @@ public class ParcelleGeomServiceImpl implements ParcelleGeomService { return parcelleGeomRepository.findAllByQuartier_Code(codeQuartier); } + @Override + public List getParcelleGeomListByQuatierId(Long quartierId) { + return parcelleGeomRepository.findAllByQuartierId(quartierId); + } + + @Override + public Page getParcelleGeomListByQuatierIdPaged(Long quartierId, Pageable pageable) { + return parcelleGeomRepository.findAllByQuartierIdPageable(quartierId,pageable); + } + @Override public List getParcelleGeomListUnArrondissement(String codeArrondissement) { return parcelleGeomRepository.findAllByQuartier_Arrondissement_Code(codeArrondissement); @@ -262,4 +274,9 @@ public class ParcelleGeomServiceImpl implements ParcelleGeomService { } + @Override + public int createParcelleGeomFromGeoJsonApi() throws BadRequestException { + return 0; + } + } diff --git a/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/ParcelleGeomService.java b/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/ParcelleGeomService.java index f11ade4..6bfcfb4 100644 --- a/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/ParcelleGeomService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/ParcelleGeomService.java @@ -6,6 +6,7 @@ import io.gmss.fiscad.entities.infocad.metier.ParcelleGeom; import io.gmss.fiscad.entities.infocad.metier.Upload; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.ParcelleGeomPaylaodWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -15,12 +16,15 @@ import java.util.Optional; public interface ParcelleGeomService { int createParcelleFromGeoJsonFile(MultipartFile file,String reference,String description) throws BadRequestException; + int createParcelleGeomFromGeoJsonApi() throws BadRequestException; ParcelleGeom createOnParcelleFromGeoJson(JsonNode jsonNode, Upload upload) throws BadRequestException; ParcelleGeom updateParcelleGeom(MultipartFile file) throws NotFoundException; void deleteParcelle(Long id) throws NotFoundException; Page getParcelleGeomList(Pageable pageable); List getParcelleGeomList(); List getParcelleGeomListUnQuatier(String codeQuartier); + List getParcelleGeomListByQuatierId(Long quartierId); + Page getParcelleGeomListByQuatierIdPaged(Long quartierId,Pageable pageable); public List getParcelleGeomListUnArrondissement(String codeArrondissement); Optional getParcelleGeomById(Long id); diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParcelleGeomPaylaodWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParcelleGeomPaylaodWeb.java new file mode 100644 index 0000000..a62cdb9 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParcelleGeomPaylaodWeb.java @@ -0,0 +1,160 @@ +package io.gmss.fiscad.paylaods.request.crudweb; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.gmss.fiscad.entities.decoupage.Arrondissement; +import io.gmss.fiscad.entities.decoupage.Commune; +import io.gmss.fiscad.entities.decoupage.Departement; +import io.gmss.fiscad.entities.decoupage.Quartier; +import io.gmss.fiscad.entities.infocad.metier.Parcelle; +import io.gmss.fiscad.enums.SourceDonnee; +import io.gmss.fiscad.enums.StatutParcelle; +import jakarta.persistence.*; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.locationtech.jts.geom.Polygon; +import org.n52.jackson.datatype.jts.GeometryDeserializer; +import org.n52.jackson.datatype.jts.GeometrySerializer; + +import java.time.LocalDate; + +@NoArgsConstructor +@Data +public class ParcelleGeomPaylaodWeb { + private Long id; + private String nup; + private String nupProvisoire; + private String longitude; + private String latitude; + private String numeroRue; + private String numeroEntreePorte; + + private String codeInstad; + private String numeroEtatLieux; + private String numeroTitreFoncier; + private LocalDate dateTitreFoncier; + private Boolean batie ; + + private String npi; + private String ifu; + private String nom; + private String prenom; + private String raisonSociale; + private String nomEtPrenoms; + private String telephone; + private String adresse; + + private String nomRepresentant; + private String prenomRepresentant; + private String raisonSocialeRepresentant; + private String nomEtPrenomsRepresentant; + private String telephoneRepresentant; + private String adresseRepresentant; + + private String q; + private String zone; + private String ilot; + private String p; + + private String qLotissement; + private String ilotLotissement; + private String pLotissement; + + private String pointsPolygone; + private Integer superficie; + + private String dateCollecte; + @Enumerated(EnumType.STRING) + private SourceDonnee sourceDonnees; + private String observations; + @Enumerated(EnumType.STRING) + private StatutParcelle statutParcelle; + + private Long departementId; + private String departementCode; + private String departementNom; + + private Long communeId; + private String communeCode; + private String communeNom; + + private Long arrondissementId; + private String arrondissementCode; + private String arrondissementNom; + + + private Long quartierId ; + private String quartierCode ; + private String quartierNom ; + + private int geomSrid; + @JsonSerialize(using = GeometrySerializer.class) + @JsonDeserialize(contentUsing = GeometryDeserializer.class) + //@Column(name = "geometry",columnDefinition = "geometry(Polygon,32631)") + private Polygon geometry; + //@Column(columnDefinition = "TEXT") + private String geometryString; + + private Long parcelleId; + + public ParcelleGeomPaylaodWeb(Long id, String nup, String nupProvisoire, String longitude, String latitude, String numeroRue, String numeroEntreePorte, String codeInstad, String numeroEtatLieux, String numeroTitreFoncier, LocalDate dateTitreFoncier, Boolean batie, String npi, String ifu, String nom, String prenom, String raisonSociale, String nomEtPrenoms, String telephone, String adresse, String nomRepresentant, String prenomRepresentant, String raisonSocialeRepresentant, String nomEtPrenomsRepresentant, String telephoneRepresentant, String adresseRepresentant, String q, String zone, String ilot, String p, String qLotissement, String ilotLotissement, String pLotissement, String pointsPolygone, Integer superficie, String dateCollecte, SourceDonnee sourceDonnees, String observations, StatutParcelle statutParcelle, Long departementId, String departementCode, String departementNom, Long communeId, String communeCode, String communeNom, Long arrondissementId, String arrondissementCode, String arrondissementNom, Long quartierId, String quartierCode, String quartierNom, int geomSrid, Polygon geometry, String geometryString, Long parcelleId) { + this.id = id; + this.nup = nup; + this.nupProvisoire = nupProvisoire; + this.longitude = longitude; + this.latitude = latitude; + this.numeroRue = numeroRue; + this.numeroEntreePorte = numeroEntreePorte; + this.codeInstad = codeInstad; + this.numeroEtatLieux = numeroEtatLieux; + this.numeroTitreFoncier = numeroTitreFoncier; + this.dateTitreFoncier = dateTitreFoncier; + this.batie = batie; + this.npi = npi; + this.ifu = ifu; + this.nom = nom; + this.prenom = prenom; + this.raisonSociale = raisonSociale; + this.nomEtPrenoms = nomEtPrenoms; + this.telephone = telephone; + this.adresse = adresse; + this.nomRepresentant = nomRepresentant; + this.prenomRepresentant = prenomRepresentant; + this.raisonSocialeRepresentant = raisonSocialeRepresentant; + this.nomEtPrenomsRepresentant = nomEtPrenomsRepresentant; + this.telephoneRepresentant = telephoneRepresentant; + this.adresseRepresentant = adresseRepresentant; + this.q = q; + this.zone = zone; + this.ilot = ilot; + this.p = p; + this.qLotissement = qLotissement; + this.ilotLotissement = ilotLotissement; + this.pLotissement = pLotissement; + this.pointsPolygone = pointsPolygone; + this.superficie = superficie; + this.dateCollecte = dateCollecte; + this.sourceDonnees = sourceDonnees; + this.observations = observations; + this.statutParcelle = statutParcelle; + this.departementId = departementId; + this.departementCode = departementCode; + this.departementNom = departementNom; + this.communeId = communeId; + this.communeCode = communeCode; + this.communeNom = communeNom; + this.arrondissementId = arrondissementId; + this.arrondissementCode = arrondissementCode; + this.arrondissementNom = arrondissementNom; + this.quartierId = quartierId; + this.quartierCode = quartierCode; + this.quartierNom = quartierNom; + this.geomSrid = geomSrid; + this.geometry = geometry; + this.geometryString = geometryString; + this.parcelleId = parcelleId; + } +} 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 d4e494b..e3b8f71 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 @@ -1,10 +1,14 @@ package io.gmss.fiscad.persistence.repositories.infocad.metier; import io.gmss.fiscad.entities.infocad.metier.ParcelleGeom; +import io.gmss.fiscad.paylaods.request.crudweb.ParcelleGeomPaylaodWeb; import jakarta.transaction.Transactional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -12,7 +16,9 @@ import java.util.Optional; public interface ParcelleGeomRepository extends JpaRepository { List findAllByQuartier_Code(String code); + List findAllByQuartier_Id(Long quartierId); List findAllByQuartier_Arrondissement_Code(String code); + List findAllByQuartier_Arrondissement_Id(Long arrondissementId); Optional findFirstByNupProvisoire(String numProvisoir); @Modifying @@ -72,7 +78,147 @@ public interface ParcelleGeomRepository extends JpaRepository findAllByQuartierId(@Param("quartierId") Long quartierId); - - + @Query( + value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParcelleGeomPaylaodWeb( + pg.id, + pg.nup, + pg.nupProvisoire, + pg.longitude, + pg.latitude, + pg.numeroRue, + pg.numeroEntreePorte, + pg.codeInstad, + pg.numeroEtatLieux, + pg.numeroTitreFoncier, + pg.dateTitreFoncier, + pg.batie, + pg.npi, + pg.ifu, + pg.nom, + pg.prenom, + pg.raisonSociale, + pg.nomEtPrenoms, + pg.telephone, + pg.adresse, + pg.nomRepresentant, + pg.prenomRepresentant, + pg.raisonSocialeRepresentant, + pg.nomEtPrenomsRepresentant, + pg.telephoneRepresentant, + pg.adresseRepresentant, + pg.q, + pg.zone, + pg.ilot, + pg.p, + pg.qLotissement, + pg.ilotLotissement, + pg.pLotissement, + pg.pointsPolygone, + pg.superficie, + pg.dateCollecte, + pg.sourceDonnees, + pg.observations, + pg.statutParcelle, + d.id, + d.code, + d.nom, + c.id, + c.code, + c.nom, + a.id, + a.code, + a.nom, + q.id, + q.code, + q.nom, + pg.geomSrid, + pg.geometry, + pg.geometryString, + pg.parcelle.id + ) + FROM ParcelleGeom pg + LEFT JOIN pg.departement d + LEFT JOIN pg.commune c + LEFT JOIN pg.arrondissement a + LEFT JOIN pg.quartier q + WHERE q.id = :quartierId + """, + countQuery = """ + SELECT COUNT(pg) + FROM ParcelleGeom pg + WHERE pg.quartier.id = :quartierId + """ + ) + Page findAllByQuartierIdPageable( + @Param("quartierId") Long quartierId, + Pageable pageable + ); } diff --git a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java index 24eec72..eb4260b 100644 --- a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java +++ b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java @@ -661,7 +661,12 @@ public class EntityFromPayLoadService { eul.setRepresentantTel(enqueteUniteLogementPayloadWeb.getRepresentantTel()); eul.setRepresentantNpi(enqueteUniteLogementPayloadWeb.getRepresentantNpi()); eul.setNombrePiscine(enqueteUniteLogementPayloadWeb.getNombrePiscine()); - eul.setStatutEnquete(StatutEnquete.EN_COURS); + // eul.setStatutEnquete(StatutEnquete.EN_COURS); + if(!enqueteUniteLogementPayloadWeb.getStatutEnquete().equals(StatutEnquete.DECLARATION)){ + eul.setStatutEnquete(StatutEnquete.EN_COURS); + }else{ + eul.setStatutEnquete(enqueteUniteLogementPayloadWeb.getStatutEnquete()); + } return eul; } @@ -750,7 +755,12 @@ public class EntityFromPayLoadService { enqueteBatiment.setRepresentantTel(enqueteBatimentPayloadWeb.getRepresentantTel()); enqueteBatiment.setRepresentantNpi(enqueteBatimentPayloadWeb.getRepresentantNpi()); enqueteBatiment.setNombrePiscine(enqueteBatimentPayloadWeb.getNombrePiscine()); - enqueteBatiment.setStatutEnquete(StatutEnquete.EN_COURS); + //enqueteBatiment.setStatutEnquete(StatutEnquete.EN_COURS); + if(!enqueteBatimentPayloadWeb.getStatutEnquete().equals(StatutEnquete.DECLARATION)){ + enqueteBatiment.setStatutEnquete(StatutEnquete.EN_COURS); + }else{ + enqueteBatiment.setStatutEnquete(enqueteBatimentPayloadWeb.getStatutEnquete()); + } return enqueteBatiment; } @@ -808,7 +818,12 @@ public class EntityFromPayLoadService { // ====================== enquete.setDateEnquete(LocalDate.now()); enquete.setLitige(enquetePayLoadWeb.getLitige()); - enquete.setStatutEnquete(StatutEnquete.EN_COURS); + + if(!enquetePayLoadWeb.getStatutEnquete().equals(StatutEnquete.DECLARATION)){ + enquete.setStatutEnquete(StatutEnquete.EN_COURS); + }else{ + enquete.setStatutEnquete(enquetePayLoadWeb.getStatutEnquete()); + } enquete.setObservationParticuliere(enquetePayLoadWeb.getObservation()); enquete.setAutreAdresse(enquetePayLoadWeb.getAutreAdresse()); enquete.setAutreNumeroTitreFoncier(enquetePayLoadWeb.getAutreNumeroTitreFoncier());