#90075 Ondersteuning werkplekbeheer in verschillende tijdzones
svn path=/Database/branches/DB52/; revision=70955
This commit is contained in:
189
CAD/CAD_VIE.SRC
189
CAD/CAD_VIE.SRC
@@ -132,8 +132,8 @@ AS
|
||||
COUNT (ra.prs_afdeling_key) aantal
|
||||
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling d
|
||||
WHERE ra.prs_afdeling_key = d.prs_afdeling_key
|
||||
AND SYSDATE BETWEEN ra.prs_ruimteafdeling_ingangsdatum
|
||||
AND COALESCE (ra.prs_ruimteafdeling_einddatum, TRUNC (SYSDATE) + 1)
|
||||
AND SYSDATE BETWEEN ra.prs_ruimteafdeling_ingangsdatum
|
||||
AND COALESCE (ra.prs_ruimteafdeling_einddatum, TRUNC (SYSDATE) + 1)
|
||||
GROUP BY ra.alg_ruimte_key) x;
|
||||
|
||||
// De afdelingsbezetting maar dan gebaseerd op de afdelingen
|
||||
@@ -579,6 +579,7 @@ AS
|
||||
-- waarde_html: van Naam [default]
|
||||
-- waarde_html2: Naam
|
||||
|
||||
-- Let op: er ook een cad_v_label_deel_res_datum_TZ met timezone ondersteuning. Die wordt met 2026.1 de standaard.
|
||||
CREATE_VIEW(cad_v_label_deel_res_datum, 0)
|
||||
(
|
||||
fclt_f_datum,
|
||||
@@ -673,6 +674,110 @@ AS
|
||||
WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+)
|
||||
GROUP BY datums.datum, isd.res_ins_deel_key, res_deel_omschrijving;
|
||||
|
||||
-- Variant van cad_v_label_deel_res_datum met Timezone ondersteuning. Moet met 2026.1 de standaard worden
|
||||
CREATE_VIEW(cad_v_label_deel_res_datum_TZ, 0)
|
||||
(
|
||||
fclt_f_datum,
|
||||
ins_deel_key,
|
||||
res_deel_omschrijving,
|
||||
waarde1,
|
||||
waarde,
|
||||
waarde3,
|
||||
waarde_html,
|
||||
waarde_html2
|
||||
)
|
||||
AS
|
||||
WITH
|
||||
datums
|
||||
AS
|
||||
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
|
||||
FROM DUAL
|
||||
CONNECT BY LEVEL <= 42)
|
||||
SELECT datums.datum
|
||||
fclt_f_datum,
|
||||
isd.res_ins_deel_key
|
||||
ins_deel_key,
|
||||
res_deel_omschrijving,
|
||||
CHR (10)
|
||||
|| LISTAGG (
|
||||
DECODE (
|
||||
naam,
|
||||
NULL, '',
|
||||
'[s40]'
|
||||
|| naam
|
||||
|| ' ('
|
||||
|| TO_CHAR (localized_van, 'HH24:MI')
|
||||
|| '-'
|
||||
|| DECODE (TRUNC (localized_tot),
|
||||
TRUNC (localized_van), TO_CHAR (localized_tot, 'HH24:MI'),
|
||||
TO_CHAR (localized_tot, 'DD-MM-YYYY HH24:MI'))
|
||||
|| ')'),
|
||||
CHR (10))
|
||||
WITHIN GROUP (ORDER BY localized_van)
|
||||
waarde1,
|
||||
CHR (10)
|
||||
|| LISTAGG (
|
||||
DECODE (naam,
|
||||
NULL, '',
|
||||
'[s40]' || TO_CHAR (localized_van, 'HH24:MI') || ' ' || naam),
|
||||
CHR (10))
|
||||
WITHIN GROUP (ORDER BY localized_van)
|
||||
waarde2,
|
||||
CHR (10)
|
||||
|| LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10))
|
||||
WITHIN GROUP (ORDER BY localized_van)
|
||||
waarde3,
|
||||
LISTAGG (
|
||||
DECODE (
|
||||
naam,
|
||||
NULL, '',
|
||||
'<span class="body">'
|
||||
|| TO_CHAR (localized_van, 'HH24:MI')
|
||||
|| ' '
|
||||
|| naam
|
||||
|| '</span>'),
|
||||
'<br>')
|
||||
WITHIN GROUP (ORDER BY localized_van)
|
||||
waarde_html,
|
||||
LISTAGG (DECODE (naam, NULL, '', '<span class="body">' || naam || '</span>'), '<br>')
|
||||
WITHIN GROUP (ORDER BY localized_van)
|
||||
waarde_html2
|
||||
FROM res_v_aanwezigdeel isd,
|
||||
datums,
|
||||
(SELECT datum,
|
||||
res_ins_deel_key,
|
||||
DECODE (p.prs_perslid_visibility,
|
||||
1, pf.prs_perslid_naam_friendly,
|
||||
a.prs_afdeling_omschrijving)
|
||||
naam,
|
||||
res_rsv_deel_van,
|
||||
res_rsv_deel_tot,
|
||||
CAST (
|
||||
FROM_TZ (CAST (rrr.res_rsv_ruimte_van AS TIMESTAMP), fac.getsetting ('fac_server_timezone'))
|
||||
AT TIME ZONE COALESCE (l.alg_locatie_timezone, fac.getsetting ('fac_server_timezone')) AS DATE) localized_van,
|
||||
CAST (
|
||||
FROM_TZ (CAST (rrr.res_rsv_ruimte_tot AS TIMESTAMP), fac.getsetting ('fac_server_timezone'))
|
||||
AT TIME ZONE COALESCE (l.alg_locatie_timezone, fac.getsetting ('fac_server_timezone')) AS DATE) localized_tot
|
||||
FROM res_v_aanwezigdeel r,
|
||||
res_v_aanwezigrsv_deel rrd,
|
||||
res_rsv_ruimte rrr,
|
||||
alg_v_ruimte_gegevens r,
|
||||
alg_locatie l,
|
||||
prs_v_perslid_fullnames pf,
|
||||
prs_perslid p,
|
||||
prs_afdeling a,
|
||||
datums
|
||||
WHERE r.res_deel_key = rrd.res_deel_key
|
||||
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
|
||||
AND rrr.alg_ruimte_key = r.alg_ruimte_key
|
||||
AND r.alg_locatie_key = l.alg_locatie_key
|
||||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND datum + 1 >= res_rsv_deel_van
|
||||
AND datum < res_rsv_deel_tot ) res -- Bezet
|
||||
WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+)
|
||||
GROUP BY datums.datum, isd.res_ins_deel_key, res_deel_omschrijving;
|
||||
|
||||
--
|
||||
-- Thema's gebaseerd op objectstatus van objecten binnen ruimte/werkplek (typisch sensoren)
|
||||
@@ -790,6 +895,7 @@ AS
|
||||
-- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
|
||||
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
|
||||
|
||||
-- Let op: er ook een cad_v_thema_deel_res_datum_TZ met timezone ondersteuning. Die wordt met 2026.1 de standaard.
|
||||
CREATE_VIEW(cad_v_thema_deel_res_datum,0)
|
||||
(
|
||||
fclt_f_datum,
|
||||
@@ -848,6 +954,81 @@ AS
|
||||
GROUP BY datum, ins_deel_key
|
||||
ORDER BY datum, ins_deel_key;
|
||||
|
||||
-- Variant van cad_v_thema_deel_res_datum met Timezone ondersteuning. Moet met 2026.1 de standaard worden
|
||||
CREATE_VIEW(cad_v_thema_deel_res_datum_TZ,0)
|
||||
(
|
||||
fclt_f_datum,
|
||||
ins_deel_key,
|
||||
min_van,
|
||||
max_tot,
|
||||
waarde1,
|
||||
waarde,
|
||||
waarde3
|
||||
)
|
||||
AS
|
||||
WITH
|
||||
datums
|
||||
AS
|
||||
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
|
||||
FROM DUAL
|
||||
CONNECT BY LEVEL <= 42)
|
||||
SELECT datum -- serverdatum!
|
||||
fclt_f_datum,
|
||||
ins_deel_key,
|
||||
MIN (localized_van)
|
||||
min_van,
|
||||
MAX (localized_tot)
|
||||
max_tot,
|
||||
CASE WHEN MAX (localized_tot) IS NULL THEN 0 ELSE 3 -- hele dag
|
||||
END
|
||||
waarde1,
|
||||
CASE
|
||||
WHEN MAX (localized_tot) IS NULL THEN 0
|
||||
WHEN TO_CHAR (MAX (localized_tot), 'HH24') <= 13 THEN 1 -- ochtend
|
||||
WHEN TO_CHAR (MIN (localized_van), 'HH24') >= 12 THEN 2 -- middag
|
||||
ELSE 3 -- hele dag
|
||||
END
|
||||
waarde,
|
||||
COUNT (localized_tot) -- aantal reservering deze dag
|
||||
waarde3
|
||||
FROM (SELECT datums.datum,
|
||||
res_ins_deel_key ins_deel_key,
|
||||
localized_van,
|
||||
localized_tot
|
||||
FROM res_v_aanwezigdeel r,
|
||||
ins_deel d,
|
||||
datums,
|
||||
(SELECT datum,
|
||||
res_deel_key,
|
||||
localized_van,
|
||||
localized_tot
|
||||
FROM datums,
|
||||
res_v_aanwezigrsv_deel rrd,
|
||||
(SELECT CAST (
|
||||
FROM_TZ (CAST (res_rsv_ruimte_van AS TIMESTAMP), fac.getsetting ('fac_server_timezone'))
|
||||
AT TIME ZONE COALESCE(l.alg_locatie_timezone, fac.getsetting ('fac_server_timezone')) AS DATE)
|
||||
localized_van,
|
||||
CAST (
|
||||
FROM_TZ (CAST (res_rsv_ruimte_tot AS TIMESTAMP), fac.getsetting ('fac_server_timezone'))
|
||||
AT TIME ZONE COALESCE(l.alg_locatie_timezone, fac.getsetting ('fac_server_timezone')) AS DATE)
|
||||
localized_tot,
|
||||
res_rsv_ruimte_key
|
||||
FROM res_rsv_ruimte rrr,
|
||||
alg_v_ruimte_gegevens r,
|
||||
alg_locatie l
|
||||
WHERE rrr.alg_ruimte_key = r.alg_ruimte_key
|
||||
AND r.alg_locatie_key = l.alg_locatie_key) rrr
|
||||
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND res_rsv_deel_van > TRUNC (SYSDATE) - 1 -- negeer alle irrelevante historie sowieso
|
||||
AND datum + 1 >= localized_van
|
||||
AND datum < localized_tot) blokkerend -- vandaag en nog niet afgelopen
|
||||
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
|
||||
AND datums.datum = blokkerend.datum(+)
|
||||
AND (r.res_deel_vervaldatum IS NULL or r.res_deel_vervaldatum > datums.datum)
|
||||
AND d.ins_deel_key = r.res_ins_deel_key)
|
||||
GROUP BY datum, ins_deel_key
|
||||
ORDER BY datum, ins_deel_key;
|
||||
|
||||
|
||||
-- Paar views om de populariteit van reserveerbare objecten te kunnen illustreren
|
||||
-- Basisview, met aantal per datum
|
||||
@@ -860,7 +1041,7 @@ AS
|
||||
FROM res_rsv_deel rrd, res_deel rd
|
||||
WHERE rrd.res_deel_key = rd.res_deel_key
|
||||
GROUP BY TRUNC (rrd.res_rsv_deel_van), rd.res_ins_deel_key, rd.res_deel_omschrijving;
|
||||
|
||||
|
||||
-- Totaal gereserveerde dagen of delen daarvan in de afgelopen 1, 4 resp 8 wkn
|
||||
CREATE_VIEW(cad_v_thema_deel_populair_1wkn,0)
|
||||
AS
|
||||
@@ -893,7 +1074,7 @@ AS
|
||||
|
||||
|
||||
// Een basisview om sensorgemiddelde per ruimte per dag te berekenen
|
||||
// AI-generated, nog niet nageteld, maar who cares.
|
||||
// AI-generated, nog niet nageteld, maar who cares.
|
||||
// Bevat alleen sensoren met niet-discrete numerieke waarden zoals temperatuur, niet bezetting
|
||||
// Bevat het ruimtegemiddelde van alle sensoren van hetzelfde srtdeel gedurende de kantoortijden
|
||||
CREATE_VIEW(ins_v_sensorgemiddele_per_ruimte_per_dag, 0)
|
||||
|
||||
Reference in New Issue
Block a user