From 4dd0d86fb0b3f02fd547f288e16415a43a96c6d8 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Thu, 13 Mar 2025 18:36:04 +0100 Subject: [PATCH] maj secteur bloc et ajour parcelle_geom avec colonne geometrique --- pom.xml | 48 ++- .../decoupage/SecteurController.java | 9 + .../infocad/parametre/BlocController.java | 11 +- .../entities/infocad/metier/ParcelleGeom.java | 65 ++++ .../entities/infocad/parametre/Bloc.java | 6 + .../decoupage/SecteurServiceImpl.java | 12 +- .../infocad/parametre/BlocServiceImpl.java | 10 +- .../interfaces/decoupage/SecteurService.java | 1 + .../infocad/parametre/BlocService.java | 1 + .../paylaods/request/SecteurPayload.java | 2 +- .../decoupage/SecteurRepository.java | 3 + .../infocad/parametre/BlocRepository.java | 1 + .../gmss/fiscad/service/GeometryService.java | 296 +++++++++++++++++- 13 files changed, 418 insertions(+), 47 deletions(-) create mode 100644 src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java diff --git a/pom.xml b/pom.xml index 18cfba0..d4a9ea4 100755 --- a/pom.xml +++ b/pom.xml @@ -97,35 +97,31 @@ 2.3.0 - + + + org.hibernate + hibernate-spatial + ${hibernate.version} + + + + org.n52.jackson + jackson-datatype-jts + 1.2.4 + + + org.teiid + teiid-optional-geo + 16.0.0 + diff --git a/src/main/java/io/gmss/fiscad/controllers/decoupage/SecteurController.java b/src/main/java/io/gmss/fiscad/controllers/decoupage/SecteurController.java index 5b136b6..a4ab88f 100644 --- a/src/main/java/io/gmss/fiscad/controllers/decoupage/SecteurController.java +++ b/src/main/java/io/gmss/fiscad/controllers/decoupage/SecteurController.java @@ -105,4 +105,13 @@ public class SecteurController { } + @GetMapping("/by-structure-id/{structureId}") + public ResponseEntity getSecteurByStructureId(@PathVariable Long structureId) { + return new ResponseEntity<>( + new ApiResponse<>(true, secteurService.getSecteurById(structureId), "Secteur trouvée avec succès."), + HttpStatus.OK + ); + } + + } \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/controllers/infocad/parametre/BlocController.java b/src/main/java/io/gmss/fiscad/controllers/infocad/parametre/BlocController.java index 0bb75b7..d32ffb1 100644 --- a/src/main/java/io/gmss/fiscad/controllers/infocad/parametre/BlocController.java +++ b/src/main/java/io/gmss/fiscad/controllers/infocad/parametre/BlocController.java @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value = "api/bloc", produces = MediaType.APPLICATION_JSON_VALUE) -@SecurityRequirement(name = "bearer") +//@SecurityRequirement(name = "bearer") @Tag(name = "Bloc") @CrossOrigin(origins = "*") public class BlocController { @@ -104,6 +104,15 @@ public class BlocController { ); } + @GetMapping("/list-by-secteur") + @Tag(name = "Liste blocs",description = "Liste des blocs d'un secteur") + public ResponseEntity getAllBlocListBySecteur(@RequestParam Long idSecteur) { + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocsBySecteur(idSecteur), "Liste des blocs chargée avec succès."), + HttpStatus.OK + ); + } + @GetMapping("/all-paged") public ResponseEntity getAllBlocPaged(@RequestParam int pageNo, @RequestParam int pageSize) { Pageable pageable = PageRequest.of(pageNo, pageSize); 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 new file mode 100644 index 0000000..8ccb0f1 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/entities/infocad/metier/ParcelleGeom.java @@ -0,0 +1,65 @@ +package io.gmss.fiscad.entities.infocad.metier; + +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.BaseEntity; +import io.gmss.fiscad.entities.decoupage.Quartier; +import io.gmss.fiscad.entities.infocad.parametre.NatureDomaine; +import io.gmss.fiscad.entities.rfu.metier.Batiment; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; +import org.locationtech.jts.geom.MultiPolygon; +import org.locationtech.jts.geom.Point; +import org.n52.jackson.datatype.jts.GeometryDeserializer; +import org.n52.jackson.datatype.jts.GeometrySerializer; + +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE parcelle " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class ParcelleGeom extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + 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 pointsPolygone; + + @ColumnDefault("0") + private int geomSrid; + + @JsonSerialize(using = GeometrySerializer.class) + @JsonDeserialize(contentUsing = GeometryDeserializer.class) + @Column(name = "geom",columnDefinition = "geometry(MultiPolygon,4326)") + private MultiPolygon geometry ; + + @JsonSerialize(using = GeometrySerializer.class) + @JsonDeserialize(contentUsing = GeometryDeserializer.class) + @Column(name = "geom_32631",columnDefinition = "geometry(MultiPolygon,32631)") + private MultiPolygon geometry32631 ; +} diff --git a/src/main/java/io/gmss/fiscad/entities/infocad/parametre/Bloc.java b/src/main/java/io/gmss/fiscad/entities/infocad/parametre/Bloc.java index 27d86bf..568d8d7 100644 --- a/src/main/java/io/gmss/fiscad/entities/infocad/parametre/Bloc.java +++ b/src/main/java/io/gmss/fiscad/entities/infocad/parametre/Bloc.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.decoupage.Arrondissement; import io.gmss.fiscad.entities.decoupage.Quartier; +import io.gmss.fiscad.entities.decoupage.Secteur; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; import io.gmss.fiscad.entities.infocad.metier.Enquete; import jakarta.persistence.*; @@ -62,9 +63,14 @@ public class Bloc extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "bloc") private List enquetes; + @ManyToOne private SecteurDecoupage secteurDecoupage; + @JsonIgnore + @ManyToOne + private Secteur secteur; + public String getNomArrondissement() { return arrondissement.getNom(); } diff --git a/src/main/java/io/gmss/fiscad/implementations/decoupage/SecteurServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/decoupage/SecteurServiceImpl.java index 38f883e..d4c3f0f 100644 --- a/src/main/java/io/gmss/fiscad/implementations/decoupage/SecteurServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/decoupage/SecteurServiceImpl.java @@ -2,6 +2,7 @@ package io.gmss.fiscad.implementations.decoupage; import io.gmss.fiscad.entities.decoupage.Secteur; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; +import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; @@ -11,6 +12,7 @@ import io.gmss.fiscad.paylaods.request.SecteurPayload; import io.gmss.fiscad.repositories.decoupage.ArrondissementRepository; import io.gmss.fiscad.repositories.decoupage.QuartierRepository; import io.gmss.fiscad.repositories.decoupage.SecteurRepository; +import io.gmss.fiscad.repositories.infocad.parametre.StructureRepository; import io.gmss.fiscad.repositories.user.UserRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -26,12 +28,14 @@ public class SecteurServiceImpl implements SecteurService { private final UserRepository userRepository; private final ArrondissementRepository arrondissementRepository; private final QuartierRepository quartierRepository; + private final StructureRepository structureRepository; - public SecteurServiceImpl(SecteurRepository secteurRepository, UserRepository userRepository, ArrondissementRepository arrondissementRepository, QuartierRepository quartierRepository) { + public SecteurServiceImpl(SecteurRepository secteurRepository, UserRepository userRepository, ArrondissementRepository arrondissementRepository, QuartierRepository quartierRepository, StructureRepository structureRepository) { this.secteurRepository = secteurRepository; this.userRepository = userRepository; this.arrondissementRepository = arrondissementRepository; this.quartierRepository = quartierRepository; + this.structureRepository = structureRepository; } @@ -53,6 +57,8 @@ public class SecteurServiceImpl implements SecteurService { Secteur secteur=new Secteur(); Optional optionalUser=userRepository.findById(secteurPayload.getChefSecteurId()); secteur.setChefSecteur(optionalUser.orElse(null)); + Optional optionalStructure=structureRepository.findById(secteurPayload.getStructureId()); + secteur.setStructure(optionalStructure.orElse(null)); List secteurDecoupageList=new ArrayList<>(); for (SecteurDecoupagePayload sdp: secteurPayload.getSecteurDecoupages()){ @@ -117,6 +123,10 @@ public class SecteurServiceImpl implements SecteurService { return secteurRepository.findAll(); } + @Override + public List getSecteurListUneStruture(Long structureId) { + return secteurRepository.findAllByStructure_Id(structureId); + } @Override diff --git a/src/main/java/io/gmss/fiscad/implementations/infocad/parametre/BlocServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/infocad/parametre/BlocServiceImpl.java index d3776eb..f1b30b2 100644 --- a/src/main/java/io/gmss/fiscad/implementations/infocad/parametre/BlocServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/infocad/parametre/BlocServiceImpl.java @@ -40,6 +40,7 @@ public class BlocServiceImpl implements BlocService { } String idBlocParArrondissement = getIdBlocParArrondissementValue(bloc); bloc.setIdBlocParArrondissement(idBlocParArrondissement); + if(bloc.getStructure() == null){ bloc.setCote(getCoteValue(bloc, idBlocParArrondissement, null)); }else{ @@ -49,7 +50,9 @@ public class BlocServiceImpl implements BlocService { if(bloc.getQuartier() != null){ bloc.setCoteq(getCoteQuartierByCoteBloc(bloc.getCote(), bloc.getQuartier())); } - + if(bloc.getSecteurDecoupage()!=null) { + bloc.setSecteur(bloc.getSecteurDecoupage().getSecteur()); + } return blocRepository.save(bloc); } @@ -130,6 +133,11 @@ public class BlocServiceImpl implements BlocService { } } + @Override + public List getBlocsBySecteur(Long idSecteur) { + return blocRepository.findAllBySecteur_Id(idSecteur); + } + @Override public List getBlocList() { return blocRepository.findAll(); diff --git a/src/main/java/io/gmss/fiscad/interfaces/decoupage/SecteurService.java b/src/main/java/io/gmss/fiscad/interfaces/decoupage/SecteurService.java index d52c44d..35dd427 100644 --- a/src/main/java/io/gmss/fiscad/interfaces/decoupage/SecteurService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/decoupage/SecteurService.java @@ -17,6 +17,7 @@ public interface SecteurService { void deleteSecteur(Long id) throws NotFoundException; Page getSecteurList(Pageable pageable); List getSecteurList(); + List getSecteurListUneStruture(Long structureId); Optional getSecteurById(Long id); } \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/interfaces/infocad/parametre/BlocService.java b/src/main/java/io/gmss/fiscad/interfaces/infocad/parametre/BlocService.java index 588c38b..3ec92fb 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/infocad/parametre/BlocService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/infocad/parametre/BlocService.java @@ -17,6 +17,7 @@ public interface BlocService { Page getBlocList(Pageable pageable); List getBlocsByArrondissement(Long idArrondissement); List getBlocsByStructure(Long idStructure); + List getBlocsBySecteur(Long idSecteur); List getBlocList(); Optional getBlocById(Long id); diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/SecteurPayload.java b/src/main/java/io/gmss/fiscad/paylaods/request/SecteurPayload.java index d0e0eb3..959b271 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/SecteurPayload.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/SecteurPayload.java @@ -15,6 +15,6 @@ public class SecteurPayload implements Serializable { private String code ; private String nom ; private Long chefSecteurId ; - private Long structure_id ; + private Long structureId ; private List secteurDecoupages ; } \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/repositories/decoupage/SecteurRepository.java b/src/main/java/io/gmss/fiscad/repositories/decoupage/SecteurRepository.java index d190f9d..f95d722 100644 --- a/src/main/java/io/gmss/fiscad/repositories/decoupage/SecteurRepository.java +++ b/src/main/java/io/gmss/fiscad/repositories/decoupage/SecteurRepository.java @@ -3,5 +3,8 @@ package io.gmss.fiscad.repositories.decoupage; import io.gmss.fiscad.entities.decoupage.Secteur; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface SecteurRepository extends JpaRepository { + List findAllByStructure_Id(Long structureId); } \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/repositories/infocad/parametre/BlocRepository.java b/src/main/java/io/gmss/fiscad/repositories/infocad/parametre/BlocRepository.java index 1a96562..9d1bd00 100755 --- a/src/main/java/io/gmss/fiscad/repositories/infocad/parametre/BlocRepository.java +++ b/src/main/java/io/gmss/fiscad/repositories/infocad/parametre/BlocRepository.java @@ -13,6 +13,7 @@ import java.util.List; public interface BlocRepository extends JpaRepository { List findAllByStructure_Id(Long structureId); + List findAllBySecteur_Id(Long secteurId); @Query(value = "select b.id, b.cote, b.nom, b.arrondissement_id as arrondissementid, b.quartier_id as quartierid " + " from bloc b" + " where b.deleted is false and b.structure_id = ?1 ",nativeQuery = true) diff --git a/src/main/java/io/gmss/fiscad/service/GeometryService.java b/src/main/java/io/gmss/fiscad/service/GeometryService.java index be55bbd..876d7fc 100644 --- a/src/main/java/io/gmss/fiscad/service/GeometryService.java +++ b/src/main/java/io/gmss/fiscad/service/GeometryService.java @@ -1,24 +1,286 @@ package io.gmss.fiscad.service; - -//import org.locationtech.jts.geom.GeometryFactory; -//import org.locationtech.jts.geom.Point; -//import org.locationtech.jts.geom.PrecisionModel; -//import org.locationtech.jts.io.ParseException; -//import org.locationtech.jts.io.WKTReader; - +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; + +import org.locationtech.jts.geom.*; +import org.locationtech.jts.io.ParseException; +import org.locationtech.jts.io.WKTReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.teiid.CommandContext; +import org.teiid.api.exception.query.FunctionExecutionException; +import org.teiid.core.types.GeometryType; +import org.teiid.geo.GeometryTransformUtils; +import org.teiid.query.function.GeometryUtils; + +import java.sql.SQLException; +import java.util.List; + +import static org.teiid.geo.GeometryTransformUtils.lookupProj4Text; +// @Service -public class GeometryService { -// public Point toGeometryPoint(String wkt, int srid) throws SQLException { -// if(wkt == null) { -// return null; -// } +public class GeometryService { + @Value("${infocad.geom.srid}") + private String defaultSrid; +// @Autowired +// private ParcelleService parcelleService; +// @Autowired +// private ParcelleGeomRepository parcelleGeomRepository; +// @Autowired +// private ParcelleRepository parcelleRepository; +// @Autowired +// private AppartenirRepository appartenirRepository; +// +// +// +// +//// public Geometry transform(Geometry source) { +//// try { +//// MathTransform crsTransform = GeotoolsDataStoreUtils.makeCrsTransform("EPSG:27700"); +//// if (crsTransform.isTransforming()) { +//// Geometry transformableArea = crsTransform.getTransformableGeometry(); +//// if (null != transformableArea && !transformableArea.covers(source)) { +//// source = source.intersection(transformableArea); +//// } +//// return JTS.transform(source, crsTransform); +//// } else { +//// return source; +//// } +//// } catch (Exception e) { // NOSONAR typically TopologyException, TransformException or FactoryException +//// logEnvelopeSuggestCrsTransformInfo(crsTransform.getId(), source, e); +//// return createEmptyGeometryForClass(source.getClass()); +//// } +//// } +// +//// public Geometry getShape(String wtk) throws FactoryException, TransformException { +//// GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), Subject.SRID); +//// WKTReader reader = new WKTReader(geometryFactory); +//// MathTransform crsTransform = GeotoolsDataStoreUtils.makeCrsTransform("EPSG:27700"); +//// +//// try { +//// LineString line = (LineString) reader.read(wtk); +//// Geometry transformedGeom = JTS.transform(line, crsTransform); +//// return transformedGeom; +//// } catch (ParseException e) { +//// e.printStackTrace(); +//// // log.error("Not a valid geometry"); +//// return null; +//// } +//// } +// + public MultiPolygon toGeometry(String wkt, int srid) throws SQLException { + if(wkt == null) { + return null; + } + try { + WKTReader wktReaderSRID = new WKTReader(new GeometryFactory(new PrecisionModel(),srid)); + + + MultiPolygon multiPolygon = (MultiPolygon) wktReaderSRID.read(String.format("MULTIPOLYGON( ((%s)) )",wkt)); + +// GeometryTransformUtils.transform(multiPolygon,srid); + return multiPolygon; + } catch (ParseException ex) { + throw new SQLException(ex); + } + } +// +// public void saveParcelleGeom(Parcelle parcelle){ // try { -// WKTReader wktReaderSRID = new WKTReader(new GeometryFactory(new PrecisionModel(),srid)); -// Point point = (Point) wktReaderSRID.read(String.format("POINT( ((%s)) )",wkt)); -// return point; -// } catch (ParseException ex) { -// throw new SQLException(ex); +// MultiPolygon multiPolygon=null; +// if (parcelle.getCoordonnees() != null){ +// multiPolygon = toGeometry(parcelle.getCoordonnees(), parcelle.getGeomSrid());//Integer.parseInt(defaultSrid)); +// } +// +// RechercheParcellePayLoad rechercheParcellePayLoad=new RechercheParcellePayLoad(); +// rechercheParcellePayLoad.setEp(parcelle.getEntrePorte()); +// rechercheParcellePayLoad.setI(parcelle.getCodeIlotParcellaire()); +// rechercheParcellePayLoad.setNumTF(parcelle.getNumTitreFonc()); +// rechercheParcellePayLoad.setP(parcelle.getCodeAdressageParcellaire()); +// rechercheParcellePayLoad.setQz(parcelle.getCodeQuartierZoneParcellaire()); +// rechercheParcellePayLoad.setR(parcelle.getRue().getNumero()); +// rechercheParcellePayLoad.setNup(parcelle.getNup()); +// ParcelleGeom parcelleGeom=rechercheParcelleGeom(rechercheParcellePayLoad); +// parcelleGeom.setParcelle(parcelle); +// if(parcelleGeom.getId()!=null){ +// if (parcelle.getCoordonnees() != null) { +// parcelleGeom.setGeometry(multiPolygon); +// } +// }else{ +// if (parcelle.getCoordonnees() != null) { +// parcelleGeom.setCodeQuartierZoneParcellaire(parcelle.getCodeQuartierZoneParcellaire()); +// parcelleGeom.setCodeAdressageParcellaire(parcelle.getCodeAdressageParcellaire()); +// parcelleGeom.setCodeIlotParcellaire(parcelle.getCodeIlotParcellaire()); +// parcelleGeom.setEntrePorte(parcelle.getEntrePorte()); +// parcelleGeom.setNumTitre(parcelle.getNumTitreFonc()); +// parcelleGeom.setNup(parcelle.getNup()); +// parcelleGeom.setGeometry(multiPolygon); +// if(parcelle.getRue()!=null) +// parcelleGeom.setNumRue(parcelle.getRue().getNumero()); +// parcelleGeom.setVillageQuartier(parcelle.getVillageQuartier()); +// if(parcelle.getVillageQuartier()!=null) +// parcelleGeom.setCommune(parcelle.getVillageQuartier().getArrondissement().getCommune()); +// //TODO +// //parcelleGeom.setLattitudeGeoCentrique(multiPolygon); +// //parcelleGeom.setLongitudeGeoCentrique(multiPolygon); +// } +// } +// ///////////MAJ PROPRIETAIRE COURANT////////////////// +// try { +// majProprietaireCourant(parcelle); +// }catch (Exception e){ +// +// } +// /////////////////////////////////////////////////////// +// +// parcelleGeomRepository.save(parcelleGeom); +// } catch (SQLException e) { +// e.printStackTrace(); // } // } +// +// public ParcelleGeom saveParcelleGeom(ParcelleGeomPayload parcelleGeomPayload){ +// try { +// MultiPolygon multiPolygon=toGeometry(parcelleGeomPayload.getCoordonnees(),parcelleGeomPayload.getSrid());//Integer.parseInt(defaultSrid)); +// +// RechercheParcellePayLoad rechercheParcellePayLoad=new RechercheParcellePayLoad(); +// rechercheParcellePayLoad.setEp(parcelleGeomPayload.getEntrePorte()); +// rechercheParcellePayLoad.setI(parcelleGeomPayload.getCodeIlotParcellaire()); +// rechercheParcellePayLoad.setNumTF(parcelleGeomPayload.getNumTitre()); +// rechercheParcellePayLoad.setP(parcelleGeomPayload.getCodeAdressageParcellaire()); +// rechercheParcellePayLoad.setQz(parcelleGeomPayload.getCodeQuartierZoneParcellaire()); +// rechercheParcellePayLoad.setR(parcelleGeomPayload.getNumRue()); +// rechercheParcellePayLoad.setNup(parcelleGeomPayload.getNup()); +// +// ParcelleGeom parcelleGeom=rechercheParcelleGeom(rechercheParcellePayLoad); +// +// if(parcelleGeom.getId()!=null){ +// parcelleGeom.setGeometry(multiPolygon); +// }else{ +// parcelleGeom.setCodeQuartierZoneParcellaire(parcelleGeomPayload.getCodeQuartierZoneParcellaire()); +// parcelleGeom.setCodeAdressageParcellaire(parcelleGeomPayload.getCodeAdressageParcellaire()); +// parcelleGeom.setCodeIlotParcellaire(parcelleGeomPayload.getCodeIlotParcellaire()); +// parcelleGeom.setEntrePorte(parcelleGeomPayload.getEntrePorte()); +// parcelleGeom.setNup(parcelleGeomPayload.getNup()); +// parcelleGeom.setNumTitre(parcelleGeomPayload.getNumTitre()); +// parcelleGeom.setNumRue(parcelleGeomPayload.getNumRue()); +// parcelleGeom.setArrondissement_nom(parcelleGeomPayload.getArrondissement_nom()); +// parcelleGeom.setGeometry(multiPolygon); +//// if(parcelleGeomPayload.getRue()!=null) +//// parcelleGeom.setNumRue(parcelleGeomPayload.getRue().getNumero()); +//// parcelleGeom.setVillageQuartier(parcelleGeomPayload.getVillageQuartier()); +//// if(parcelleGeomPayload.getVillageQuartier()!=null) +//// parcelleGeom.setCommune(parcelleGeomPayload.getVillageQuartier().getArrondissement().getCommune()); +// +// //TODO +// //parcelleGeom.setLattitudeGeoCentrique(multiPolygon); +// //parcelleGeom.setLongitudeGeoCentrique(multiPolygon); +// } +// System.out.println("COORDONNEES : "+multiPolygon.getCoordinates().toString()); +// System.out.println("COORDONNEES : "+multiPolygon.toText()); +// +// return parcelleGeomRepository.save(parcelleGeom); +//// parcelleGeomRepository.save(parcelleGeom); +// } catch (SQLException e) { +// e.printStackTrace(); +// return null; +// } +// } +// +// public ParcelleGeom rechercheParcelleGeom(RechercheParcellePayLoad rechercheParcellePayLoad){ +// ParcelleGeom parcelleGeom=new ParcelleGeom(); +// if(rechercheParcellePayLoad.getQz()!=null && rechercheParcellePayLoad.getI()!=null && rechercheParcellePayLoad.getP()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByCodeQuartierZoneParcellaireAndCodeIlotParcellaireAndCodeAdressageParcellaire(rechercheParcellePayLoad.getQz(),rechercheParcellePayLoad.getI(),rechercheParcellePayLoad.getP()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// +// if(rechercheParcellePayLoad.getEp()!=null && rechercheParcellePayLoad.getR()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByNumRueAndEntrePorte(rechercheParcellePayLoad.getEp(),rechercheParcellePayLoad.getR()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// +// if(rechercheParcellePayLoad.getNup()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByNup(rechercheParcellePayLoad.getNup()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// return parcelleGeom; +// } +// +// +// public ParcelleGeom rechercheParcelleGeomParParcelle(Parcelle parcelle){ +// ParcelleGeom parcelleGeom=new ParcelleGeom(); +// RechercheParcellePayLoad rechercheParcellePayLoad=new RechercheParcellePayLoad(); +// rechercheParcellePayLoad.setEp(parcelle.getEntrePorte()); +// rechercheParcellePayLoad.setI(parcelle.getCodeIlotParcellaire()); +// rechercheParcellePayLoad.setNumTF(parcelle.getNumTitreFonc()); +// rechercheParcellePayLoad.setP(parcelle.getCodeAdressageParcellaire()); +// rechercheParcellePayLoad.setQz(parcelle.getCodeQuartierZoneParcellaire()); +// rechercheParcellePayLoad.setR(parcelle.getRue().getNumero()); +// rechercheParcellePayLoad.setNup(parcelle.getNup()); +// +// if(rechercheParcellePayLoad.getQz()!=null && rechercheParcellePayLoad.getI()!=null && rechercheParcellePayLoad.getP()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByCodeQuartierZoneParcellaireAndCodeIlotParcellaireAndCodeAdressageParcellaire(rechercheParcellePayLoad.getQz(),rechercheParcellePayLoad.getI(),rechercheParcellePayLoad.getP()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// +// if(rechercheParcellePayLoad.getEp()!=null && rechercheParcellePayLoad.getR()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByNumRueAndEntrePorte(rechercheParcellePayLoad.getEp(),rechercheParcellePayLoad.getR()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// +// if(rechercheParcellePayLoad.getNup()!=null){ +// List parcelleGeoms= parcelleGeomRepository.findFirstByNup(rechercheParcellePayLoad.getNup()); +// if(!parcelleGeoms.isEmpty()){ +// parcelleGeom= parcelleGeoms.get(0); +// } +// } +// return parcelleGeom; +// } +// +// public void majProprietaireCourant(Parcelle parcelle){ +// ///////////MAJ PROPRIETAIRE COURANT////////////////// +// try { +// Appartenir proprietaireCourant=appartenirRepository.getProprietaireCourant(parcelle.getId()); +// if(proprietaireCourant!=null){ +// parcelle.setProprietaireCourant(proprietaireCourant.getContribuable()); +// parcelleRepository.save(parcelle); +// ParcelleGeom parcelleGeom=rechercheParcelleGeomParParcelle(proprietaireCourant.getParcelle()); +// if(parcelleGeom!=null){ +// parcelleGeom.setProprietaireCourant(proprietaireCourant.getContribuable()); +// parcelleGeomRepository.save(parcelleGeom); +// } +// } +// }catch (Exception e){ +// +// } +// /////////////////////////////////////////////////////// +// } +// +//// public String listCoordonneesToPolygonString(List coordonnees){ +//// StringBuilder wkt= new StringBuilder(); +//// if(coordonnees==null){ +//// return null; +//// } +//// wkt.append(coordonnees.get(0).getXY()); +//// coordonnees.forEach(coordonnees1 -> { +//// wkt.append(",").append(coordonnees.get(0).getXY()); +//// }); +//// return String.format("MULTIPOLYGON( ((%s)) )",wkt.toString()); +//// } +// +// +// +// +// }