3627 lines
132 KiB
SQL
3627 lines
132 KiB
SQL
DROP PACKAGE DWH.PKG_CALCOLO_SLA_FRANCHIGIA;
|
|
|
|
--
|
|
-- PKG_CALCOLO_SLA_FRANCHIGIA (Package)
|
|
--
|
|
CREATE OR REPLACE PACKAGE DWH.PKG_CALCOLO_SLA_FRANCHIGIA AS
|
|
/******************************************************************************
|
|
NAME: PKG_CALCOLO_SLA_FRANCHIGIA
|
|
PURPOSE:
|
|
|
|
REVISIONS:
|
|
Ver Date Author Description
|
|
--------- ---------- --------------- ------------------------------------
|
|
1.0 11/02/2011 1. Created this package.
|
|
******************************************************************************/
|
|
|
|
|
|
PROCEDURE CALCOLO_SLA0_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA1_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA2_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA3_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA0_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA1_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA2_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA3_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
|
|
PROCEDURE CALCOLO_SLA1_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA2_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA3_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA1_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA2_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CALCOLO_SLA3_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
|
|
|
|
PROCEDURE CALCOLO_SLA_FRANCHIGIA(dataRif IN DATE);
|
|
|
|
|
|
END PKG_CALCOLO_SLA_FRANCHIGIA;
|
|
/
|
|
|
|
|
|
|
|
DROP PACKAGE BODY DWH.PKG_CALCOLO_SLA_FRANCHIGIA;
|
|
|
|
--
|
|
-- PKG_CALCOLO_SLA_FRANCHIGIA (Package Body)
|
|
--
|
|
CREATE OR REPLACE PACKAGE BODY DWH.PKG_CALCOLO_SLA_FRANCHIGIA as
|
|
|
|
|
|
procedure CALCOLO_SLA0_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_pic DATE;
|
|
temp_data_fin_pic DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftempH CHAR(2);
|
|
min_fin_ftempH CHAR(2);
|
|
sec_fin_ftempH CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
ora_fin_fileH CHAR(2);
|
|
min_fin_fileH CHAR(2);
|
|
sec_fin_fileH CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA0_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
temp_data_in_fileRDA DATE;
|
|
temp_data_fin_fileRDA DATE;
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi,
|
|
q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM(
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 1 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 )
|
|
) q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT COUNT(*) AS eventiAttesi,
|
|
q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
FROM(
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 9 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 )
|
|
) q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
,ack_out_pic.nome_file nomeFilePIC
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_ack_out ack_out_pic
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 1 AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_in.tipo_file = 5 AND
|
|
rich_in.id_richiesta = rich_out.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out_pic.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
ack_out_pic.risultato = 'OK'
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR
|
|
to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA
|
|
)
|
|
AND to_date( SUBSTR( q.nomeFilePIC, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
,ack_out_pic.nome_file nomeFilePIC
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_ack_out ack_out_pic
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in.tipo_file = 9 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
rich_in.id_richiesta = rich_out.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out_pic.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
ack_out_pic.risultato = 'OK'
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR
|
|
to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA
|
|
)
|
|
AND to_date( SUBSTR( q.nomeFilePIC, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
-- Finestre temporale TINIZIALE
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH,ora_fin_fileH,min_fin_fileH,sec_fin_fileH
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 9;
|
|
|
|
-- Finestra temporale della presa in carico negativa
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 5;
|
|
|
|
-- carico gli eventi attesi per STD/MVNO
|
|
|
|
-- Setta l'istante iniziale e finale a ieriLAV, poichè il Tmax completamento per lo SLA0 è zero
|
|
-- Tiniziale = giorno prima dell'osservazione (dataRif-1)a fine finestra invio Ack RDA
|
|
-- Tfinale = Ack Recipient in risposta alla PIC (in uscita)
|
|
-- In caso di mancanza di ACK in ingresso considero le finestre temporali dei file
|
|
temp_data_in_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_fin_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_in_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_fin_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA0'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
-- carico gli eventi attesi per pHOC
|
|
|
|
-- Setta l'istante iniziale e finale a ieriLAV, poichè il Tmax completamento per lo SLA0 è zero
|
|
-- Tiniziale = Ack Donating a RDA Recipient (in ingresso)
|
|
-- Tfinale = Ack Recipient i risposta alla PIC (in uscita)
|
|
|
|
temp_data_in_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_fin_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_in_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_fileH ||min_fin_fileH||sec_fin_fileH),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_fileH ||min_fin_fileH||sec_fin_fileH),'YYYYMMDDHH24MISS'),1);
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA0'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
-- aggiorno gli eventi in SLA per STD/MVNO
|
|
|
|
-- calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA0_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA0_RECIPIENT;
|
|
|
|
|
|
procedure CALCOLO_SLA1_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftempH CHAR(2);
|
|
min_fin_ftempH CHAR(2);
|
|
sec_fin_ftempH CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
ora_fin_fileH CHAR(2);
|
|
min_fin_fileH CHAR(2);
|
|
sec_fin_fileH CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA1_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
temp_data_in_fileRDA DATE;
|
|
temp_data_fin_fileRDA DATE;
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi,
|
|
q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM(
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 1 AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato NOT IN (5,9) ) q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT COUNT(*) AS eventiAttesi,
|
|
q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM(
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 9 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato NOT IN (5,9) ) q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
,ack_out_val.nome_file nomeAckVal
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_ack_out ack_out_val
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 1 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
xml_in.tipo_file = 2 AND
|
|
rich_in.id_richiesta = rich_out.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out_val.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
ack_out_val.risultato = 'OK') q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
AND to_date( SUBSTR( q.nomeAckVal, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFileRDA
|
|
,ack_out_val.nome_file nomeFileValAck
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_ack_out ack_out_val
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 9 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_in.tipo_file = 2 AND
|
|
rich_in.id_richiesta = rich_out.id_richiesta AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileRDA) AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out_val.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
ack_out_val.risultato = 'OK' and
|
|
ack_out_val.nome_file_riferito = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=2 --validazione
|
|
AND y.NOME_FILE = x.NOME_FILE)
|
|
) q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
OR to_date( SUBSTR( q.nomeFileRDA, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileRDA AND temp_data_fin_fileRDA)
|
|
AND to_date( SUBSTR( q.nomeFileValAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH,ora_fin_fileH,min_fin_fileH,sec_fin_fileH
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 9;
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
|
|
|
|
|
|
|
|
-- carico gli eventi attesi per std/MVNO
|
|
|
|
-- Setta l'istante iniziale e finale, considerando Tmax completamento per lo SLA1 = 1 ggLav
|
|
-- Tiniziale = Ack Donating a RDA di due giorni prima (datarif-3) a fine finestra temporale
|
|
-- Tfinale = Ack Donating a RDA di un giornio prima (datarif-2) a fine finestra temporale
|
|
-- in assenza di Ack in ingresso considero l'invio del file RDA
|
|
temp_data_in_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_fileRDA := dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
-- carico gli eventi attesi per pHOC
|
|
|
|
-- calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_fileRDA:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_fileH ||min_fin_fileH||sec_fin_fileH),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_fileRDA:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_fileH ||min_fin_fileH||sec_fin_fileH),'YYYYMMDDHH24MISS'),2);
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index
|
|
THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA1_RECIPIENT;
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA2_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA2_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in.tipo_file = 2 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato <> 7 AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in.tipo_file = 2 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato <> 7 AND
|
|
substr(rich_in.richiestaxml,instr(rich_in.richiestaxml,'<STATO_RICHIESTA_NOTIFICA>')+ 26,1)='0' AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_in xml_in_esp
|
|
,mnp.mnp_xml_richiesta_in rich_in_esp
|
|
,mnp.mnp_xml_ack_out ack_out_esp
|
|
,mnp.mnp_xml_in xml_in_val
|
|
,mnp.mnp_xml_richiesta_in rich_in_val
|
|
,mnp.mnp_xml_ack_out ack_out_val
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in_esp.tipo_file = 6 AND
|
|
rich_in_esp.id_richiesta = a.id_richiesta AND
|
|
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
|
|
xml_in_esp.nome_file = rich_in_esp.nome_file AND
|
|
xml_in_val.tipo_file = 2 AND
|
|
rich_in_val.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_in_val.nome_file = rich_in_val.nome_file AND
|
|
ack_out_val.nome_file_riferito = rich_in_val.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.CODICE_OPERATORE_DONATING= xml_in_esp.MITTENTE AND
|
|
ack_out_val.risultato = 'OK' and
|
|
ack_out_esp.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_in xml_in_esp
|
|
,mnp.mnp_xml_richiesta_in rich_in_esp
|
|
,mnp.mnp_xml_ack_out ack_out_esp
|
|
,mnp.mnp_xml_in xml_in_val
|
|
,mnp.mnp_xml_richiesta_in rich_in_val
|
|
,mnp.mnp_xml_ack_out ack_out_val
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in_esp.tipo_file = 6 AND
|
|
rich_in_esp.id_richiesta = a.id_richiesta AND
|
|
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
|
|
xml_in_esp.nome_file = rich_in_esp.nome_file AND
|
|
xml_in_val.tipo_file = 2 AND
|
|
rich_in_val.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_in_val.nome_file = rich_in_val.nome_file AND
|
|
ack_out_val.nome_file_riferito = rich_in_val.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.CODICE_OPERATORE_DONATING= xml_in_esp.MITTENTE AND
|
|
ack_out_val.risultato = 'OK' and
|
|
ack_out_esp.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp AND
|
|
ack_out_val.NOME_FILE_riferito = (select max(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in_val.ID_RICHIESTA
|
|
AND x.TIPO_FILE=2 --validazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE= 'AOM';
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
--carico gli eventi attesi per pHOC
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CALCOLO_SLA2_RECIPIENT;
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA3_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_por DATE;
|
|
temp_data_fin_por DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
temp_data_in_file DATE;
|
|
temp_data_fin_file DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,q.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,q.CODICE_OPERATORE_DONATING as donatingRete
|
|
,q.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,q.codice_operatore_rec_eff as recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT
|
|
,a.CODICE_OPERATORE_DONATING
|
|
,a.CODICE_OPERATORE_DON_EFF
|
|
,a.codice_operatore_rec_eff
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAck
|
|
,xml_out.nome_file nomeFilePorting
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_out.tipo_file = 3 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_file) AND
|
|
xml_out.destinatario <> a.codice_operatore_donating AND
|
|
xml_out.destinatario <> 'NPTS') q
|
|
WHERE (to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR to_date( SUBSTR( q.nomeFilePorting, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_file AND temp_data_fin_file)
|
|
GROUP BY
|
|
q.CODICE_OPERATORE_RECIPIENT, q.CODICE_OPERATORE_DONATING,q.CODICE_OPERATORE_DON_EFF, q.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from
|
|
( SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,xml_out_por.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out_por.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomeFileAckPorting
|
|
,xml_out_por.nome_file nomeFilePorting
|
|
,ack_out_esp.NOME_FILE nomeFileAckEspl
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_rec a
|
|
,mnp.mnp_xml_in xml_in_esp
|
|
,mnp.mnp_xml_richiesta_in rich_in_esp
|
|
,mnp.mnp_xml_ack_out ack_out_esp
|
|
,mnp.mnp_xml_out xml_out_por
|
|
,mnp.mnp_xml_richiesta_out rich_out_por
|
|
WHERE
|
|
a.codice_operatore_rec_eff = 'TIMG' AND
|
|
xml_in_esp.tipo_file = 6 AND
|
|
rich_in_esp.id_richiesta = a.id_richiesta AND
|
|
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
|
|
xml_in_esp.nome_file = rich_in_esp.nome_file AND
|
|
xml_out_por.tipo_file = 3 AND
|
|
xml_out_por.data_eff > trunc(temp_data_in_file) AND
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
|
|
xml_in_esp.mittente <> a.codice_operatore_donating AND
|
|
xml_in_esp.mittente <> 'NPTS' AND
|
|
ack_out_esp.risultato = 'OK' ) q
|
|
WHERE
|
|
(to_date( SUBSTR( q.nomeFileAckPorting, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR
|
|
to_date( SUBSTR( q.nomeFilePorting, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_file AND temp_data_fin_file )
|
|
AND
|
|
to_date( SUBSTR( q.nomeFileAckEspl, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 3;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_file:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_file:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA3'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'R'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA3'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA3_RECIPIENT;
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA0_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_pic DATE;
|
|
temp_data_fin_pic DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftempH CHAR(2);
|
|
min_fin_ftempH CHAR(2);
|
|
sec_fin_ftempH CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA0_DONOR';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
xml_in.tipo_file = 1 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
xml_in.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=1 --attvazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
xml_in.tipo_file = 9 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
xml_in.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=9 --attvazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out_att
|
|
,mnp.mnp_xml_out xml_out_pic
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
WHERE
|
|
xml_in.tipo_file = 1 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
ack_out_att.nome_file_riferito = rich_in.nome_file AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
xml_out_pic.tipo_file = 5 AND
|
|
rich_out.id_richiesta = rich_in.id_richiesta AND
|
|
xml_out_pic.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
ack_out_att.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( xml_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic AND
|
|
xml_in.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=1 --attvazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
) AND
|
|
xml_out_pic.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=5 --pic
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out_att
|
|
,mnp.mnp_xml_out xml_out_pic
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
WHERE
|
|
xml_in.tipo_file = 9 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
ack_out_att.nome_file_riferito = rich_in.nome_file AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
xml_out_pic.tipo_file = 5 AND
|
|
rich_out.id_richiesta = rich_in.id_richiesta AND
|
|
xml_out_pic.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
ack_out_att.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( xml_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic AND
|
|
xml_in.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=9 --attvazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
) AND
|
|
xml_out_pic.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=5 --pic
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
ora_fin_ftempH := null;
|
|
min_fin_ftempH := null;
|
|
sec_fin_ftempH := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 9;
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 5;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA0'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
--carico gli eventi attesi per pHOC
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),1);
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA0'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA0'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA0_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA0_DONOR;
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA1_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftempH CHAR(2);
|
|
min_fin_ftempH CHAR(2);
|
|
sec_fin_ftempH CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA1_DONOR';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
xml_in.tipo_file = 1 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato <> 4 AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
xml_in.tipo_file = 9 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato <> 4 AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out_att
|
|
,mnp.mnp_xml_out xml_out_val
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
WHERE
|
|
xml_in.tipo_file = 1 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
ack_out_att.nome_file_riferito = rich_in.nome_file AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
xml_out_val.tipo_file = 2 AND
|
|
rich_out.id_richiesta = rich_in.id_richiesta AND
|
|
xml_out_val.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
ack_out_att.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( xml_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out_att
|
|
,mnp.mnp_xml_out xml_out_val
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
WHERE
|
|
xml_in.tipo_file = 9 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
ack_out_att.nome_file_riferito = rich_in.nome_file AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
xml_out_val.tipo_file = 2 AND
|
|
rich_out.id_richiesta = rich_in.id_richiesta AND
|
|
xml_out_val.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
ack_out_att.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( xml_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
xml_out_val.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
|
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
|
AND x.TIPO_FILE=2 --validazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
ora_fin_ftempH := null;
|
|
min_fin_ftempH := null;
|
|
sec_fin_ftempH := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 9;
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
--carico gli eventi attesi per pHOC
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA1_DONOR;
|
|
|
|
|
|
procedure CALCOLO_SLA2_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA2_DONOR';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
temp_data_in_fileval DATE;
|
|
temp_data_fin_fileval DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT
|
|
COUNT(*) AS eventiAttesi
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,xml_out.NOME_FILE NomeFileVal
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomefileack
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
xml_out.tipo_file = 2 AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileval) AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato <> 10
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
OR
|
|
to_date( SUBSTR( q.NomeFileVal, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileval AND temp_data_fin_fileval
|
|
)
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
|
|
CURSOR eventi_attesi_hoc is
|
|
SELECT
|
|
COUNT(*) AS eventiAttesi
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,xml_out.NOME_FILE NomeFileVal
|
|
,(
|
|
Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK'
|
|
) nomefileack
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
xml_out.tipo_file = 2 AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileval) AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato <> 10
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
OR
|
|
to_date( SUBSTR( q.NomeFileVal, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileval AND temp_data_fin_fileval
|
|
)
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out_val.nome_file
|
|
and ack_in.risultato = 'OK') nomeFileAck
|
|
,xml_out_val.NOME_FILE NomeFileVal
|
|
,xml_out_esp.NOME_FILE NomeFileEspl
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_out rich_out_esp
|
|
,mnp.mnp_xml_richiesta_out rich_out_val
|
|
,mnp.mnp_xml_out xml_out_esp
|
|
,mnp.mnp_xml_out xml_out_val
|
|
WHERE
|
|
xml_out_esp.tipo_file = 6 AND
|
|
xml_out_esp.data_eff > trunc(temp_data_in_esp) AND
|
|
rich_out_esp.id_richiesta = a.id_richiesta AND
|
|
rich_out_esp.nome_file=xml_out_esp.nome_file AND
|
|
xml_out_val.nome_file = rich_out_val.nome_file AND
|
|
xml_out_val.data_eff > trunc(temp_data_in_fileval) AND
|
|
xml_out_val.tipo_file = 2 AND
|
|
rich_out_val.id_richiesta = rich_out_esp.id_richiesta AND
|
|
xml_out_esp.DESTINATARIO <> 'NPTS' AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 )
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
OR
|
|
to_date( SUBSTR( q.NomeFileVal, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileval AND temp_data_fin_fileval
|
|
)AND
|
|
to_date( SUBSTR( q.NomeFileEspl, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
|
|
CURSOR eventi_in_sla_hoc is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT
|
|
a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,a.CODICE_OPERATORE_DONATING as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out_val.nome_file
|
|
and ack_in.risultato = 'OK') nomeFileAck
|
|
,xml_out_val.NOME_FILE NomeFileVal
|
|
,xml_out_esp.NOME_FILE NomeFileEspl
|
|
FROM
|
|
mnp.mnp_gestione_richiesta a
|
|
,mnp.mnp_xml_richiesta_out rich_out_esp
|
|
,mnp.mnp_xml_richiesta_out rich_out_val
|
|
,mnp.mnp_xml_out xml_out_esp
|
|
,mnp.mnp_xml_out xml_out_val
|
|
WHERE
|
|
xml_out_esp.tipo_file = 6 AND
|
|
xml_out_esp.data_eff > trunc(temp_data_in_esp) AND
|
|
rich_out_esp.id_richiesta = a.id_richiesta AND
|
|
rich_out_esp.nome_file=xml_out_esp.nome_file AND
|
|
xml_out_val.nome_file = rich_out_val.nome_file AND
|
|
xml_out_val.tipo_file = 2 AND
|
|
xml_out_val.data_eff > trunc(temp_data_in_fileval) AND
|
|
rich_out_val.id_richiesta = rich_out_esp.id_richiesta AND
|
|
xml_out_esp.DESTINATARIO <> 'NPTS' AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
xml_out_val.Nome_File = (select max(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
|
WHERE y.ID_RICHIESTA= rich_out_val.ID_RICHIESTA
|
|
AND x.TIPO_FILE=2 --validazione
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.nomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
OR
|
|
to_date( SUBSTR( q.NomeFileVal, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileval AND temp_data_fin_fileval
|
|
)
|
|
AND
|
|
to_date( SUBSTR( q.NomeFileEspl, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
q.recipientRete, q.donatingRete,q.donorEffettivo, q.recipientEffettivo;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_fileval:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_fileval:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
--carico gli eventi attesi per pHOC
|
|
|
|
|
|
|
|
FOR rec IN eventi_attesi_hoc LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
|
|
EXCEPTION -- potrebbe essere gi¿ presente un record per progetti std/mvno. In questo caso devo sommare
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT EVENTI_ATTESI
|
|
INTO eventi
|
|
FROM MNP_DW_SLA_FRANCHIGIA_OUT
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
|
|
eventi:= eventi + rec.eventiAttesi;
|
|
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_ATTESI = eventi
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
FOR rec IN eventi_in_SLA_hoc LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CALCOLO_SLA2_DONOR;
|
|
|
|
|
|
procedure CALCOLO_SLA3_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_por DATE;
|
|
temp_data_fin_por DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_DONOR';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_porting a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
WHERE
|
|
xml_in.tipo_file = 3 AND
|
|
rich_in.id_richiesta = a.id_richiesta AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,a.codice_operatore_rec_eff as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gestione_richiesta_porting a
|
|
,mnp.mnp_xml_richiesta_in rich_in
|
|
,mnp.mnp_xml_in xml_in
|
|
,mnp.mnp_xml_ack_out ack_out
|
|
,mnp.mnp_xml_richiesta_out rich_out_esp
|
|
,mnp.mnp_xml_out xml_out_esp
|
|
WHERE
|
|
xml_out_esp.tipo_file = 6 AND
|
|
rich_out_esp.id_richiesta = a.id_richiesta AND
|
|
rich_out_esp.nome_file=xml_out_esp.nome_file AND
|
|
ack_out.nome_file_riferito = rich_in.nome_file AND
|
|
xml_in.nome_file = rich_in.nome_file AND
|
|
xml_in.tipo_file = 3 AND
|
|
rich_in.id_richiesta = rich_out_esp.id_richiesta AND
|
|
xml_out_esp.DESTINATARIO <> 'NPTS' AND
|
|
ack_out.risultato = 'OK' and
|
|
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por AND
|
|
to_date( SUBSTR( xml_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp AND
|
|
xml_out_esp.NOME_FILE = (select min(X.NOME_FILE)
|
|
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
|
WHERE y.ID_RICHIESTA= rich_out_esp.ID_RICHIESTA
|
|
AND x.TIPO_FILE=6 --espletamento
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
)
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 3;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA3'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'D'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di espl da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA3'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CALCOLO_SLA3_DONOR;
|
|
|
|
|
|
procedure CALCOLO_SLA1_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA1_DONOR_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_DONOR_VIRT a
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto
|
|
WHERE
|
|
a.id_richiesta = sto.id_richiesta AND
|
|
sto.stato_a = 2 AND
|
|
sto.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_DONOR_VIRT a
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto_in
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto_fin
|
|
WHERE
|
|
a.id_richiesta = sto_in.id_richiesta AND
|
|
a.id_richiesta = sto_fin.id_richiesta AND
|
|
sto_in.stato_a = 2 AND
|
|
sto_fin.stato_a IN (6,7) AND
|
|
sto_in.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
sto_fin.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
--aggiorno gli eventi in SLA
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA1_DONOR_VIRT;
|
|
|
|
procedure CALCOLO_SLA2_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA2_DONOR_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_DONOR_VIRT a
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto
|
|
WHERE
|
|
a.id_richiesta = sto.id_richiesta AND
|
|
sto.stato_a = 6 AND
|
|
sto.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_DONOR_VIRT a
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto_in
|
|
,mnp.MNP_STORICO_RICH_DON_VIRT sto_fin
|
|
WHERE
|
|
a.id_richiesta = sto_in.id_richiesta AND
|
|
a.id_richiesta = sto_fin.id_richiesta AND
|
|
sto_in.stato_a = 6 AND
|
|
sto_fin.stato_a =10 AND
|
|
sto_in.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
sto_fin.data_i_o BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
--aggiorno gli eventi in SLA
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA2_DONOR_VIRT;
|
|
|
|
|
|
procedure CALCOLO_SLA3_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_por DATE;
|
|
temp_data_fin_por DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_DONOR_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
temp_data_in_fileport DATE;
|
|
temp_data_fin_fileport DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT 'TIMG' as recipientRete
|
|
,xml_out.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK') NomeFileACK
|
|
,xml_out.NOME_FILE NomeFilePort
|
|
FROM
|
|
mnp.mnp_gest_rich_donor_virt a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
xml_out.tipo_file = 3 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_fileport) AND
|
|
xml_out.destinatario not in('TIMG','NPTS')
|
|
) q
|
|
WHERE
|
|
to_date( SUBSTR( q.NomeFileACK, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR
|
|
to_date( SUBSTR( q.NomeFilePort, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileport AND temp_data_fin_fileport
|
|
GROUP BY
|
|
q.recipientEffettivo, q.recipientRete, q.donatingRete,q.donorEffettivo;
|
|
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT 'TIMG' as recipientRete
|
|
,xml_out_por.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out_por.nome_file
|
|
and ack_in.risultato = 'OK') NomeFileACK
|
|
,xml_out_por.NOME_FILE NomeFilePort
|
|
,ack_out_esp.NOME_FILE NomeFileAckEspl
|
|
FROM
|
|
mnp.mnp_gest_rich_donor_virt a
|
|
,mnp.mnp_xml_in xml_in_esp
|
|
,mnp.mnp_xml_richiesta_in rich_in_esp
|
|
,mnp.mnp_xml_ack_out ack_out_esp
|
|
,mnp.mnp_xml_out xml_out_por
|
|
,mnp.mnp_xml_richiesta_out rich_out_por
|
|
WHERE
|
|
xml_in_esp.tipo_file = 6 AND
|
|
rich_in_esp.id_richiesta = a.id_richiesta AND
|
|
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
|
|
xml_in_esp.nome_file = rich_in_esp.nome_file AND
|
|
xml_out_por.tipo_file = 3 AND
|
|
xml_out_por.data_eff > trunc(temp_data_in_fileport) AND
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
|
|
xml_in_esp.mittente <> a.codice_operatore_donating AND
|
|
xml_in_esp.mittente <> 'NPTS' AND
|
|
ack_out_esp.risultato = 'OK') q
|
|
WHERE
|
|
( to_date( SUBSTR( q.NomeFileACK, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR
|
|
to_date( SUBSTR( q.NomeFilePort, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_fileport AND temp_data_fin_fileport
|
|
) AND
|
|
to_date( SUBSTR( q.NomeFileAckEspl, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
q.recipientEffettivo, q.recipientRete, q.donatingRete,q.donorEffettivo;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 3;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_fileport:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_fileport:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_file1 ||min_fin_file1||sec_fin_file1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA3'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA3'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA3_DONOR_VIRT;
|
|
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA1_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_att DATE;
|
|
temp_data_fin_att DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA1_REC_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_REC_VIRT a
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto
|
|
WHERE
|
|
a.id_richiesta = sto.id_richiesta AND
|
|
sto.stato_a = 2 AND
|
|
sto.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_REC_VIRT a
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto_in
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto_fin
|
|
WHERE
|
|
a.id_richiesta = sto_in.id_richiesta AND
|
|
a.id_richiesta = sto_fin.id_richiesta AND
|
|
sto_in.stato_a = 2 AND
|
|
sto_fin.stato_a IN (6,7) AND
|
|
sto_in.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
sto_fin.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 1;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA1'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
--aggiorno gli eventi in SLA
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA1'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA1_REC_VIRT;
|
|
|
|
|
|
procedure CALCOLO_SLA2_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_val DATE;
|
|
temp_data_fin_val DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA2_REC_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_REC_VIRT a
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto
|
|
WHERE
|
|
a.id_richiesta = sto.id_richiesta AND
|
|
sto.stato_a = 6 AND
|
|
sto.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
, 'TIMG' as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.MNP_GEST_RICH_REC_VIRT a
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto_in
|
|
,mnp.MNP_STORICO_RICH_REC_VIRT sto_fin
|
|
WHERE
|
|
a.id_richiesta = sto_in.id_richiesta AND
|
|
a.id_richiesta = sto_fin.id_richiesta AND
|
|
sto_in.stato_a = 6 AND
|
|
sto_fin.stato_a =10 AND
|
|
sto_in.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
sto_fin.data_i_o BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
|
|
|
|
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
ora_fin_ftemp1 := null;
|
|
min_fin_ftemp1 := null;
|
|
sec_fin_ftemp1 := null;
|
|
ora_fin_ftemp2 := null;
|
|
min_fin_ftemp2 := null;
|
|
sec_fin_ftemp2 := null;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA2'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
--aggiorno gli eventi in SLA
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA2'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA2_REC_VIRT;
|
|
|
|
|
|
procedure CALCOLO_SLA3_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
temp_data_in_esp DATE;
|
|
temp_data_fin_esp DATE;
|
|
temp_data_in_por DATE;
|
|
temp_data_fin_por DATE;
|
|
ora_fin_ftemp1 CHAR(2);
|
|
min_fin_ftemp1 CHAR(2);
|
|
sec_fin_ftemp1 CHAR(2);
|
|
ora_fin_ftemp2 CHAR(2);
|
|
min_fin_ftemp2 CHAR(2);
|
|
sec_fin_ftemp2 CHAR(2);
|
|
ora_fin_file1 CHAR(2);
|
|
min_fin_file1 CHAR(2);
|
|
sec_fin_file1 CHAR(2);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_REC_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
temp_data_in_filepor DATE;
|
|
temp_data_fin_filepor DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT 'TIMG' as recipientRete
|
|
,xml_out.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out.nome_file
|
|
and ack_in.risultato = 'OK') NomeFileAck
|
|
,xml_out.NOME_FILE NomeFilePort
|
|
FROM
|
|
mnp.mnp_gest_rich_rec_virt a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
WHERE
|
|
xml_out.tipo_file = 3 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
xml_out.data_eff > trunc(temp_data_in_filepor) AND
|
|
xml_out.destinatario not in( 'TIMG', 'NPTS') ) q
|
|
WHERE
|
|
( to_date( SUBSTR( q.NomeFileAck, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR
|
|
to_date( SUBSTR( q.NomeFilePort, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_filepor AND temp_data_fin_filepor
|
|
)
|
|
GROUP BY
|
|
q.recipientEffettivo, q.recipientRete, q.donatingRete,q.donorEffettivo;
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,q.recipientRete
|
|
,q.donatingRete
|
|
,q.donorEffettivo
|
|
,q.recipientEffettivo
|
|
from (
|
|
SELECT 'TIMG' as recipientRete
|
|
,xml_out_por.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
,(Select min(ack_in.nome_file)
|
|
from mnp_xml_ack_in ack_in
|
|
where
|
|
ack_in.nome_file_riferito=xml_out_por.nome_file
|
|
and ack_in.risultato = 'OK') NomeFileAckport
|
|
,xml_out_por.NOME_FILE NomeFilePort
|
|
,ack_out_esp.NOME_FILE NomeAckEspl
|
|
FROM
|
|
mnp.mnp_gest_rich_rec_virt a
|
|
,mnp.mnp_xml_in xml_in_esp
|
|
,mnp.mnp_xml_richiesta_in rich_in_esp
|
|
,mnp.mnp_xml_ack_out ack_out_esp
|
|
,mnp.mnp_xml_out xml_out_por
|
|
,mnp.mnp_xml_richiesta_out rich_out_por
|
|
WHERE
|
|
xml_in_esp.tipo_file = 6 AND
|
|
rich_in_esp.id_richiesta = a.id_richiesta AND
|
|
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
|
|
xml_in_esp.nome_file = rich_in_esp.nome_file AND
|
|
xml_out_por.tipo_file = 3 AND
|
|
xml_out_por.data_eff > trunc(temp_data_in_filepor) AND
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
|
|
xml_in_esp.mittente <> a.codice_operatore_donating AND
|
|
xml_in_esp.mittente <> 'NPTS' AND
|
|
ack_out_esp.risultato = 'OK') q
|
|
WHERE
|
|
( to_date( SUBSTR( q.NomeFileAckport, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
OR
|
|
to_date( SUBSTR( q.NomeFilePort, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_filepor AND temp_data_fin_filepor
|
|
) AND
|
|
to_date( SUBSTR( q.NomeAckEspl, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
|
|
GROUP BY
|
|
q.recipientEffettivo, q.recipientRete, q.donatingRete,q.donorEffettivo;
|
|
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
|
|
D_ini:=sysdate;
|
|
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
/*il mese di competenza viene impostato sull'evento finale*/
|
|
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
|
|
|
|
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2),
|
|
SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
|
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1,ora_fin_file1,min_fin_file1,sec_fin_file1
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 3;
|
|
|
|
|
|
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
|
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
|
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
|
FROM mnp.mnp_anag_finestre_temp_d147
|
|
WHERE TIPO_FILE = 6;
|
|
|
|
|
|
|
|
--carico gli eventi attesi per std/MVNO
|
|
|
|
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
temp_data_in_filepor:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
temp_data_fin_filepor:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
|
|
|
|
FOR rec IN eventi_attesi LOOP
|
|
n_rec := n_rec +1;
|
|
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
|
|
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
|
|
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
|
|
VALUES (
|
|
'SLA3'
|
|
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donatingRete
|
|
,rec.recipientRete
|
|
,rec.eventiAttesi
|
|
,'V'
|
|
,mese_comp
|
|
);
|
|
END LOOP;
|
|
|
|
|
|
|
|
--aggiorno gli eventi in SLA per std/MVNO
|
|
|
|
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
|
|
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
|
|
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
|
|
|
|
FOR rec IN eventi_in_SLA LOOP
|
|
|
|
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
|
|
SET EVENTI_IN_SLA = rec.eventiSLA
|
|
WHERE TIPO_EVENTO = 'SLA3'
|
|
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
|
|
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
|
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
|
AND DONOR_RETE = rec.donatingRete;
|
|
END LOOP;
|
|
|
|
|
|
COMMIT;
|
|
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
|
|
end if;
|
|
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
|
|
end if;
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CALCOLO_SLA3_REC_VIRT;
|
|
|
|
|
|
|
|
|
|
procedure CALCOLO_SLA_FRANCHIGIA(dataRif IN Date) IS
|
|
|
|
cod_errore NUMBER (1);
|
|
|
|
cod_errore_sla0_don NUMBER (1):=0;
|
|
cod_errore_sla1_don NUMBER (1):=0;
|
|
cod_errore_sla2_don NUMBER (1):=0;
|
|
cod_errore_sla3_don NUMBER (1):=0;
|
|
|
|
cod_errore_sla0_rec NUMBER (1):=0;
|
|
cod_errore_sla1_rec NUMBER (1):=0;
|
|
cod_errore_sla2_rec NUMBER (1):=0;
|
|
cod_errore_sla3_rec NUMBER (1):=0;
|
|
|
|
cod_errore_sla1_don_virt NUMBER (1):=0;
|
|
cod_errore_sla2_don_virt NUMBER (1):=0;
|
|
cod_errore_sla3_don_virt NUMBER (1):=0;
|
|
|
|
cod_errore_sla1_rec_virt NUMBER (1):=0;
|
|
cod_errore_sla2_rec_virt NUMBER (1):=0;
|
|
cod_errore_sla3_rec_virt NUMBER (1):=0;
|
|
|
|
|
|
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA_FRANCHIGIA';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataRif1 DATE;
|
|
|
|
|
|
|
|
BEGIN
|
|
--dbms_output.enable(9999999);
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
-----------------------------------------------------
|
|
-- VERIFICO SE DATA_RIF E' FERIALE. SE E' FESTIVO NON FACCIO NULLA
|
|
-----------------------------------------------------
|
|
IF FUN_DATE_FESTIVE(dataRif) = dataRif
|
|
THEN BEGIN
|
|
-----------------------------------------------------
|
|
-- VOGLIO CALCOLARE TUTTI GLI EVENTI CHE FANNO RIFERIMENTO AL GIORNO LAVORATIVO ANTERIORE A DATA RIF
|
|
-- EFFETTUO UNA DELETE PREVENTIVA DELLE TABELLA FRANCHIGIA PER LA GIORNATA DI INTERESSE
|
|
-----------------------------------------------------
|
|
dataRif1 := FUN_GIORNI_MENO (dataRif,1);
|
|
DELETE MNP_DW_SLA_FRANCHIGIA_OUT WHERE TO_CHAR(DATA_EVENTO,'dd/mm/yyyy')=TO_CHAR(dataRif1,'dd/mm/yyyy');
|
|
|
|
cod_errore := 0;
|
|
|
|
|
|
-- caricamento dati per il processo donor nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
|
|
calcolo_sla0_donor(dataRif,cod_errore_sla0_don);
|
|
calcolo_sla1_donor(dataRif,cod_errore_sla1_don);
|
|
calcolo_sla2_donor(dataRif,cod_errore_sla2_don);
|
|
calcolo_sla3_donor(dataRif,cod_errore_sla3_don);
|
|
|
|
-- caricamento dati per il processo recipient nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
|
|
calcolo_sla0_recipient(dataRif,cod_errore_sla0_rec);
|
|
calcolo_sla1_recipient(dataRif,cod_errore_sla1_rec);
|
|
calcolo_sla2_recipient(dataRif,cod_errore_sla2_rec);
|
|
calcolo_sla3_recipient(dataRif,cod_errore_sla3_rec);
|
|
|
|
-- caricamento dati per il processo donor virtuale nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
|
|
calcolo_sla1_donor_virt(dataRif,cod_errore_sla1_don_virt);
|
|
calcolo_sla2_donor_virt(dataRif,cod_errore_sla2_don_virt);
|
|
calcolo_sla3_donor_virt(dataRif,cod_errore_sla3_don_virt);
|
|
|
|
-- caricamento dati per il processo recipient virtuale nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
|
|
calcolo_sla1_rec_virt(dataRif,cod_errore_sla1_rec_virt);
|
|
calcolo_sla2_rec_virt(dataRif,cod_errore_sla2_rec_virt);
|
|
calcolo_sla3_rec_virt(dataRif,cod_errore_sla3_rec_virt);
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------
|
|
-- CALCOLO IL NUMERO 'EVENTI FUORI SLA' E A PERCENTUALE DI FRANCHIGIA PER
|
|
-- TUTTI I RECORD INSERITI
|
|
-----------------------------------------------------
|
|
|
|
UPDATE dwh.mnp_dw_sla_franchigia_out
|
|
SET
|
|
eventi_fuori_sla = eventi_attesi - eventi_in_sla
|
|
,percentuale_fuori_sla = ceil(((eventi_attesi - eventi_in_sla)/eventi_attesi)*100)
|
|
,data_agg = sysdate
|
|
WHERE
|
|
data_agg is null;
|
|
|
|
|
|
|
|
cod_errore := cod_errore_sla0_don + cod_errore_sla1_don+cod_errore_sla2_don +cod_errore_sla3_don +
|
|
cod_errore_sla0_rec + cod_errore_sla1_rec + cod_errore_sla2_rec + cod_errore_sla3_rec +
|
|
cod_errore_sla1_rec_virt + cod_errore_sla2_rec_virt + cod_errore_sla3_rec_virt +
|
|
cod_errore_sla1_don_virt + cod_errore_sla2_don_virt + cod_errore_sla3_don_virt;
|
|
|
|
|
|
|
|
|
|
IF cod_errore = 0
|
|
THEN
|
|
-- tutto a posto
|
|
DBMS_OUTPUT.put_line ('Caricamento dati e calcolo SLA avvenuto.');
|
|
ELSE
|
|
-- tutto na sola
|
|
DBMS_OUTPUT.put_line ('CARICAMENTO DATI E CALCOLO SLA PARZIALE: PROCESSO TERMINATO CON ERRORI VERIFICARE LOG!');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440));
|
|
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
cod_errore := 1;
|
|
DBMS_OUTPUT.put_line ('Errore nel caricamento dati e calcolo Sla ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END;
|
|
END IF;
|
|
END CALCOLO_SLA_FRANCHIGIA;
|
|
|
|
|
|
|
|
END PKG_CALCOLO_SLA_FRANCHIGIA;
|
|
/
|
|
|
|
|