BLOS#81513 -- Managementinformatie en Dashboard voor BLOS

svn path=/Customer/trunk/; revision=63198
This commit is contained in:
Jos Migo
2024-01-17 07:04:45 +00:00
parent 89a873d9cc
commit 498e394458

View File

@@ -2499,6 +2499,533 @@ AS
WHERE fac_notificatie_job_view = 'BLOS_V_NOTI_SERVICEDESK_ORD' )
) ;
---------------------------------------------------------------------------------------------------------------
--- Facilitor Dashboards ---
---------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE VIEW blos_v_udr_melding
(
melding_key,
meldingnummer,
melding_start_key,
externnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
gebouw_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
melder_email,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
divisie,
divisie_omschrijving,
fclt_3d_divisie_key,
bedrijf_key,
invoerder,
meldbron,
accepteerder,
afmelder,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_einddatum_std,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
actiecode,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice
)
AS
SELECT mld_melding_key,
meldingnummer,
mld_melding_start_key,
mld_melding_externnr,
alg_regio_omschrijving,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
locatie_plaats,
alg_locatie_key,
alg_gebouw_key,
gebouw,
gebouw_naam,
verdieping,
ruimte,
ruimte_omschrijving,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
prs_perslid_email,
afdeling,
afdeling_omschrijving,
afdeling_key,
divisie,
divisie_omschrijving,
divisie_key,
prs_bedrijf_key,
invoerder,
meldbron,
accepteerder,
afmelder,
soortmelding,
stdm_ins_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
mld_ins_discipline_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
DECODE(x.sla_accpt.eenheid, 'D', x.sla_accpt.tijdsduur, NULL) sla_accptdgn,
DECODE(x.sla_accpt.eenheid, 'U', x.sla_accpt.tijdsduur, NULL) sla_accpturen,
plan_uitvoertijd_sla,
datum,
einddatum,
einddatum_std,
acceptdatum,
afgemeld,
accepted,
DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkdgn,
DECODE (x.t_doorlooptijd.eenheid, 'U', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkuren,
onderwerp,
omschrijving,
opmerking,
mld_melding_spoed prioriteit,
DECODE(mld_melding_spoed,3,lcl.l('lcl_mld_urg_normaal'),1,lcl.l('lcl_mld_urg_kritiek'),2,lcl.l('lcl_mld_urg_hoog'),4,lcl.l('lcl_mld_urg_laag')),
mld_melding_satisfaction,
mld_melding_satisfaction_op,
mld_melding_flag,
mld_melding_actiecode,
DECODE (x.sla_accpt.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), NULL)
accept_sla_dagen,
CAST (
DECODE (x.sla_accpt.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
NULL)
AS NUMBER(7,2)
)
accept_sla_uren,
DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
NULL)
uitvoering_sla_dagen,
CAST (
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
NULL)
AS NUMBER(7,2)
)
uitvoering_sla_uren,
DECODE (x.sla_accpt.eenheid,
'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
NULL)
afspraak_sla_dagen,
CAST (
DECODE (
x.sla_accpt.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0),
NULL)
AS NUMBER(7,2)
)
afspraak_sla_uren,
CASE
WHEN acceptdatum IS NULL
OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
DECODE (x.t_doorlooptijd.eenheid,
'D', acceptdatum - COALESCE (accepted, afgemeld),
0)
+ DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
accept_sla_optijd,
CASE
WHEN DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum(mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
uitvoering_sla_optijd,
CASE
WHEN DECODE (x.t_doorlooptijd.eenheid,
'D',
einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijtdgn, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
afspraak_sla_optijd,
DECODE(invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice
FROM (SELECT m.mld_melding_key,
m.mld_melding_start_key,
m.mld_melding_externnr,
m.prs_perslid_key,
mab.prs_perslid_email,
sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
alg_locatie_plaats locatie_plaats,
l.alg_locatie_key,
COALESCE(og.alg_gebouw_code, og.alg_terreinsector_code) gebouw,
COALESCE(og.alg_gebouw_naam, og.alg_terreinsector_naam) gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_gebouw_key,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
mab.afdeling_naam afdeling,
mab.afdeling_omschrijving afdeling_omschrijving,
mab.prs_afdeling_key afdeling_key,
mab.divisie_naam divisie,
mab.divisie_omschrijving,
mab.prs_afdeling_key1 divisie_key,
mab.prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key))
invoerder,
(SELECT mb.mld_meldbron_omschrijving
FROM mld_meldbron mb
WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
meldbron,
m.mld_meldbron_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = fac.gettrackinguserkey('MLDACP', m.mld_melding_key))
accepteerder,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = fac.gettrackinguserkey('MLDAFM', m.mld_melding_key))
afmelder,
sd.ins_srtdiscipline_key ins_srtdiscipline_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key stdm_ins_discipline_key,
md.ins_discipline_omschrijving productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
smg.mld_stdmeldinggroep_naam subproductgroepgroep,
mbg.mld_behandelgroep_naam behandelgroep,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
behandelaar,
m.mld_melding_behandelaar_key behandelaar_key,
m.mld_ins_discipline_key mld_ins_discipline_key,
(SELECT md2.ins_discipline_omschrijving
FROM mld_discipline md2
WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelgroep,
m.mld_melding_behandelaar2_key actieve_behandelaar_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key)
actieve_behandelaar,
(SELECT mld_statuses_omschrijving
FROM mld_statuses sta
WHERE sta.mld_statuses_key = m.mld_melding_status)
status,
CASE
WHEN m.mld_melding_einddatum >
COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
SYSDATE)
THEN
1
ELSE
0
END
plan_uitvoertijd_sla,
CASE
WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1
ELSE 0
END
sla_nvt,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen,
CASE WHEN m.mld_melding_spoed = 3 THEN s.mld_stdmelding_t_accepttijd
WHEN m.mld_melding_spoed = 1 then s.mld_stdmelding_t_accept_pr1
WHEN m.mld_melding_spoed = 1 then s.mld_stdmelding_t_accept_pr2
WHEN m.mld_melding_spoed = 1 then s.mld_stdmelding_t_accept_pr4
END sla_accpt,
m.mld_melding_datum datum,
CASE WHEN s.mld_stdmelding_planbaar = 2
THEN TO_DATE(NULL)
ELSE m.mld_melding_einddatum
END einddatum,
mld_melding_einddatum_std einddatum_std,
mld_melding_acceptdatum_std acceptdatum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
accepted,
mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_spoed,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
m.mld_melding_flag,
mld_melding_actiecode
FROM mld_melding m,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_regio r,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
mld_disc_params mdp,
mld_behandelgroep mbg,
ins_srtdiscipline sd,
mld_stdmeldinggroep smg,
(SELECT mx.mld_melding_key
, div.prs_bedrijf_key
, ab.prs_afdeling_key1
, div.prs_afdeling_naam divisie_naam
, div.prs_afdeling_omschrijving divisie_omschrijving
, ab.prs_afdeling_key
, afd.prs_afdeling_naam afdeling_naam
, afd.prs_afdeling_omschrijving afdeling_omschrijving
, px.prs_perslid_key
, px.prs_perslid_email
FROM mld_melding mx
, prs_perslid px
, prs_v_afdeling_boom ab
, prs_afdeling afd
, prs_afdeling div
WHERE px.prs_perslid_key = mx.prs_perslid_key
AND ab.prs_afdeling_key = coalesce(mx.prs_afdeling_key, px.prs_afdeling_key)
AND ab.prs_afdeling_key = afd.prs_afdeling_key
AND ab.prs_afdeling_key1 = div.prs_afdeling_key
) mab
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND md.ins_discipline_key = mdp.mld_ins_discipline_key
AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND mdp.mld_behandelgroep_key = mbg.mld_behandelgroep_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND m.mld_melding_key = mab.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;
-- totaalview - udr aangevuld om db (dashboard) naar wens mee gevuld te krijgen
CREATE OR REPLACE VIEW blos_v_melding_db
AS
SELECT y.*,
d.alg_district_key, -- tbv doorklikacties..
r.alg_regio_key, -- tbv doorklikacties..
ms.melding_status_2, -- is inclusief status 'niet opgelost'
ROUND((COALESCE(y.melding_accepted, SYSDATE) - y.melding_datum),2) uitzettijd_dgn, -- tijd tot accepteren melding
CASE WHEN y.melding_afgemeld IS NOT NULL AND y.melding_accepted IS NULL -- melding direct afgemeld, geen acceptatie gedaan
THEN ROUND(y.melding_afgemeld - y.melding_datum,2)
ELSE ROUND(COALESCE(y.melding_afgemeld, SYSDATE) - COALESCE(y.melding_accepted, SYSDATE),2)
END
doorlooptijd_opgepakt_dgn, -- tijd van geaccepteerd tot aan afgemeld
CASE WHEN y.accept_sla_optijd = 'ja' THEN 1 ELSE 0 END
accept_sla_optijd_N,
CASE WHEN y.uitvoering_sla_optijd = 'ja' THEN 1 ELSE 0 END
uitvoering_sla_optijd_N,
CASE WHEN y.afspraak_sla_optijd = 'ja' THEN 1 ELSE 0 END
afspraak_sla_optijd_N,
CASE WHEN y.melding_einddatum = y.melding_einddatum_std THEN 0 ELSE 1 END
mld_einddatum_aangepast_N,
(SELECT m.mld_melding_t_accepttijd.eenheid FROM mld_melding m WHERE m.mld_melding_key = y.melding_key)
melding_accpt_eenheid,
(SELECT m.mld_melding_t_uitvoertijd.eenheid FROM mld_melding m WHERE m.mld_melding_key = y.melding_key)
melding_werk_eenheid,
1 aantal_meldingen,
CASE WHEN LOWER(ms.melding_status_2) IN ('nieuw') THEN 1 ELSE 0 END
aantal_mld_nieuw,
CASE WHEN LOWER(ms.melding_status_2) IN ('niet opgelost') THEN 1 ELSE 0 END
aantal_mld_niet_opgelost,
CASE WHEN LOWER(ms.melding_status_2) IN ('in behandeling', 'uitgegeven') THEN 1 ELSE 0 END
aantal_mld_in_behandeling,
CASE WHEN LOWER(ms.melding_status_2) IN ('afgemeld', 'afgewezen') THEN 1 ELSE 0 END
aantal_mld_afgehandeld,
CASE WHEN y.prioriteit = 1 THEN 1 ELSE 0 END
prio_kritiek,
CASE WHEN y.prioriteit = 2 THEN 1 ELSE 0 END
prio_hoog,
CASE WHEN y.prioriteit = 3 THEN 1 ELSE 0 END
prio_normaal,
CASE WHEN y.prioriteit = 4 THEN 1 ELSE 0 END
prio_laag
FROM blos_v_udr_melding y,
alg_locatie l,
alg_district d,
alg_regio r,
(SELECT m.mld_melding_key,
CASE WHEN COALESCE(opdr.aantal,0)>0 and COALESCE(opdr_open.aantal, 0) = 0 and m.mld_melding_status = 4 THEN 'Niet opgelost' ELSE v.mld_statuses_omschrijving END
melding_status_2,
opdr.aantal,
opdr_open.aantal
FROM mld_melding m, mld_statuses v,
(SELECT mld_melding_key, COUNT ( * ) aantal
FROM mld_opdr
WHERE mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)
GROUP BY mld_melding_key
) opdr_open,
(SELECT mld_melding_key, COUNT ( * ) aantal
FROM mld_opdr
GROUP BY mld_melding_key
) opdr
WHERE m.mld_melding_key = opdr.mld_melding_key (+)
AND m.mld_melding_key = opdr_open.mld_melding_key (+)
AND m.mld_melding_status = v.mld_statuses_key
) ms
WHERE y.melding_key = ms.mld_melding_key
AND y.fclt_3d_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND d.alg_regio_key = r.alg_regio_key;
---------------------------------------------------------------------------------------------------------------
--- Facilitor Graphics / CAD ---