Skip to content
Snippets Groups Projects
Commit 6448eb42 authored by Florian Joriot's avatar Florian Joriot
Browse files

Modification de la v_contrat_main et v_contrat_service a cause de probleme de lenteur

parent 14fbcdca
No related branches found
No related tags found
No related merge requests found
Checking pipeline status
......@@ -39,9 +39,15 @@ return [
'FICHIER_ID_SEQ',
'FONCTION_REFERENTIEL_ID_SEQ',
'FORMULE_ID_SEQ',
'FORMULE_RESULTAT_ID_SEQ',
'FORMULE_RESULTAT_INTERVENANT_ID_SEQ',
'FORMULE_RESULTAT_SERREF_ID_SEQ',
'FORMULE_RESULTAT_SERVIC_ID_SEQ',
'FORMULE_RESULTAT_VH_ID_SEQ',
'FORMULE_RESULTAT_VH_REF_ID_SEQ',
'FORMULE_RESULTAT_VOLUME_HORAIRE_ID_SEQ',
'FTEST_INTERVENANT_ID_SEQ',
'FTEST_STRUCTURE_ID_SEQ',
'FTEST_VOLUME_HORAIRE_ID_SEQ',
'GRADE_ID_SEQ',
'GROUPE_ID_SEQ',
......@@ -161,15 +167,15 @@ return [
'UNICAEN_SIGNATURE_PROCESS_STEP_ID_SEQ',
'UNICAEN_SIGNATURE_RECIPIENT_ID_SEQ',
'UNICAEN_SIGNATURE_SIGNATUREFLO',
'UNICAEN_SIGNATURE_SIGNATUREFLOWSTEP_ID_SEQ',
'UNICAEN_SIGNATURE_SIGNATUREFLOW_ID_SEQ',
'UNICAEN_SIGNATURE_SIGNATUREFLOWSTEP_ID_SEQ',
'UNICAEN_SIGNATURE_SIGNATURE_ID',
'UNICAEN_SIGNATURE_SIGNATURE_ID_SEQ',
'UNICAEN_SIGNATURE_SIGNATUR_ID',
'UTILISATEUR_ID_SEQ',
'VALIDATION_ID_SEQ',
'VALIDATION_VOL_HORAIRE_ID_SEQ',
'VALIDATION_VOL_HORAIRE__ID_SEQ',
'VALIDATION_VOL_HORAIRE_ID_SEQ',
'VOIRIE_ID_SEQ',
'VOLUME_HORAIRE_CHARGE_ID_SEQ',
'VOLUME_HORAIRE_ENS_ID_SEQ',
......
CREATE OR REPLACE FORCE VIEW V_CONTRAT_MAIN AS
WITH hs AS (
SELECT contrat_id, SUM(heures) "serviceTotal", SUM("hetd") "hetdContrat" FROM V_CONTRAT_SERVICES GROUP BY contrat_id
SELECT contrat_id, SUM(heures) "serviceTotal", SUM(hetd) "hetdContrat" FROM tbl_contrat GROUP BY contrat_id
),
la AS(
SELECT
......@@ -39,7 +39,7 @@ lm AS(
)
GROUP BY contrat_id
)
SELECT ct.annee_id,
SELECT DISTINCT ct.annee_id,
ct.structure_id,
ct.intervenant_id,
ct.formule_resultat_id,
......
CREATE OR REPLACE FORCE VIEW V_CONTRAT_SERVICES AS
WITH services AS (
SELECT
s.intervenant_id intervenant_id,
c.id contrat_id,
str.id structure_id,
str.libelle_court "serviceComposante",
ep.code "serviceCode",
ep.libelle "serviceLibelle",
ep.id element_pedagogique_id,
NULL fonction_referentiel_id,
NULL type_mission_id,
NULL mission_id,
SUM(CASE WHEN ti.code = 'CM' THEN vh.heures ELSE 0 END) heures_cm,
SUM(CASE WHEN ti.code = 'TD' THEN vh.heures ELSE 0 END) heures_td,
SUM(CASE WHEN ti.code = 'TP' THEN vh.heures ELSE 0 END) heures_tp,
SUM(CASE WHEN ti.code NOT IN ('CM','TD','TP') THEN vh.heures ELSE 0 END) heures_autres,
SUM(vh.heures) heures_totales,
SUM(frvh.total) hetd,
'ENS' "typeServiceCode",
p.libelle_long "periode"
FROM
volume_horaire vh
JOIN service s ON s.id = vh.service_id
JOIN type_intervention ti ON ti.id = vh.type_intervention_id
JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
JOIN type_volume_horaire tvh ON tvh.id = vh.type_volume_horaire_id
JOIN etat_volume_horaire evh ON evh.code = 'valide'
JOIN formule_resultat_intervenant fr ON fr.intervenant_id = s.intervenant_id AND fr.etat_volume_horaire_id = evh.id
JOIN formule_resultat_volume_horaire frvh ON frvh.volume_horaire_id = vh.id AND frvh.formule_resultat_intervenant_id = fr.id
JOIN STRUCTURE str ON ep.structure_id = str.id
LEFT JOIN contrat c ON c.id = vh.contrat_id
LEFT JOIN periode p on vh.periode_id = p.id
WHERE
vh.histo_destruction IS NULL
AND tvh.code = 'PREVU'
GROUP BY
s.intervenant_id,
c.id,
str.libelle_court,
ep.code,
ep.libelle,
str.id,
ep.id,
p.libelle_long
t.intervenant_id,
t.contrat_id,
t.type_service_id,
t.structure_id,
t.element_pedagogique_id,
t.fonction_referentiel_id,
t.mission_id,
t.type_mission_id,
t.type_service "typeService",
t.service_composante "serviceComposante",
t.periode "periode",
t.service_code,
t.service_code "serviceCode",
t.service_libelle,
t.service_libelle "serviceLibelle",
UNION ALL
t.service_heures,
t.service_heures "serviceHeures",
SUM(t.heures) heures,
SUM(t.hetd) "hetd",
CASE WHEN SUM(t.cm) = 0 THEN '0' ELSE REPLACE(ltrim(to_char(SUM(t.cm), '999999.00')),'.',',') END "cm",
CASE WHEN SUM(t.td) = 0 THEN '0' ELSE REPLACE(ltrim(to_char(SUM(t.td), '999999.00')),'.',',') END "td",
CASE WHEN SUM(t.tp) = 0 THEN '0' ELSE REPLACE(ltrim(to_char(SUM(t.tp), '999999.00')),'.',',') END "tp",
CASE WHEN SUM(t.autres) = 0 THEN '0' ELSE REPLACE(ltrim(to_char(SUM(t.autres), '999999.00')),'.',',') END "autres"
FROM
(
SELECT
sr.intervenant_id intervenant_id,
c.id contrat_id,
tblc.intervenant_id intervenant_id,
tblc.contrat_id contrat_id,
tblc.type_service_id type_service_id,
str.id structure_id,
str.libelle_court "serviceComposante",
fr.code "serviceCode",
fr.libelle_long "serviceLibelle",
NULL element_pedagogique_id,
ep.id element_pedagogique_id,
fr.id fonction_referentiel_id,
NULL type_mission_id,
NULL mission_id,
0 heures_cm,
0 heures_td,
0 heures_tp,
SUM(vhr.heures) heures_autres,
SUM(vhr.heures) heures_totales,
SUM(frvh.total) hetd,
'REF' "typeServiceCode",
NULL "periode"
FROM
volume_horaire_ref vhr
JOIN service_referentiel sr ON sr.id = vhr.service_referentiel_id
JOIN fonction_referentiel fr ON fr.id = sr.fonction_id
JOIN type_volume_horaire tvh ON tvh.id = vhr.type_volume_horaire_id
JOIN etat_volume_horaire evh ON evh.code = 'valide'
JOIN formule_resultat_intervenant fri ON fri.intervenant_id = sr.intervenant_id AND fri.etat_volume_horaire_id = evh.id
LEFT JOIN formule_resultat_volume_horaire frvh ON frvh.volume_horaire_ref_id = vhr.id AND frvh.formule_resultat_intervenant_id = fri.id
LEFT JOIN contrat c ON c.id = vhr.contrat_id
LEFT JOIN STRUCTURE str ON sr.structure_id = str.id
WHERE
vhr.histo_destruction IS NULL
AND tvh.code = 'PREVU'
GROUP BY
sr.intervenant_id,
c.id,
str.libelle_court,
fr.code,
fr.libelle_long,
str.id,
fr.id
m.id mission_id,
tm.id type_mission_id,
UNION ALL
ts.code type_service,
str.libelle_court service_composante,
p.libelle_long periode,
COALESCE(tm.code, fr.code, ep.code) service_code,
COALESCE(tm.libelle, fr.libelle_long, ep.libelle) service_libelle,
-- somme par contrat
SUM(tblc.heures) OVER (PARTITION BY tblc.intervenant_id, tblc.contrat_id, tblc.type_service_id, COALESCE(ep.id,tm.id,fr.id) ,p.libelle_long) service_heures,
-- heures atomiques
tblc.heures heures,
tblc.hetd hetd,
tblc.cm cm,
tblc.td td,
tblc.tp tp,
tblc.autres autres
SELECT
m.intervenant_id intervenant_id,
c.id contrat_id,
str.id structure_id,
str.libelle_court "serviceComposante",
tm.code "serviceCode",
tm.libelle "serviceLibelle",
NULL element_pedagogique_id,
NULL fonction_referentiel_id,
tm.id type_mission_id,
m.id mission_id,
0 heures_cm,
0 heures_td,
0 heures_tp,
SUM(vhm.heures) heures_autres,
SUM(vhm.heures) heures_totales,
SUM(vhm.heures) hetd,
'MIS' "typeServiceCode",
NULL "periode"
FROM
volume_horaire_mission vhm
JOIN mission m ON m.id = vhm.mission_id
JOIN type_mission tm ON m.type_mission_id = tm.id
LEFT JOIN contrat c ON c.id = vhm.contrat_id
JOIN STRUCTURE str ON m.structure_id = str.id
LEFT JOIN validation_vol_horaire_miss vvhm ON vvhm.volume_horaire_mission_id = vhm.id
JOIN validation v ON v.id = vvhm.validation_id AND v.histo_destruction IS NULL
JOIN type_volume_horaire tvh ON tvh.id = vhm.type_volume_horaire_id
JOIN validation_mission vm ON vm.mission_id = m.id
JOIN validation v2 ON v2.id = vm.validation_id AND v2.histo_destruction IS NULL
tbl_contrat tblc
JOIN type_service ts ON ts.id = tblc.type_service_id
LEFT JOIN service s ON s.id = tblc.service_id
LEFT JOIN element_pedagogique ep ON ep.id = s.element_pedagogique_id
LEFT JOIN volume_horaire vh ON vh.id = tblc.volume_horaire_id
LEFT JOIN periode p ON p.id = vh.periode_id
LEFT JOIN service_referentiel sr ON sr.id = tblc.service_referentiel_id
LEFT JOIN fonction_referentiel fr ON fr.id = sr.fonction_id
LEFT JOIN mission m ON m.id = tblc.mission_id
LEFT JOIN type_mission tm ON tm.id = m.type_mission_id
LEFT JOIN structure str ON str.id = COALESCE(m.structure_id, sr.structure_id, ep.structure_id)
WHERE
vhm.histo_destruction IS NULL
AND tvh.code = 'PREVU'
AND (v.id IS NOT NULL OR vhm.auto_validation = 1)
AND m.histo_destruction IS NULL
AND (v2.id IS NOT NULL OR vhm.auto_validation = 1)
tblc.actif = 1
) t
GROUP BY
m.intervenant_id,
c.id,
str.libelle_court,
tm.code,
tm.libelle,
str.id,
tm.id,
m.id
)
t.intervenant_id,
t.contrat_id,
t.type_service_id,
t.structure_id,
t.element_pedagogique_id,
t.fonction_referentiel_id,
t.mission_id,
t.type_mission_id,
SELECT
rownum id,
res.intervenant_id,
res.contrat_id,
res.type_service_id,
res.structure_id,
res."serviceCode" service_code,
res."serviceLibelle" service_libelle,
res.element_pedagogique_id,
res.fonction_referentiel_id,
res.type_mission_id,
res.mission_id,
res."cm" cm,
res."td" td,
res."tp" tp,
res."autres" autres,
res.heures,
res."serviceHeures" service_heures,
res."serviceComposante",
res."serviceCode",
res."serviceLibelle",
res."cm",
res."td",
res."tp",
res."autres",
res."serviceHeures",
res."hetd",
res."typeService",
res."periode"
FROM
(
SELECT
s.intervenant_id intervenant_id,
s.contrat_id contrat_id,
ts.id type_service_id,
s.structure_id structure_id,
s."serviceComposante" "serviceComposante",
s."serviceCode" "serviceCode",
s."serviceLibelle" "serviceLibelle",
s.element_pedagogique_id element_pedagogique_id,
s.fonction_referentiel_id fonction_referentiel_id,
s.type_mission_id type_mission_id,
s.mission_id mission_id,
CASE WHEN SUM(s.heures_cm) = 0 THEN to_char(0) ELSE REPLACE(ltrim(to_char(SUM(s.heures_cm), '999999.00')),'.',',') END "cm",
CASE WHEN SUM(s.heures_td) = 0 THEN to_char(0) ELSE REPLACE(ltrim(to_char(SUM(s.heures_td), '999999.00')),'.',',') END "td",
CASE WHEN SUM(s.heures_tp) = 0 THEN to_char(0) ELSE REPLACE(ltrim(to_char(SUM(s.heures_tp), '999999.00')),'.',',') END "tp",
CASE WHEN SUM(s.heures_autres) = 0 THEN to_char(0) ELSE REPLACE(ltrim(to_char(SUM(s.heures_autres), '999999.00')),'.',',') END "autres",
SUM(heures_totales) heures,
SUM(heures_totales) "serviceHeures",
SUM(hetd) "hetd",
s."typeServiceCode" "typeService",
s."periode" "periode"
FROM
services s
JOIN TYPE_SERVICE ts ON ts.code = s."typeServiceCode"
GROUP BY
s.intervenant_id,
s.contrat_id,
s."serviceComposante",
s."serviceCode",
s."serviceLibelle",
s."typeServiceCode",
s.structure_id,
ts.id,
element_pedagogique_id,
fonction_referentiel_id,
type_mission_id,
mission_id,
s."periode"
) res
\ No newline at end of file
t.type_service,
t.service_composante,
t.periode,
t.service_code,
t.service_libelle,
t.service_heures
\ No newline at end of file
......@@ -2887,6 +2887,78 @@ return [
'PJ_ACTIVE',
'DOSSIER_SITUATION_MATRIMONIALE',
],
'SAVE_V24_FRES_SERVICE' => [
'ID',
'FORMULE_RESULTAT_ID',
'SERVICE_ID',
'HEURES_COMPL_FI',
'HEURES_COMPL_FA',
'HEURES_COMPL_FC',
'HEURES_COMPL_FC_MAJOREES',
'SERVICE_FA',
'SERVICE_FC',
'SERVICE_FI',
'TOTAL',
],
'SAVE_V24_FRES_SERVICE_REF' => [
'ID',
'FORMULE_RESULTAT_ID',
'SERVICE_REFERENTIEL_ID',
'HEURES_COMPL_REFERENTIEL',
'SERVICE_REFERENTIEL',
'TOTAL',
],
'SAVE_V24_FRES_VH' => [
'ID',
'FORMULE_RESULTAT_ID',
'VOLUME_HORAIRE_ID',
'HEURES_COMPL_FI',
'HEURES_COMPL_FA',
'HEURES_COMPL_FC',
'HEURES_COMPL_FC_MAJOREES',
'SERVICE_FA',
'SERVICE_FC',
'SERVICE_FI',
'TOTAL',
],
'SAVE_V24_FRES_VH_REF' => [
'ID',
'FORMULE_RESULTAT_ID',
'VOLUME_HORAIRE_REF_ID',
'HEURES_COMPL_REFERENTIEL',
'SERVICE_REFERENTIEL',
'TOTAL',
],
'VCS' => [
'ID',
'INTERVENANT_ID',
'CONTRAT_ID',
'TYPE_SERVICE_ID',
'STRUCTURE_ID',
'SERVICE_CODE',
'SERVICE_LIBELLE',
'ELEMENT_PEDAGOGIQUE_ID',
'FONCTION_REFERENTIEL_ID',
'TYPE_MISSION_ID',
'MISSION_ID',
'CM',
'TD',
'TP',
'AUTRES',
'HEURES',
'SERVICE_HEURES',
'serviceComposante',
'serviceCode',
'serviceLibelle',
'cm',
'td',
'tp',
'autres',
'serviceHeures',
'hetd',
'typeService',
'periode',
],
];
//@formatter:on
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment