fusion maj parcelle,batiment,ulo et leur enquete #194

Merged
judaur2005 merged 1 commits from features/fiche_refonte into develop 2026-03-23 19:54:17 +00:00
6 changed files with 257 additions and 108 deletions
Showing only changes of commit 5f2686ed7b - Show all commits

View File

@@ -136,6 +136,7 @@ public class SecteurDecoupageServiceImpl implements SecteurDecoupageService {
.map(Secteur::getId) .map(Secteur::getId)
.toList(); .toList();
System.out.println(statutEnquete); System.out.println(statutEnquete);
System.out.println(secteurIds);
return enqueteBatimentRepository.findStatsEnqueteBatimentBySecteurs(secteurIds,statutEnquete); return enqueteBatimentRepository.findStatsEnqueteBatimentBySecteurs(secteurIds,statutEnquete);
} }

View File

@@ -601,7 +601,7 @@ BEGIN
-- tfu_superficie_au_sol_reel -- tfu_superficie_au_sol_reel
CASE WHEN eb.categorie_usage = 'HABITATION' CASE WHEN eb.categorie_usage = 'HABITATION'
THEN eb.superficie_au_sol * brb.valeur_locative * v_taux_tfu_ratio THEN eb.superficie_au_sol * brb.valeur_locative * v_taux_tfu_ratio * eb.nombre_piscine * v_tfu_piscine_unitaire
ELSE 0 ELSE 0
END, END,
@@ -654,14 +654,12 @@ BEGIN
END END
FROM calc FROM calc
), ),
v_taux_tfu, v_taux_tfu,
p.id, p.id,
b.id, b.id,
NULL, NULL,
ep.personne_id ep.personne_id
FROM parcelle p FROM parcelle p
-- Dernière enquête parcelle -- Dernière enquête parcelle
LEFT JOIN LATERAL ( LEFT JOIN LATERAL (
SELECT SELECT

View File

@@ -256,35 +256,85 @@ public interface EnqueteRepository extends JpaRepository<Enquete, Long> {
List<Enquete> findAllByParcelle_Id(Long parcelleId); List<Enquete> findAllByParcelle_Id(Long parcelleId);
// @Query(
// value = """
// SELECT DISTINCT
// d.id AS departement_id,
// d.code AS departement_code,
// d.nom AS departement_nom,
// COUNT(e.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement,
//
// c.id AS commune_id,
// c.code AS commune_code,
// c.nom AS commune_nom,
// COUNT(e.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune,
//
// a.id AS arrondissement_id,
// a.code AS arrondissement_code,
// a.nom AS arrondissement_nom,
// COUNT(e.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement,
//
// q.id AS quartier_id,
// q.code AS quartier_code,
// q.nom AS quartier_nom,
// COUNT(e.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier
//
// FROM enquete e
// JOIN parcelle p ON p.id = e.parcelle_id
// JOIN quartier q ON q.id = p.quartier_id
// JOIN arrondissement a ON a.id = q.arrondissement_id
// JOIN commune c ON c.id = a.commune_id
// JOIN departement d ON d.id = c.departement_id
//
// WHERE EXISTS (
// SELECT 1
// FROM secteur_decoupage sd
// WHERE sd.quartier_id = q.id
// AND sd.secteur_id IN (:secteurIds)
// )
// AND e.statut_enquete = :statutEnqueteParam
//
// ORDER BY d.nom, c.nom, a.nom, q.nom;
// """,
// nativeQuery = true
// )
// List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBySecteurs(
// @Param("secteurIds") List<Long> secteurIds,
// @Param("statutEnqueteParam") String statutEnqueteParam
// );
@Query( @Query(
value = """ value = """
SELECT DISTINCT SELECT DISTINCT
d.id AS departement_id, d.id AS departementId,
d.code AS departement_code, d.code AS departementCode,
d.nom AS departement_nom, d.nom AS departementNom,
COUNT(e.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement, COUNT(e.id) OVER (PARTITION BY d.id) AS nbParcellesDepartement,
c.id AS commune_id, c.id AS communeId,
c.code AS commune_code, c.code AS communeCode,
c.nom AS commune_nom, c.nom AS communeNom,
COUNT(e.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune, COUNT(e.id) OVER (PARTITION BY c.id) AS nbParcellesCommune,
a.id AS arrondissement_id, a.id AS arrondissementId,
a.code AS arrondissement_code, a.code AS arrondissementCode,
a.nom AS arrondissement_nom, a.nom AS arrondissementNom,
COUNT(e.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement, COUNT(e.id) OVER (PARTITION BY a.id) AS nbParcellesArrondissement,
q.id AS quartier_id, q.id AS quartierId,
q.code AS quartier_code, q.code AS quartierCode,
q.nom AS quartier_nom, q.nom AS quartierNom,
COUNT(e.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier COUNT(e.id) OVER (PARTITION BY q.id) AS nbParcellesQuartier
FROM enquete e FROM quartier q
JOIN parcelle p ON p.id = e.parcelle_id
JOIN quartier q ON q.id = p.quartier_id
JOIN arrondissement a ON a.id = q.arrondissement_id JOIN arrondissement a ON a.id = q.arrondissement_id
JOIN commune c ON c.id = a.commune_id JOIN commune c ON c.id = a.commune_id
JOIN departement d ON d.id = c.departement_id JOIN departement d ON d.id = c.departement_id
JOIN parcelle p ON p.quartier_id = q.id
LEFT JOIN enquete e
ON e.parcelle_id = p.id
AND e.statut_enquete = :statutEnqueteParam
WHERE EXISTS ( WHERE EXISTS (
SELECT 1 SELECT 1
@@ -292,9 +342,8 @@ public interface EnqueteRepository extends JpaRepository<Enquete, Long> {
WHERE sd.quartier_id = q.id WHERE sd.quartier_id = q.id
AND sd.secteur_id IN (:secteurIds) AND sd.secteur_id IN (:secteurIds)
) )
AND e.statut_enquete = :statutEnqueteParam
ORDER BY d.nom, c.nom, a.nom, q.nom; ORDER BY d.nom, c.nom, a.nom, q.nom
""", """,
nativeQuery = true nativeQuery = true
) )

View File

@@ -98,22 +98,22 @@ public interface ParcelleRepository extends JpaRepository<Parcelle, Long>, JpaSp
d.id AS departement_id, d.id AS departement_id,
d.code AS departement_code, d.code AS departement_code,
d.nom AS departement_nom, d.nom AS departement_nom,
COUNT(p.id) OVER (PARTITION BY d.id) AS nb_parcelles_departement, COUNT(p.id) OVER (PARTITION BY d.id) AS nbParcellesDepartement,
c.id AS commune_id, c.id AS commune_id,
c.code AS commune_code, c.code AS commune_code,
c.nom AS commune_nom, c.nom AS commune_nom,
COUNT(p.id) OVER (PARTITION BY c.id) AS nb_parcelles_commune, COUNT(p.id) OVER (PARTITION BY c.id) AS nbParcellesCommune,
a.id AS arrondissement_id, a.id AS arrondissement_id,
a.code AS arrondissement_code, a.code AS arrondissement_code,
a.nom AS arrondissement_nom, a.nom AS arrondissement_nom,
COUNT(p.id) OVER (PARTITION BY a.id) AS nb_parcelles_arrondissement, COUNT(p.id) OVER (PARTITION BY a.id) AS nbParcellesArrondissement,
q.id AS quartier_id, q.id AS quartier_id,
q.code AS quartier_code, q.code AS quartier_code,
q.nom AS quartier_nom, q.nom AS quartier_nom,
COUNT(p.id) OVER (PARTITION BY q.id) AS nb_parcelles_quartier COUNT(p.id) OVER (PARTITION BY q.id) AS nbParcellesQuartier
FROM quartier q FROM quartier q
JOIN arrondissement a ON a.id = q.arrondissement_id JOIN arrondissement a ON a.id = q.arrondissement_id

View File

@@ -480,36 +480,89 @@ public interface EnqueteBatimentRepository extends JpaRepository<EnqueteBatiment
); );
// @Query(
// value = """
// SELECT DISTINCT
// d.id AS departement_id,
// d.code AS departement_code,
// d.nom AS departement_nom,
// COUNT(eb.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement,
//
// c.id AS commune_id,
// c.code AS commune_code,
// c.nom AS commune_nom,
// COUNT(eb.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune,
//
// a.id AS arrondissement_id,
// a.code AS arrondissement_code,
// a.nom AS arrondissement_nom,
// COUNT(eb.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement,
//
// q.id AS quartier_id,
// q.code AS quartier_code,
// q.nom AS quartier_nom,
// COUNT(eb.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier
//
// FROM enquete_batiment eb
// JOIN batiment b ON b.id = eb.batiment_id
// JOIN parcelle p ON p.id = b.parcelle_id
// JOIN quartier q ON q.id = p.quartier_id
// JOIN arrondissement a ON a.id = q.arrondissement_id
// JOIN commune c ON c.id = a.commune_id
// JOIN departement d ON d.id = c.departement_id
//
// WHERE EXISTS (
// SELECT 1
// FROM secteur_decoupage sd
// WHERE sd.quartier_id = q.id
// AND sd.secteur_id IN (:secteurIds)
// )
// AND eb.statut_enquete = :statutEnqueteParam
//
// ORDER BY d.nom, c.nom, a.nom, q.nom;
// """,
// nativeQuery = true
// )
// List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBatimentBySecteurs(
// @Param("secteurIds") List<Long> secteurIds,
// @Param("statutEnqueteParam") String statutEnqueteParam
// );
@Query( @Query(
value = """ value = """
SELECT DISTINCT SELECT DISTINCT
d.id AS departement_id, d.id AS departement_id,
d.code AS departement_code, d.code AS departement_code,
d.nom AS departement_nom, d.nom AS departement_nom,
COUNT(e.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement, COUNT(eb.id) OVER (PARTITION BY d.id) AS nbParcellesDepartement,
c.id AS commune_id, c.id AS commune_id,
c.code AS commune_code, c.code AS commune_code,
c.nom AS commune_nom, c.nom AS commune_nom,
COUNT(e.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune, COUNT(eb.id) OVER (PARTITION BY c.id) AS nbParcellesCommune,
a.id AS arrondissement_id, a.id AS arrondissement_id,
a.code AS arrondissement_code, a.code AS arrondissement_code,
a.nom AS arrondissement_nom, a.nom AS arrondissement_nom,
COUNT(e.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement, COUNT(eb.id) OVER (PARTITION BY a.id) AS nbParcellesArrondissement,
q.id AS quartier_id, q.id AS quartier_id,
q.code AS quartier_code, q.code AS quartier_code,
q.nom AS quartier_nom, q.nom AS quartier_nom,
COUNT(e.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier COUNT(eb.id) OVER (PARTITION BY q.id) AS nbParcellesQuartier
FROM enquete_batiment eb FROM quartier q
JOIN batiment b ON b.id = eb.batiment_id
JOIN parcelle p ON p.id = b.parcelle_id
JOIN quartier q ON q.id = p.quartier_id
JOIN arrondissement a ON a.id = q.arrondissement_id JOIN arrondissement a ON a.id = q.arrondissement_id
JOIN commune c ON c.id = a.commune_id JOIN commune c ON c.id = a.commune_id
JOIN departement d ON d.id = c.departement_id JOIN departement d ON d.id = c.departement_id
JOIN parcelle p ON p.quartier_id = q.id
JOIN batiment b ON b.parcelle_id = p.id
-- LEFT JOIN ici
LEFT JOIN enquete_batiment eb
ON eb.batiment_id = b.id
AND eb.statut_enquete = :statutEnqueteParam
WHERE EXISTS ( WHERE EXISTS (
SELECT 1 SELECT 1
@@ -517,7 +570,6 @@ public interface EnqueteBatimentRepository extends JpaRepository<EnqueteBatiment
WHERE sd.quartier_id = q.id WHERE sd.quartier_id = q.id
AND sd.secteur_id IN (:secteurIds) AND sd.secteur_id IN (:secteurIds)
) )
AND e.statut_enquete = :statutEnqueteParam
ORDER BY d.nom, c.nom, a.nom, q.nom; ORDER BY d.nom, c.nom, a.nom, q.nom;
""", """,

View File

@@ -602,37 +602,88 @@ public interface EnqueteUniteLogementRepository extends JpaRepository<EnqueteUni
); );
@Query( // @Query(
// value = """
// SELECT DISTINCT
// d.id AS departement_id,
// d.code AS departement_code,
// d.nom AS departement_nom,
// COUNT(eul.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement,
//
// c.id AS commune_id,
// c.code AS commune_code,
// c.nom AS commune_nom,
// COUNT(eul.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune,
//
// a.id AS arrondissement_id,
// a.code AS arrondissement_code,
// a.nom AS arrondissement_nom,
// COUNT(eul.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement,
//
// q.id AS quartier_id,
// q.code AS quartier_code,
// q.nom AS quartier_nom,
// COUNT(eul.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier
//
// FROM enquete_unite_logement eul
// JOIN unite_logement ul on ul.id = eul.unite_logement_id
// JOIN batiment b ON b.id = ul.batiment_id
// JOIN parcelle p ON p.id = b.parcelle_id
// JOIN quartier q ON q.id = p.quartier_id
// JOIN arrondissement a ON a.id = q.arrondissement_id
// JOIN commune c ON c.id = a.commune_id
// JOIN departement d ON d.id = c.departement_id
//
// WHERE EXISTS (
// SELECT 1
// FROM secteur_decoupage sd
// WHERE sd.quartier_id = q.id
// AND sd.secteur_id IN (:secteurIds)
// )
// AND eul.statut_enquete = :statutEnqueteParam
//
// ORDER BY d.nom, c.nom, a.nom, q.nom;
// """,
// nativeQuery = true
// )
// List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBatimentBySecteurs(
// @Param("secteurIds") List<Long> secteurIds,
// @Param("statutEnqueteParam") String statutEnqueteParam
// );
@Query(
value = """ value = """
SELECT DISTINCT SELECT DISTINCT
d.id AS departement_id, d.id AS departementId,
d.code AS departement_code, d.code AS departementCode,
d.nom AS departement_nom, d.nom AS departementNom,
COUNT(e.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement, COUNT(eul.id) OVER (PARTITION BY d.id) AS nbParcellesDepartement,
c.id AS commune_id, c.id AS communeId,
c.code AS commune_code, c.code AS communeCode,
c.nom AS commune_nom, c.nom AS communeNom,
COUNT(e.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune, COUNT(eul.id) OVER (PARTITION BY c.id) AS nbParcellesCommune,
a.id AS arrondissement_id, a.id AS arrondissementId,
a.code AS arrondissement_code, a.code AS arrondissementCode,
a.nom AS arrondissement_nom, a.nom AS arrondissementNom,
COUNT(e.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement, COUNT(eul.id) OVER (PARTITION BY a.id) AS nbParcellesArrondissement,
q.id AS quartier_id, q.id AS quartierId,
q.code AS quartier_code, q.code AS quartierCode,
q.nom AS quartier_nom, q.nom AS quartierNom,
COUNT(e.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier COUNT(eul.id) OVER (PARTITION BY q.id) AS nbParcellesQuartier
FROM enquete_unite_logement eul FROM quartier q
JOIN unite_logement ul on ul.id = eul.unite_logement_id
JOIN batiment b ON b.id = ul.batiment_id
JOIN parcelle p ON p.id = b.parcelle_id
JOIN quartier q ON q.id = p.quartier_id
JOIN arrondissement a ON a.id = q.arrondissement_id JOIN arrondissement a ON a.id = q.arrondissement_id
JOIN commune c ON c.id = a.commune_id JOIN commune c ON c.id = a.commune_id
JOIN departement d ON d.id = c.departement_id JOIN departement d ON d.id = c.departement_id
JOIN parcelle p ON p.quartier_id = q.id
JOIN batiment b ON b.parcelle_id = p.id
JOIN unite_logement ul ON ul.batiment_id = b.id
LEFT JOIN enquete_unite_logement eul
ON eul.unite_logement_id = ul.id
AND eul.statut_enquete = :statutEnqueteParam
WHERE EXISTS ( WHERE EXISTS (
SELECT 1 SELECT 1
@@ -640,17 +691,15 @@ public interface EnqueteUniteLogementRepository extends JpaRepository<EnqueteUni
WHERE sd.quartier_id = q.id WHERE sd.quartier_id = q.id
AND sd.secteur_id IN (:secteurIds) AND sd.secteur_id IN (:secteurIds)
) )
AND e.statut_enquete = :statutEnqueteParam
ORDER BY d.nom, c.nom, a.nom, q.nom; ORDER BY d.nom, c.nom, a.nom, q.nom
""", """,
nativeQuery = true nativeQuery = true
) )
List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBatimentBySecteurs( List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBatimentBySecteurs(
@Param("secteurIds") List<Long> secteurIds, @Param("secteurIds") List<Long> secteurIds,
@Param("statutEnqueteParam") String statutEnqueteParam @Param("statutEnqueteParam") String statutEnqueteParam
); );
@Query( @Query(