From 21222d80bfa62b4218edb69007d99e6b53f90832 Mon Sep 17 00:00:00 2001 From: Eduardo Santos Date: Mon, 11 Aug 2014 17:48:02 -0300 Subject: [PATCH] Corrige a coleta para forçar atualizaçao no getTest e melhorias de relatorio do Cocar --- Command/CronCommand.php | 11 +++++++---- Controller/PrinterController.php | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- Entity/PrinterCounterRepository.php | 53 +++++++++++++++++++++++++++-------------------------- 3 files changed, 81 insertions(+), 35 deletions(-) diff --git a/Command/CronCommand.php b/Command/CronCommand.php index 28b939c..10ffa51 100755 --- a/Command/CronCommand.php +++ b/Command/CronCommand.php @@ -14,7 +14,7 @@ class CronCommand extends ContainerAwareCommand * * @var type object */ - private $em; + //private $em; protected function configure() { @@ -70,7 +70,7 @@ class CronCommand extends ContainerAwareCommand protected function execute(InputInterface $input, OutputInterface $output) { - $this->em = $this->getContainer()->get('doctrine')->getManager(); + //$this->em = $this->getContainer()->get('doctrine')->getManager(); //$this->getApplication()->getKernel()->getContainer()->get('doctrine')->getManager(); $return = null; @@ -130,8 +130,11 @@ class CronCommand extends ContainerAwareCommand file_get_contents("http://localhost/cocar/web/app_dev.php/cocar/endalarm"); elseif($task == 'graphdailyperform') file_get_contents("http://localhost/cocar/web/app_dev.php/cocar/graphdailyperform"); - elseif($task == 'printer') - $this->getContainer()->get('printer')->totalizer(); + elseif($task == 'printer') { + $printer_controller = $this->getContainer()->get('printer'); + $printer_controller->setContainer($this->getContainer()); + $printer_controller->totalizer(); + } } catch(Exception $e) diff --git a/Controller/PrinterController.php b/Controller/PrinterController.php index 8a5f3e3..eda532b 100755 --- a/Controller/PrinterController.php +++ b/Controller/PrinterController.php @@ -64,6 +64,7 @@ class PrinterController extends Controller $start = $start->format('U'); $end = new \DateTime($form['endDate']); + $end->setTime('23', '59', '59'); $end = $end->format('U'); } @@ -109,6 +110,7 @@ class PrinterController extends Controller $start = $start->format('U'); $end = new \DateTime($form['endDate']); + $end->setTime('23', '59', '59'); $endcsv = $end->format('d/m/Y'); $end = $end->format('U'); } @@ -118,8 +120,20 @@ class PrinterController extends Controller $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeral($start, $end); + // Gera cabeçalho + $cabecalho = array(); + foreach($printers as $elm) { + array_push($cabecalho, array_keys($elm)); + break; + } + // Adiciona contagem no cabeçalho + array_push($cabecalho[0], 'totalPrints'); + + // Gera CSV + $reader = new ArrayReader(array_merge($cabecalho, $printers)); + // Gera CSV - $reader = new ArrayReader($printers); + //$reader = new ArrayReader($printers); // Create the workflow from the reader $workflow = new Workflow($reader); @@ -127,7 +141,11 @@ class PrinterController extends Controller // Contador geral das impressorasa $converter = new CallbackItemConverter(function ($item) { - $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; + if (array_key_exists('printsEnd', $item) && array_key_exists('printsStart', $item)) { + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; + } else { + $item['totalPrints'] = null; + } return $item; }); $workflow->addItemConverter($converter); @@ -185,6 +203,7 @@ class PrinterController extends Controller $start = $start->format('U'); $end = new \DateTime($form['endDate']); + $end->setTime('23', '59', '59'); $end = $end->format('U'); } @@ -233,7 +252,10 @@ class PrinterController extends Controller $start = $start->format('U'); $end = new \DateTime($form['endDate']); + $end->setTime('23', '59', '59'); $end = $end->format('U'); + + $this->get('logger')->debug("Relatório CSV Detalhado. Início = " . $form['startDate'] . " Fim = " . $form['endDate']); } $start = isset($start) ? $start : (time() - ((60*60*24)*30)); @@ -241,15 +263,31 @@ class PrinterController extends Controller $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeralDetalhado($start, $end); + // Gera cabeçalho + $cabecalho = array(); + foreach($printers as $elm) { + array_push($cabecalho, array_keys($elm)); + break; + } + // Adiciona contagem no cabeçalho + array_push($cabecalho[0], 'totalPrints'); + + // Gera CSV + $reader = new ArrayReader(array_merge($cabecalho, $printers)); + // Gera CSV - $reader = new ArrayReader($printers); + //$reader = new ArrayReader($printers); // Create the workflow from the reader $workflow = new Workflow($reader); // Contador geral das impressorasa $converter = new CallbackItemConverter(function ($item) { - $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; + if (array_key_exists('printsEnd', $item) && array_key_exists('printsStart', $item)) { + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; + } else { + $item['totalPrints'] = null; + } return $item; }); $workflow->addItemConverter($converter); @@ -567,6 +605,9 @@ class PrinterController extends Controller public function totalizer() { + ini_set('memory_limit', '1024M'); + gc_enable(); + $printers = $this->em->getRepository('CocarBundle:Printer')->findAll(); foreach($printers as $printer) @@ -587,6 +628,7 @@ class PrinterController extends Controller catch(Exception $e) { #return new Response($e->getMessage()); + $this->get('logger')->error("Erro na coleta da impressora $host \n".$e->getMessage()); } } return new Response(); @@ -609,7 +651,7 @@ class PrinterController extends Controller if(empty($counter)) { $counter = new PrinterCounter; } else { - $this->get('logger')->info("Entrada repetida para impressora $printer e data $time"); + $this->get('logger')->error("Entrada repetida para impressora $printer e data $time"); return true; } diff --git a/Entity/PrinterCounterRepository.php b/Entity/PrinterCounterRepository.php index bd12968..96ea17a 100755 --- a/Entity/PrinterCounterRepository.php +++ b/Entity/PrinterCounterRepository.php @@ -309,7 +309,33 @@ class PrinterCounterRepository extends EntityRepository $sql = "SELECT printer.id, pc1.blackink, pc1.coloredink, - to_timestamp(CASE WHEN max(pc1.date) IS NULL + + (CASE WHEN min(pc1.date) IS NULL + THEN (SELECT max(date) + FROM tb_printer_counter + WHERE date <= ? + AND printer_id = printer.id) + ELSE min(pc1.date) + END) as startDate, + + (CASE WHEN (SELECT pc2.prints + FROM tb_printer_counter pc2 + WHERE pc2.date = min(pc1.date) + AND pc2.printer_id = printer.id) IS NULL + THEN (SELECT pc5.prints + FROM tb_printer_counter pc5 + WHERE pc5.date = (SELECT max(date) + FROM tb_printer_counter + WHERE date <= ? + AND printer_id = printer.id) + AND pc5.printer_id = printer.id) + ELSE (SELECT pc4.prints + FROM tb_printer_counter pc4 + WHERE pc4.date = min(pc1.date) + AND pc4.printer_id = printer.id) + END) as printsStart, + + (CASE WHEN max(pc1.date) IS NULL THEN (CASE WHEN (SELECT min(date) FROM tb_printer_counter WHERE date >= ? @@ -356,31 +382,6 @@ class PrinterCounterRepository extends EntityRepository AND pc2.printer_id = printer.id) END) as printsEnd, - (CASE WHEN min(pc1.date) IS NULL - THEN (SELECT max(date) - FROM tb_printer_counter - WHERE date <= ? - AND printer_id = printer.id) - ELSE min(pc1.date) - END) as startDate, - - (CASE WHEN (SELECT pc2.prints - FROM tb_printer_counter pc2 - WHERE pc2.date = min(pc1.date) - AND pc2.printer_id = printer.id) IS NULL - THEN (SELECT pc5.prints - FROM tb_printer_counter pc5 - WHERE pc5.date = (SELECT max(date) - FROM tb_printer_counter - WHERE date <= ? - AND printer_id = printer.id) - AND pc5.printer_id = printer.id) - ELSE (SELECT pc4.prints - FROM tb_printer_counter pc4 - WHERE pc4.date = min(pc1.date) - AND pc4.printer_id = printer.id) - END) as printsStart, - printer.name, printer.description, printer.serie, -- libgit2 0.21.2