PNBR#64700: Monitoring werkplekbezetting in Facilitor

svn path=/Customer/trunk/; revision=50466
This commit is contained in:
Suzan Wiegerinck
2021-03-24 11:35:35 +00:00
parent 839cc10cfd
commit eac171f9b3

View File

@@ -8757,6 +8757,86 @@ AS
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_OGD');
CREATE OR REPLACE VIEW PNBR_V_STATUSVERLOOP_WPBEZ
AS
SELECT d.ins_deel_omschrijving,
d.ins_deel_key,
r.alg_ruimte_key,
r.alg_ruimte_nr,
stat_his.ranking,
stat_his.ins_deel_state,
DECODE (stat_his.ins_deel_state,
0, 'vrij',
1, 'bezet',
99, 'storing') status,
stat_his.ins_deel_statedate,
COALESCE (stat_his.duur_status,
ROUND ((SYSDATE - stat_his.ins_deel_statedate) * 1440)) duur_status
FROM ins_deel d,
alg_ruimte r,
(SELECT ranking,
ins_deel_key,
ins_deel_state,
ins_deel_statedate,
( ins_deel_statedate
- LAG (ins_deel_statedate)
OVER (PARTITION BY ins_deel_key ORDER BY ranking))
* -1440 AS duur_status --- duur van de status in minuten
FROM (SELECT ins_deel_key,
ins_deel_state,
ins_deel_statedate,
RANK ()
OVER (
PARTITION BY ins_deel_key
ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking
FROM ins_deel_state_history) rank_state) stat_his
WHERE d.ins_deel_key = stat_his.ins_deel_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key;
--- bezet wordt direct bezet
--- tussen 15 en 60 minuten vrij zien we als medewerker afwezig
--- vrij nemen we pas weer over als deze status langer dan een uur duurt
CREATE OR REPLACE VIEW pnbr_v_wpbez
AS
SELECT DISTINCT
d.ins_deel_omschrijving,
d.alg_ruimte_key,
d.ins_deel_key,
d.alg_ruimte_nr,
CASE
WHEN current_state.ins_deel_state = 0
AND current_state.duur_status > 59
THEN
'vrij'
WHEN current_state.ins_deel_state = 0
AND current_state.duur_status < 60
AND current_state.duur_status > 15
THEN
'medewerker afwezig'
WHEN current_state.ins_deel_state = 99
THEN
'storing'
ELSE
'bezet'
END def_status
FROM pnbr_v_statusverloop_wpbez d,
(SELECT ranking,
ins_deel_key,
ins_deel_state,
ins_deel_statedate,
ROUND ((SYSDATE - ins_deel_statedate) * 1440) AS duur_status --- duur van de status in minuten
FROM (SELECT ins_deel_key,
ins_deel_state,
ins_deel_statedate,
RANK ()
OVER (
PARTITION BY ins_deel_key
ORDER BY
ins_deel_key, ins_deel_statedate DESC) AS ranking
FROM ins_deel_state_history) rank_state
WHERE ranking = 1) current_state
WHERE d.ins_deel_key = current_state.ins_deel_key;
------ payload end ------
SET DEFINE OFF