|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require("jpgraph/jpgraph.php");
|
|
|
|
|
require("jpgraph/jpgraph_bar.php");
|
|
|
|
|
require("jpgraph/jpgraph_line.php");
|
|
|
|
|
|
|
|
|
|
//variaveis para manter o estado
|
|
|
|
|
$listaDacs = isset($_REQUEST["listaDacs"]) ? $_REQUEST["listaDacs"] : GetIdDacPadrao($dbcon, GetIdUser());
|
|
|
|
|
$dataIni = isset($_REQUEST["dataIni"]) ? $_REQUEST["dataIni"] : date('d/m/Y');
|
|
|
|
|
$dataFim = isset($_REQUEST["dataFim"]) ? $_REQUEST["dataFim"] : date('d/m/Y');
|
|
|
|
|
$listaServico = isset($_REQUEST["listaServico"]) ? $_REQUEST["listaServico"] : 0;
|
|
|
|
|
$linkGraph = '';
|
|
|
|
|
$printGraph = isset($_REQUEST['printGraph']) ? 1 : 0;
|
|
|
|
|
|
|
|
|
|
if ($printGraph) {
|
|
|
|
|
ob_clean();
|
|
|
|
|
$query = GetQuery($dataIni, $dataFim, $listaDacs);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
$arTotal = GetArHour();
|
|
|
|
|
$arOferecidas = GetArHour();
|
|
|
|
|
$arAtendidas = GetArHour();
|
|
|
|
|
$arAbandonadas = GetArHour();
|
|
|
|
|
$arTransbordadas = GetArHour();
|
|
|
|
|
$arLabel = GetArHour(true);
|
|
|
|
|
|
|
|
|
|
$somaTotal = 0;
|
|
|
|
|
$somaTotalAtd = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$dac = "";
|
|
|
|
|
// oferecidas originadas abandonadas nao_atendidas nao_atendidas atendidas efetuadas transbordadas
|
|
|
|
|
// total_oferecidas total_originadas total_abandonadas total_nao_atendidas total_atendidas total_efetuadas total_transbordadas
|
|
|
|
|
while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$hora = $row['hora'];
|
|
|
|
|
$dias = $row['dias'];
|
|
|
|
|
$arOferecidas[$hora] = round($row['avg_oferecidas']);
|
|
|
|
|
$arAtendidas[$hora] = round($row['avg_atendidas']);
|
|
|
|
|
$arAbandonadas[$hora] = round($row['avg_abandonadas']);
|
|
|
|
|
$arTransbordadas[$hora] = round($row['avg_transbordadas']);
|
|
|
|
|
/*
|
|
|
|
|
$arOferecidas[$hora] = round($row['total_oferecidas'] / $dias);
|
|
|
|
|
$arAtendidas[$hora] = round($row['total_atendidas'] / $dias);
|
|
|
|
|
$arAbandonadas[$hora] = round($row['total_abandonadas'] / $dias);
|
|
|
|
|
$arTransbordadas[$hora] = round($row['total_transbordadas'] / $dias);
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
$somaTotalAtd += $row['total_atendidas'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$graph = new Graph(960, 600);
|
|
|
|
|
$graph->SetScale("textint");
|
|
|
|
|
$graph->SetShadow();
|
|
|
|
|
$graph->SetMargin(40, 20, 40, 40);
|
|
|
|
|
$graph->title->Set($dac . ($diario ? " - Data: $dataIni" : " - De: $dataIni At<EFBFBD>: $dataFim"));
|
|
|
|
|
$graph->xaxis->SetTickLabels($arLabel);
|
|
|
|
|
$graph->legend->Pos(0.4, 0.90);
|
|
|
|
|
$graph->legend->SetColumns(4);
|
|
|
|
|
$graph->legend->SetFrameWeight(1);
|
|
|
|
|
|
|
|
|
|
$mediaAtendimento = SecondToStrTime(!$somaAtendida ? 0 : round($somaAtendidaTempo / $somaAtendida));
|
|
|
|
|
$mediaOriginada = SecondToStrTime(!$somaOriginada ? 0 : round($somaOriginadaTempo / $somaOriginada));
|
|
|
|
|
$mediaEspera = SecondToStrTime(!$somaEspera ? 0 : round($somaEsperaTempo / $somaEspera));
|
|
|
|
|
$mediaAbandono = SecondToStrTime(!$somaAbandonada ? 0 : round($somaAbandonadaTempo / $somaAbandonada));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$labelX = sprintf('Totais: ORG[%s] ATD[%s] ESP[%s] TRF[%s] ABD[%s] M<EFBFBD>dias: TMO[%s] TMA[%s] TME[%s] TMB[%s] ', $somaOriginada, $somaAtendida, $somaEspera, $somaTransferidas, $somaAbandonada, $mediaOriginada, $mediaAtendimento, $mediaEspera, $mediaAbandono);
|
|
|
|
|
|
|
|
|
|
$graph->xaxis->title->Set($labelX);
|
|
|
|
|
$graph->yaxis->title->Set('Chamadas/h');
|
|
|
|
|
|
|
|
|
|
$oferPlot = new BarPlot($arOferecidas);
|
|
|
|
|
$oferPlot->SetWidth(0.5);
|
|
|
|
|
$oferPlot->SetLegend("Total");
|
|
|
|
|
|
|
|
|
|
$atdPlot = new LinePlot($arAtendidas);
|
|
|
|
|
$atdPlot->SetLegend("Atendidas");
|
|
|
|
|
|
|
|
|
|
$abdPlot = new LinePlot($arAbandonadas);
|
|
|
|
|
$abdPlot->SetLegend("Abandonadas");
|
|
|
|
|
|
|
|
|
|
$trbPlot = new LinePlot($arTransbordadas);
|
|
|
|
|
$trbPlot->SetLegend("Transbordas");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$graph->Add($oferPlot);
|
|
|
|
|
$graph->Add($atdPlot);
|
|
|
|
|
$graph->Add($abdPlot);
|
|
|
|
|
$graph->Add($trbPlot);
|
|
|
|
|
|
|
|
|
|
$oferPlot->value->Show();
|
|
|
|
|
$oferPlot->value->SetFormat("%d");
|
|
|
|
|
|
|
|
|
|
$atdPlot->mark->SetType(MARK_CIRCLE, '', 1.0);
|
|
|
|
|
$atdPlot->mark->SetWeight(2);
|
|
|
|
|
$atdPlot->mark->SetWidth(2);
|
|
|
|
|
|
|
|
|
|
$abdPlot->SetColor('black');
|
|
|
|
|
$abdPlot->mark->SetType(MARK_CIRCLE, '', 1.0);
|
|
|
|
|
$abdPlot->mark->SetWeight(2);
|
|
|
|
|
$abdPlot->mark->SetWidth(2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$trbPlot->mark->SetType(MARK_CIRCLE, '', 1.0);
|
|
|
|
|
$trbPlot->mark->SetWeight(2);
|
|
|
|
|
$trbPlot->mark->SetWidth(2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$graph->Stroke();
|
|
|
|
|
exit;
|
|
|
|
|
} else if (IsPostBack()) {
|
|
|
|
|
if (!is_date($dataIni)) {
|
|
|
|
|
$jsStartup[] = "alert('Data inicial inv<EFBFBD>lida!');";
|
|
|
|
|
} else if (!is_date($dataFim)) {
|
|
|
|
|
$jsStartup[] = "alert('Data final inv<EFBFBD>lida!');";
|
|
|
|
|
} else {
|
|
|
|
|
$linkGraph = sprintf('<img src="index.php?idProg=289&dataIni=%s&dataFim=%s&listaDacs=%s&printGraph=1" border="0">', $dataIni, $dataFim, $listaDacs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// echo GetQuery($dataIni, $dataFim, $listaDacs); exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//carrega dacs
|
|
|
|
|
$dacs = GetDac($dbcon, $listaDacs);
|
|
|
|
|
|
|
|
|
|
// carrega lista de identificadores das rotas
|
|
|
|
|
$listaServico = GetIdentRota($dbcon, $listaServico);
|
|
|
|
|
|
|
|
|
|
//sumarização do relatorio
|
|
|
|
|
$dac = $listaDacs;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$smarty->assign('imp', $i);
|
|
|
|
|
$smarty->assign('dacs', $dacs);
|
|
|
|
|
$smarty->assign('dataIni', $dataIni);
|
|
|
|
|
$smarty->assign('dataFim', $dataFim);
|
|
|
|
|
$smarty->assign('erro', $erro);
|
|
|
|
|
$smarty->assign('listaServico', $listaServico);
|
|
|
|
|
$smarty->assign('linkGraph', $linkGraph);
|
|
|
|
|
GetTemplate($smarty, 'analise/resumoOperacao.tpl');
|
|
|
|
|
|
|
|
|
|
function GetQuery($dataIni, $dataFim, $dac) {
|
|
|
|
|
$dataIni = FormatDtMssql($dataIni);
|
|
|
|
|
$dataFim = FormatDtMssql($dataFim);
|
|
|
|
|
|
|
|
|
|
$query = "drop table if exists anl_operacao;
|
|
|
|
|
create temporary table anl_operacao as
|
|
|
|
|
select a.data_bilhete
|
|
|
|
|
,date_part('hour', a.calldate) as hora
|
|
|
|
|
,sum( case when(b.evento in('ENTERQUEUE', 'CHAMANDO'))then 1 else 0 end) as OFERECIDAS
|
|
|
|
|
,sum( case when(b.evento in('ABANDON', 'BUSYS', 'NOANSWERS'))then 1 else 0 end) as ABANDONADAS
|
|
|
|
|
,sum( case when(b.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER', 'TRANSORIG', 'ATENDIDA') )then 1 else 0 end) as ATENDIDAS
|
|
|
|
|
,sum( case when(b.evento in('EXITWITHTIMEOUT', 'TRANSBORDANDO') )then 1 else 0 end) as TRANSBORDADAS
|
|
|
|
|
from pbx_bilhetes a, pbx_eventos_dacs b, pbx_dacs c
|
|
|
|
|
where b.uid2 = a.uniqueid
|
|
|
|
|
and c.nome = b.fila
|
|
|
|
|
and data_bilhete >= %s
|
|
|
|
|
and data_bilhete <= %s
|
|
|
|
|
and c.id = %s
|
|
|
|
|
and b.evento in ('CHAMANDO','ATENDIDA','BUSYS', 'NOANSWERS', 'ABANDON','COMPLETEAGENT','COMPLETECALLER', 'CONNECT','ENTERQUEUE', 'TRANSFER', 'EXITWITHTIMEOUT', 'TRANSBORDANDO', 'TRANSBORDADO')
|
|
|
|
|
and a.lastapp <> 'Transferred Call'
|
|
|
|
|
group by 1,2;
|
|
|
|
|
|
|
|
|
|
select hora, ((cast(%s as date) - cast(%s as date)) + 1) as dias,
|
|
|
|
|
sum(oferecidas) as total_oferecidas, max(oferecidas) as max_oferecidas, min(oferecidas) as min_oferecidas, round( avg(oferecidas), 2) as avg_oferecidas,
|
|
|
|
|
sum(abandonadas) as total_abandonadas, max(abandonadas) as max_abandonadas, min(abandonadas) as min_abandonadas, round( avg(abandonadas), 2) as avg_abandonadas,
|
|
|
|
|
sum(atendidas) as total_atendidas, max(atendidas) as max_atendidas, min(atendidas) as min_atendidas, round( avg(atendidas), 2) as avg_atendidas,
|
|
|
|
|
sum(transbordadas) as total_transbordadas, max(transbordadas) as maxtransbordadas_, min(transbordadas) as min_transbordadas, round( avg(transbordadas), 2) as avg_transbordadas
|
|
|
|
|
from anl_operacao group by hora order by 1; ";
|
|
|
|
|
//$query = sprintf($query, QuotedStr($dataIni), QuotedStr($dataFim), QuotedStr($dataFim), QuotedStr($dataIni));
|
|
|
|
|
|
|
|
|
|
return sprintf($query, QuotedStr($dataIni), QuotedStr($dataFim), QuotedStr($dac), QuotedStr($dataFim), QuotedStr($dataIni));
|
|
|
|
|
}
|