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'); $company = $this->get_user_info('company'); $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,$company,$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,$company); $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,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))); } }