FZKH#87266 -- Implementatie - Aanpassingen van de Inspecties en MT Assets import zodat de nieuwe werkwijze wordt ondersteund.

svn path=/Customer/trunk/; revision=70481
This commit is contained in:
Norbert Wassink
2025-10-01 08:47:43 +00:00
parent 4cd8b4b323
commit c2edd159bc

View File

@@ -1520,24 +1520,36 @@ AS
v_maand_bits NUMBER (10);
v_ctr_ins_discipline_key NUMBER;
v_ins_srtcontrole_info VARCHAR2(2000);
v_ins_srtcontrole_opm VARCHAR2(320);
v_taak_omschrijving VARCHAR2(60);
CURSOR c_inspecties
IS
SELECT fac_imp_csv_col01 INS_DISCIPLINE_OMSCHRIJVING,
fac_imp_csv_col02 INS_SRTGROEP_OMSCHRIJVING,
fac_imp_csv_col03 INS_SRTDEEL_CODE,
fac_imp_csv_col04 INS_SRTCONTROLE_OMSCHRIJVING,
fac_imp_csv_col05 INS_SRTCONTROLE_INFO,
fac_imp_csv_col06 INS_SRTCONTROLE_PERIODE,
fac_imp_csv_col07 INS_SRTCONTROLE_MODE,
fac_imp_csv_col08 INS_SRTCONTROLE_EENHEID,
fac_imp_csv_col09 INS_SRTCONTROLE_BITS,
fac_imp_csv_col10 INS_SRTCONTROLE_OPMERKING
fac_imp_csv_col05 INS_SRTCONTROLE_OMSCHRIJVING,
fac_imp_csv_col06 INS_SRTCONTROLE_INFO,
fac_imp_csv_col07 INS_SRTCONTROLE_OMS,
fac_imp_csv_col08 INS_SRTCONTROLE_PERIODE,
fac_imp_csv_col09 INS_SRTCONTROLE_EENHEID,
fac_imp_csv_col10 INS_SRTCONTROLE_MODE,
fac_imp_csv_col11 INS_SRTCONTROLE_BITS,
fac_imp_csv_col12 INS_SRTCONTROLE_groep,
fac_imp_csv_col13 ins_srtcontrole_leverancier,
fac_imp_csv_col14 ins_srtcontrole_doorlooptijd,
fac_imp_csv_col15 ins_srtcontrole_uren,
fac_imp_csv_col16 ins_srtcontrole_opm
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01)<>UPPER('Disciplineomschrijving')
ORDER BY fac_imp_csv_key;
-- MAIN
BEGIN
v_count:=0;
v_count_tot:=0;
FOR rec_ins IN c_inspecties
LOOP
BEGIN
@@ -1550,6 +1562,9 @@ BEGIN
|| rec_ins.ins_srtdeel_code;
v_errorhint := 'Fout bij bepalen discipline';
v_ins_srtcontrole_info:='Afdeling : '||rec_ins.ins_srtcontrole_opm||CHR(14)||'Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE||CHR(13)||'Doorlooptijd :'||rec_ins.ins_srtcontrole_doorlooptijd;
v_ins_srtcontrole_opm:='Afdeling : '||rec_ins.ins_srtcontrole_opm||CHR(14)||'Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE;
IF rec_ins.ins_discipline_omschrijving IS NULL
THEN
fac.imp_writelog (
@@ -1582,7 +1597,7 @@ BEGIN
SELECT ins_srtdeel_key, 'S'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_srtdeel
WHERE UPPER (ins_srtdeel_code) = UPPER (rec_ins.ins_srtdeel_code)
WHERE UPPER (ins_srtdeel_code) = UPPER (SUBSTR(rec_ins.ins_srtdeel_code,0,8))
AND ins_srtdeel_module = 'INS'
AND ins_srtdeel_verwijder IS NULL
AND ins_srtgroep_key = v_ins_srtinstallatie_key;
@@ -1598,12 +1613,12 @@ BEGIN
INTO v_maand_bits
FROM DUAL;
v_aanduiding:='Taak categorie '||rec_ins.ins_srtcontrole_info||' niet gevonden';
v_aanduiding:='Taak categorie '||rec_ins.INS_SRTCONTROLE_groep||' niet gevonden';
SELECT ctr_ins_discipline_key
INTO v_ctr_ins_discipline_key
FROM ctr_disc_params csp,
ctr_discipline i
WHERE i.ins_discipline_omschrijving=rec_ins.ins_srtcontrole_info
WHERE i.ins_discipline_omschrijving='MT Onderhoud taken-'||rec_ins.INS_SRTCONTROLE_groep
AND i.ins_discipline_verwijder IS NULL
AND csp.ctr_ins_discipline_key = i.ins_discipline_key
AND csp.ctr_disc_params_controle_type=1 ;
@@ -1616,9 +1631,14 @@ BEGIN
rec_ins.ins_srtcontrole_mode IS NOT NULL AND
(rec_ins.ins_srtcontrole_mode = 1 OR (1=1))
THEN
IF LENGTH(rec_ins.ins_srtcontrole_leverancier)>0
THEN
v_taak_omschrijving:=rec_ins.ins_srtcontrole_omschrijving||'-'||rec_ins.ins_srtcontrole_leverancier;
ELSE
v_taak_omschrijving:=rec_ins.ins_srtcontrole_omschrijving;
END IF;
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
@@ -1628,19 +1648,22 @@ BEGIN
ins_srtcontrole_mode, -- 0=moment-modus of 1=interval-modus
ins_srtcontrole_bits, -- 1=Jan, 2=Feb, 4=mart, 8=april enz
ctr_discipline_key,
ins_srtcontrole_uren,
ins_srtcontrole_opmerking
)
VALUES (v_ins_srtinstallatie_key,
v_ins_srtcontrole_niveau,
rec_ins.ins_srtcontrole_omschrijving,
rec_ins.ins_srtcontrole_info,
v_taak_omschrijving,
v_ins_srtcontrole_info,
rec_ins.ins_srtcontrole_periode,
rec_ins.ins_srtcontrole_eenheid,
rec_ins.ins_srtcontrole_mode,
rec_ins.ins_srtcontrole_bits,
v_ctr_ins_discipline_key,
rec_ins.ins_srtcontrole_opmerking
fac.safe_to_number(REPLACE(rec_ins.ins_srtcontrole_uren,',','.')),
v_ins_srtcontrole_opm
);
v_count:=v_count+1;
ELSE
IF rec_ins.ins_srtcontrole_mode = 0 AND (v_week_bits = 0 OR v_maand_bits = 0)
THEN v_errorhint := 'Het verplichte veld "Moment" is niet (goed) ingevuld: inspectie wordt niet toegevoegd.';
@@ -1669,6 +1692,11 @@ BEGIN
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'I',
'Er zijn '||TO_CHAR(v_count)||' van de '||TO_CHAR(v_count_tot)||' taken aangemaakt',
'Verwerking');
EXCEPTION
WHEN OTHERS
THEN
@@ -3583,7 +3611,7 @@ AS
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col45='ONWAAR'
AND fac_imp_csv_col48 IS NOT NULL
AND fac_imp_csv_col50='Actief'
AND fac_imp_csv_col50='Actief'
ORDER BY fac_imp_csv_key;
CURSOR sel_controle_skip(p_ins_srtdeel_key IN NUMBER, p_ins_srtcontrole_key IN NUMBER)
@@ -3604,7 +3632,11 @@ AS
v_srtcontrole_key NUMBER;
v_count NUMBER;
v_counter NUMBER;
v_counter_taak NUMBER;
v_log_info VARCHAR2(200);
v_ins_deelsrtcontrole_key NUMBER;
v_ins_srtcontrole_periode NUMBER;
v_ins_deel VARCHAR2(100);
v_maand VARChar2(15);
@@ -3634,6 +3666,7 @@ BEGIN
-- Gaan we nu de objecten aan de juiste afdeling koppelen
FOR rec IN sel
LOOP
v_ins_deel := rec.ins_deel_omschrijving;
BEGIN
SELECT ins_deel_key
INTO v_ins_deel_key
@@ -3698,8 +3731,10 @@ BEGIN
-- gaan we nu de periodiek taken maken en aan de xcp records met de juiste taak start datum
v_counter:=0;
v_counter_taak:=0;
FOR c IN sel_controle
LOOP
v_ins_deel := c.ins_deel_omschrijving;
v_counter:=v_counter+1;
-- Welk maand met het onderhoud plaats vinden
SELECT CASE TO_CHAR(TO_DATE(c.ctr_onderhoud_datum,'DD-MM-YYYY'),'MM')
@@ -3721,27 +3756,27 @@ BEGIN
FROM DUAL;
BEGIN
v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' in '||v_maand||' gaat fout. - '||v_counter;
SELECT MIN(isc.ins_srtcontrole_key),
i.ins_deel_key,
i.ins_srtdeel_key
INTO v_srtcontrole_key,
v_ins_deel_key,
v_ins_srtdeel_key
FROM ins_srtcontrole isc,
ins_deel i,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id
WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving
AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key=isg.ins_discipline_key
AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %'||v_maand||'%')
GROUP BY i.ins_deel_key,i.ins_srtdeel_key;
v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' in '||v_maand||' gaat fout. - '||v_counter;
SELECT MIN(isc.ins_srtcontrole_key),
i.ins_deel_key,
i.ins_srtdeel_key
INTO v_srtcontrole_key,
v_ins_deel_key,
v_ins_srtdeel_key
FROM ins_srtcontrole isc,
ins_deel i,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id
WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving
AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND id.ins_discipline_key=isg.ins_discipline_key
AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek')
AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %'||v_maand||'%')
GROUP BY i.ins_deel_key,i.ins_srtdeel_key;
v_log_info:='';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -3767,7 +3802,7 @@ BEGIN
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %')
GROUP BY i.ins_deel_key,i.ins_srtdeel_key;
v_log_info:='Object '||v_ins_deel|| 'is gekoppeld aan andere taak dan gevraagde: Onderhoud '||v_maand||' omdat deze niet gevonden kon worden';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -3778,88 +3813,118 @@ BEGIN
'Taak niet toegevoegd');
END;
END;
v_aanduiding:='Uitzonderingstaak niet gevonden';
v_count:=0;
SELECT count(*)
INTO v_count
from ins_srtcontroledl_xcp isx
WHERE isx.ins_srtcontrole_key=v_srtcontrole_key
AND ins_deel_key=v_ins_deel_key;
IF v_count=0
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_startdat)
VALUES (v_ins_deel_key,
v_srtcontrole_key,
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'));
END IF;
-- Gaan we nu de srtcontrole die niet gelden voor dit asset een xcp record aanmaken met einddatum
FOR c2 IN sel_controle_skip(v_ins_srtdeel_key, v_srtcontrole_key)
LOOP
SELECT count(*)
INTO v_count
from ins_srtcontroledl_xcp isx
WHERE isx.ins_srtcontrole_key=c2.ins_srtcontrole_key
AND ins_deel_key=v_ins_deel_key;
IF v_count=0
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eind)
VALUES (v_ins_deel_key,
c2.ins_srtcontrole_key,
0,
fac.safe_to_date('31-12-2024','DD-MM-YYYY'));
END IF;
END LOOP;
IF v_ins_deel_key>0 AND v_srtcontrole_key>0
THEN
v_aanduiding:='Uitzonderingstaak niet gevonden';
v_count:=0;
SELECT count(*)
INTO v_count
from ins_srtcontroledl_xcp isx
WHERE isx.ins_srtcontrole_key=v_srtcontrole_key
AND ins_deel_key=v_ins_deel_key;
-- Wat is de statdaar periode van deze srtcontrole
SELECT ins_srtcontrole_periode
INTO v_ins_srtcontrole_periode
FROm ins_srtcontrole
WHERE ins_srtcontrole_key=v_srtcontrole_key;
-- gaan we hem ook gelijk inplannen
IF v_ins_deel_key>0 AND v_srtcontrole_key>0
THEN
SELECT COUNT(*)
INTO v_count
FROM ins_deelsrtcontrole
WHERE ins_deel_key=v_ins_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key
AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
AND ins_scenario_key=1;
IF v_count=0
THEN
INSERT INTO ins_deelsrtcontrole( ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES(v_ins_deel_key,
v_srtcontrole_key,
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'),
0, --status ingepland
1, -- sceario
3); -- Facilitor
ELSIF v_count=1
THEN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_plandatum= fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
WHERE ins_deel_key =v_ins_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
END IF;
IF v_count=0
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_startdat)
VALUES (v_ins_deel_key,
v_srtcontrole_key,
fac.safe_to_number(v_ins_srtcontrole_periode),
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'));
IF LENGTH(v_log_info) > 0
THEN
fac.imp_writelog (p_import_key,
'W',
v_log_info,
'Taak toegevoegd');
END IF;
v_counter_taak:=v_counter_taak+1;
END IF;
-- Gaan we nu de srtcontrole die niet gelden voor dit asset een xcp record aanmaken met einddatum
/* FOR c2 IN sel_controle_skip(v_ins_srtdeel_key, v_srtcontrole_key)
LOOP
SELECT count(*)
INTO v_count
from ins_srtcontroledl_xcp isx
WHERE isx.ins_srtcontrole_key=c2.ins_srtcontrole_key
AND ins_deel_key=v_ins_deel_key;
IF v_count=0
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eind)
VALUES (v_ins_deel_key,
c2.ins_srtcontrole_key,
0,
fac.safe_to_date('31-12-2024','DD-MM-YYYY'));
END IF;
END LOOP; */
/* -- gaan we hem ook gelijk inplannen
SELECT COUNT(*)
INTO v_count
FROM ins_deelsrtcontrole
WHERE ins_deel_key=v_ins_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key
AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
AND ins_scenario_key=1;
IF v_count=0
THEN
INSERT INTO ins_deelsrtcontrole( ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES(v_ins_deel_key,
v_srtcontrole_key,
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'),
0, --status ingepland
1, -- sceario
3); -- Facilitor
ELSIF v_count=1
THEN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_plandatum= fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
WHERE ins_deel_key =v_ins_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
END IF; */
ELSE
fac.imp_writelog (p_import_key,
'E',
'Taak niet aangemaakt voor '||c.ins_deel_omschrijving||' in '||v_maand||'('||v_counter||')',
'Taak niet aangemaakt');
END IF;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Taken ingelezen :'||v_counter||' , taken teogeveogd :'||v_counter_taak,
'Taken rapport');
EXCEPTION
WHEN OTHERS
THEN
@@ -3867,9 +3932,13 @@ EXCEPTION
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding,
v_errormsg);
fac.imp_writelog (p_import_key,
'E',
'Importproces MT assets afgebroken! ('||v_counter||')',
'Importproces MT assets afgebroken! Ins_deel='||v_ins_deel||'('||v_counter||')',
v_errormsg);