Commit 21222d80bfa62b4218edb69007d99e6b53f90832

Authored by Eduardo Santos
1 parent 2e2fb435
Exists in master and in 2 other branches 3,1, 3.1

Corrige a coleta para forçar atualizaçao no getTest e melhorias de relatorio do Cocar

Command/CronCommand.php
... ... @@ -14,7 +14,7 @@ class CronCommand extends ContainerAwareCommand
14 14 *
15 15 * @var type object
16 16 */
17   - private $em;
  17 + //private $em;
18 18  
19 19 protected function configure()
20 20 {
... ... @@ -70,7 +70,7 @@ class CronCommand extends ContainerAwareCommand
70 70  
71 71 protected function execute(InputInterface $input, OutputInterface $output)
72 72 {
73   - $this->em = $this->getContainer()->get('doctrine')->getManager();
  73 + //$this->em = $this->getContainer()->get('doctrine')->getManager();
74 74 //$this->getApplication()->getKernel()->getContainer()->get('doctrine')->getManager();
75 75  
76 76 $return = null;
... ... @@ -130,8 +130,11 @@ class CronCommand extends ContainerAwareCommand
130 130 file_get_contents("http://localhost/cocar/web/app_dev.php/cocar/endalarm");
131 131 elseif($task == 'graphdailyperform')
132 132 file_get_contents("http://localhost/cocar/web/app_dev.php/cocar/graphdailyperform");
133   - elseif($task == 'printer')
134   - $this->getContainer()->get('printer')->totalizer();
  133 + elseif($task == 'printer') {
  134 + $printer_controller = $this->getContainer()->get('printer');
  135 + $printer_controller->setContainer($this->getContainer());
  136 + $printer_controller->totalizer();
  137 + }
135 138  
136 139 }
137 140 catch(Exception $e)
... ...
Controller/PrinterController.php
... ... @@ -64,6 +64,7 @@ class PrinterController extends Controller
64 64 $start = $start->format('U');
65 65  
66 66 $end = new \DateTime($form['endDate']);
  67 + $end->setTime('23', '59', '59');
67 68 $end = $end->format('U');
68 69 }
69 70  
... ... @@ -109,6 +110,7 @@ class PrinterController extends Controller
109 110 $start = $start->format('U');
110 111  
111 112 $end = new \DateTime($form['endDate']);
  113 + $end->setTime('23', '59', '59');
112 114 $endcsv = $end->format('d/m/Y');
113 115 $end = $end->format('U');
114 116 }
... ... @@ -118,8 +120,20 @@ class PrinterController extends Controller
118 120  
119 121 $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeral($start, $end);
120 122  
  123 + // Gera cabeçalho
  124 + $cabecalho = array();
  125 + foreach($printers as $elm) {
  126 + array_push($cabecalho, array_keys($elm));
  127 + break;
  128 + }
  129 + // Adiciona contagem no cabeçalho
  130 + array_push($cabecalho[0], 'totalPrints');
  131 +
  132 + // Gera CSV
  133 + $reader = new ArrayReader(array_merge($cabecalho, $printers));
  134 +
121 135 // Gera CSV
122   - $reader = new ArrayReader($printers);
  136 + //$reader = new ArrayReader($printers);
123 137  
124 138 // Create the workflow from the reader
125 139 $workflow = new Workflow($reader);
... ... @@ -127,7 +141,11 @@ class PrinterController extends Controller
127 141  
128 142 // Contador geral das impressorasa
129 143 $converter = new CallbackItemConverter(function ($item) {
130   - $item['totalPrints'] = $item['printsEnd'] - $item['printsStart'];
  144 + if (array_key_exists('printsEnd', $item) && array_key_exists('printsStart', $item)) {
  145 + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart'];
  146 + } else {
  147 + $item['totalPrints'] = null;
  148 + }
131 149 return $item;
132 150 });
133 151 $workflow->addItemConverter($converter);
... ... @@ -185,6 +203,7 @@ class PrinterController extends Controller
185 203 $start = $start->format('U');
186 204  
187 205 $end = new \DateTime($form['endDate']);
  206 + $end->setTime('23', '59', '59');
188 207 $end = $end->format('U');
189 208 }
190 209  
... ... @@ -233,7 +252,10 @@ class PrinterController extends Controller
233 252 $start = $start->format('U');
234 253  
235 254 $end = new \DateTime($form['endDate']);
  255 + $end->setTime('23', '59', '59');
236 256 $end = $end->format('U');
  257 +
  258 + $this->get('logger')->debug("Relatório CSV Detalhado. Início = " . $form['startDate'] . " Fim = " . $form['endDate']);
237 259 }
238 260  
239 261 $start = isset($start) ? $start : (time() - ((60*60*24)*30));
... ... @@ -241,15 +263,31 @@ class PrinterController extends Controller
241 263  
242 264 $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeralDetalhado($start, $end);
243 265  
  266 + // Gera cabeçalho
  267 + $cabecalho = array();
  268 + foreach($printers as $elm) {
  269 + array_push($cabecalho, array_keys($elm));
  270 + break;
  271 + }
  272 + // Adiciona contagem no cabeçalho
  273 + array_push($cabecalho[0], 'totalPrints');
  274 +
  275 + // Gera CSV
  276 + $reader = new ArrayReader(array_merge($cabecalho, $printers));
  277 +
244 278 // Gera CSV
245   - $reader = new ArrayReader($printers);
  279 + //$reader = new ArrayReader($printers);
246 280  
247 281 // Create the workflow from the reader
248 282 $workflow = new Workflow($reader);
249 283  
250 284 // Contador geral das impressorasa
251 285 $converter = new CallbackItemConverter(function ($item) {
252   - $item['totalPrints'] = $item['printsEnd'] - $item['printsStart'];
  286 + if (array_key_exists('printsEnd', $item) && array_key_exists('printsStart', $item)) {
  287 + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart'];
  288 + } else {
  289 + $item['totalPrints'] = null;
  290 + }
253 291 return $item;
254 292 });
255 293 $workflow->addItemConverter($converter);
... ... @@ -567,6 +605,9 @@ class PrinterController extends Controller
567 605  
568 606 public function totalizer()
569 607 {
  608 + ini_set('memory_limit', '1024M');
  609 + gc_enable();
  610 +
570 611 $printers = $this->em->getRepository('CocarBundle:Printer')->findAll();
571 612  
572 613 foreach($printers as $printer)
... ... @@ -587,6 +628,7 @@ class PrinterController extends Controller
587 628 catch(Exception $e)
588 629 {
589 630 #return new Response($e->getMessage());
  631 + $this->get('logger')->error("Erro na coleta da impressora $host \n".$e->getMessage());
590 632 }
591 633 }
592 634 return new Response();
... ... @@ -609,7 +651,7 @@ class PrinterController extends Controller
609 651 if(empty($counter)) {
610 652 $counter = new PrinterCounter;
611 653 } else {
612   - $this->get('logger')->info("Entrada repetida para impressora $printer e data $time");
  654 + $this->get('logger')->error("Entrada repetida para impressora $printer e data $time");
613 655 return true;
614 656 }
615 657  
... ...
Entity/PrinterCounterRepository.php
... ... @@ -309,7 +309,33 @@ class PrinterCounterRepository extends EntityRepository
309 309 $sql = "SELECT printer.id,
310 310 pc1.blackink,
311 311 pc1.coloredink,
312   - to_timestamp(CASE WHEN max(pc1.date) IS NULL
  312 +
  313 + (CASE WHEN min(pc1.date) IS NULL
  314 + THEN (SELECT max(date)
  315 + FROM tb_printer_counter
  316 + WHERE date <= ?
  317 + AND printer_id = printer.id)
  318 + ELSE min(pc1.date)
  319 + END) as startDate,
  320 +
  321 + (CASE WHEN (SELECT pc2.prints
  322 + FROM tb_printer_counter pc2
  323 + WHERE pc2.date = min(pc1.date)
  324 + AND pc2.printer_id = printer.id) IS NULL
  325 + THEN (SELECT pc5.prints
  326 + FROM tb_printer_counter pc5
  327 + WHERE pc5.date = (SELECT max(date)
  328 + FROM tb_printer_counter
  329 + WHERE date <= ?
  330 + AND printer_id = printer.id)
  331 + AND pc5.printer_id = printer.id)
  332 + ELSE (SELECT pc4.prints
  333 + FROM tb_printer_counter pc4
  334 + WHERE pc4.date = min(pc1.date)
  335 + AND pc4.printer_id = printer.id)
  336 + END) as printsStart,
  337 +
  338 + (CASE WHEN max(pc1.date) IS NULL
313 339 THEN (CASE WHEN (SELECT min(date)
314 340 FROM tb_printer_counter
315 341 WHERE date >= ?
... ... @@ -356,31 +382,6 @@ class PrinterCounterRepository extends EntityRepository
356 382 AND pc2.printer_id = printer.id)
357 383 END) as printsEnd,
358 384  
359   - (CASE WHEN min(pc1.date) IS NULL
360   - THEN (SELECT max(date)
361   - FROM tb_printer_counter
362   - WHERE date <= ?
363   - AND printer_id = printer.id)
364   - ELSE min(pc1.date)
365   - END) as startDate,
366   -
367   - (CASE WHEN (SELECT pc2.prints
368   - FROM tb_printer_counter pc2
369   - WHERE pc2.date = min(pc1.date)
370   - AND pc2.printer_id = printer.id) IS NULL
371   - THEN (SELECT pc5.prints
372   - FROM tb_printer_counter pc5
373   - WHERE pc5.date = (SELECT max(date)
374   - FROM tb_printer_counter
375   - WHERE date <= ?
376   - AND printer_id = printer.id)
377   - AND pc5.printer_id = printer.id)
378   - ELSE (SELECT pc4.prints
379   - FROM tb_printer_counter pc4
380   - WHERE pc4.date = min(pc1.date)
381   - AND pc4.printer_id = printer.id)
382   - END) as printsStart,
383   -
384 385 printer.name,
385 386 printer.description,
386 387 printer.serie,
... ...