示例#1
0
 $exec_sql = mysql_query($sql_ts_anterior);
 if ($exec_sql == 0) {
     $error = " erro 1" . $sql_ts_anterior;
 }
 $achou = mysql_num_rows($exec_sql);
 if ($achou > 0) {
     //esse status já esteve setado em outro momento
     $row_ts = mysql_fetch_array($exec_sql);
     // if (array_key_exists($rowABS['sistema'],$H_horarios)){  //verifica se o código da área possui carga horária definida no arquivo config.inc.php
     // $areaT = $rowABS['sistema']; //Recebe o valor da área de atendimento do chamado
     // } else $areaT = 1; //Carga horária default definida no arquivo config.inc.php
     $areaT = "";
     $areaT = testaArea($areaT, $rowABS['area_cod'], $H_horarios);
     $dt = new dateOpers();
     $dt->setData1($row_ts['ts_data']);
     $dt->setData2(date('Y-m-d H:i:s'));
     $dt->tempo_valido($dt->data1, $dt->data2, $H_horarios[$areaT][0], $H_horarios[$areaT][1], $H_horarios[$areaT][2], $H_horarios[$areaT][3], "H");
     $segundos = $dt->diff["sValido"];
     //segundos válidos
     $sql_upd = "update tempo_status set ts_tempo = (ts_tempo+" . $segundos . ") , ts_data ='" . date('Y-m-d H:i:s') . "' where ts_ocorrencia = " . $rowABS['numero'] . " and\n\t\t\t\t\t\t\tts_status = " . $rowABS['status_cod'] . " ";
     $exec_upd = mysql_query($sql_upd);
     if ($exec_upd == 0) {
         $error .= " erro 2";
     }
 } else {
     $sql_ins = "insert into tempo_status (ts_ocorrencia, ts_status, ts_tempo, ts_data) values (" . $rowABS['numero'] . ", " . $rowABS['status_cod'] . ", 0, '" . date('Y-m-d H:i:s') . "' )";
     $exec_ins = mysql_query($sql_ins);
     if ($exec_ins == 0) {
         $error .= " erro 3 " . $sql_ins;
     }
 }
     $calcula = true;
 } else {
     $calcula = false;
 }
 $j++;
 $texto = trim($row['descricao']);
 $limite = 250;
 if (strlen($texto) > $limite) {
     $texto = substr($texto, 0, $limite - 3) . "...";
 }
 if ($calcula) {
     $areaChamado = "";
     $areaChamado = testaArea($areaChamado, $row['cod_area'], $H_horarios);
     $dtR->setData1($row['data_abertura']);
     if ($row['data_atendimento'] == "") {
         $dtR->setData2($hoje);
     } else {
         $dtR->setData2($row['data_atendimento']);
     }
     $dtR->tempo_valido($dtR->data1, $dtR->data2, $H_horarios[$areaChamado][0], $H_horarios[$areaChamado][1], $H_horarios[$areaChamado][2], $H_horarios[$areaChamado][3], "H");
     $diffR = $dtR->tValido;
     $diff2R = $dtR->diff["hValido"];
     $segundosR = $dtR->diff["sValido"];
     //segundos válidos
     $diff = date_difference($row['data_abertura'], $hoje);
     $sep = explode("dias", $diff);
     if ($sep[0] > 20) {
         //Se o chamado estiver aberto a mais de 20 dias o tempo é mostrado em dias para não ficar muito pesado.
         $diff = $sep[0] . " dias";
         $segundosS = $sep[0] * 86400;
     } else {
 $dtM->setData2($data_final);
 $dtM->tempo_valido($dtM->data1, $dtM->data2, $H_horarios[$area][0], $H_horarios[$area][1], $H_horarios[$area][2], $H_horarios[$area][3], "H");
 //-----------------------------------------------------------------------------------
 ##TRATANDO O CONTADOR DE TEMPO EM CADA STATUS PARA OS CASOS ONDE O CHAMADO AINDA ESTIVER EM ABERTO
 $sql_ts_anterior = "select * from tempo_status where ts_ocorrencia = " . $row['numero'] . " and ts_status = " . $row['status'] . " ";
 $exec_sql = mysql_query($sql_ts_anterior);
 if ($exec_sql == 0) {
     $error = " erro 1";
 }
 $achou = mysql_num_rows($exec_sql);
 if ($achou > 0) {
     //esse status já esteve setado em outro momento
     $row_ts = mysql_fetch_array($exec_sql);
     $dtSt = new dateOpers();
     $dtSt->setData1($row_ts['ts_data']);
     $dtSt->setData2(date("Y-m-d H:i:s"));
     $dtSt->tempo_valido($dtSt->data1, $dtSt->data2, $H_horarios[$area][0], $H_horarios[$area][1], $H_horarios[$area][2], $H_horarios[$area][3], "H");
     $segundosNovos = $dtSt->diff["sValido"];
     //segundos válidos
     // 							$sql_upd = "SELECT (ts_tempo+".$segundosNovos.") as ts_tempo , '".date("Y-m-d H:i:s")."' as ts_data FROM tempo_status WHERE ts_ocorrencia = ".$row['numero']." and
     // 									ts_status = ".$row['status']." ";
     // 							$exec_upd = mysql_query($sql_upd);
     // 							$row_openStat = mysql_fetch_array($exec_upd);
 }
 //-----------------------------------------------------------------------------------
 $sql_status = "SELECT sum(T.ts_tempo) as segundos, sec_to_time(sum(T.ts_tempo)) as tempo, " . "T.ts_status as codStat, A.sistema as area, CAT.stc_desc as dependencia, CAT.stc_cod as cod_dependencia " . "FROM ocorrencias as O, tempo_status as T, `status` as S, sistemas as A, status_categ as CAT " . "WHERE O.numero = T.ts_ocorrencia and O.numero = " . $row['numero'] . " and S.stat_id = T.ts_status " . "and S.stat_cat = CAT.stc_cod and O.sistema = A.sis_id and O.sistema =" . $areaReal . " " . "GROUP BY A.sis_id,CAT.stc_desc " . "ORDER BY CAT.stc_cod";
 $exec_sql_status = mysql_query($sql_status);
 //PARA CHECAR O SLA DO PROBLEMA -  TEMPO DE SOLUÇÃO
 $t_segundos_total = $dtS->diff["sValido"];
 if ($row['tempo'] != "") {
     if ($t_segundos_total <= $row['tempo'] * 60) {
 // if (array_key_exists($rowAT['cod_area'],$H_horarios)){  //verifica se o código da área possui carga horária definida no arquivo config.inc.php
 //$areaChamado = $rowAT['cod_area']; //Recebe o valor da área de atendimento do chamado
 // } else $areaChamado = 1; //Carga horária default definida no arquivo config.inc.php
 $areaChamado = "";
 $areaChamado = testaArea($areaChamado, $rowAT['area_cod'], $H_horarios);
 $data = $rowAT['data_abertura'];
 //$diff = date_diff($data,$hoje);
 $diff = date_difference($data, $hoje);
 $sep = explode("dias", $diff);
 if ($sep[0] > 20) {
     //Se o chamado estiver aberto a mais de 20 dias o tempo é mostrado em dias para não ficar muito pesado.
     $diff = $sep[0] . " dias";
     $segundos = $sep[0] * 86400;
 } else {
     $dta->setData1($data);
     $dta->setData2($hoje);
     $dta->tempo_valido($dta->data1, $dta->data2, $H_horarios[$areaChamado][0], $H_horarios[$areaChamado][1], $H_horarios[$areaChamado][2], $H_horarios[$areaChamado][3], "H");
     $diff = $dta->tValido;
     $diff2 = $dta->diff["hValido"];
     $segundos = $dta->diff["sValido"];
     //segundos válidos
 }
 print "<TD  class='line' " . $valign . ">" . $diff . "</TD>";
 if ($rowAT['data_atendimento'] == "") {
     //Controle das bolinhas de SLA de Resposta
     if ($segundos <= $rowAT['sla_resposta_tempo'] * 60) {
         $imgSlaR = 'sla1.png';
     } else {
         if ($segundos <= $rowAT['sla_resposta_tempo'] * 60 + $rowAT['sla_resposta_tempo'] * 60 * $percLimit / 100) {
             $imgSlaR = 'sla2.png';
         } else {
 $perc_ate_sla3 = round($sla_yellow * 100 / $linhas, 2);
 $perc_mais_sla3 = round($sla_red * 100 / $linhas, 2);
 $perc_sla16 = round($c_slaS_16h * 100 / $linhas, 2);
 //MEDIAS DE RESPOSTA
 $perc_ate_slaR2 = round($slaR_green * 100 / $linhas, 2);
 $perc_ate_slaR3 = round($slaR_yellow * 100 / $linhas, 2);
 $perc_mais_slaR3 = round($slaR_red * 100 / $linhas, 2);
 $slaR2M = $slaR2 / 60;
 $slaR3M = $slaR3 / 60;
 #####################################################################################
 //TOTAL DE HORAS VÁLIDAS NO PERÍODO:
 $area = 1;
 //Padrao
 $dt = new dateOpers();
 $dt->setData1($d_ini_completa);
 $dt->setData2($d_fim_completa);
 $dt->tempo_valido($dt->data1, $dt->data2, $H_horarios[$area][0], $H_horarios[$area][1], $H_horarios[$area][2], $H_horarios[$area][3], "H");
 $hValido = $dt->diff["hValido"] + 1;
 //Como o período passado não é arredondado (xx/xx/xx 23:59:59) é necessário arrendondar o total de horas.
 ####################################################################################
 print "</table>";
 print "<table align='center'>";
 print "  <tr><td colspan =4></td><td class='line'></td></tr>";
 print "  <tr><td colspan=4 align=center><b>Período: " . $d_ini . " a " . $d_fim . "</b></td></tr>";
 print "  <tr><td colspan=4 align=center><b>Total de horas válidas no período: " . $hValido . "</b></td></tr>";
 print "  <tr><td colspan='4' align='center'><b>Total de chamados fechados no período: {$linhas}.</b></td></tr>";
 print "  <tr><td colspan =4></td></tr>";
 print "<tr><td class='line'><b>Resposta em até " . $slaR2M . " minutos:</b></TD><td class='line'><font color=" . $corSla1 . "> {$slaR_green} chamados = </font></TD><td class='line'><font color=" . $corSla1 . ">{$perc_ate_slaR2}%</font></td><td class='line'></td></tr>";
 print "<tr><td class='line'><b>Resposta em até " . $slaR3M . " minutos:</b></TD><td class='line'><font color=" . $corSla2 . "> {$slaR_yellow} chamados = </font></TD><td class='line'><font color=" . $corSla2 . ">{$perc_ate_slaR3}%</font></td><td class='line'></td></tr>";
 print "<tr><td class='line'><b>Resposta em mais de " . $slaR3M . " minutos:</b></TD><td class='line'><font color=" . $corSla3 . "> {$slaR_red} chamados = </font></TD><td class='line'><font color=" . $corSla3 . ">{$perc_mais_slaR3}%</font></td><td class='line'></td></tr>";
 print "  <tr><td colspan=4><hr></td></tr>";
        $codStatAtual = $row['codStatAtual'];
        $statAtual = $row['status_atual'];
        if ($row['codStat'] != $row['codStatAtual']) {
            //vou imprimir o status atual fora do loop
            print "<tr><td class='line'>" . $row['status'] . "</td><td class='line'>" . $row['tempo'] . "</td></tr>";
        } else {
            $tempoSecStatAtual = $row['total'];
        }
    }
    $dt = new dateOpers();
    $tempoHoraStatAtual = "";
    if ($codStatAtual == 4) {
        //encerrada
        $tempoHora = $dt->secToHour($tempoTotalSec);
    } else {
        //chamados ainda não encerrados
        $areaChamado = 1;
        $dt->setData1($data);
        $dt->setData2($hoje);
        $dt->tempo_valido($dt->data1, $dt->data2, $H_horarios[$areaChamado][0], $H_horarios[$areaChamado][1], $H_horarios[$areaChamado][2], $H_horarios[$areaChamado][3], "H");
        $segundos = $dt->diff["sValido"];
        //segundos válidos
        $tempoHoraStatAtual = $dt->secToHour($segundos + $tempoSecStatAtual);
        $tempoHora = $dt->secToHour($segundos + $tempoTotalSec);
    }
    print "<tr><td class='line'><b><font color='green'>" . $statAtual . "</b> (Status Atual)</td><td class='line'><b><font color='green'>" . $tempoHoraStatAtual . "</b></font></td></tr>";
    print "<tr><td class='line'>TEMPO TOTAL</td><td class='line'>" . $tempoHora . "</td></tr>";
    print "</table>";
}
print "</body>";
print "</html>";
 //solução
 $dtR_hw = new dateOpers();
 //resposta
 $sla_green_hw = 0;
 $sla_red_hw = 0;
 $sla_yellow_hw = 0;
 while ($row = mysql_fetch_array($exec_hw_sla)) {
     // if (array_key_exists($row['cod_area'],$H_horarios)){  //verifica se o código da área possui carga horária definida no arquivo config.inc.php
     // $area = $row['cod_area']; //Recebe o valor da área de atendimento do chamado
     // } else $area = 1; //Carga horária default definida no arquivo config.inc.php
     $area = testaArea($area, $row['cod_area'], $H_horarios);
     $dtS_hw->setData1($row['data_abertura']);
     $dtS_hw->setData2($row['data_fechamento']);
     $dtS_hw->tempo_valido($dtS_hw->data1, $dtS_hw->data2, $H_horarios[$area][0], $H_horarios[$area][1], $H_horarios[$area][2], $H_horarios[$area][3], "H");
     $dtR_hw->setData1($row['data_abertura']);
     $dtR_hw->setData2($row['data_atendimento']);
     $dtR_hw->tempo_valido($dtR_hw->data1, $dtR_hw->data2, $H_horarios[$area][0], $H_horarios[$area][1], $H_horarios[$area][2], $H_horarios[$area][3], "H");
     $t_horas = $dtS_hw->diff["hValido"];
     if ($t_horas >= $sla3) {
         $sla_red_hw++;
     } else {
         if ($t_horas >= $sla2) {
             $sla_yellow_hw++;
         } else {
             $sla_green_hw++;
         }
     }
     $t_resp = $dtR_hw->diff["sValido"];
     if ($t_resp >= $slaR3) {
         $slaR_red_hw++;
     } else {
 $j++;
 $texto = trim($row['descricao']);
 $limite = 250;
 if (strlen($texto) > $limite) {
     $texto = substr($texto, 0, $limite - 3) . "...";
 }
 if ($calcula) {
     // if (array_key_exists($row['cod_area'],$H_horarios)){  //verifica se o código da área possui carga horária definida no arquivo config.inc.php
     // $areaChamado = $row['cod_area']; //Recebe o valor da área de atendimento do chamado
     // } else $areaChamado = 1; //Carga horária default definida no arquivo config.inc.php
     $areaChamado = "";
     $areaChamado = testaArea($areaChamado, $row['area_cod'], $H_horarios);
     //------------------------------------------------
     $dtR->setData1($row['data_abertura']);
     if ($row['data_atendimento'] == "") {
         $dtR->setData2(date("Y-m-d H:i:s"));
     } else {
         $dtR->setData2($row['data_atendimento']);
     }
     $dtR->tempo_valido($dtR->data1, $dtR->data2, $H_horarios[$areaChamado][0], $H_horarios[$areaChamado][1], $H_horarios[$areaChamado][2], $H_horarios[$areaChamado][3], "H");
     $diffR = $dtR->tValido;
     $diff2R = $dtR->diff["hValido"];
     $segundosR = $dtR->diff["sValido"];
     //segundos válidos
     //------------------------------------------------
     $diff = date_difference($row['data_abertura'], date("Y-m-d H:i:s"));
     $sep = explode("dias", $diff);
     if ($sep[0] > 20) {
         //Se o chamado estiver aberto a mais de 20 dias o tempo é mostrado em dias para não ficar muito pesado.
         $diff = $sep[0] . " dias";
         $segundosS = $sep[0] * 86400;
 $perc_ate_sla2 = round($sla_green * 100 / $linhas, 2);
 $perc_ate_sla3 = round($sla_yellow * 100 / $linhas, 2);
 $perc_mais_sla3 = round($sla_red * 100 / $linhas, 2);
 //MEDIAS DE RESPOSTA
 $perc_ate_slaR2 = round($slaR_green * 100 / $linhas, 2);
 $perc_ate_slaR3 = round($slaR_yellow * 100 / $linhas, 2);
 $perc_mais_slaR3 = round($slaR_red * 100 / $linhas, 2);
 $slaR2M = $slaR2 / 60;
 $slaR3M = $slaR3 / 60;
 #####################################################################################
 //TOTAL DE HORAS VÁLIDAS NO PERÍODO:
 $area_fixa = 1;
 //Padrao
 $dt = new dateOpers();
 $dt->setData1($_GET['ini']);
 $dt->setData2($_GET['end']);
 $dt->tempo_valido($dt->data1, $dt->data2, $H_horarios[$area_fixa][0], $H_horarios[$area_fixa][1], $H_horarios[$area_fixa][2], $H_horarios[$area_fixa][3], "H");
 $hValido = $dt->diff["hValido"] + 1;
 //Como o período passado não é arredondado (xx/xx/xx 23:59:59) é necessário arrendondar o total de horas.
 ####################################################################################
 print "</table>";
 ##TRANSFORMAÇÕES DOS ARRAYS
 $numerosRed = putComma($chamadosSred);
 $numerosYellow = putComma($chamadosSyellow);
 $numerosGreen = putComma($chamadosSgreen);
 $numerosRred = putComma($chamadosRred);
 $numerosRyellow = putComma($chamadosRyellow);
 $numerosRgreen = putComma($chamadosRgreen);
 ## QUADROS DE ESTATÍSTICAS
 print "<table align='center' cellspacing='0'>";
 print "  <tr><td colspan =4></td><td class='line'></td></tr>";
示例#10
0
 //$sql_ts_anterior = "select * from tempo_status where ts_ocorrencia = ".$rowAT['numero']." and ts_status = ".$row_config['conf_schedule_status']." ";
 $sql_ts_anterior = "select * from tempo_status where ts_ocorrencia = " . $rowAT['numero'] . " and ts_status = " . $rowAT['status_cod'] . " ";
 $exec_sql = mysql_query($sql_ts_anterior);
 if ($exec_sql == 0) {
     $error = " erro 1";
 }
 $achou = mysql_num_rows($exec_sql);
 if ($achou > 0) {
     //esse status já esteve setado em outro momento
     $row_ts = mysql_fetch_array($exec_sql);
     $areaT = "";
     $areaT = testaArea($areaT, $rowAT['area_cod'], $H_horarios);
     $dt = new dateOpers();
     $dt->setData1($row_ts['ts_data']);
     //$dt->setData2(date("Y-m-d H:i:s"));  //SUBSTITUÍ date("Y-m-d H:i:s") POR $rowAT['data_abertura']
     $dt->setData2($rowAT['data_abertura']);
     $dt->tempo_valido($dt->data1, $dt->data2, $H_horarios[$areaT][0], $H_horarios[$areaT][1], $H_horarios[$areaT][2], $H_horarios[$areaT][3], "H");
     $segundos = $dt->diff["sValido"];
     //segundos válidos
     //$sql_upd = "update tempo_status set ts_tempo = (ts_tempo+".$segundos.") , ts_data ='".date("Y-m-d H:i:s")."' where ts_ocorrencia = ".$rowAT['numero']." and
     //ts_status = ".$row_config['conf_schedule_status']." ";
     $sql_upd = "update tempo_status set ts_tempo = (ts_tempo+" . $segundos . ") , ts_data ='" . $rowAT['data_abertura'] . "' where ts_ocorrencia = " . $rowAT['numero'] . " and\n\t\t\t\t\t\tts_status = " . $rowAT['status_cod'] . " ";
     $exec_upd = mysql_query($sql_upd);
     if ($exec_upd == 0) {
         $error .= " erro 2";
     }
 } else {
     //$sql_ins = "insert into tempo_status (ts_ocorrencia, ts_status, ts_tempo, ts_data) values (".$rowAT['numero'].", ".$row_config['conf_schedule_status'].", 0, '".date("Y-m-d H:i:s")."' )";
     $sql_ins = "insert into tempo_status (ts_ocorrencia, ts_status, ts_tempo, ts_data) values (" . $rowAT['numero'] . ", " . $rowAT['status_cod'] . ", 0, '" . $rowAT['data_abertura'] . "' )";
     $exec_ins = mysql_query($sql_ins);
     if ($exec_ins == 0) {