PGHE#68684 -- GBS watchdog en eerste versie monitoring

svn path=/Customer/trunk/; revision=53890
This commit is contained in:
Arthur Egberink
2021-11-26 16:29:26 +00:00
parent 6de7a04e09
commit f9886ecea0

View File

@@ -38,6 +38,16 @@ AS
FUNCTION klant_melding (p_melding_key IN NUMBER)
RETURN NUMBER;
FUNCTION get_weging (p_startdatum IN DATE, p_stdmeldinggroep_naam IN VARCHAR2)
RETURN NUMBER;
PROCEDURE mail_gbs_melding(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
END;
/
@@ -78,6 +88,7 @@ AS
AND std1.mld_stdmelding_key = std2.mld_stdmelding_key)
OR
( std1.mld_stdmeldinggroep_key <> 1 -- Prestatiekortingen
AND std1.mld_Stdmeldinggroep_key <> 8 -- Losse voorzieningen worden niet samengenomen
AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte
)
AND m1.mld_melding_key <> m2.mld_melding_key
@@ -194,6 +205,7 @@ AS
RETURN NUMBER
AS
v_klant_melding NUMBER;
v_stdmeldinggroep_key NUMBER;
BEGIN
SELECT DECODE (a.prs_bedrijf_key, 1021, 1, 0) klant_melding -- bedrijfskey van Gemeente Heerlen
INTO v_klant_melding
@@ -203,11 +215,106 @@ AS
WHERE m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND m.mld_melding_key = p_melding_key;
-- Prestatiekortingen worden altijd berekend ook als ze door RHHR zelf gemeld zijn.
IF v_klant_melding = 0 THEN
SELECT mld_stdmeldinggroep_key
INTO v_stdmeldinggroep_key
FROM mld_melding m, mld_stdmelding std
WHERE std.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = p_melding_key;
IF v_stdmeldinggroep_key = 1 THEN --- ToDo: Alle vakgroeptypen toevoegen.
RETURN 1;
END IF;
END IF;
RETURN v_klant_melding;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN 0;
END;
FUNCTION get_weging (p_startdatum IN DATE, p_stdmeldinggroep_naam IN VARCHAR2)
RETURN NUMBER
AS
v_mld_stdmelding_regime NUMBER;
v_norm_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL);
v_beginuur NUMBER;
v_einduur NUMBER;
v_werkdagen NUMBER;
BEGIN
IF SUBSTR(p_stdmeldinggroep_naam,1,15) = 'Beschikbaarheid' -- TODO conditie metingen toevoegen
OR p_stdmeldinggroep_naam = 'Functionaliteit voorziening'
THEN
CASE WHEN p_startdatum BETWEEN TO_DATE('20210101', 'yyyymmdd') AND TO_DATE('20270101', 'yyyymmdd')
THEN RETURN 1;
WHEN p_startdatum BETWEEN TO_DATE('20270101', 'yyyymmdd') AND TO_DATE('20320101', 'yyyymmdd')
THEN RETURN 0.85;
WHEN p_startdatum BETWEEN TO_DATE('20320101', 'yyyymmdd') AND TO_DATE('20370101', 'yyyymmdd')
THEN RETURN 0.7;
ELSE
RETURN 0;
END CASE;
ELSE
RETURN 1;
END IF;
END;
PROCEDURE mail_gbs_melding(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_volgnr NUMBER;
BEGIN
IF psubject = 'Watchdog Alarm'
THEN
UPDATE fac_usrdata
SET fac_usrdata_vervaldatum = SYSDATE
WHERE fac_usrdata_key = 181; -- Watchdog
ELSE
UPDATE fac_usrdata
SET fac_usrdata_vervaldatum = SYSDATE
WHERE fac_usrdata_key = 60; -- Laatst ontvangen bericht
v_errorhint := 'Bepaal volgnummer';
SELECT MAX(fac_rapport_volgnr)
INTO v_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'GBS_MELDING';
v_errorhint := 'Bewaar mail ' || v_volgnr;
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES ('GBS_MELDING', v_volgnr + 1, pfrom || CHR (10) || psubject || CHR (10) || pbody);
END IF;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('GBS_MELDING', 'E', v_errormsg, v_errorhint);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Fout bij verwerken GBS bericht: ' || psubject);
END;
END;
/
@@ -352,7 +459,7 @@ CREATE OR REPLACE VIEW pghe_v_monitoring
wht_tht,
totaal,
totaal_z_respijt,
totaal_index,
totaal_weging,
status,
afgerond,
dienst,
@@ -372,26 +479,26 @@ CREATE OR REPLACE VIEW pghe_v_monitoring
note
)
AS
SELECT m_start, --mld_melding_key,
SELECT m_start melding_key, --mld_melding_key,
DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
|| DECODE (g.respijt.tijdsduur, 0, '', 'R') -- er is een respijt ingevuld
|| DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee
|| DECODE (niet_overlappen, 1, 'O', '') -- melding is gemarkeerd als zijnde niet te overlappen met een andere melding
|| DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'),
|| DECODE (aantal_beschikb, 0, '', 'B') afw, -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja') indult,
DECODE (g.respijt.tijdsduur,
0, NULL,
TO_CHAR (ROUND (g.respijt.tijdsduur, 2)))
respijt,
prs_kostenplaats_nr,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
prs_kostenplaats_nr kostenplaats,
alg_locatie_code locatie,
alg_gebouw_upper gebouw,
alg_verdieping_volgnr verdieping,
ruimte,
mld_stdmelding_omschrijving,
t_van,
mld_stdmelding_omschrijving omschrijving,
t_van begin,
gereed,
thtijdstip,
thtijdstip thtijdstip,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = m_start --mld_melding_key
@@ -420,16 +527,17 @@ AS
DECODE (
telaat,
1,
coalesce(bk,0) + DECODE(vk, null, 0, (TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk)), -- Alleen als dagen x24!
(coalesce(bk,0) + DECODE(vk, null, 0, (TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk))) * -- Alleen als dagen x24!
wegingsfactor,
NULL)
totaal_index,
totaal_weging,
(SELECT mld_statuses_omschrijving
FROM mld_statuses
WHERE mld_statuses_key = mld_melding_status),
DECODE (mld_melding_afgerond, 1, 'x'),
WHERE mld_statuses_key = mld_melding_status) status,
DECODE (mld_melding_afgerond, 1, 'x') afgerond,
(SELECT prs_dienst_omschrijving
FROM prs_dienst
WHERE prs_dienst_key = g.prs_dienst_key),
WHERE prs_dienst_key = g.prs_dienst_key) dienst,
mld_stdmelding_key,
mld_ins_discipline_key,
overlappend,
@@ -439,16 +547,16 @@ AS
WHERE COALESCE(m2.mld_melding_parentkey, -1) = m_start
GROUP BY m2.mld_melding_parentkey) gekoppeld,
wegingsfactor,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_melding_omschrijving melding_omschrijving,
mld_melding_opmerking melding_opmerking,
klant_melding,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = g.prs_bedrijf_key)
prs_bedrijf_naam,
DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1),
PCHX.get_kenmerk('MLD', 102, m_start), -- bedrijf die de malus moet betalen
ins_srtdiscipline_prefix,
bedrijf_naam,
DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1) og,
PCHX.get_kenmerk('MLD', 102, m_start) bedrijf_malus, -- bedrijf die de malus moet betalen
ins_srtdiscipline_prefix prefix,
(SELECT listagg (mld_srtkenmerk_omschrijving || ': ' || PCHX.get_kenmerk ('MLD',k.mld_kenmerk_key, m_start), chr(10)) WITHIN GROUP (ORDER BY k.mld_kenmerk_volgnummer)
AS kenmerken
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
@@ -551,7 +659,7 @@ AS
- m.min_t_sla.tijdsduur,
m.max_t_actual.eenheid)
uitloop_z_respijt, -- hoeveel te laat
sr.alg_srtruimte_prijs4 wegingsfactor, -- wegingsfactor bij soortruimte
pghe.get_weging(m.t_van, stdg.mld_stdmeldinggroep_naam) wegingsfactor, -- Afhankelijk van de stdmeldinggroep en de periode
-- is de tijd van de melding aangepast?
(SELECT COUNT ( * )
FROM fac_tracking t, fac_srtnotificatie sn
@@ -582,9 +690,10 @@ AS
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND (UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q'
OR (PCHX.get_user = 'PCHA' AND d.ins_discipline_key in (232, 220)) -- V en G, W en R
OR klant_melding = 1)
AND ( UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) =
'P' -- Prestatiemelding
OR d.ins_discipline_key IN (86, 90) -- V en G, W en R
OR klant_melding = 1)
-- meldingen op inspecties worden altijd getoond (Kq)
-- anders alleen storingen ingelegd door klant medewerkers
-- alleen meldingen waarvoor een malus geldt
@@ -1511,6 +1620,18 @@ END;
/
-- Rapport om de sychronisatie status van de koppeling op de portal te tonen.
CREATE OR REPLACE VIEW pghe_v_rap_gbs_status_info
(
item_key,
item,
datum
)
AS
SELECT fac_usrdata_key, fac_usrdata_code, fac_usrdata_vervaldatum
FROM fac_usrdata
WHERE fac_usrtab_key = 60;
------ payload end ------
SET DEFINE OFF