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)));
- }
- }
|