Home.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. include_once(FCPATH . 'application/controllers/Base_Controller.php');
  3. class Home extends Base_Controller {
  4. public function __construct() {
  5. parent::__construct();
  6. $this->load->model('Lamp_model');
  7. }
  8. // 设备统计信息
  9. public function data(){
  10. $data = array(
  11. 'day_new_count' => 0,
  12. 'day_faulty_count' => 0,
  13. 'total_light_count' => 0,
  14. 'light_up_count' => 0,
  15. 'online_count' => 0,
  16. 'faulty_count' => 0
  17. );
  18. $data['logCount'] = $this->get_user_info('logCount');
  19. $date = date('Y-m-d 00:00:00',time());
  20. $role = $this->get_user_info('role');
  21. if ($role == SYSTEM_ADMIN) {
  22. $data['total_light_count'] = $this->Lamp_model->get_count();
  23. $data['day_new_count'] = $this->Lamp_model->get_count(['createtime >='=>$date]);
  24. $data['day_faulty_count'] = $this->Lamp_model->get_count(['netstatus'=>1,'logtime >='=>$date,'devstatus !='=>0]);
  25. $data['light_up_count'] = $this->Lamp_model->get_count(['netstatus'=>1,'status'=>1]);
  26. $data['online_count'] = $this->Lamp_model->get_count(['netstatus'=>1]);
  27. $data['faulty_count'] = $this->Lamp_model->get_count(['netstatus'=>1,'devstatus !='=>0]);
  28. }else{
  29. $company = $this->get_user_info('company');
  30. $where = ['P.company'=>$company];
  31. $join = [
  32. ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'inner']
  33. ];
  34. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  35. $data['total_light_count'] = $total['total'];
  36. $where['L.createtime >='] = $date;
  37. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  38. $data['day_new_count'] = $total['total'];
  39. unset($where['L.createtime >=']);
  40. $where['L.netstatus'] = 1;
  41. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  42. $data['online_count'] = $total['total'];
  43. $where['L.status'] = 1;
  44. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  45. $data['light_up_count'] = $total['total'];
  46. unset($where['L.status']);
  47. $where['L.devstatus !='] = 0;
  48. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  49. $data['faulty_count'] = $total['total'];
  50. $where['L.devstatus !='] = 0;
  51. $where['L.logtime >='] = $date;
  52. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  53. $data['day_faulty_count'] = $total['total'];
  54. }
  55. exit(json_result('0000',$this->response['0000'],$data));
  56. }
  57. // 发用电量统计信息
  58. public function sta_info(){
  59. $data = array(
  60. 'electricity' => 0,
  61. 'CO2_reduction' => 0,
  62. 'SO2_reduction' => 0,
  63. 'TCE_reduction' => 0
  64. );
  65. exit(json_result('0000',$this->response['0000'],$data));
  66. }
  67. // 设备统计列表
  68. public function dev_list(){
  69. exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  70. }
  71. // 故障信息列表
  72. public function alarm_list(){
  73. exit(json_result('0000',$this->response['0000'],array()));
  74. }
  75. // 字段管理
  76. public function fields(){
  77. $userid = $this->get_user_info('id');
  78. $data = $this->User_model->get_user_field($userid);
  79. if (empty($data) || empty($data['lampfield'])) {
  80. // $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  81. $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  82. }else{
  83. if ($data['lampfield'] == 'number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status') {
  84. $data['lampfield'] .= ',section';
  85. }
  86. $fieldstr = $data['lampfield'];
  87. }
  88. // 系统默认
  89. $def = array(
  90. array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  91. array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  92. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  93. array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,L.rssi','fields1'=>'status','enname'=>'Network status'),
  94. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  95. array('name'=>'更新时间','field'=>'L.updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  96. array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  97. array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  98. array('name'=>'负载功率(W)','field'=>'L.loadpower','fields1'=>'loadpower','enname'=>'load power(W)'),
  99. array('name'=>'蓄电池电压(V)','field'=>'L.battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  100. // array('name'=>'太阳能板功率(W)','field'=>'L.solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  101. array('name'=>'是否故障','field'=>'L.isfaulted','fields1'=>'isfaulted','enname'=>'Fault'),
  102. );
  103. // $def = array(
  104. // array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  105. // array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  106. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  107. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status','fields1'=>'status','enname'=>'Network status'),
  108. // // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  109. // array('name'=>'更新时间','field'=>'L.logtime as updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  110. // array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  111. // array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  112. // array('name'=>'路灯功率(W)','field'=>'L.lamppower','fields1'=>'lamppower','enname'=>'Lamp power(W)'),
  113. // array('name'=>'蓄电池充电阶段','field'=>'L.chargestage','fields1'=>'chargestage','enname'=>'Charging stage'),
  114. // array('name'=>'蓄电池电压(V)','field'=>'L.battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  115. // array('name'=>'蓄电池总过放次数','field'=>'L.overtimes','fields1'=>'overtimes','enname'=>'Over discharge times'),
  116. // array('name'=>'太阳能板功率(W)','field'=>'L.solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  117. // array('name'=>'是否故障','field'=>'L.isfaulted','fields1'=>'isfaulted','enname'=>'Fault'),
  118. // );
  119. // 路灯信息
  120. // $lampinfo = array(
  121. // array('name'=>'当前策略','field'=>'L.policyid','fields1'=>'policyid','enname'=>'Current strategy'),
  122. // array('name'=>'路灯id','field'=>'L.id','fields1'=>'id','enname'=>'Lamp ID'),
  123. // array('name'=>'网络名称','field'=>'N.networkname','fields1'=>'networkname','enname'=>'Network name'),
  124. // array('name'=>'项目名称','field'=>'P.projectname','fields1'=>'projectname','enname'=>'Project name'),
  125. // array('name'=>'经度','field'=>'L.longitude','fields1'=>'longitude','enname'=>'Longitude'),
  126. // array('name'=>'纬度','field'=>'L.latitude','fields1'=>'latitude','enname'=>'Latitude'),
  127. // // array('name'=>'sim卡号','field'=>'N.simid','fields1'=>'simid','enname'=>'SIM card number'),
  128. // // array('name'=>'套餐剩余','field'=>'N.packageSurplus','fields1'=>'packageSurplus','enname'=>'Package surplus'),
  129. // array('name'=>'路灯类型','field'=>'L.lamptype','fields1'=>'lamptype','enname'=>'Lamp type'),
  130. // array('name'=>'太阳能板类型','field'=>'L.boardtype','fields1'=>'boardtype','enname'=>'Solar panel type'),
  131. // array('name'=>'太阳能板功率(W)','field'=>'L.boardpower','fields1'=>'boardpower','enname'=>'Solar panel power(W)'),
  132. // array('name'=>'蓄电池类型','field'=>'L.batterytype','fields1'=>'batterytype','enname'=>'Battery type'),
  133. // array('name'=>'蓄电池AH数(ah)','field'=>'L.batteryah','fields1'=>'batteryah','enname'=>'Battery capacity(ah)'),
  134. // array('name'=>'负载功率(W)','field'=>'L.loadpower','fields1'=>'loadpower','enname'=>'Load power(W)'),
  135. // array('name'=>'蓄电池剩余电量','field'=>'L.electricleft','fields1'=>'electricleft','enname'=>'Remaining battery capacity(Ah)'),
  136. // );
  137. // 路灯信息日志
  138. // $lamp_info_log = array(
  139. // array('name'=>'路灯电压(V)','field'=>'L.lampvoltage','fields1'=>'lampvoltage','enname'=>'Lamp voltage(V)'),
  140. // array('name'=>'路灯电流(A)','field'=>'L.lampcurrent','fields1'=>'lampcurrent','enname'=>'Lamp current(A)'),
  141. // array('name'=>'灯头温度(℃)','field'=>'L.lamptemper as temper','fields1'=>'temper','enname'=>'Lamp temperature(℃)'),
  142. // );
  143. // $solar_info_log = array(
  144. // array('name'=>'太阳能板电压(V)','field'=>'L.solarvoltage','fields1'=>'solarvoltage','enname'=>'Solar panel voltage(V)'),
  145. // array('name'=>'太阳能板电流(A)','field'=>'L.solarcurrent','fields1'=>'solarcurrent','enname'=>'Solar panel current(A)')
  146. // );
  147. // 蓄电池信息日志
  148. // $battery_info_log = array(
  149. // array('name'=>'蓄电池状态','field'=>'L.battstatus','fields1'=>'battstatus','enname'=>'Battery status'),
  150. // array('name'=>'蓄电池充电电流(A)','field'=>'L.chargecurrent','fields1'=>'chargecurrent','enname'=>'Charging current(A)'),
  151. // array('name'=>'蓄电池放电电流(A)','field'=>'L.discharcurrent','fields1'=>'discharcurrent','enname'=>'Discharging current(A)'),
  152. // array('name'=>'蓄电池充电功率(w)','field'=>'L.chargepower','fields1'=>'chargepower','enname'=>'Charging power(w)'),
  153. // array('name'=>'蓄电池放电功率(w)','field'=>'L.dischargepower','fields1'=>'dischargepower','enname'=>'Discharging power(w)'),
  154. // array('name'=>'蓄电池表面温度(℃)','field'=>'L.batttemper','fields1'=>'batttemper','enname'=>'Battery surface temperature(℃)'),
  155. // array('name'=>'蓄电池总电量','field'=>'L.electrictotal','fields1'=>'electrictotal','enname'=>'Total battery capacity(Ah)'),
  156. // array('name'=>'蓄电池电量SOC(%)','field'=>'L.electricSOC','fields1'=>'electricSOC','enname'=>'Battery SOC(%)'),
  157. // array('name'=>'当天最低电压(V)','field'=>'L.voltagedaymin','fields1'=>'voltagedaymin','enname'=>'Minimum voltage(V)'),
  158. // array('name'=>'当天最高电压(V)','field'=>'L.voltagedaymax','fields1'=>'voltagedaymax','enname'=>'Highest voltage(V)'),
  159. // array('name'=>'当天充电安时数(ah)','field'=>'L.daychargeah','fields1'=>'daychargeah','enname'=>'Charging AH(ah)'),
  160. // array('name'=>'当天放电安时数(ah)','field'=>'L.daydischarah','fields1'=>'daydischarah','enname'=>'Discharging AH(ah)'),
  161. // array('name'=>'当天充电最大功率(W)','field'=>'L.daychargemaxpow','fields1'=>'daychargemaxpow','enname'=>'Charging max-power(W)'),
  162. // array('name'=>'当天放电最大功率(W)','field'=>'L.daydischarmaxpow','fields1'=>'daydischarmaxpow','enname'=>'Discharging max-power(W)'),
  163. // array('name'=>'当天灯亮时间(hh:mm)','field'=>'L.daychargemincurrent','fields1'=>'daychargemincurrent','enname'=>'Turn-on duration'),
  164. // array('name'=>'当天充电最大电流(A)','field'=>'L.daycharmaxcurrent','fields1'=>'daycharmaxcurrent','enname'=>'Highest charging current(A)'),
  165. // array('name'=>'当天充电时间(hh:mm)','field'=>'L.daydischargemincurrent','fields1'=>'daydischargemincurrent','enname'=>'Charging duration'),
  166. // array('name'=>'当天放电最大电流(A)','field'=>'L.daydischarmaxcurrent','fields1'=>'daydischarmaxcurrent','enname'=>'Highest discharging current(A)'),
  167. // array('name'=>'当天蓄电池最低温度(℃)','field'=>'L.daybattmintemper','fields1'=>'daybattmintemper','enname'=>'Battery min-temperature(℃)'),
  168. // array('name'=>'当天蓄电池最高温度(℃)','field'=>'L.daybattmaxtemper','fields1'=>'daybattmaxtemper','enname'=>'Battery max-temperature(℃)'),
  169. // );
  170. // $electric_info_log = array(
  171. // array('name'=>'当天发电量(kWh)','field'=>'L.daygeneration','fields1'=>'daygeneration','enname'=>'Power generation(kWh)'),
  172. // array('name'=>'当天用电量(kWh)','field'=>'L.dayconsumption','fields1'=>'dayconsumption','enname'=>'Power consumption(kWh)'),
  173. // array('name'=>'累计发电量(kWh)','field'=>'L.totalgeneration','fields1'=>'totalgeneration','enname'=>'Cumulative power generation(kWh)'),
  174. // array('name'=>'累计用电量(kWh)','field'=>'L.totalconsumption','fields1'=>'totalconsumption','enname'=>'Cumulative power consumption(kWh)'),
  175. // );
  176. // $system_info_log = array(
  177. // array('name'=>'系统电压(V)','field'=>'L.sysvoltage','fields1'=>'sysvoltage','enname'=>'System voltage(V)'),
  178. // array('name'=>'系统电流(A)','field'=>'L.syscurrent','fields1'=>'syscurrent','enname'=>'System current(A)'),
  179. // array('name'=>'控制器温度(℃)','field'=>'L.temper as controlTemper','fields1'=>'controlTemper','enname'=>'Controller temperature(℃)'),
  180. // );
  181. // 历史信息日志
  182. // $history_info_log = array(
  183. // array('name'=>'运行天数','field'=>'L.rundays','fields1'=>'rundays','enname'=>'Running duration'),
  184. // array('name'=>'蓄电池总充满次数','field'=>'L.fulltimes','fields1'=>'fulltimes','enname'=>'Full charge times'),
  185. // array('name'=>'蓄电池总充电安时数(ah)','field'=>'L.totalchargeah','fields1'=>'totalchargeah','enname'=>'Total charge AH(ah)'),
  186. // array('name'=>'蓄电池总放电安时数(ah)','field'=>'L.totaldischarah','fields1'=>'totaldischarah','enname'=>'Total discharge AH(ah)'),
  187. // );
  188. // $fields = array_merge($def,$lampinfo,$lamp_info_log,$solar_info_log,$battery_info_log,$electric_info_log,$system_info_log,$history_info_log);
  189. $fields = $def;
  190. $def = explode(',', $fieldstr);
  191. foreach ($fields as &$v) {
  192. if (in_array($v['fields1'], $def)) {
  193. $v['select'] = '1';
  194. }else{
  195. $v['select'] = '0';
  196. }
  197. }
  198. exit(json_result('0000',$this->response['0000'],array('list'=>$fields)));
  199. }
  200. // 路灯下拉列表
  201. public function lamp_list(){
  202. $networkid = intval($this->input->post('networkid',true));
  203. $projectid = intval($this->input->post('projectid',true));
  204. if (empty($networkid) && empty($projectid)) {
  205. exit(json_result('0405',$this->response['0405'],array()));
  206. }
  207. if (!empty($networkid)) {
  208. $data = $this->Lamp_model->get_list(array('networkid'=>$networkid), 'number,id');
  209. }else{
  210. $data = $this->Lamp_model->get_list(array('projectid'=>$projectid), 'number,id');
  211. }
  212. exit(json_result('0000',$this->response['0000'],$data));
  213. }
  214. // 获取单个路灯的经纬度
  215. public function get_lng_lat(){
  216. $lampid = $this->input->post('lampid',true);
  217. $projectid = $this->input->post('projectid',true);
  218. $section = $this->input->post('section',true);
  219. $lampData = array();
  220. if (!empty($lampid)) {
  221. $where = array('id'=>$lampid,'longitude !='=>0,'latitude !='=>0);
  222. if (!empty($section)) {
  223. $where['section'] = $section;
  224. }
  225. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  226. }
  227. if (!empty($projectid)) {
  228. $where = array('projectid'=>$projectid,'longitude !='=>0,'latitude !='=>0);
  229. if (!empty($section)) {
  230. $where['section'] = $section;
  231. }
  232. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  233. }
  234. if (empty($lampData)) {
  235. $lampData = array('longitude'=>0,'latitude'=>0);
  236. }
  237. exit(json_result('0000',$this->response['0000'],$lampData));
  238. }
  239. }