From eac171f9b3567cba7c8a4dad4af320bb4bad5029 Mon Sep 17 00:00:00 2001 From: Suzan Wiegerinck Date: Wed, 24 Mar 2021 11:35:35 +0000 Subject: [PATCH] PNBR#64700: Monitoring werkplekbezetting in Facilitor svn path=/Customer/trunk/; revision=50466 --- PNBR/pnbr.sql | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/PNBR/pnbr.sql b/PNBR/pnbr.sql index 20bfac2f5..e72a49848 100644 --- a/PNBR/pnbr.sql +++ b/PNBR/pnbr.sql @@ -8756,7 +8756,87 @@ AS (SELECT fac_notificatie_job_nextrun 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