|
@@ -2429,23 +2429,44 @@ class StatsController extends Controller
|
|
|
|
|
|
$serializer = $this->container->get('serializer');
|
|
|
$em = $this->get('doctrine')->getManager();
|
|
|
+
|
|
|
$devices = $em->getRepository('StatsBundle:DeviceConsumption')->createQueryBuilder('c')
|
|
|
- ->select('c.device AS device', 'SUM(c.in) AS i','SUM(c.out) AS o')
|
|
|
- ->leftJoin('StatsBundle:Onu', 'onu', 'WITH', 'c.device = onu.ponSerialNumber')
|
|
|
+ ->select('c.device AS device', 'SUM(c.in) AS i','SUM(c.out) AS o', 'SUM(c.in + c.out) AS total')
|
|
|
->where('c.server = :server')
|
|
|
- ->andWhere('onu.oltDeviceId = :deviceId')
|
|
|
+ ->andWhere('c.fatherDevice = :fatherDevice')
|
|
|
->andWhere('c.fatherDeviceType = :fatherDeviceType')
|
|
|
->andWhere('c.date >= :from')
|
|
|
->andWhere('c.date <= :to')
|
|
|
->setParameter('server', 1)
|
|
|
- ->setParameter('deviceId', $deviceId)
|
|
|
+ ->setParameter('fatherDevice', $deviceId)
|
|
|
->setParameter('fatherDeviceType', 2)
|
|
|
->setParameter('from', $from)
|
|
|
->setParameter('to', $to)
|
|
|
+ ->setMaxResults(intval($limit))
|
|
|
->groupBy('c.device')
|
|
|
->getQuery()
|
|
|
->getResult();
|
|
|
|
|
|
+ if(empty($devices)) {
|
|
|
+ $devices = $em->getRepository('StatsBundle:DeviceConsumption')->createQueryBuilder('c')
|
|
|
+ ->select('c.device AS device', 'SUM(c.in) AS i','SUM(c.out) AS o', 'SUM(c.in + c.out) AS total')
|
|
|
+ ->leftJoin('StatsBundle:Onu', 'onu', 'WITH', 'c.device = onu.ponSerialNumber')
|
|
|
+ ->where('c.server = :server')
|
|
|
+ ->andWhere('onu.oltDeviceId = :deviceId')
|
|
|
+ ->andWhere('c.fatherDeviceType = :fatherDeviceType')
|
|
|
+ ->andWhere('c.date >= :from')
|
|
|
+ ->andWhere('c.date <= :to')
|
|
|
+ ->setParameter('server', 1)
|
|
|
+ ->setParameter('deviceId', $deviceId)
|
|
|
+ ->setParameter('fatherDeviceType', 3)
|
|
|
+ ->setParameter('from', $from)
|
|
|
+ ->setParameter('to', $to)
|
|
|
+ ->setMaxResults(intval($limit))
|
|
|
+ ->groupBy('c.device')
|
|
|
+ ->getQuery()
|
|
|
+ ->getResult();
|
|
|
+ }
|
|
|
+
|
|
|
$jsonClients = $serializer->serialize($devices, 'json');
|
|
|
return JsonResponse::fromJsonString($jsonClients);
|
|
|
}
|