@media print { .headSite, #rodapeSite, .filtro { display: none; } } "; $linkGraph = ''; $printGraph = isset($_REQUEST['printGraph']) ? 1 : 0; if ($printGraph) { ob_clean(); $query = GetQuery($listaDacs, $dataIni, $dataFim, $listaServico); $result = pg_query($query); $arOferecidas = array(0, 0); $arAtendidas = array(0, 0); $arAbandonadas = array(0, 0); $arTransbordadas = array(0, 0); $serv = array(); $somaTotal = 0; $somaTotalAtd = 0; $somaTotalAbd = 0; $somaTotalTrb = 0; $start = 0; // 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)) { if (!$start++) { $arOferecidas = array(); $arAtendidas = array(); $arAbandonadas = array(); $arTransbordadas = array(); } $serv[$row['serv_id']] = 0; $arOferecidas[] = $totalMedia ? round($row['avg_oferecidas']) : $row['total_oferecidas']; $arAtendidas[] = $totalMedia ? round($row['avg_atendidas']) : $row['total_atendidas']; $arAbandonadas[] = $totalMedia ? round($row['avg_abandonadas']) : $row['total_abandonadas']; $arTransbordadas[] = $totalMedia ? round($row['avg_transbordadas']) : $row['total_transbordadas']; /* * Totais do período. */ $somaTotal += $row['total_oferecidas']; $somaTotalAtd += $row['total_atendidas']; $somaTotalAbd += $row['total_abandonadas']; $somaTotalTrb += $row['total_transbordadas']; } $arLabel = array_keys($serv); $graph = new Graph(1080, 650); $graph->SetScale("intint"); //$graph->SetScale("intint", 0, array_sum($arOferecidas)); $graph->SetShadow(); $graph->SetMargin(80, 20, 60, 40); $graph->title->Set(sprintf("Totais Acumulados por Serviço Período De: %s Até: %s \nDac: %s Serv.: %s Emitido: %s Usuário: %s", $dataIni, $dataFim, GetNomeDac($listaDacs), $listaServico ? $listaServico : 'Todos', date("d/m/Y H:i:s"), GetLogin())); $graph->xaxis->SetTickLabels($arLabel); $graph->legend->Pos(0.32, 0.85); $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 Período: [%s] ATD[%s] ABD[%s] TRB[%s] Médias / %%: ATD[%s / %s%%] ABD[%s / %s%%] TRB[%s / %s%% ] ', FormataValor($somaTotal, 0), FormataValor($somaTotalAtd, 0), FormataValor($somaTotalAbd, 0), FormataValor($somaTotalTrb, 0), round($somaTotalAtd / $dias), round(($somaTotalAtd / $somaTotal) * 100.0), round($somaTotalAbd / $dias), round(($somaTotalAbd / $somaTotal) * 100.0), round($somaTotalTrb / $dias), round(($somaTotalTrb / $somaTotal) * 100.0) ); $graph->xaxis->title->Set($labelX); $graph->yaxis->title->Set(''); $atdPlot = new BarPlot($arAtendidas); $atdPlot->SetLegend("Atendidas(ATD)"); $abdPlot = new BarPlot($arAbandonadas); $abdPlot->SetLegend("Abandonadas(ABD)"); $trbPlot = new BarPlot($arTransbordadas); $trbPlot->SetLegend("Transbordadas(TRB)"); $gpBarPlot = new GroupBarPlot(array($atdPlot, $abdPlot, $trbPlot)); $gpBarPlot->SetWeight(0.5); $graph->Add($gpBarPlot); $graph->img->SetAntiAliasing(false); $atdPlot->SetFillColor('green'); $atdPlot->value->Show(); $atdPlot->value->SetFormat("%d"); $atdPlot->value->SetAngle(45); $abdPlot->SetFillColor('red'); $abdPlot->value->Show(); $abdPlot->value->SetFormat("%d"); $abdPlot->value->SetAngle(45); $trbPlot->SetFillColor('yellow'); $trbPlot->value->Show(); $trbPlot->value->SetFormat("%d"); $trbPlot->value->SetAngle(45); $graph->Stroke(); exit; } else if (IsPostBack()) { if (!is_date($dataIni)) { $jsStartup[] = "alert('Data inicial inválida!');"; } else if (!is_date($dataFim)) { $jsStartup[] = "alert('Data final inválida!');"; } else { $linkGraph = sprintf('', $dataIni, $dataFim, $listaDacs, $listaServico, $totalMedia); } //echo GetQuery($listaDacs, $dataIni, $dataFim, $listaServico); } $listaServico = GetIdentRota($dbcon, $listaServico); //carrega dacs $dacs = GetDac($dbcon, $listaDacs, '', 1); $smarty->assign('imp', $i); $smarty->assign('dacs', $dacs); $smarty->assign('listaServico', $listaServico); $smarty->assign('dataIni', $dataIni); $smarty->assign('dataFim', $dataFim); $smarty->assign('erro', $erro); $smarty->assign('totalMedia', $totalMedia); $smarty->assign('linkGraph', $linkGraph); GetTemplate($smarty, 'analise/resumoOperacaoServico.tpl'); function GetQuery($dac, $dataIni, $dataFim, $serv) { $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('month', a.calldate) as mes ,c.serv_id ,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 ,sum( case when(b.evento in('COMPLETEAGENT','COMPLETECALLER','TRANSFER') and strtoint(param1) <= '30')then 1 else 0 end) AS ATD_30 ,sum( case when(b.evento = 'TRANSFER')then 1 else 0 end) AS TRF ,sum( case when(b.evento = 'CONNECT' and strtoint(b.param1) > '3')then 1 else 0 end) AS ESP from pbx_bilhetes a, pbx_eventos_dacs b, pbx_servicos_registra c, pbx_dacs d where b.uid2 = a.uniqueid and c.uniqueid = b.uid2 and d.nome = b.fila and a.data_bilhete >= %s and a.data_bilhete <= %s %s %s and b.evento in ('CONNECT','CHAMANDO','ATENDIDA','BUSYS', 'NOANSWERS', 'ABANDON','COMPLETEAGENT','COMPLETECALLER', 'ENTERQUEUE', 'TRANSFER', 'EXITWITHTIMEOUT', 'TRANSBORDANDO') and a.lastapp <> 'Transferred Call' group by 1,2,3; select serv_id, sum(oferecidas) as total_oferecidas, round( avg(oferecidas), 2) as avg_oferecidas, sum(abandonadas) as total_abandonadas, round( avg(abandonadas), 2) as avg_abandonadas, sum(atendidas) as total_atendidas, round( avg(atendidas), 2) as avg_atendidas, sum(transbordadas) as total_transbordadas, round( avg(transbordadas), 2) as avg_transbordadas, sum(atd_30) AS total_atd_30, round( avg(atd_30), 2) as avg_atd_30, sum(trf) AS total_trf, round( avg(trf), 2) as avg_trf, sum(esp) AS total_esp, round( avg(esp), 2) as avg_esp from anl_operacao group by serv_id order by 1; "; return sprintf( $query, QuotedStr($dataIni), QuotedStr($dataFim), ($dac ? sprintf(' and d.id = %s', QuotedStr($dac)) : ''), ($serv ? sprintf(' and c.serv_id = %s', QuotedStr($serv)) : '') ); } function __GetAr__($label = false) { $ar = array(); $result = pg_query('select serv_id from pbx_servicos order by 1'); while ($row = pg_fetch_row($result)) { if (!$label) $ar[$row[0]] = 0; else $ar[] = $row[0]; } return $ar; }