develop #195
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -551,19 +551,19 @@ BEGIN
|
|||||||
CASE WHEN eb.categorie_usage = 'HABITATION'
|
CASE WHEN eb.categorie_usage = 'HABITATION'
|
||||||
THEN (p.superficie * v_taux_defaut_sup_sol / 100.0) * brb.valeur_locative
|
THEN (p.superficie * v_taux_defaut_sup_sol / 100.0) * brb.valeur_locative
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END,
|
END,
|
||||||
|
|
||||||
-- tfu_calcule_taux_prop_parc
|
-- tfu_calcule_taux_prop_parc
|
||||||
CASE WHEN eb.categorie_usage = 'HABITATION'
|
CASE WHEN eb.categorie_usage = 'HABITATION'
|
||||||
THEN (p.superficie * v_taux_defaut_sup_sol / 100.0) * brb.valeur_locative * v_taux_tfu_ratio
|
THEN (p.superficie * v_taux_defaut_sup_sol / 100.0) * brb.valeur_locative * v_taux_tfu_ratio
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END,
|
END,
|
||||||
|
|
||||||
-- valeur_locative_adm_sup_reel
|
-- valeur_locative_adm_sup_reel
|
||||||
CASE WHEN eb.categorie_usage = 'HABITATION'
|
CASE WHEN eb.categorie_usage = 'HABITATION'
|
||||||
THEN eb.superficie_au_sol * brb.valeur_locative
|
THEN eb.superficie_au_sol * brb.valeur_locative
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END,
|
END,
|
||||||
|
|
||||||
-- ---------------------------------------------------------------
|
-- ---------------------------------------------------------------
|
||||||
-- 🔧 CORRECTION : valeur_locative_adm avec tests explicites
|
-- 🔧 CORRECTION : valeur_locative_adm avec tests explicites
|
||||||
@@ -597,13 +597,13 @@ BEGIN
|
|||||||
NULLIF(eb.montant_locatif_annuel_estime, 0), 0)
|
NULLIF(eb.montant_locatif_annuel_estime, 0), 0)
|
||||||
|
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END,
|
END,
|
||||||
|
|
||||||
-- 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,
|
||||||
|
|
||||||
-- tfu_piscine
|
-- tfu_piscine
|
||||||
eb.nombre_piscine * v_tfu_piscine_unitaire,
|
eb.nombre_piscine * v_tfu_piscine_unitaire,
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -256,46 +256,95 @@ 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 arrondissement a ON a.id = q.arrondissement_id
|
||||||
JOIN quartier q ON q.id = p.quartier_id
|
JOIN commune c ON c.id = a.commune_id
|
||||||
JOIN arrondissement a ON a.id = q.arrondissement_id
|
JOIN departement d ON d.id = c.departement_id
|
||||||
JOIN commune c ON c.id = a.commune_id
|
JOIN parcelle p ON p.quartier_id = q.id
|
||||||
JOIN departement d ON d.id = c.departement_id
|
|
||||||
|
LEFT JOIN enquete e
|
||||||
WHERE EXISTS (
|
ON e.parcelle_id = p.id
|
||||||
SELECT 1
|
AND e.statut_enquete = :statutEnqueteParam
|
||||||
FROM secteur_decoupage sd
|
|
||||||
WHERE sd.quartier_id = q.id
|
WHERE EXISTS (
|
||||||
AND sd.secteur_id IN (:secteurIds)
|
SELECT 1
|
||||||
)
|
FROM secteur_decoupage sd
|
||||||
AND e.statut_enquete = :statutEnqueteParam
|
WHERE sd.quartier_id = q.id
|
||||||
|
AND sd.secteur_id IN (:secteurIds)
|
||||||
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> findStatsEnqueteBySecteurs(
|
List<ParcelleStatsProjectionUnSecteur> findStatsEnqueteBySecteurs(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
""",
|
""",
|
||||||
|
|||||||
@@ -602,55 +602,104 @@ public interface EnqueteUniteLogementRepository extends JpaRepository<EnqueteUni
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@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(eul.id) OVER (PARTITION BY d.id) AS nb_enquetes_departement,
|
||||||
|
//
|
||||||
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(eul.id) OVER (PARTITION BY c.id) AS nb_enquetes_commune,
|
||||||
|
//
|
||||||
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(eul.id) OVER (PARTITION BY a.id) AS nb_enquetes_arrondissement,
|
||||||
|
//
|
||||||
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(eul.id) OVER (PARTITION BY q.id) AS nb_enquetes_quartier
|
||||||
|
//
|
||||||
FROM enquete_unite_logement eul
|
// FROM enquete_unite_logement eul
|
||||||
JOIN unite_logement ul on ul.id = eul.unite_logement_id
|
// JOIN unite_logement ul on ul.id = eul.unite_logement_id
|
||||||
JOIN batiment b ON b.id = ul.batiment_id
|
// JOIN batiment b ON b.id = ul.batiment_id
|
||||||
JOIN parcelle p ON p.id = b.parcelle_id
|
// JOIN parcelle p ON p.id = b.parcelle_id
|
||||||
JOIN quartier q ON q.id = p.quartier_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
|
||||||
|
//
|
||||||
WHERE EXISTS (
|
// WHERE EXISTS (
|
||||||
SELECT 1
|
// SELECT 1
|
||||||
FROM secteur_decoupage sd
|
// FROM secteur_decoupage sd
|
||||||
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
|
// AND eul.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(
|
||||||
|
value = """
|
||||||
|
SELECT DISTINCT
|
||||||
|
d.id AS departementId,
|
||||||
|
d.code AS departementCode,
|
||||||
|
d.nom AS departementNom,
|
||||||
|
COUNT(eul.id) OVER (PARTITION BY d.id) AS nbParcellesDepartement,
|
||||||
|
|
||||||
|
c.id AS communeId,
|
||||||
|
c.code AS communeCode,
|
||||||
|
c.nom AS communeNom,
|
||||||
|
COUNT(eul.id) OVER (PARTITION BY c.id) AS nbParcellesCommune,
|
||||||
|
|
||||||
|
a.id AS arrondissementId,
|
||||||
|
a.code AS arrondissementCode,
|
||||||
|
a.nom AS arrondissementNom,
|
||||||
|
COUNT(eul.id) OVER (PARTITION BY a.id) AS nbParcellesArrondissement,
|
||||||
|
|
||||||
|
q.id AS quartierId,
|
||||||
|
q.code AS quartierCode,
|
||||||
|
q.nom AS quartierNom,
|
||||||
|
COUNT(eul.id) OVER (PARTITION BY q.id) AS nbParcellesQuartier
|
||||||
|
|
||||||
|
FROM quartier q
|
||||||
|
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
|
||||||
|
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 (
|
||||||
|
SELECT 1
|
||||||
|
FROM secteur_decoupage sd
|
||||||
|
WHERE sd.quartier_id = q.id
|
||||||
|
AND sd.secteur_id IN (:secteurIds)
|
||||||
|
)
|
||||||
|
|
||||||
|
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(
|
||||||
|
|||||||
Reference in New Issue
Block a user