Commit 5fffddc6f8ebebaa19fc9beb50bab4f0b0b3d4e2
1 parent
847424d3
Exists in
master
and in
2 other branches
Corrige relatório de impressoras garantindo que o valor retornado seja sempre o …
…apresentado pelo contador.
Showing
3 changed files
with
22 additions
and
17 deletions
Show diff stats
Controller/PrinterController.php
| ... | ... | @@ -20,6 +20,7 @@ use Ddeboer\DataImport\Workflow; |
| 20 | 20 | use Ddeboer\DataImport\Reader\ArrayReader; |
| 21 | 21 | use Ddeboer\DataImport\Writer\CsvWriter; |
| 22 | 22 | use Ddeboer\DataImport\ValueConverter\CallbackValueConverter; |
| 23 | +use Ddeboer\DataImport\ItemConverter\CallbackItemConverter; | |
| 23 | 24 | |
| 24 | 25 | use Doctrine\ORM\EntityManager; |
| 25 | 26 | use Symfony\Component\HttpFoundation\StreamedResponse; |
| ... | ... | @@ -124,6 +125,12 @@ class PrinterController extends Controller |
| 124 | 125 | $workflow = new Workflow($reader); |
| 125 | 126 | $data = new \DateTime(); |
| 126 | 127 | |
| 128 | + // Contador geral das impressorasa | |
| 129 | + $converter = new CallbackItemConverter(function ($item) { | |
| 130 | + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; | |
| 131 | + return $item; | |
| 132 | + }); | |
| 133 | + $workflow->addItemConverter($converter); | |
| 127 | 134 | |
| 128 | 135 | // As you can see, the first names are not capitalized correctly. Let's fix |
| 129 | 136 | // that with a value converter: |
| ... | ... | @@ -240,6 +247,12 @@ class PrinterController extends Controller |
| 240 | 247 | // Create the workflow from the reader |
| 241 | 248 | $workflow = new Workflow($reader); |
| 242 | 249 | |
| 250 | + // Contador geral das impressorasa | |
| 251 | + $converter = new CallbackItemConverter(function ($item) { | |
| 252 | + $item['totalPrints'] = $item['printsEnd'] - $item['printsStart']; | |
| 253 | + return $item; | |
| 254 | + }); | |
| 255 | + $workflow->addItemConverter($converter); | |
| 243 | 256 | |
| 244 | 257 | // As you can see, the first names are not capitalized correctly. Let's fix |
| 245 | 258 | // that with a value converter: | ... | ... |
Entity/PrinterCounterRepository.php
| ... | ... | @@ -27,9 +27,9 @@ class PrinterCounterRepository extends EntityRepository |
| 27 | 27 | pc1.blackInk, |
| 28 | 28 | pc1.coloredInk, |
| 29 | 29 | max(pc1.date) as endDate, |
| 30 | - max(pc1.prints) as printsEnd, | |
| 31 | - min(pc2.date) as startDate, | |
| 32 | - min(pc2.prints) as printsStart, | |
| 30 | + (SELECT pc2.prints FROM CocarBundle:PrinterCounter pc2 WHERE pc2.date = max(pc1.date) AND pc2.printer = printer.id) as printsEnd, | |
| 31 | + min(pc1.date) as startDate, | |
| 32 | + (SELECT pc3.prints FROM CocarBundle:PrinterCounter pc3 WHERE pc3.date = min(pc1.date) AND pc3.printer = printer.id) as printsStart, | |
| 33 | 33 | printer.name, |
| 34 | 34 | printer.description, |
| 35 | 35 | printer.serie, |
| ... | ... | @@ -37,7 +37,6 @@ class PrinterCounterRepository extends EntityRepository |
| 37 | 37 | printer.host |
| 38 | 38 | FROM CocarBundle:Printer printer |
| 39 | 39 | LEFT JOIN CocarBundle:PrinterCounter pc1 WITH (pc1.printer = printer.id AND pc1.date BETWEEN :start AND :end) |
| 40 | - LEFT JOIN CocarBundle:PrinterCounter pc2 WITH (pc2.printer = printer.id AND pc2.date BETWEEN :start AND :end) | |
| 41 | 40 | GROUP BY printer.id, |
| 42 | 41 | pc1.blackInk, |
| 43 | 42 | pc1.coloredInk, |
| ... | ... | @@ -70,12 +69,10 @@ class PrinterCounterRepository extends EntityRepository |
| 70 | 69 | printer.host, |
| 71 | 70 | printer.serie, |
| 72 | 71 | printer.local, |
| 73 | - max(pc1.prints) as printsEnd, | |
| 74 | - min(pc2.prints) as printsStart, | |
| 75 | - (max(pc1.prints) - min(pc2.prints)) as totalPrints | |
| 72 | + (SELECT pc2.prints FROM CocarBundle:PrinterCounter pc2 WHERE pc2.date = max(pc1.date) AND pc2.printer = printer.id) as printsEnd, | |
| 73 | + (SELECT pc3.prints FROM CocarBundle:PrinterCounter pc3 WHERE pc3.date = min(pc1.date) AND pc3.printer = printer.id) as printsStart | |
| 76 | 74 | FROM CocarBundle:Printer printer |
| 77 | 75 | LEFT JOIN CocarBundle:PrinterCounter pc1 WITH (pc1.printer = printer.id AND pc1.date BETWEEN :start AND :end) |
| 78 | - LEFT JOIN CocarBundle:PrinterCounter pc2 WITH (pc2.printer = printer.id AND pc2.date BETWEEN :start AND :end) | |
| 79 | 76 | GROUP BY printer.id, |
| 80 | 77 | printer.name, |
| 81 | 78 | printer.description, |
| ... | ... | @@ -102,18 +99,16 @@ class PrinterCounterRepository extends EntityRepository |
| 102 | 99 | |
| 103 | 100 | |
| 104 | 101 | $_dql = "SELECT printer.id, |
| 105 | - max(pc1.prints) as printsEnd, | |
| 106 | 102 | max(pc1.date) as endDate, |
| 107 | - min(pc2.prints) as printsStart, | |
| 108 | - min(pc2.date) as startDate, | |
| 103 | + (SELECT pc2.prints FROM CocarBundle:PrinterCounter pc2 WHERE pc2.date = max(pc1.date) AND pc2.printer = printer.id) as printsEnd, | |
| 104 | + min(pc1.date) as startDate, | |
| 105 | + (SELECT pc3.prints FROM CocarBundle:PrinterCounter pc3 WHERE pc3.date = min(pc1.date) AND pc3.printer = printer.id) as printsStart, | |
| 109 | 106 | printer.name, |
| 110 | 107 | printer.host, |
| 111 | 108 | printer.serie, |
| 112 | - printer.local, | |
| 113 | - (max(pc1.prints) - min(pc2.prints)) as totalPrints | |
| 109 | + printer.local | |
| 114 | 110 | FROM CocarBundle:Printer printer |
| 115 | 111 | LEFT JOIN CocarBundle:PrinterCounter pc1 WITH (pc1.printer = printer.id AND pc1.date BETWEEN :start AND :end) |
| 116 | - LEFT JOIN CocarBundle:PrinterCounter pc2 WITH (pc2.printer = printer.id AND pc2.date BETWEEN :start AND :end) | |
| 117 | 112 | GROUP BY printer.id, |
| 118 | 113 | printer.name, |
| 119 | 114 | printer.description, | ... | ... |
Resources/views/Printer/index.html.twig