| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 | 
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');include_once(FCPATH . 'application/controllers/Base_Controller.php');class Report extends Base_Controller {    public function __construct() {        parent::__construct();        $this->load->model('Company_model');        $this->load->model('Project_model');        $this->load->model('Network_model');        $this->load->model('Lamp_model');        $this->load->model('Electric_model');        $this->load->model('Statistics_model');    }    // 格式化数据    private function formatResult($data, $type){        $dataType = array(            'power' => array('daygeneration','dayconsumption'),             'batterycharge' => array('monthovertimes','monthfulltimes'),             'current' => array('daycharmaxcurrent','daydischarmaxcurrent'),             'temper' => array('daybattmintemper','daybattmaxtemper'),             'capacity' => array('daychargemaxpow','daydischarmaxpow'),             'voltage' => array('voltagedaymin','voltagedaymax'),        );        $categoriesData1 = $seriesData1 = $categoriesData2 = $seriesData2 = array();        foreach ($data as $k => $v){            if (!isset($categoriesData1[$v['updatetime']])){                $categoriesData1[$v['updatetime']] = $v['updatetime'];            }            $seriesData1[$v['id']]['data'][] = isset($v[$dataType[$type][0]]) ? round($v[$dataType[$type][0]],2) : null;            $seriesData1[$v['id']]['name'] = $v['name'];            if (!isset($categoriesData2[$v['updatetime']])){                $categoriesData2[$v['updatetime']] = $v['updatetime'];            }            $seriesData2[$v['id']]['data'][] = isset($v[$dataType[$type][1]]) ? round($v[$dataType[$type][1]],2) : null;            $seriesData2[$v['id']]['name'] = $v['name'];        }                $categories1 = $series1 = $categories2 = $series2 = array();        foreach ($categoriesData1 as $v){            $categories1[] = $v;        }                foreach ($seriesData1 as $v){            $series1[] = $v;        }        foreach ($categoriesData2 as $v){            $categories2[] = $v;        }                foreach ($seriesData2 as $v){            $series2[] = $v;        }                return array(            'report1' => array('categories' => $categories1,'series' => $series1),            'report2' => array('categories' => $categories2,'series' => $series2)        );    }    // 获取时间点对应的数据    private function fetchData($list, $date, $date_type, $show_type, $type){        $function = 'get'.ucfirst($type).'DataByFilter';        $result = array();        $lampIds = array_column($list, 'id');        $res = $this->Electric_model->$function($lampIds, $date, $date_type);        foreach ($list as $key => $value) {            $data = $res[$value['id']];            $data['id'] = $value['id'];            if ($show_type == 'lamp') {                $data['networkname'] = $value['networkname'];                $data['projectname'] = $value['projectname'];                $data['number'] = $value['name'];                  $data['section'] = $value['section'];              }            $data['name'] = $value['name'];            $data['createtime'] = $value['createtime'];            $result[] = $data;        }        return $result;    }    // 获取数据开始年份    private function getStartYear($list){        $years = array();        foreach ($list as $item) {            $years[] = date("Y", strtotime($item['createtime']));        }        return intval(min($years));    }    // 查看选中项目    // public function data() {    //     $type = $this->input->post('type',true);    //     if (!in_array($type, array('power', 'current', 'temper', 'capacity', 'voltage'))) {    //         $type = 'power';    //     }    //     $show_type = 'lamp';    //     $item_ids = $this->input->post('item_ids', true);    //     if (empty($item_ids)) {    //         exit(json_result('0502', $this->response['0502']));    //     }    //     $date_type = $this->input->post('date_type',true);    //     if (!in_array($date_type, array('month','year'))) {    //         $date_type = 'all';    //     }    //     $date = $this->input->post('date',true);    //     if ($date_type == 'month') {    //         $date = !empty($date) ? $date : date("Y-m");    //     } elseif ($date_type == 'year') {    //         $date = !empty($date) ? $date : date("Y");    //     } else{    //         $date = "";    //     }    //     $item_ids_arr = explode(",", $item_ids);    //     $list = $this->Lamp_model->get_list_in('L.id', $item_ids_arr, 'L.id as id, L.number as name,N.networkname,P.projectname, L.createtime,L.section');             //     if (empty($list)) {    //         exit(json_result('0006', $this->response['0006']));    //     }    //     if ($date_type == 'month') {    //         $beginDateMonth = date('Y-m-01', strtotime($date.'-01 00:00:00'));    //         $comDate = date('Y-m-01 00:00:00', time());    //         if (strtotime($beginDateMonth) > strtotime($comDate)) {    //             $end = 0;    //         }elseif (strtotime($beginDateMonth) == strtotime($comDate)) {    //             $end = intval(date('d', time())) - 1;    //         }else{    //             $end = date('d', strtotime("$beginDateMonth +1 month -1 day"));    //         }                                      //         $dataList = array();    //         for($start = $end; $start > 0; $start--){    //             $startStr = $start;    //             if ($start < 10) {    //                 $startStr = "0".$start;    //             }    //             $data = $this->fetchData($list, $date.'-'.$startStr, 'day', $show_type, $type);    //             $dataList = array_merge($dataList, $data);    //         }                //         $list = $dataList;    //     } elseif ($date_type == 'year') {    //         $dataList = array();    //         $y = intval(date('Y',time()));    //         if ($y == $date) {    //             $end = intval(date('m',time()));    //         }elseif($date > $y){    //             $end = 0;    //         }else{    //             $end = 12;    //         }    //         for($start = $end; $start > 0; $start--){    //             $startStr = $start;    //             if ($start < 10) {    //                 $startStr = "0".$start;    //             }    //             $data = $this->fetchData($list, $date."-".$startStr, 'month', $show_type, $type);    //             $dataList = array_merge($dataList, $data);    //         }                    //         $list = $dataList;    //     } else {    //         $dataList = array();    //         for($start = intval(date('Y')); $start > $this->getStartYear($list); $start--){    //             $startStr = $start;    //             $data = $this->fetchData($list, $startStr, 'year', $show_type, $type);    //             $dataList = array_merge($dataList, $data);    //         }                    //         $list = $dataList;    //     }    //     $download = $this->input->post('download',true);    //     if ($download == 1) {    //         $this->download($type,$list);    //     }    //     $data = $this->formatResult(array_reverse($list), $type);    //     // 分页处理    //     $page = $this->input->post('page',true);    //     $count = $this->input->post('count',true);    //     $k = 0;    //     $i = 0;    //     $res = array();    //     foreach ($list as $v) {    //         $res[$k][] = $v;    //         $i ++;    //         if ($i >= $count) {    //             $i = 0;    //             $k ++;    //         }    //     }    //     $data['list'] = empty($res) ? $res : $res[$page-1];    //     $data['total'] = ceil(count($list)/$count);    //     exit(json_result('0000', $this->response['0000'], $data));    // }    public function data(){        $type = $this->input->post('type',true);        $item_ids = $this->input->post('item_ids',true);        $date_type = $this->input->post('date_type',true);        $date = $this->input->post('date',true);        if (empty($type) || empty($item_ids) || empty($date_type)) exit(json_result('0007',$this->response['0007']));        if ($date_type == 'month') {            if (empty($date)) exit(json_result('0007',$this->response['0007']));            $beginDate = date('Y-m-01 00:00:00',strtotime($date));            $endDate = date('Y-m-d 23:59:59', strtotime("$beginDate +1 month -1 day"));        }elseif ($date_type == 'year'){            if (empty($date)) exit(json_result('0007',$this->response['0007']));            $beginDate = date('Y-01-01 00:00:00',strtotime($date));            $endDate = date('Y-m-d 23:59:59', strtotime(date('Y-12-01 00:00:00',strtotime($date))." +1 month -1 day"));        }        $item_ids_arr = explode(",", $item_ids);        $list = $this->Lamp_model->get_list_in('L.id', $item_ids_arr, 'L.id as id, L.number as name,N.networkname,P.projectname, L.createtime,L.section');         $temp = array();        foreach ($list as $lamp) {            $lamp['list'] = array();            $temp[$lamp['id']] = $lamp;        }        $temp2 = array();        $report1 = array();        $report2 = array();        $categories = array();        $series1 = array();        $series2 = array();        if ($type == 'power') {  // 发用电量            $sql = 'select lampid,dayGeneration as daygeneration,dayConsumption as dayconsumption,monthGeneration as monthgeneration,monthConsumption as monthconsumption,yearGeneration as yeargeneration,yearConsumption as yearconsumption,totalGeneration as totalgeneration,totalConsumption as totalconsumption,updatetime from statistics where lampid in ('.implode(',', $item_ids_arr).') AND updatetime >= "'.$beginDate.'" AND updatetime <= "'.$endDate.'" order by updatetime DESC,lampid DESC';            $dataList = $this->db->query($sql)->result_array();            foreach ($dataList as $d) {                if ($date_type == 'month') {                    $index = intval(date('d',strtotime($d['updatetime'])));                }else{                    $index = intval(date('m',strtotime($d['updatetime'])));                }                if (isset($temp[$d['lampid']])) {                    if (!isset($temp[$d['lampid']]['list'][$index])) {                        $temp[$d['lampid']]['list'][$index] = $d;                        $d['updatetime'] = date('Y-m-d',strtotime($d['updatetime']));                        $d['id'] = $temp[$d['lampid']]['id'];                        $d['number'] = $temp[$d['lampid']]['name'];                        $d['projectname'] = $temp[$d['lampid']]['projectname'];                        $d['networkname'] = $temp[$d['lampid']]['networkname'];                        $d['section'] = $temp[$d['lampid']]['section'];                        $temp2[] = $d;                        if ($date_type == 'month') {                            // $index = intval(date('d',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['daygeneration'],2);                            $series2[$d['lampid']]['data'][] = round($d['dayconsumption'],2);                        }else{                            // $index = intval(date('m',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['monthgeneration'],2);                            $series2[$d['lampid']]['data'][] = round($d['monthconsumption'],2);                        }                        $series1[$d['lampid']]['name'] = $d['number'];                        $series2[$d['lampid']]['name'] = $d['number'];                        $categories[$d['lampid']][] = $d['updatetime'];                    }                }            }        }elseif ($type == 'current') {  // 电流               $sql = 'select lampid,dayCharMaxCurr as daycharmaxcurrent,dayDischarMaxCurr as daydischarmaxcurrent,monthCharMaxCurr as monthcharmaxcurrent,monthDischarMaxCurr as monthdischarmaxcurrent,yearCharMaxCurr as yearcharmaxcurrent,yearDischarMaxCurr as yeardischarmaxcurrent,updatetime from statistics where lampid in ('.implode(',', $item_ids_arr).') AND updatetime >= "'.$beginDate.'" AND updatetime <= "'.$endDate.'" order by updatetime DESC,lampid DESC';            $dataList = $this->db->query($sql)->result_array();            foreach ($dataList as $d) {                if ($date_type == 'month') {                    $index = intval(date('d',strtotime($d['updatetime'])));                }else{                    $index = intval(date('m',strtotime($d['updatetime'])));                }                if (isset($temp[$d['lampid']])) {                    if (!isset($temp[$d['lampid']]['list'][$index])) {                        $temp[$d['lampid']]['list'][$index] = $d;                        $d['updatetime'] = date('Y-m-d',strtotime($d['updatetime']));                        $d['id'] = $temp[$d['lampid']]['id'];                        $d['number'] = $temp[$d['lampid']]['name'];                        $d['projectname'] = $temp[$d['lampid']]['projectname'];                        $d['networkname'] = $temp[$d['lampid']]['networkname'];                        $d['section'] = $temp[$d['lampid']]['section'];                        $temp2[] = $d;                        if ($date_type == 'month') {                            // $index = intval(date('d',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['daycharmaxcurrent'],2);                            $series2[$d['lampid']]['data'][] = round($d['daydischarmaxcurrent'],2);                        }else{                            // $index = intval(date('m',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['monthcharmaxcurrent'],2);                            $series2[$d['lampid']]['data'][] = round($d['monthdischarmaxcurrent'],2);                        }                        $series1[$d['lampid']]['name'] = $d['number'];                        $series2[$d['lampid']]['name'] = $d['number'];                        $categories[$d['lampid']][] = date('Y-m-d',strtotime($d['updatetime']));                    }                }            }        }elseif ($type == 'temper') {  // 温度               $sql = 'select lampid,dayMinTemper as daybattmintemper,dayMaxTemper as daybattmaxtemper,monthMinTemper as monthbattmintemper,monthMaxTemper as monthbattmaxtemper,yearMinTemper as yearbattmintemper,yearMaxTemper as yearbattmaxtemper,updatetime from statistics where lampid in ('.implode(',', $item_ids_arr).') AND updatetime >= "'.$beginDate.'" AND updatetime <= "'.$endDate.'" order by updatetime DESC,lampid DESC';            $dataList = $this->db->query($sql)->result_array();            foreach ($dataList as $d) {                if ($date_type == 'month') {                    $index = intval(date('d',strtotime($d['updatetime'])));                }else{                    $index = intval(date('m',strtotime($d['updatetime'])));                }                if (isset($temp[$d['lampid']])) {                    if (!isset($temp[$d['lampid']]['list'][$index])) {                        $temp[$d['lampid']]['list'][$index] = $d;                        $d['updatetime'] = date('Y-m-d',strtotime($d['updatetime']));                        $d['id'] = $temp[$d['lampid']]['id'];                        $d['number'] = $temp[$d['lampid']]['name'];                        $d['projectname'] = $temp[$d['lampid']]['projectname'];                        $d['networkname'] = $temp[$d['lampid']]['networkname'];                        $d['section'] = $temp[$d['lampid']]['section'];                        $temp2[] = $d;                        if ($date_type == 'month') {                            // $index = intval(date('d',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['daybattmintemper'],2);                            $series2[$d['lampid']]['data'][] = round($d['daybattmaxtemper'],2);                        }else{                            // $index = intval(date('m',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['monthbattmintemper'],2);                            $series2[$d['lampid']]['data'][] = round($d['monthbattmaxtemper'],2);                        }                        $series1[$d['lampid']]['name'] = $d['number'];                        $series2[$d['lampid']]['name'] = $d['number'];                        $categories[$d['lampid']][] = date('Y-m-d',strtotime($d['updatetime']));                    }                }            }        }elseif ($type == 'capacity') {  // 功率               $sql = 'select lampid,dayCharMaxPower as daychargemaxpow,dayDischarMaxPower as daydischarmaxpow,monthCharMaxPower as monthchargemaxpow,monthDischarMaxPower as monthdischarmaxpow,yearCharMaxPower as yearchargemaxpow,yearDischarMaxPower as yeardischarmaxpow,updatetime from statistics where lampid in ('.implode(',', $item_ids_arr).') AND updatetime >= "'.$beginDate.'" AND updatetime <= "'.$endDate.'" order by updatetime DESC,lampid DESC';            $dataList = $this->db->query($sql)->result_array();            foreach ($dataList as $d) {                if ($date_type == 'month') {                    $index = intval(date('d',strtotime($d['updatetime'])));                }else{                    $index = intval(date('m',strtotime($d['updatetime'])));                }                if (isset($temp[$d['lampid']])) {                    if (!isset($temp[$d['lampid']]['list'][$index])) {                        $temp[$d['lampid']]['list'][$index] = $d;                        $d['updatetime'] = date('Y-m-d',strtotime($d['updatetime']));                        $d['id'] = $temp[$d['lampid']]['id'];                        $d['number'] = $temp[$d['lampid']]['name'];                        $d['projectname'] = $temp[$d['lampid']]['projectname'];                        $d['networkname'] = $temp[$d['lampid']]['networkname'];                        $d['section'] = $temp[$d['lampid']]['section'];                        $temp2[] = $d;                        if ($date_type == 'month') {                            // $index = intval(date('d',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['daychargemaxpow'],2);                            $series2[$d['lampid']]['data'][] = round($d['daydischarmaxpow'],2);                        }else{                            // $index = intval(date('m',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['monthchargemaxpow'],2);                            $series2[$d['lampid']]['data'][] = round($d['monthdischarmaxpow'],2);                        }                        $series1[$d['lampid']]['name'] = $d['number'];                        $series2[$d['lampid']]['name'] = $d['number'];                        $categories[$d['lampid']][] = date('Y-m-d',strtotime($d['updatetime']));                    }                }            }        }elseif ($type == 'voltage') {  // 电压               $sql = 'select lampid,dayMaxVoltage as voltagedaymax,dayMinVoltage as voltagedaymin,monthMaxVoltage as monthvoltagedaymax,monthMinVoltage as monthvoltagedaymin,yearMaxVoltage as yearvoltagedaymax,yearMinVoltage as yearvoltagedaymin,updatetime from statistics where lampid in ('.implode(',', $item_ids_arr).') AND updatetime >= "'.$beginDate.'" AND updatetime <= "'.$endDate.'" order by updatetime DESC,lampid DESC';            $dataList = $this->db->query($sql)->result_array();            foreach ($dataList as $d) {                if ($date_type == 'month') {                    $index = intval(date('d',strtotime($d['updatetime'])));                }else{                    $index = intval(date('m',strtotime($d['updatetime'])));                }                if (isset($temp[$d['lampid']])) {                    if (!isset($temp[$d['lampid']]['list'][$index])) {                        $temp[$d['lampid']]['list'][$index] = $d;                        $d['updatetime'] = date('Y-m-d',strtotime($d['updatetime']));                        $d['id'] = $temp[$d['lampid']]['id'];                        $d['number'] = $temp[$d['lampid']]['name'];                        $d['projectname'] = $temp[$d['lampid']]['projectname'];                        $d['networkname'] = $temp[$d['lampid']]['networkname'];                        $d['section'] = $temp[$d['lampid']]['section'];                        $temp2[] = $d;                        if ($date_type == 'month') {                            // $index = intval(date('d',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['voltagedaymin'],2);                            $series2[$d['lampid']]['data'][] = round($d['voltagedaymax'],2);                        }else{                            // $index = intval(date('m',$d['updatetime']));                            $series1[$d['lampid']]['data'][] = round($d['monthvoltagedaymin'],2);                            $series2[$d['lampid']]['data'][] = round($d['monthvoltagedaymax'],2);                        }                        $series1[$d['lampid']]['name'] = $d['number'];                        $series2[$d['lampid']]['name'] = $d['number'];                        $categories[$d['lampid']][] = date('Y-m-d',strtotime($d['updatetime']));                    }                }            }        }        $download = $this->input->post('download',true);        if ($download == 1) {            $this->download($type,$temp2);        }        $series1 = array_values($series1);        foreach ($series1 as $key => $value) {            $series1[$key]['data'] = array_reverse($value['data']);        }        $series2 = array_values($series2);        foreach ($series2 as $key => $value) {            $series2[$key]['data'] = array_reverse($value['data']);        }        $categories = array_values($categories);        if (count($categories) > 0) {            $categories = array_reverse($categories[0]);        }else{            $categories = array();        }        $report1['series'] = $series1;        $report1['categories'] = $categories;        $report2['series'] = $series1;        $report2['categories'] = $categories;        // 分页处理        $page = $this->input->post('page',true);        $count = $this->input->post('count',true);        $k = 0;        $i = 0;        $res = array();        foreach ($temp2 as $v) {            $res[$k][] = $v;            $i ++;            if ($i >= $count) {                $i = 0;                $k ++;            }        }        $total = ceil(count($temp2)/$count);        $temp2 = empty($res) ? $res : $res[$page-1];        exit(json_result('0000',$this->response['0000'],array('list'=>$temp2,'report1'=>$report1,'report2'=>$report2,'total'=>$total)));    }    // 历史数据首页    public function home(){        $role = $this->get_user_info('role');        $userid = $this->get_user_info('id');        $companyid = $this->get_user_info('companyid');        $download = $this->input->post('download',true);        $keyword = $this->input->post('keyword',true);        $page = $this->input->post('page',true);        $count = $this->input->post('count',true);        $page = empty($page) ? 1 : $page;        $count = empty($count) ? 16 : $count;        $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']));        }        $projectid = $this->input->post('projectid', true);        // 以项目为单位获取发用电量        if ($type == 'power' && empty($projectid)) {            $projectData = $this->Project_model->get_projectid($role,$userid,$companyid,$page,$count,$keyword);            $item_ids = $projectData['idArr'];            $result = array();            foreach ($item_ids as $key => $value) {                $res = $this->Project_model->getData(array('id'=>$value),'projectname');                $lampIds = $this->Lamp_model->getLampIds(array('project' => $value));                $data = $this->Electric_model->getPowerDataByFilter($lampIds, date('Y-m-d H:i:s'), 'day');                $data['projectname'] = $res['projectname'];                $data['projectid'] = $value;                $result[] = $data;            }            exit(json_result('0000',$this->response['0000'],array('list'=>$result,'total'=>ceil($projectData['total']/$count))));        }        if (empty($projectid)) {  // 没有传项目id            $show_type = 'project';            $item_ids = $this->Lamp_model->get_projectid_by_role($role,$userid,$companyid);            $item_ids_arr = empty($item_ids) ? array(0) : explode(",", $item_ids);                    }else{  // 有传项目id            $item_ids_arr = $projectid;        }        $fiter = array();        if ($download != 1) {            $fiter['page'] = $page;            $fiter['count'] = $count;        }                if (!empty($keyword)) {            $fiter['keyword'] = $keyword;        }        $section = $this->input->post('section',true);        if (!empty($section)) {            $fiter['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,N.networkname,L.projectid,L.section',$fiter);         // var_dump($list);        $function = 'get'.ucfirst($type).'DataByFilter';        $result = array();        $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);        // 遍历路灯数组,每个路灯的历史数据        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'];            }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'];            }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'];            }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'];            }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 = $eleData[$v['id']];            $data['id'] = $v['id'];            $data['number'] = $v['name'];            if (!empty($v['updatetime'])) {                $timezone = $this->Project_model->get_timezone_by_projectid($v['projectid']);                $v['updatetime'] = date_change($v['updatetime'],8,$timezone['value']);            }            $data['updatetime'] = $v['updatetime'];            $data['projectname'] = $v['projectname'];            $data['networkname'] = $v['networkname'];            $data['section'] = $v['section'];            $result[] = $data;        }        if ($download == 1) {            $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);        exit(json_result('0000',$this->response['0000'],array('list'=>$result,'total'=>$total)));    }    private function download($type,$result){        $version = $this->session->userdata('version');        // 导出到Excel , '', 'voltage'        if ($type == 'power') { // 发/用电量            if (empty($version)) {                $title = array(                    array('路灯编号','项目名称','网络名称','当日发电量(kWh)','当日用电量(kWh)','当月发电量(kWh)','当月用电量(kWh)','当年发电量(kWh)','当年用电量(kWh)','累计发电量(kWh)','累计用电量(kWh)','数据更新时间'),                );            }else{                $title = array(                    array('Lamp number','Project name','Network name','Daily Power generation(kWh)','Day electricity consumption(kWh)','Monthly Power generation(kWh)','Monthly electricity consumption(kWh)','Year Power generation(kWh)','Year electricity consumptio(kWh)','Cumulative power generation(kWh)','Cumulative electricity consumption(kWh)','Update time'),                );            }                        $temp = array();                        foreach ($result as $k=>$v) {                $temp[$k][] = "{$v['number']}";                $temp[$k][] = $v['projectname'];                $temp[$k][] = "{$v['networkname']}";                $temp[$k][] = $v['daygeneration'];                $temp[$k][] = $v['dayconsumption'];                $temp[$k][] = $v['monthgeneration'];                $temp[$k][] = $v['monthconsumption'];                $temp[$k][] = $v['yeargeneration'];                $temp[$k][] = $v['yearconsumption'];                $temp[$k][] = $v['totalgeneration'];                $temp[$k][] = $v['totalconsumption'];                $temp[$k][] = $v['updatetime'];            }        }elseif ($type == 'current') { // 电流            if (empty($version)) {                $title = array(                    array('路灯编号','项目名称','网络名称','当天充电最大电流(A)','当天放电最大电流(A)','当月充电最大电流(A)','当月放电最大电流(A)','当年充电最大电流(A)','当年放电最大电流(A)','数据更新时间'),                );            }else{                $title = array(                    array('Lamp number','Project name','networkname','Highest charging current(A)','Highest discharging current(A)','Month charging maximum current(A)','Current discharge maximum current(A)','Current charging maximum current(A)','Current discharge maximum current(A)','Update time'),                );            }            $temp = array();            foreach ($result as $k=>$v) {                $temp[$k][] = "{$v['number']}";                $temp[$k][] = $v['projectname'];                $temp[$k][] = "{$v['networkname']}";                $temp[$k][] = $v['daycharmaxcurrent'];                $temp[$k][] = $v['daydischarmaxcurrent'];                $temp[$k][] = $v['monthcharmaxcurrent'];                $temp[$k][] = $v['monthdischarmaxcurrent'];                $temp[$k][] = $v['yearcharmaxcurrent'];                $temp[$k][] = $v['yeardischarmaxcurrent'];                $temp[$k][] = $v['updatetime'];            }        }elseif ($type == 'temper') {  // 温度            if (empty($version)) {                $title = array(                    array('路灯编号','项目名称','网络名称','当天蓄电池最低温度(℃)','当天蓄电池最高温度(℃)','当月蓄电池最低温度(℃)','当月蓄电池最高温度(℃)','当年蓄电池最低温度(℃)','当年蓄电池最高温度(℃)','数据更新时间'),                );            }else{                $title = array(                    array('Lamp number','Project name','networkname','Battery minimum temperature(℃)','Battery highest temperature(℃)','Month Battery minimum temperature(℃)','Month Battery highest temperature(℃)','Year Battery highest temperature(℃)','Year Battery minimum temperature(℃)','Update time'),                );            }            $temp = array();            foreach ($result as $k=>$v) {                $temp[$k][] = "{$v['number']}";                $temp[$k][] = $v['projectname'];                $temp[$k][] = "{$v['networkname']}";                $temp[$k][] = $v['daybattmintemper'];                $temp[$k][] = $v['daybattmaxtemper'];                $temp[$k][] = $v['monthbattmintemper'];                $temp[$k][] = $v['monthbattmaxtemper'];                $temp[$k][] = $v['yearbattmintemper'];                $temp[$k][] = $v['yearbattmaxtemper'];                $temp[$k][] = $v['updatetime'];            }        }elseif ($type == 'capacity') { // 功率            if (empty($version)) {                $title = array(                    array('路灯编号','项目名称','网络名称','当天充电最大功率(w)','当天放电最大功率(w)','当月充电最大功率(w)','当月放电最大功率(w)','当年充电最大功率(w)','当年放电最大功率(w)','数据更新时间'),                );            }else{                $title = array(                    array('Lamp number','Project name','networkname','Charging maximum power(w)','Discharging maximum power(W)','Month charging maximum power(w)','Monthly discharge maximum power(w)','Year charging maximum power(w)','Year discharge maximum powe(W)','Update time'),                );            }            $temp = array();            foreach ($result as $k=>$v) {                $temp[$k][] = "{$v['number']}";                $temp[$k][] = $v['projectname'];                $temp[$k][] = "{$v['networkname']}";                $temp[$k][] = $v['daychargemaxpow'];                $temp[$k][] = $v['daydischarmaxpow'];                $temp[$k][] = $v['monthchargemaxpow'];                $temp[$k][] = $v['monthchargemaxpow'];                $temp[$k][] = $v['yearchargemaxpow'];                $temp[$k][] = $v['yeardischarmaxpow'];                $temp[$k][] = $v['updatetime'];            }        }elseif ($type == 'voltage') {            if (empty($version)) {                $title = array(                    array('路灯编号','项目名称','网络名称','当天最低电压(V)','当天最高电压(V)','当月最低电压(V)','当月最高电压(V)','当年最低电压(V)','当年最高电压(V)','数据更新时间'),                );            }else{                $title = array(                    array('Lamp number','Project name','networkname','Day lowest voltage(V)','Day highest voltage(V)','Month lowest voltage(V)','Month highest voltage(V)','Year lowest voltage(V)','Year highest voltage(V)','Update time'),                );            }            $temp = array();            foreach ($result as $k=>$v) {                $temp[$k][] = "{$v['number']}";                $temp[$k][] = $v['projectname'];                $temp[$k][] = "{$v['networkname']}";                $temp[$k][] = $v['voltagedaymin'];                $temp[$k][] = $v['voltagedaymax'];                $temp[$k][] = $v['monthvoltagedaymin'];                $temp[$k][] = $v['monthvoltagedaymax'];                $temp[$k][] = $v['yearvoltagedaymin'];                $temp[$k][] = $v['yearvoltagedaymax'];                // $temp[$k][] = $v['totalvoltagedaymin'];                // $temp[$k][] = $v['totalvoltagedaymax'];                $temp[$k][] = $v['updatetime'];            }        }        $data = array_merge($title,$temp);        $path = push_excel($data,'historyExcel_'.date('Ymd'));        exit(json_result('0000',$this->response['0000'],array('path'=>$path)));    }}
 |