浏览代码

no message

DESKTOP-9JTA2JJ\HP 5 年之前
父节点
当前提交
d4d3620b86
共有 2 个文件被更改,包括 65 次插入63 次删除
  1. 64 62
      api/application/controllers/Report.php
  2. 1 1
      api/application/models/Lamp_model.php

+ 64 - 62
api/application/controllers/Report.php

@@ -460,12 +460,15 @@ class Report extends Base_Controller {
 
         $page = empty($page) ? 1 : $page;
         $count = empty($count) ? 16 : $count;
+        $limit = $count;
+        $offset = $count*($page - 1);
 
         $type = $this->input->post('type',true);
         if (empty($type)) $type = 'power';
         if (!in_array($type, array('power', 'current', 'temper', 'capacity', 'voltage'))) {
             exit(json_result('0500', $this->response['0500']));
         }
+        $where = array();
         $projectid = $this->input->post('projectid', true);
         // 以项目为单位获取发用电量
         if ($type == 'power' && empty($projectid)) {
@@ -491,84 +494,82 @@ class Report extends Base_Controller {
         }else{  // 有传项目id
             $item_ids_arr = $projectid;
         }
-        $fiter = array();
-        if ($download != 1) {
-            $fiter['page'] = $page;
-            $fiter['count'] = $count;
-        }
+
+        $where['L.projectid'] = $projectid;
         
-        if (!empty($keyword)) {
-            $fiter['keyword'] = $keyword;
-        }
+        if (!empty($keyword)) $where['L.number|L.section'] = $keyword;
 
         $section = $this->input->post('section',true);
-        if (!empty($section)) {
-            $fiter['section'] = $section;
-        }
+        if (!empty($section)) $where['L.section'] = $section;
     
         // 获取项目下对应的路灯列表
-        $list = $this->Lamp_model->report_get_list_in('L.projectid', $item_ids_arr, 'L.id as id, L.number as name,P.projectname,L.projectid,L.section',$fiter); 
-        // var_dump($list);
-        $function = 'get'.ucfirst($type).'DataByFilter';
-        $result = array();
+        // $list = $this->Lamp_model->report_get_list_in('L.projectid', $item_ids_arr, 'L.id as id, L.number as name,P.projectname,L.projectid,L.section',$fiter); 
+        // // var_dump($list);
+        // $function = 'get'.ucfirst($type).'DataByFilter';
+        // $result = array();
 
-        $ids = array_column($list, 'id');
+        // $ids = array_column($list, 'id');
         // $eleData = $this->Electric_model->$function($ids, date('Y-m-d H:i:s'),'day');
-        $eleData = $this->Statistics_model->get_data($ids, date('Y-m-d H:i:s'),$type);
+        // $eleData = $this->Statistics_model->get_data($ids, date('Y-m-d H:i:s'),$type);
+        $join = array();
+        $join[] = ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'left'];
+
+        $fields = 'L.id,L.number,L.section,P.projectname,L.updatetime,L.dayGeneration,L.dayConsumption,L.totalgeneration,L.totalconsumption,L.daycharmaxcurrent as dayCharMaxCurr,L.daydischarmaxcurrent as dayDischarMaxCurr,L.daybattmintemper as dayMinTemper,L.daybattmaxtemper as dayMaxTemper,L.daychargemaxpow as dayCharMaxPower,L.daydischarmaxpow as dayDischarMaxPower,L.voltagedaymin as dayMinVoltage,L.voltagedaymax as dayMaxVoltage,L.projectid';
+        $list = $this->Lamp_model->get_list_by_join($where, $fields,$limit, $offset, $join, 'L.number ASC,L.id ASC', NUll, 'L');
         // 遍历路灯数组,每个路灯的历史数据
         foreach ($list as $k=>$v) {  
             // $data = $this->Electric_model->$function(array($v['id']), date('Y-m-d H:i:s'),'day');
             $data = [];
 
             if ($type == 'power') {
-                $data['daygeneration'] = empty($eleData[$v['id']]['dayGeneration']) ? 0 : round($eleData[$v['id']]['dayGeneration'],2);
-                $data['dayconsumption'] = empty($eleData[$v['id']]['dayConsumption']) ? 0 : round($eleData[$v['id']]['dayConsumption'],2);
-                $data['totalgeneration'] = empty($eleData[$v['id']]['totalGeneration']) ? 0 : round($eleData[$v['id']]['totalGeneration'],2);
-                $data['totalconsumption'] = empty($eleData[$v['id']]['totalConsumption']) ? 0 : round($eleData[$v['id']]['totalConsumption'],2);
-                $data['monthgeneration'] = empty($eleData[$v['id']]['monthGeneration']) ? 0 : round($eleData[$v['id']]['monthGeneration'],2);
-                $data['monthconsumption'] = empty($eleData[$v['id']]['monthConsumption']) ? 0 : round($eleData[$v['id']]['monthConsumption'],2);
-                $data['yeargeneration'] = empty($eleData[$v['id']]['yearGeneration']) ? 0 : round($eleData[$v['id']]['yearGeneration'],2);
-                $data['yearconsumption'] = empty($eleData[$v['id']]['yearConsumption']) ? 0 : round(
-                    $eleData[$v['id']]['yearConsumption'],2);
-                $v['updatetime'] = empty($eleData[$v['id']]['updatetime']) ? '' : $eleData[$v['id']]['updatetime'];
+                $data['daygeneration'] = empty($v['dayGeneration']) ? 0 : round($v['dayGeneration'],2);
+                $data['dayconsumption'] = empty($v['dayConsumption']) ? 0 : round($v['dayConsumption'],2);
+                $data['totalgeneration'] = empty($v['totalGeneration']) ? 0 : round($v['totalGeneration'],2);
+                $data['totalconsumption'] = empty($v['totalConsumption']) ? 0 : round($v['totalConsumption'],2);
+                $data['monthgeneration'] = empty($v['monthGeneration']) ? 0 : round($v['monthGeneration'],2);
+                $data['monthconsumption'] = empty($v['monthConsumption']) ? 0 : round($v['monthConsumption'],2);
+                $data['yeargeneration'] = empty($v['yearGeneration']) ? 0 : round($v['yearGeneration'],2);
+                $data['yearconsumption'] = empty($v['yearConsumption']) ? 0 : round(
+                    $v['yearConsumption'],2);
+                $v['updatetime'] = empty($v['updatetime']) ? '' : $v['updatetime'];
             }elseif ($type == 'current') {
-                $data['daycharmaxcurrent'] = empty($eleData[$v['id']]['dayCharMaxCurr']) ? 0 : round($eleData[$v['id']]['dayCharMaxCurr'],2);
-                $data['daydischarmaxcurrent'] = empty($eleData[$v['id']]['dayDischarMaxCurr']) ? 0 : round($eleData[$v['id']]['dayDischarMaxCurr'],2);
-                $data['monthcharmaxcurrent'] = empty($eleData[$v['id']]['monthCharMaxCurr']) ? 0 : round($eleData[$v['id']]['monthCharMaxCurr'],2);
-                $data['monthdischarmaxcurrent'] = empty($eleData[$v['id']]['monthDischarMaxCurr']) ? 0 : round($eleData[$v['id']]['monthDischarMaxCurr'],2);
-                $data['yearcharmaxcurrent'] = empty($eleData[$v['id']]['yearCharMaxCurr']) ? 0 : round($eleData[$v['id']]['yearCharMaxCurr'],2);
-                $data['yeardischarmaxcurrent'] = empty($eleData[$v['id']]['yearDischarMaxCurr']) ? 0 : round(
-                    $eleData[$v['id']]['yearDischarMaxCurr'],2);
-                $v['updatetime'] = empty($eleData[$v['id']]['updatetime']) ? '' : $eleData[$v['id']]['updatetime'];
+                $data['daycharmaxcurrent'] = empty($v['dayCharMaxCurr']) ? 0 : round($v['dayCharMaxCurr'],2);
+                $data['daydischarmaxcurrent'] = empty($v['dayDischarMaxCurr']) ? 0 : round($v['dayDischarMaxCurr'],2);
+                $data['monthcharmaxcurrent'] = empty($v['monthCharMaxCurr']) ? 0 : round($v['monthCharMaxCurr'],2);
+                $data['monthdischarmaxcurrent'] = empty($v['monthDischarMaxCurr']) ? 0 : round($v['monthDischarMaxCurr'],2);
+                $data['yearcharmaxcurrent'] = empty($v['yearCharMaxCurr']) ? 0 : round($v['yearCharMaxCurr'],2);
+                $data['yeardischarmaxcurrent'] = empty($v['yearDischarMaxCurr']) ? 0 : round(
+                    $v['yearDischarMaxCurr'],2);
+                $v['updatetime'] = empty($v['updatetime']) ? '' : $v['updatetime'];
             }elseif ($type == 'temper') {
-                $data['daybattmintemper'] = empty($eleData[$v['id']]['dayMinTemper']) ? 0 : round($eleData[$v['id']]['dayMinTemper'],1);
-                $data['daybattmaxtemper'] = empty($eleData[$v['id']]['dayMaxTemper']) ? 0 : round($eleData[$v['id']]['dayMaxTemper'],1);
-                $data['monthbattmintemper'] = empty($eleData[$v['id']]['monthMinTemper']) ? 0 : round($eleData[$v['id']]['monthMinTemper'],1);
-                $data['monthbattmaxtemper'] = empty($eleData[$v['id']]['monthMaxTemper']) ? 0 : round($eleData[$v['id']]['monthMaxTemper'],1);
-                $data['yearbattmintemper'] = empty($eleData[$v['id']]['yearMinTemper']) ? 0 : round($eleData[$v['id']]['yearMinTemper'],1);
-                $data['yearbattmaxtemper'] = empty($eleData[$v['id']]['yearMaxTemper']) ? 0 : round(
-                    $eleData[$v['id']]['yearMaxTemper'],1);
-                $v['updatetime'] = empty($eleData[$v['id']]['updatetime']) ? '' : $eleData[$v['id']]['updatetime'];
+                $data['daybattmintemper'] = empty($v['dayMinTemper']) ? 0 : round($v['dayMinTemper'],1);
+                $data['daybattmaxtemper'] = empty($v['dayMaxTemper']) ? 0 : round($v['dayMaxTemper'],1);
+                $data['monthbattmintemper'] = empty($v['monthMinTemper']) ? 0 : round($v['monthMinTemper'],1);
+                $data['monthbattmaxtemper'] = empty($v['monthMaxTemper']) ? 0 : round($v['monthMaxTemper'],1);
+                $data['yearbattmintemper'] = empty($v['yearMinTemper']) ? 0 : round($v['yearMinTemper'],1);
+                $data['yearbattmaxtemper'] = empty($v['yearMaxTemper']) ? 0 : round(
+                    $v['yearMaxTemper'],1);
+                $v['updatetime'] = empty($v['updatetime']) ? '' : $v['updatetime'];
             }elseif ($type == 'capacity') {
-                $data['daychargemaxpow'] = empty($eleData[$v['id']]['dayCharMaxPower']) ? 0 : round($eleData[$v['id']]['dayCharMaxPower'],2);
-                $data['daydischarmaxpow'] = empty($eleData[$v['id']]['dayDischarMaxPower']) ? 0 : round($eleData[$v['id']]['dayDischarMaxPower'],2);
-                $data['monthchargemaxpow'] = empty($eleData[$v['id']]['monthCharMaxPower']) ? 0 : round($eleData[$v['id']]['monthCharMaxPower'],2);
-                $data['monthdischarmaxpow'] = empty($eleData[$v['id']]['monthDischarMaxPower']) ? 0 : round($eleData[$v['id']]['monthDischarMaxPower'],2);
-                $data['yearchargemaxpow'] = empty($eleData[$v['id']]['yearCharMaxPower']) ? 0 : round($eleData[$v['id']]['yearCharMaxPower'],2);
-                $data['yeardischarmaxpow'] = empty($eleData[$v['id']]['yearDischarMaxPower']) ? 0 : round($eleData[$v['id']]['yearDischarMaxPower'],2);
-                $v['updatetime'] = empty($eleData[$v['id']]['updatetime']) ? '' : $eleData[$v['id']]['updatetime'];
+                $data['daychargemaxpow'] = empty($v['dayCharMaxPower']) ? 0 : round($v['dayCharMaxPower'],2);
+                $data['daydischarmaxpow'] = empty($v['dayDischarMaxPower']) ? 0 : round($v['dayDischarMaxPower'],2);
+                $data['monthchargemaxpow'] = empty($v['monthCharMaxPower']) ? 0 : round($v['monthCharMaxPower'],2);
+                $data['monthdischarmaxpow'] = empty($v['monthDischarMaxPower']) ? 0 : round($v['monthDischarMaxPower'],2);
+                $data['yearchargemaxpow'] = empty($v['yearCharMaxPower']) ? 0 : round($v['yearCharMaxPower'],2);
+                $data['yeardischarmaxpow'] = empty($v['yearDischarMaxPower']) ? 0 : round($v['yearDischarMaxPower'],2);
+                $v['updatetime'] = empty($v['updatetime']) ? '' : $v['updatetime'];
             }else{
-                $data['voltagedaymin'] = empty($eleData[$v['id']]['dayMinVoltage']) ? 0 : round($eleData[$v['id']]['dayMinVoltage'],2);
-                $data['voltagedaymax'] = empty($eleData[$v['id']]['dayMaxVoltage']) ? 0 : round($eleData[$v['id']]['dayMaxVoltage'],2);
-                $data['monthvoltagedaymin'] = empty($eleData[$v['id']]['monthMinVoltage']) ? 0 : round($eleData[$v['id']]['monthMinVoltage'],2);
-                $data['monthvoltagedaymax'] = empty($eleData[$v['id']]['monthMaxVoltage']) ? 0 : round($eleData[$v['id']]['monthMaxVoltage'],2);
-                $data['yearvoltagedaymin'] = empty($eleData[$v['id']]['yearMinVoltage']) ? 0 : round($eleData[$v['id']]['yearMinVoltage'],2);
-                $data['yearvoltagedaymax'] = empty($eleData[$v['id']]['yearMaxVoltage']) ? 0 : round($eleData[$v['id']]['yearMaxVoltage'],2);
-                $v['updatetime'] = empty($eleData[$v['id']]['updatetime']) ? '' : $eleData[$v['id']]['updatetime'];
+                $data['voltagedaymin'] = empty($v['dayMinVoltage']) ? 0 : round($v['dayMinVoltage'],2);
+                $data['voltagedaymax'] = empty($v['dayMaxVoltage']) ? 0 : round($v['dayMaxVoltage'],2);
+                $data['monthvoltagedaymin'] = empty($v['monthMinVoltage']) ? 0 : round($v['monthMinVoltage'],2);
+                $data['monthvoltagedaymax'] = empty($v['monthMaxVoltage']) ? 0 : round($v['monthMaxVoltage'],2);
+                $data['yearvoltagedaymin'] = empty($v['yearMinVoltage']) ? 0 : round($v['yearMinVoltage'],2);
+                $data['yearvoltagedaymax'] = empty($v['yearMaxVoltage']) ? 0 : round($v['yearMaxVoltage'],2);
+                $v['updatetime'] = empty($v['updatetime']) ? '' : $v['updatetime'];
             }
             // $data = $eleData[$v['id']];
             $data['id'] = $v['id'];
-            $data['number'] = $v['name'];
+            $data['number'] = $v['number'];
             if (!empty($v['updatetime'])) {
                 $timezone = $this->Project_model->get_timezone_by_projectid($v['projectid']);
                 $v['updatetime'] = date_change($v['updatetime'],8,$timezone['value']);
@@ -582,10 +583,11 @@ class Report extends Base_Controller {
             $this->download($type,$result);
         }
 
-        unset($fiter['page']);
-        unset($fiter['count']);
-        $res = $this->Lamp_model->get_total('L.projectid', $item_ids_arr, 'L.id',$fiter); 
-        $total = ceil($res/$count);
+        // unset($fiter['page']);
+        // unset($fiter['count']);
+        // $res = $this->Lamp_model->get_total('L.projectid', $item_ids_arr, 'L.id',$fiter); 
+        $total = $this->Lamp_model->get_list_by_join($where, 'count(*) as total',null, null, $join, 'L.number ASC,L.id ASC', NUll, 'L');
+        $total = ceil($total[0]['total']/$count);
 
         exit(json_result('0000',$this->response['0000'],array('list'=>$result,'total'=>$total)));
     }

+ 1 - 1
api/application/models/Lamp_model.php

@@ -126,7 +126,7 @@ class Lamp_model extends Base_model {
 	        // $this->db->join('battery_info_log as BI', 'L.id = BI.lampid AND BI.lampid=T.lampid AND BI.updatetime = T.time', 'left');
 	        // $this->db->join('history_info_log as HI', 'L.id = HI.lampid AND HI.lampid=T.lampid AND HI.updatetime = T.time', 'left');
 	        // $this->db->join('alarm_info_log as AI', 'L.id = AI.lampid AND AI.lampid=T.lampid AND AI.updatetime = T.time', 'left');
-	        $this->db->join('(select t1.* from alarm_info_log t1, (select lampid, max(updatetime) as maxtime from alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) as AI', 'L.id = AI.lampid', 'left');
+	        // $this->db->join('(select t1.* from alarm_info_log t1, (select lampid, max(updatetime) as maxtime from alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) as AI', 'L.id = AI.lampid', 'left');
 	        // $this->db->join('solar_info_log as SI', 'L.id = SI.lampid AND SI.lampid=T.lampid AND SI.updatetime = T.time', 'left');
 	        // $this->db->join('electric_info_log as EI', 'L.id = EI.lampid AND EI.lampid=T.lampid AND EI.updatetime = T.time', 'left');
 	        // $this->db->join('system_info_log as SIL', 'L.id = SIL.lampid AND SIL.lampid=T.lampid AND SIL.updatetime = T.time', 'left');