NMMS#24399 -- Implementatie PPS Soesterberg

svn path=/Customer/trunk/; revision=22736
This commit is contained in:
Arthur Egberink
2014-10-01 09:34:27 +00:00
parent b72b8379eb
commit 856216fa9a

View File

@@ -18,8 +18,6 @@ AS
p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund
p_ins_key IN NUMBER)
RETURN NUMBER;
FUNCTION get_ins_weegfactor (p_melding_key IN NUMBER, p_wegingsfactor IN NUMBER)
RETURN NUMBER;
END;
/
@@ -86,76 +84,6 @@ AS
RETURN v_melding_key;
END;
FUNCTION get_ins_weegfactor (p_melding_key IN NUMBER, p_wegingsfactor IN NUMBER) RETURN NUMBER
AS
v_count NUMBER;
v_count_tot NUMBER;
v_factor NUMBER;
v_srtgroep_key NUMBER;
BEGIN
-- tel het aantal objecten aan de melding
SELECT count(*), ins_srtgroep_key
INTO v_count, v_srtgroep_key
FROM ins_deel d, mld_melding_object mo, ins_srtdeel sd
WHERE mo.mld_melding_key = p_melding_key
AND mo.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_srtgroep_key in (41) -- 41 toiletten
GROUP BY ins_srtgroep_key;
IF v_count = 0
THEN
RETURN p_wegingsfactor;
END IF;
-- tel het aantal toiletten aan de ruimte
SELECT count(distinct d2.ins_deel_key)
INTO v_count_tot
FROM ins_deel d, mld_melding_object mo, ins_srtdeel sd, ins_deel d2
WHERE mo.mld_melding_key = p_melding_key
AND mo.ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_key = d2.ins_alg_ruimte_key
AND d.ins_srtdeel_key = d2.ins_srtdeel_key
AND d2.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_srtgroep_key = v_srtgroep_key;
-- bepaal de wegingsfactor.
IF v_srtgroep_key = 41 THEN
-- toiletten
SELECT (CASE
WHEN TRUNC((v_count/v_count_tot)*100) > 90 THEN 20
WHEN TRUNC((v_count/v_count_tot)*100) > 80 THEN 18
WHEN TRUNC((v_count/v_count_tot)*100) > 70 THEN 14
WHEN TRUNC((v_count/v_count_tot)*100) > 60 THEN 10
WHEN TRUNC((v_count/v_count_tot)*100) > 50 THEN 6
WHEN TRUNC((v_count/v_count_tot)*100) > 40 THEN 5
WHEN TRUNC((v_count/v_count_tot)*100) > 30 THEN 4
WHEN TRUNC((v_count/v_count_tot)*100) > 20 THEN 3
WHEN TRUNC((v_count/v_count_tot)*100) > 10 THEN 2
WHEN TRUNC((v_count/v_count_tot)*100) > 0 THEN 1
ELSE p_wegingsfactor
END)
INTO v_factor
FROM DUAL;
ELSE
SELECT (CASE
WHEN TRUNC((v_count/v_count_tot)*100) > 50 THEN 10
WHEN TRUNC((v_count/v_count_tot)*100) > 40 THEN 8
WHEN TRUNC((v_count/v_count_tot)*100) > 30 THEN 6
WHEN TRUNC((v_count/v_count_tot)*100) > 20 THEN 4
WHEN TRUNC((v_count/v_count_tot)*100) > 10 THEN 2
WHEN TRUNC((v_count/v_count_tot)*100) > 0 THEN 1
ELSE p_wegingsfactor
END)
INTO v_factor
FROM DUAL;
END IF;
RETURN v_factor;
END;
FUNCTION get_regime (p_stdm_key IN NUMBER,
p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund
@@ -204,8 +132,9 @@ AS
END;
/
/* Formatted on 26-8-2014 15:16:20 (QP5 v5.136.908.31019) */
--
-- Basis monitoringsview voor operationele zaken. Meldingen die opgenomen zijn in de tabel nmms_monitoring komen niet meer voor in deze view.
--
CREATE OR REPLACE VIEW nmms_v_monitoring
(
melding_key,
@@ -241,6 +170,7 @@ CREATE OR REPLACE VIEW nmms_v_monitoring
afgerond,
dienst,
stdmelding_key,
discipline_key,
overlappend,
wegingsfactor,
melding_omschrijving,
@@ -250,7 +180,6 @@ AS
SELECT mld_melding_key,
DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
|| DECODE (mld_melding_respijt, 0, '', 'R') -- er is een respijt ingevuld
-- || DECODE (aantal, 1, '', 'S') -- betreft een samengestelde/overlappende melding
|| DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee
|| DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
q_vervolg,
@@ -272,7 +201,7 @@ AS
thema,
mld_stdmelding_omschrijving omschrijving,
t_van begin,
einddatum eind,
gereed,
thtijdstip thtijdstip,
(SELECT fac_tracking_datum
FROM fac_tracking t
@@ -346,6 +275,7 @@ AS
FROM prs_dienst di
WHERE di.prs_dienst_key = g.prs_dienst_key),
mld_stdmelding_key,
mld_ins_discipline_key,
overlappend,
wegingsfactor,
(SELECT mld_melding_omschrijving
@@ -355,13 +285,14 @@ AS
FROM mld_melding mo
WHERE mo.mld_melding_key = g.mld_melding_key)
FROM (SELECT m.aantal,
DECODE(m.aantal, 1, NULL, m.overlappend) overlappend,
DECODE (m.aantal, 1, NULL, m.overlappend) overlappend,
m.mld_melding_status,
m.mld_melding_afgerond,
m.mld_melding_key,
m.mld_melding_indult,
std.prs_dienst_key,
std.mld_stdmelding_key,
std.mld_ins_discipline_key,
q.vervolg q_vervolg,
COALESCE (m.mld_melding_respijt, 0) mld_melding_respijt,
mld_stdmelding_omschrijving,
@@ -370,7 +301,7 @@ AS
-1, 'UREN',
'DAGEN')
uitvoertijdtype,
t_tot einddatum,
gereed,
mld_melding_einddatum_std thtijdstip,
DECODE (
q.vervolg,
@@ -400,7 +331,7 @@ AS
thema,
mld.getactualuitvoer ( -- bepaal de actuele doorlooptijd a.d.h.v. de samengestelde melding
t_van,
COALESCE (t_tot, SYSDATE),
COALESCE (gereed, SYSDATE),
m.mld_stdmelding_key,
m.mld_melding_spoed,
m.mld_alg_onroerendgoed_keys,
@@ -410,11 +341,11 @@ AS
(SELECT COUNT (mb.mld_melding_key) aantal -- kijk of er op het moment van de melding er een beschikbaarheidsstoring was.
FROM mld_melding mb, mld_stdmelding std_b
WHERE (mb.mld_melding_datum BETWEEN m.t_van
AND COALESCE (m.t_tot,
AND COALESCE (m.gereed,
SYSDATE)
OR fac.gettrackingdate ('MLDAFM', mb.mld_melding_key) BETWEEN m.t_van
AND COALESCE (
m.t_tot,
m.gereed,
SYSDATE))
AND mb.mld_alg_onroerendgoed_keys =
m.mld_alg_onroerendgoed_keys
@@ -433,7 +364,7 @@ AS
DECODE (
UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)),
'Q',
SIGN (t_tot - mld_melding_einddatum),
SIGN (gereed - mld_melding_einddatum),
SIGN(mld.getactualuitvoer (m.mld_melding_key)
- (mld_melding_uitvoertijd
+ mld_melding_respijt)))
@@ -442,11 +373,11 @@ AS
DECODE (
d.ins_deel_key,
NULL,
alg_srtruimte_prijs4,
alg_srtruimte_prijs4, -- wegingsfactor bij soortruimte
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel kd
WHERE kd.ins_deel_key = d.ins_deel_key
AND ins_kenmerk_key = 10))
AND ins_kenmerk_key = 10)) -- wegingsfactor bij object
wegingsfactor,
-- is de tijd van de melding aangepast?
(SELECT COUNT ( * )
@@ -462,14 +393,23 @@ AS
--
SELECT m_start,
-- als er <20><>n van de onderliggende meldingen openstaat moet ook de eerste de status uitgegeven krijgen.
DECODE (SUM(open),
0, (SELECT mld_melding_status FROM mld_melding ms WHERE ms.mld_melding_key = m_start),4) mld_melding_status,
DECODE (SUM (open),
0, (SELECT mld_melding_status
FROM mld_melding ms
WHERE ms.mld_melding_key = m_start),
4)
mld_melding_status,
-- afgerond wordt alleen bij de eerste melding bijgehouden
(SELECT mld_melding_afgerond FROM mld_melding ms WHERE ms.mld_melding_key = m_start) mld_melding_afgerond,
(SELECT mld_melding_afgerond
FROM mld_melding ms
WHERE ms.mld_melding_key = m_start)
mld_melding_afgerond,
COUNT (mld_melding_key) aantal,
LISTAGG(mld_melding_key, ',') WITHIN GROUP (ORDER BY mld_melding_key) AS overlappend,
LISTAGG (mld_melding_key, ',')
WITHIN GROUP (ORDER BY mld_melding_key)
AS overlappend,
MIN (mld_melding_datum) t_van,
MAX (t_tot) t_tot,
MAX (gereed) gereed,
MIN (mld_melding_key) mld_melding_key,
MIN (mld_stdmelding_key) mld_stdmelding_key,
MAX (prs_kostenplaats_key) prs_kostenplaats_key,
@@ -488,21 +428,23 @@ AS
m_start,
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key)
t_tot,
DECODE(m.mld_melding_status, 4, 1, 0) open,
gereed,
DECODE (m.mld_melding_status, 4, 1, 0)
open,
m.*
FROM mld_melding m
WHERE m.mld_melding_parentkey IS NULL
AND m.mld_melding_key NOT IN
(SELECT melding_key
FROM nmms_monitoring
WHERE melding_key is not null)) -- we nemen geen dubbele meldingen mee
WHERE melding_key IS NOT NULL)) -- we nemen geen dubbele meldingen mee
GROUP BY m_start, mld_alg_onroerendgoed_keys) m,
mld_stdmeldinggroep stdg,
alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
mld_stdmelding std,
prs_kostenplaats kp,
-- vind vervolgmeldingen op Q meldingen (periodieke inspecties)
(SELECT m1.mld_melding_key,
DECODE (m2.mld_melding_key, NULL, 0, 1) vervolg
FROM mld_melding m1,
@@ -524,6 +466,7 @@ AS
AND UPPER (
SUBSTR (stdg1.mld_stdmeldinggroep_naam, 1, 1)) <>
'Q') q,
-- vind het object met de kortste doorlooptijd
( SELECT MAX (d1.ins_deel_key) ins_deel_key,
mo1.mld_melding_key
FROM ins_deel d1,
@@ -538,8 +481,10 @@ AS
ins_deel d
WHERE mld_stdmelding_malus IS NOT NULL
AND m.mld_melding_status IN (0, 2, 3, 4, 5, 6, 7, 99)
AND m.mld_melding_key NOT IN
(SELECT melding_key FROM nmms_monitoring WHERE melding_key is not null)
-- meldingen die al geexporteerd zijn(en in de tabel nmms_monitoring staan) komen niet meer in deze view
AND m.mld_melding_key NOT IN (SELECT melding_key
FROM nmms_monitoring
WHERE melding_key IS NOT NULL)
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
AND m.mld_melding_key = obj.mld_melding_key(+)
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
@@ -550,6 +495,9 @@ AS
AND std.mld_stdmeldinggroep_key =
stdg.mld_stdmeldinggroep_key(+)) g;
--
-- Rapportage gebasseerd op de basis rapportage
--
CREATE OR REPLACE VIEW nmms_v_rap_monitoring
(
html_melding,
@@ -628,7 +576,10 @@ AS
melding_opmerking
FROM nmms_v_monitoring;
-- rapportage view
--
-- rapportage view tbv de opdrachtgever. In deze gestylede rapportage kan de opdrachtgever afwijkingen goedkeuren.
--
CREATE OR REPLACE VIEW nmms_v_rap_monitoring_og
(
html_melding,
@@ -700,7 +651,9 @@ AS
FROM nmms_v_rap_monitoring
WHERE fclt_f_afw IS NOT NULL OR fclt_f_afgerond IS NOT NULL;
--
-- view van nog te exporteren meldingen die afwijken of tot een korting leiden.
--
CREATE OR REPLACE VIEW nmms_v_monitoring_tot
(
melding_key,
@@ -728,6 +681,9 @@ CREATE OR REPLACE VIEW nmms_v_monitoring_tot
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
wegingsfactor,
dienst,
stdmelding_key,
@@ -760,6 +716,9 @@ AS
prestatiekorting,
factor,
kp,
to_number(NULL),
to_number(NULL),
to_number(NULL),
wegingsfactor,
dienst,
stdmelding_key,
@@ -791,15 +750,18 @@ AS
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
FROM nmms_v_monitoring
@@ -830,15 +792,18 @@ AS
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
FROM nmms_v_monitoring
@@ -869,7 +834,13 @@ AS
NULL,
NULL,
NULL,
typekorting,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
@@ -877,18 +848,59 @@ AS
NULL,
NULL,
NULL,
NULL,
NULL,
stdmelding_key,
(COUNT ( * ) - 4) * 250,
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
FROM nmms_v_monitoring r
WHERE typekorting = 'Kp' AND indult = 'Nee'
AND discipline_key <> 354 -- schoonmaak
AND ( (status = 'Afgemeld' AND afw IS NULL)
OR (status = 'Historie' ))
AND (gereed < TRUNC(SYSDATE, 'MONTH') OR TRUNC(SYSDATE, 'MONTH') = ( select trunc(max(export_datum), 'MONTH') from nmms_monitoring))
GROUP BY stdmelding_key, typekorting
HAVING COUNT (stdmelding_key) > 4;
HAVING COUNT (stdmelding_key) > 4
UNION ALL
-- Herhalingskorting op prestatiegebrek schoonmaak (vakgroep key 354) en ruimte
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
ruimte,
NULL,
NULL,
'Schoonmaak',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
FROM nmms_v_monitoring r
WHERE typekorting = 'Kp' AND indult = 'Nee'
AND discipline_key = 354 -- schoonmaak
AND ( (status = 'Afgemeld' AND afw IS NULL)
OR (status = 'Historie' ))
AND (gereed < TRUNC(SYSDATE, 'MONTH') OR TRUNC(SYSDATE, 'MONTH') = ( select trunc(max(export_datum), 'MONTH') from nmms_monitoring))
GROUP BY discipline_key, ruimte, typekorting
HAVING COUNT (ruimte) > 4;
-- rapportage view van nog te exporteren meldingen die afwijken of tot een korting leiden.
@@ -919,6 +931,9 @@ CREATE OR REPLACE VIEW nmms_v_rap_monitoring_tot
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
kinderen,
wegingsfactor,
totaal
@@ -955,6 +970,9 @@ AS
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
kinderen,
wegingsfactor,
totaal
@@ -990,6 +1008,9 @@ CREATE OR REPLACE VIEW nmms_v_dwh_monitoring
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
status,
dienst,
stdmelding_key,
@@ -1027,18 +1048,23 @@ AS
prestatiekorting,
factor,
kp,
status,
herhalingskorting,
aantal,
kh,
'Historie',
dienst,
stdmelding_key,
wegingsfactor,
melding_omschrijving,
melding_opmerking,
mld_melding_omschrijving,
mld_melding_opmerking,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort ks,
mld_stdmelding std
WHERE m.stdmelding_key = std.mld_stdmelding_key
FROM prs_kostensoort ks, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key)
FROM nmms_v_monitoring m;
FROM nmms_monitoring mo, mld_melding m
WHERE mo.melding_key = m.mld_melding_key
AND totaal IS NOT NULL
AND totaal > 0;
CREATE OR REPLACE PROCEDURE nmms_export_freeze_monitoring (
@@ -1063,10 +1089,11 @@ AS
WHERE ms.mld_melding_key = m_start)
mld_melding_status
FROM (SELECT nmms.get_first_melding (mld_melding_key, 1) m_start,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) t_tot,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed,
m.*
FROM mld_melding m
WHERE m.mld_melding_parentkey IS NULL
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN
(SELECT melding_key FROM nmms_monitoring))
WHERE m_start <> mld_melding_key;
@@ -1122,6 +1149,9 @@ BEGIN
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
wegingsfactor,
dienst,
stdmelding_key,
@@ -1153,6 +1183,9 @@ BEGIN
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
wegingsfactor,
dienst,
stdmelding_key,
@@ -1164,7 +1197,8 @@ BEGIN
INSERT INTO nmms_monitoring (melding_key, export_datum)
SELECT mld_melding_key, SYSDATE
FROM mld_melding m
WHERE m.mld_melding_status = 6 -- Historie
WHERE m.mld_melding_status = 6 -- Historie
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
FROM nmms_monitoring nm
WHERE nm.melding_key IS NOT NULL);
@@ -1232,6 +1266,47 @@ AS
AND o.mld_typeopdr_key = ot.mld_typeopdr_key;
--------------------------------------------------------------
--
-- Dashboard views
--
--------------------------------------------------------------
CREATE VIEW nmms_v_dashboard_korting
(
melding,
omschrijving,
marge,
korting,
hide_f_marge,
tht_tijdstip,
tht
)
AS
SELECT mld_melding_key,
mld_stdmelding_omschrijving,
DECODE (SIGN (1 - mld_melding_uitvoertijd),
-1, ROUND (marge, 2) || ' Dagen',
ROUND (marge * 24, 2) || ' Uren')
marge_txt,
mld_stdmelding_malus,
marge,
mld_melding_einddatum_std,
ROUND (24 * mld_melding_uitvoertijd, 2) tht
FROM (SELECT mld_melding_key,
mld.getactualuitvoer (m.mld_melding_key),
mld_melding_uitvoertijd,
mld_melding_uitvoertijd
- mld.getactualuitvoer (m.mld_melding_key)
marge,
mld_melding_datum,
mld_melding_einddatum_std,
mld_stdmelding_malus,
mld_stdmelding_omschrijving
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_malus IS NOT NULL
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99));
--------------------------------------------------------------
--
-- Real time monitoring views
@@ -1360,7 +1435,7 @@ GRANT SELECT ON nmms_v_dwh_opdr_materiaal TO aafm;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('NMMS', 2); END;
BEGIN fac.registercustversion('NMMS', 3); END;
/
COMMIT;
spool off