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) FUNCTION klant_melding (p_melding_key IN NUMBER)
RETURN 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; END;
/ /
@@ -78,6 +88,7 @@ AS
AND std1.mld_stdmelding_key = std2.mld_stdmelding_key) AND std1.mld_stdmelding_key = std2.mld_stdmelding_key)
OR OR
( std1.mld_stdmeldinggroep_key <> 1 -- Prestatiekortingen ( 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_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte
) )
AND m1.mld_melding_key <> m2.mld_melding_key AND m1.mld_melding_key <> m2.mld_melding_key
@@ -194,6 +205,7 @@ AS
RETURN NUMBER RETURN NUMBER
AS AS
v_klant_melding NUMBER; v_klant_melding NUMBER;
v_stdmeldinggroep_key NUMBER;
BEGIN BEGIN
SELECT DECODE (a.prs_bedrijf_key, 1021, 1, 0) klant_melding -- bedrijfskey van Gemeente Heerlen SELECT DECODE (a.prs_bedrijf_key, 1021, 1, 0) klant_melding -- bedrijfskey van Gemeente Heerlen
INTO v_klant_melding INTO v_klant_melding
@@ -203,11 +215,106 @@ AS
WHERE m.prs_perslid_key = p.prs_perslid_key WHERE m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_afdeling_key = a.prs_afdeling_key
AND m.mld_melding_key = p_melding_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; RETURN v_klant_melding;
EXCEPTION WHEN NO_DATA_FOUND EXCEPTION WHEN NO_DATA_FOUND
THEN THEN
RETURN 0; RETURN 0;
END; 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; END;
/ /
@@ -352,7 +459,7 @@ CREATE OR REPLACE VIEW pghe_v_monitoring
wht_tht, wht_tht,
totaal, totaal,
totaal_z_respijt, totaal_z_respijt,
totaal_index, totaal_weging,
status, status,
afgerond, afgerond,
dienst, dienst,
@@ -372,26 +479,26 @@ CREATE OR REPLACE VIEW pghe_v_monitoring
note note
) )
AS 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 (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
|| DECODE (g.respijt.tijdsduur, 0, '', 'R') -- er is een respijt ingevuld || 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 (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 (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 (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'), DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja') indult,
DECODE (g.respijt.tijdsduur, DECODE (g.respijt.tijdsduur,
0, NULL, 0, NULL,
TO_CHAR (ROUND (g.respijt.tijdsduur, 2))) TO_CHAR (ROUND (g.respijt.tijdsduur, 2)))
respijt, respijt,
prs_kostenplaats_nr, prs_kostenplaats_nr kostenplaats,
alg_locatie_code, alg_locatie_code locatie,
alg_gebouw_upper, alg_gebouw_upper gebouw,
alg_verdieping_volgnr, alg_verdieping_volgnr verdieping,
ruimte, ruimte,
mld_stdmelding_omschrijving, mld_stdmelding_omschrijving omschrijving,
t_van, t_van begin,
gereed, gereed,
thtijdstip, thtijdstip thtijdstip,
(SELECT MAX(fac_tracking_datum) (SELECT MAX(fac_tracking_datum)
FROM fac_tracking FROM fac_tracking
WHERE fac_tracking_refkey = m_start --mld_melding_key WHERE fac_tracking_refkey = m_start --mld_melding_key
@@ -420,16 +527,17 @@ AS
DECODE ( DECODE (
telaat, telaat,
1, 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) NULL)
totaal_index, totaal_weging,
(SELECT mld_statuses_omschrijving (SELECT mld_statuses_omschrijving
FROM mld_statuses FROM mld_statuses
WHERE mld_statuses_key = mld_melding_status), WHERE mld_statuses_key = mld_melding_status) status,
DECODE (mld_melding_afgerond, 1, 'x'), DECODE (mld_melding_afgerond, 1, 'x') afgerond,
(SELECT prs_dienst_omschrijving (SELECT prs_dienst_omschrijving
FROM prs_dienst FROM prs_dienst
WHERE prs_dienst_key = g.prs_dienst_key), WHERE prs_dienst_key = g.prs_dienst_key) dienst,
mld_stdmelding_key, mld_stdmelding_key,
mld_ins_discipline_key, mld_ins_discipline_key,
overlappend, overlappend,
@@ -439,16 +547,16 @@ AS
WHERE COALESCE(m2.mld_melding_parentkey, -1) = m_start WHERE COALESCE(m2.mld_melding_parentkey, -1) = m_start
GROUP BY m2.mld_melding_parentkey) gekoppeld, GROUP BY m2.mld_melding_parentkey) gekoppeld,
wegingsfactor, wegingsfactor,
mld_melding_omschrijving, mld_melding_omschrijving melding_omschrijving,
mld_melding_opmerking, mld_melding_opmerking melding_opmerking,
klant_melding, klant_melding,
(SELECT prs_bedrijf_naam (SELECT prs_bedrijf_naam
FROM prs_bedrijf b FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = g.prs_bedrijf_key) WHERE b.prs_bedrijf_key = g.prs_bedrijf_key)
prs_bedrijf_naam, bedrijf_naam,
DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1), DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1) og,
PCHX.get_kenmerk('MLD', 102, m_start), -- bedrijf die de malus moet betalen PCHX.get_kenmerk('MLD', 102, m_start) bedrijf_malus, -- bedrijf die de malus moet betalen
ins_srtdiscipline_prefix, 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) (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 AS kenmerken
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
@@ -551,7 +659,7 @@ AS
- m.min_t_sla.tijdsduur, - m.min_t_sla.tijdsduur,
m.max_t_actual.eenheid) m.max_t_actual.eenheid)
uitloop_z_respijt, -- hoeveel te laat 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? -- is de tijd van de melding aangepast?
(SELECT COUNT ( * ) (SELECT COUNT ( * )
FROM fac_tracking t, fac_srtnotificatie sn FROM fac_tracking t, fac_srtnotificatie sn
@@ -582,9 +690,10 @@ AS
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+) AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND (UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q' AND ( UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) =
OR (PCHX.get_user = 'PCHA' AND d.ins_discipline_key in (232, 220)) -- V en G, W en R 'P' -- Prestatiemelding
OR klant_melding = 1) 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) -- meldingen op inspecties worden altijd getoond (Kq)
-- anders alleen storingen ingelegd door klant medewerkers -- anders alleen storingen ingelegd door klant medewerkers
-- alleen meldingen waarvoor een malus geldt -- 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 ------ ------ payload end ------
SET DEFINE OFF SET DEFINE OFF