3286 lines
121 KiB
SQL
3286 lines
121 KiB
SQL
CREATE OR REPLACE PACKAGE 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;
|
|
/
|
|
CREATE OR REPLACE package body 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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA0_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_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
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
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
to_date( SUBSTR( ack_in.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_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
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
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
to_date( SUBSTR( ack_in.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_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in_att
|
|
,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
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
ack_in_att.nome_file_riferito = rich_out.nome_file 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
|
|
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( ack_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
|
|
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_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in_att
|
|
,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
|
|
ack_in_att.nome_file_riferito = rich_out.nome_file 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 or a.richiestaAdHoc > 0 ) AND
|
|
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( ack_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),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);
|
|
|
|
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
|
|
|
|
--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'),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);
|
|
|
|
|
|
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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA1_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_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
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
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato NOT IN (5,9) AND
|
|
to_date( SUBSTR( ack_in.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_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
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
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato NOT IN (5,9) AND
|
|
to_date( SUBSTR( ack_in.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_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in_att
|
|
,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
|
|
ack_in_att.nome_file_riferito = rich_out.nome_file 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_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
|
|
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( ack_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_rec a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in_att
|
|
,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
|
|
ack_in_att.nome_file_riferito = rich_out.nome_file 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_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
|
|
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
|
|
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
ack_out_val.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=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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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
|
|
,'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);
|
|
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 = (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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
|
|
,xml_out.destinatario 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_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
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
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
xml_out.destinatario <> a.codice_operatore_donating AND
|
|
xml_out.destinatario <> 'NPTS' AND
|
|
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,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
|
|
,xml_out_por.destinatario 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_out xml_out_por
|
|
,mnp.mnp_xml_richiesta_out rich_out_por
|
|
,mnp.mnp_xml_ack_in ack_in_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
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
ack_in_por.nome_file_riferito = 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
|
|
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por 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, xml_out_por.destinatario,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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),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);
|
|
|
|
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'),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);
|
|
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA2_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_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
WHERE
|
|
xml_out.tipo_file = 2 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
|
|
a.stato <> 10 AND
|
|
to_date( SUBSTR( ack_in.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 a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
WHERE
|
|
xml_out.tipo_file = 2 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
|
|
a.stato <> 10 AND
|
|
to_date( SUBSTR( ack_in.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 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
|
|
,mnp.mnp_xml_ack_in ack_in_val
|
|
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_in_val.nome_file_riferito = rich_out_val.nome_file AND
|
|
xml_out_val.nome_file = rich_out_val.nome_file 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 ) AND
|
|
to_date( SUBSTR( ack_in_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
|
|
to_date( SUBSTR( xml_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 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
|
|
,mnp.mnp_xml_ack_in ack_in_val
|
|
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_in_val.nome_file_riferito = rich_out_val.nome_file AND
|
|
xml_out_val.nome_file = rich_out_val.nome_file 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 or a.richiestaAdHoc > 0 ) AND
|
|
to_date( SUBSTR( ack_in_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val 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_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
|
|
)
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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
|
|
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
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_DONOR_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
,xml_out.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gest_rich_donor_virt a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
WHERE
|
|
xml_out.tipo_file = 3 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
xml_out.destinatario <> 'TIMG' AND
|
|
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,a.codice_operatore_donating;
|
|
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
,xml_out_por.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
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
|
|
,mnp.mnp_xml_ack_in ack_in_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
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
ack_in_por.nome_file_riferito = rich_out_por.nome_file AND
|
|
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
|
|
xml_in_esp.mittente <> a.codice_operatore_donating AND
|
|
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por 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, xml_out_por.destinatario,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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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);
|
|
mese_comp CHAR(7);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA3_REC_VIRT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
eventi NUMBER;
|
|
|
|
|
|
|
|
CURSOR eventi_attesi is
|
|
SELECT COUNT(*) AS eventiAttesi
|
|
,'TIMG' as recipientRete
|
|
,xml_out.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
FROM
|
|
mnp.mnp_gest_rich_rec_virt a
|
|
,mnp.mnp_xml_richiesta_out rich_out
|
|
,mnp.mnp_xml_out xml_out
|
|
,mnp.mnp_xml_ack_in ack_in
|
|
WHERE
|
|
xml_out.tipo_file = 3 AND
|
|
rich_out.id_richiesta = a.id_richiesta AND
|
|
xml_out.nome_file = rich_out.nome_file AND
|
|
ack_in.nome_file_riferito = rich_out.nome_file AND
|
|
xml_out.destinatario <> 'TIMG' AND
|
|
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
|
|
GROUP BY
|
|
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,a.codice_operatore_donating;
|
|
|
|
|
|
|
|
CURSOR eventi_in_sla is
|
|
SELECT COUNT(*) AS eventiSLA
|
|
,'TIMG' as recipientRete
|
|
,xml_out_por.destinatario as donatingRete
|
|
,a.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,a.codice_operatore_recipient as recipientEffettivo
|
|
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
|
|
,mnp.mnp_xml_ack_in ack_in_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
|
|
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
|
|
xml_out_por.nome_file = rich_out_por.nome_file AND
|
|
ack_in_por.nome_file_riferito = rich_out_por.nome_file AND
|
|
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
|
|
xml_in_esp.mittente <> a.codice_operatore_donating AND
|
|
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por 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, xml_out_por.destinatario,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_TEMPORALI
|
|
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_TEMPORALI
|
|
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'),4);
|
|
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
|
|
|
|
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 = round(((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;
|
|
/
|