AASA#70046 -- Assetmanagement voor SABIC inrichten

svn path=/Customer/trunk/; revision=54435
This commit is contained in:
Jos Migo
2022-01-07 07:47:20 +00:00
parent 8d0a05f821
commit 2a3f35ea91

View File

@@ -20,7 +20,98 @@ SET DEFINE OFF
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE aasa_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
CURSOR c
IS
SELECT ins_deel_omschrijving,
ins_deel_mjb_score1,
ins_deel_mjb_score2,
ins_srtcontroledl_xcp_key,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk
WHERE kd.ins_deel_key = d.ins_deel_key
AND kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.ins_srtkenmerk_omschrijving = 'Kritische asset')
kritisch,
(SELECT TO_CHAR (ins_deelsrtcontrole_datum_org, 'YYYY')
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key = x.ins_srtcontrole_key
AND dsc.ins_deelsrtcontrole_status = 0)
orgdatum,
COALESCE (fac.nextcyclusdate (
COALESCE (
(SELECT MAX (ins_deelsrtcontrole_datum)
FROM ins_deelsrtcontrole dsc
WHERE ins_deelsrtcontrole_status <> 0
AND dsc.ins_deel_key =
d.ins_deel_key
AND dsc.ins_srtcontrole_key =
x.ins_srtcontrole_key),
DECODE (x.ins_srtcontroledl_xcp_startdat,
NULL, d.ins_deel_aanmaak,
TO_DATE (NULL))),
1, -- interval
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_bits,
1,
1),
ins_srtcontroledl_xcp_startdat) volgende
FROM ins_deel d,
ins_srtcontroledl_xcp x,
ins_srtcontrole sc,
ctr_disc_params dp
WHERE d.ins_deel_key = x.ins_deel_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND sc.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 1;
v_prio NUMBER;
v_freeze VARCHAR2 (4);
BEGIN
-- Conditiescores worden vanaf 2020.1 in het proces berekend, per melding en ook direct naar het object.
-- Deze object-scores worden moeten vervolgens geagregeerd worden naar gebouw en locatieniveau. Doen we dagelijks dmv onderstaande procedure:
---- Call this procedure to update aggregate scores (for a location/building)
---- PROCEDURE update_aggr_scores (p_locatie_key IN NUMBER DEFAULT NULL, p_gebouw_key IN NUMBER DEFAULT NULL);
cnd.update_aggr_scores (NULL, NULL);
-- pas de urgentie bij de taken aan
SELECT fac.getSetting ('mjb_feeze_year')
INTO v_freeze
FROM DUAL;
FOR rec IN c
LOOP
-- kritische installatie en planning dit jaar of vorig jaar niet uitgevoerd.
IF rec.kritisch = 1
AND (TO_CHAR (rec.volgende, 'yyyy') = v_freeze OR rec.orgdatum <= v_freeze)
THEN
v_prio := 3;
-- planning vorig jaar + storingshistorie
ELSIF rec.orgdatum < v_freeze
THEN
v_prio := 3;
--prioriteit < 4
ELSIF rec.ins_deel_mjb_score2 < 4 OR rec.ins_deel_mjb_score1 >= 4
THEN
v_prio := 3;
ELSIF rec.ins_deel_mjb_score2 < 7
THEN
v_prio := 2;
ELSE
v_prio := 1;
END IF;
UPDATE ins_srtcontroledl_xcp x
SET ins_srtcontroledl_xcp_prio = v_prio
WHERE x.ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
END LOOP;
aaxx_daily_task (p_applname, p_applrun);
END;
/