Home.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  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. $this->load->model('Project_model');
  8. $this->load->model('Global_location_model');
  9. }
  10. private function get_project_id(){
  11. $countryId = intval($this->input->post('countryId',true));
  12. $proId = intval($this->input->post('proId',true));
  13. $projectIdArr = array();
  14. $areaList = array();
  15. $cityList = array();
  16. $proList = array();
  17. $comList = array();
  18. if (!empty($countryId)) {
  19. $comList[] = array('id'=>$countryId,'level'=>1);
  20. $list = $this->Global_location_model->get_list(['pid'=>$countryId],'id,level');
  21. foreach ($list as $key => $value) {
  22. if ($value['level'] == 2) {
  23. $proList[] = $value;
  24. }elseif ($value['level'] == 3) {
  25. $cityList[] = $value;
  26. }elseif ($value['level'] == 4) {
  27. $areaList[] = $value;
  28. }
  29. }
  30. }
  31. if (!empty($proId)) {
  32. $proList[] = array('id'=>$proId,'level'=>2);
  33. $list = $this->Global_location_model->get_list(['pid'=>$proId],'id,level');
  34. foreach ($list as $key => $value) {
  35. if ($value['level'] == 3) {
  36. $cityList[] = $value;
  37. }elseif ($value['level'] == 4) {
  38. $areaList[] = $value;
  39. }
  40. }
  41. }
  42. if (!empty($cityList)) {
  43. $cityArr = array_unique(array_column($cityList, 'id'));
  44. $list = $this->Global_location_model->get_list(['pid'=>$cityArr],'id,level');
  45. foreach ($list as $key => $value) {
  46. if ($value['level'] == 4) $areaList[] = $value;
  47. }
  48. }
  49. $cityArr = array_unique(array_merge(array_column($comList, 'id'),array_column($proList, 'id'),array_column($cityList, 'id'),array_column($areaList, 'id')));
  50. if (!empty($cityArr)) {
  51. $res = $this->Project_model->get_list(['cityid'=>$cityArr],'id');
  52. $projectIdArr = array_unique(array_column($res, 'id'));
  53. }
  54. return $projectIdArr;
  55. }
  56. // 设备统计信息
  57. public function data(){
  58. $projectIdArr = $this->get_project_id();
  59. $data = array(
  60. 'day_new_count' => 0,
  61. 'day_faulty_count' => 0,
  62. 'total_light_count' => 0,
  63. 'light_up_count' => 0,
  64. 'online_count' => 0,
  65. 'faulty_count' => 0
  66. );
  67. $data['logCount'] = $this->get_user_info('logCount');
  68. $date = date('Y-m-d 00:00:00',time());
  69. $role = $this->get_user_info('role');
  70. if ($role == SYSTEM_ADMIN) {
  71. $data['total_light_count'] = $this->Lamp_model->get_count();
  72. $where = ['createtime >='=>$date];
  73. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  74. $data['day_new_count'] = $this->Lamp_model->get_count($where);
  75. $where = ['netstatus'=>1,'logtime >='=>$date,'devstatus !='=>0];
  76. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  77. $data['day_faulty_count'] = $this->Lamp_model->get_count($where);
  78. $where = ['netstatus'=>1,'status'=>1];
  79. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  80. $data['light_up_count'] = $this->Lamp_model->get_count($where);
  81. $where = ['netstatus'=>1];
  82. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  83. $data['online_count'] = $this->Lamp_model->get_count($where);
  84. $where = ['netstatus'=>1,'devstatus !='=>0];
  85. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  86. $data['faulty_count'] = $this->Lamp_model->get_count($where);
  87. }else{
  88. $company = $this->get_user_info('company');
  89. $where = ['P.company'=>$company];
  90. if (!empty($projectIdArr)) $where['P.id'] = $projectIdArr;
  91. $join = [
  92. ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'inner']
  93. ];
  94. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  95. $data['total_light_count'] = $total['total'];
  96. $where['L.createtime >='] = $date;
  97. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  98. $data['day_new_count'] = $total['total'];
  99. unset($where['L.createtime >=']);
  100. $where['L.netstatus'] = 1;
  101. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  102. $data['online_count'] = $total['total'];
  103. $where['L.status'] = 1;
  104. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  105. $data['light_up_count'] = $total['total'];
  106. unset($where['L.status']);
  107. $where['L.devstatus !='] = 0;
  108. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  109. $data['faulty_count'] = $total['total'];
  110. $where['L.devstatus !='] = 0;
  111. $where['L.logtime >='] = $date;
  112. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  113. $data['day_faulty_count'] = $total['total'];
  114. }
  115. exit(json_result('0000',$this->response['0000'],$data));
  116. }
  117. // 发用电量统计信息
  118. public function sta_info(){
  119. $data = array(
  120. 'electricity' => 0,
  121. 'CO2_reduction' => 0,
  122. 'SO2_reduction' => 0,
  123. 'TCE_reduction' => 0
  124. );
  125. exit(json_result('0000',$this->response['0000'],$data));
  126. }
  127. // 设备统计列表
  128. public function dev_list(){
  129. $projectIdArr = $this->get_project_id();
  130. $role = $this->get_user_info('role');
  131. $type = $this->input->post('type',true);
  132. $where = array();
  133. if ($role != SYSTEM_ADMIN){
  134. $company = $this->get_user_info('company');
  135. $where[] = 'P.company = '.$company;
  136. }
  137. if ($type == 2) {
  138. $fields = 'L.manu as company';
  139. $group = 'group by L.manu';
  140. $where[] = 'L.manu != 0';
  141. $where[] = 'L.manu != ""';
  142. }elseif ($type == 3) {
  143. $fields = 'L.supplier as company';
  144. $group = 'group by L.supplier';
  145. $where[] = 'L.supplier != 0';
  146. $where[] = 'L.supplier != ""';
  147. }elseif ($type == 4) {
  148. $fields = 'L.po as company';
  149. $group = 'group by L.po';
  150. $where[] = 'L.po != 0';
  151. $where[] = 'L.po != ""';
  152. }else{
  153. $fields = 'L.upazilla as company';
  154. $group = 'group by L.upazilla';
  155. $where[] = 'L.upazilla != 0';
  156. $where[] = 'L.upazilla != ""';
  157. }
  158. if (!empty($projectIdArr)) $where[] = 'L.projectid in ('.implode(',', $projectIdArr).')';
  159. $where1 = empty($where) ? '' : 'where '.implode(' AND ', $where);
  160. // $total = $this->Lamp_model->get_list_by_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L');
  161. $query = 'select t1.total,C.name,C.id from (select count(*) as total,'.$fields.' from lampinfo AS L left join project AS P on P.id = L.projectid '.$where1.' '.$group.') as t1 left join company as C on t1.company = C.id order by total DESC limit 10';
  162. $list = $this->db->query($query)->result_array();
  163. if (empty($list)) exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  164. $temp = array();
  165. foreach ($list as $key => $value) {
  166. $temp2 = array('name'=>$value['name'],'total'=>$value['total'],'onlineCount'=>0,'offlineCount'=>0,'faultCount'=>0,'powerCount'=>0);
  167. $temp[$value['id']] = $temp2;
  168. }
  169. $companyArr = array_unique(array_column($list, 'id'));
  170. if ($type == 2) {
  171. $where[] = 'L.manu in ('.implode(',', $companyArr).')';
  172. }elseif ($type == 3) {
  173. $where[] = 'L.supplier in ('.implode(',', $companyArr).')';
  174. }elseif ($type == 4) {
  175. $where[] = 'L.po in ('.implode(',', $companyArr).')';
  176. }else{
  177. $where[] = 'L.upazilla in ('.implode(',', $companyArr).')';
  178. }
  179. $where1 = $where;
  180. $where1[] = 'L.netstatus = 0';
  181. $where1 = 'where '.implode(' AND ', $where1);
  182. $query = 'select t1.total,C.id from (select count(*) as total,'.$fields.' from lampinfo AS L left join project AS P on P.id = L.projectid '.$where1.' '.$group.') as t1 left join company as C on t1.company = C.id order by total DESC limit 10';
  183. $list = $this->db->query($query)->result_array();
  184. foreach ($list as $key => $value) {
  185. if (isset($temp[$value['id']])) $temp[$value['id']]['offlineCount'] = $value['total'];
  186. }
  187. $where1 = $where;
  188. $where1[] = 'L.netstatus = 1';
  189. $where1 = 'where '.implode(' AND ', $where1);
  190. $query = 'select t1.total,C.id from (select count(*) as total,'.$fields.' from lampinfo AS L left join project AS P on P.id = L.projectid '.$where1.' '.$group.') as t1 left join company as C on t1.company = C.id order by total DESC limit 10';
  191. $list = $this->db->query($query)->result_array();
  192. foreach ($list as $key => $value) {
  193. if (isset($temp[$value['id']])) $temp[$value['id']]['onlineCount'] = $value['total'];
  194. }
  195. $list = array_values($temp);
  196. // var_dump($list);
  197. exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
  198. }
  199. // 故障信息列表
  200. public function alarm_list(){
  201. exit(json_result('0000',$this->response['0000'],array()));
  202. }
  203. // 字段管理
  204. public function fields(){
  205. $userid = $this->get_user_info('id');
  206. $data = $this->User_model->get_user_field($userid);
  207. if (empty($data) || empty($data['lampfield'])) {
  208. // $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  209. $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  210. }else{
  211. if ($data['lampfield'] == 'number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status') {
  212. $data['lampfield'] .= ',section';
  213. }
  214. $fieldstr = $data['lampfield'];
  215. }
  216. // 系统默认
  217. $def = array(
  218. array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  219. array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  220. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  221. array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,L.rssi','fields1'=>'status','enname'=>'Network status'),
  222. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  223. array('name'=>'更新时间','field'=>'RI.updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  224. array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  225. array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  226. array('name'=>'负载功率(W)','field'=>'RI.loadpower','fields1'=>'loadpower','enname'=>'LED power(W)'),
  227. array('name'=>'蓄电池电压(V)','field'=>'RI.batpower as battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  228. array('name'=>'蓄电池总过放次数','field'=>'HI.overtimes','fields1'=>'overtimes','enname'=>'Over discharge times'),
  229. array('name'=>'太阳能板功率(W)','field'=>'RI.panelpower as solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  230. array('name'=>'是否故障','field'=>'AI.batstatus,AI.panelstatus,AI.lampstatus,AI.tempstatus,AI.status as alarmStatus','fields1'=>'isfaulted','enname'=>'Fault'),
  231. );
  232. // $def = array(
  233. // array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  234. // array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  235. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  236. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status','fields1'=>'status','enname'=>'Network status'),
  237. // // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  238. // array('name'=>'更新时间','field'=>'L.logtime as updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  239. // array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  240. // array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  241. // array('name'=>'路灯功率(W)','field'=>'L.lamppower','fields1'=>'lamppower','enname'=>'Lamp power(W)'),
  242. // array('name'=>'蓄电池充电阶段','field'=>'L.chargestage','fields1'=>'chargestage','enname'=>'Charging stage'),
  243. // array('name'=>'蓄电池电压(V)','field'=>'L.battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  244. // array('name'=>'蓄电池总过放次数','field'=>'L.overtimes','fields1'=>'overtimes','enname'=>'Over discharge times'),
  245. // array('name'=>'太阳能板功率(W)','field'=>'L.solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  246. // array('name'=>'是否故障','field'=>'L.isfaulted','fields1'=>'isfaulted','enname'=>'Fault'),
  247. // );
  248. // 路灯信息
  249. $lampinfo = array(
  250. array('name'=>'当前策略','field'=>'L.policyid','fields1'=>'policyid','enname'=>'Current strategy'),
  251. array('name'=>'路灯id','field'=>'L.id','fields1'=>'id','enname'=>'Lamp ID'),
  252. // array('name'=>'网络名称','field'=>'N.networkname','fields1'=>'networkname','enname'=>'Network name'),
  253. array('name'=>'项目名称','field'=>'P.projectname','fields1'=>'projectname','enname'=>'Project name'),
  254. array('name'=>'经度','field'=>'L.longitude','fields1'=>'longitude','enname'=>'Longitude'),
  255. array('name'=>'纬度','field'=>'L.latitude','fields1'=>'latitude','enname'=>'Latitude'),
  256. // array('name'=>'sim卡号','field'=>'N.simid','fields1'=>'simid','enname'=>'SIM card number'),
  257. // array('name'=>'套餐剩余','field'=>'N.packageSurplus','fields1'=>'packageSurplus','enname'=>'Package surplus'),
  258. array('name'=>'路灯类型','field'=>'L.lamptype','fields1'=>'lamptype','enname'=>'Lamp type'),
  259. array('name'=>'太阳能板类型','field'=>'L.boardtype','fields1'=>'boardtype','enname'=>'Solar panel type'),
  260. // array('name'=>'太阳能板功率(W)','field'=>'L.boardpower','fields1'=>'boardpower','enname'=>'Solar panel power(W)'),
  261. // array('name'=>'蓄电池类型','field'=>'L.batterytype','fields1'=>'batterytype','enname'=>'Battery type'),
  262. array('name'=>'蓄电池AH数(ah)','field'=>'HI.totalchargeah as batteryah','fields1'=>'batteryah','enname'=>'Battery capacity(ah)'),
  263. // array('name'=>'负载功率(W)','field'=>'L.loadpower','fields1'=>'loadpower','enname'=>'Load power(W)'),
  264. // array('name'=>'蓄电池剩余电量','field'=>'L.electricleft','fields1'=>'electricleft','enname'=>'Remaining battery capacity(Ah)'),
  265. );
  266. // 路灯信息日志
  267. $lamp_info_log = array(
  268. array('name'=>'路灯电压(V)','field'=>'RI.loadvoltage as lampvoltage','fields1'=>'lampvoltage','enname'=>'Lamp voltage(V)'),
  269. array('name'=>'路灯电流(A)','field'=>'RI.loadcurrent as lampcurrent','fields1'=>'lampcurrent','enname'=>'Lamp current(A)'),
  270. // array('name'=>'灯头温度(℃)','field'=>'L.lamptemper as temper','fields1'=>'temper','enname'=>'Lamp temperature(℃)'),
  271. );
  272. $solar_info_log = array(
  273. array('name'=>'太阳能板电压(V)','field'=>'RI.panelvoltage as solarvoltage','fields1'=>'solarvoltage','enname'=>'Solar panel voltage(V)'),
  274. array('name'=>'太阳能板电流(A)','field'=>'RI.panelcurrent as solarcurrent','fields1'=>'solarcurrent','enname'=>'Solar panel current(A)')
  275. );
  276. // 蓄电池信息日志
  277. // $battery_info_log = array(
  278. // array('name'=>'蓄电池状态','field'=>'L.battstatus','fields1'=>'battstatus','enname'=>'Battery status'),
  279. // array('name'=>'蓄电池充电电流(A)','field'=>'L.chargecurrent','fields1'=>'chargecurrent','enname'=>'Charging current(A)'),
  280. // array('name'=>'蓄电池放电电流(A)','field'=>'L.discharcurrent','fields1'=>'discharcurrent','enname'=>'Discharging current(A)'),
  281. // array('name'=>'蓄电池充电功率(w)','field'=>'L.chargepower','fields1'=>'chargepower','enname'=>'Charging power(w)'),
  282. // array('name'=>'蓄电池放电功率(w)','field'=>'L.dischargepower','fields1'=>'dischargepower','enname'=>'Discharging power(w)'),
  283. // array('name'=>'蓄电池表面温度(℃)','field'=>'L.batttemper','fields1'=>'batttemper','enname'=>'Battery surface temperature(℃)'),
  284. // array('name'=>'蓄电池总电量','field'=>'L.electrictotal','fields1'=>'electrictotal','enname'=>'Total battery capacity(Ah)'),
  285. // array('name'=>'蓄电池电量SOC(%)','field'=>'L.electricSOC','fields1'=>'electricSOC','enname'=>'Battery SOC(%)'),
  286. // array('name'=>'当天最低电压(V)','field'=>'L.voltagedaymin','fields1'=>'voltagedaymin','enname'=>'Minimum voltage(V)'),
  287. // array('name'=>'当天最高电压(V)','field'=>'L.voltagedaymax','fields1'=>'voltagedaymax','enname'=>'Highest voltage(V)'),
  288. // array('name'=>'当天充电安时数(ah)','field'=>'L.daychargeah','fields1'=>'daychargeah','enname'=>'Charging AH(ah)'),
  289. // array('name'=>'当天放电安时数(ah)','field'=>'L.daydischarah','fields1'=>'daydischarah','enname'=>'Discharging AH(ah)'),
  290. // array('name'=>'当天充电最大功率(W)','field'=>'L.daychargemaxpow','fields1'=>'daychargemaxpow','enname'=>'Charging max-power(W)'),
  291. // array('name'=>'当天放电最大功率(W)','field'=>'L.daydischarmaxpow','fields1'=>'daydischarmaxpow','enname'=>'Discharging max-power(W)'),
  292. // array('name'=>'当天灯亮时间(hh:mm)','field'=>'L.daychargemincurrent','fields1'=>'daychargemincurrent','enname'=>'Turn-on duration'),
  293. // array('name'=>'当天充电最大电流(A)','field'=>'L.daycharmaxcurrent','fields1'=>'daycharmaxcurrent','enname'=>'Highest charging current(A)'),
  294. // array('name'=>'当天充电时间(hh:mm)','field'=>'L.daydischargemincurrent','fields1'=>'daydischargemincurrent','enname'=>'Charging duration'),
  295. // array('name'=>'当天放电最大电流(A)','field'=>'L.daydischarmaxcurrent','fields1'=>'daydischarmaxcurrent','enname'=>'Highest discharging current(A)'),
  296. // array('name'=>'当天蓄电池最低温度(℃)','field'=>'L.daybattmintemper','fields1'=>'daybattmintemper','enname'=>'Battery min-temperature(℃)'),
  297. // array('name'=>'当天蓄电池最高温度(℃)','field'=>'L.daybattmaxtemper','fields1'=>'daybattmaxtemper','enname'=>'Battery max-temperature(℃)'),
  298. // );
  299. $electric_info_log = array(
  300. array('name'=>'当天发电量(kWh)','field'=>'RI.chargeday as daygeneration','fields1'=>'daygeneration','enname'=>'Power generation(kWh)'),
  301. array('name'=>'当天用电量(kWh)','field'=>'RI.dischargeday as dayconsumption','fields1'=>'dayconsumption','enname'=>'Power consumption(kWh)'),
  302. array('name'=>'累计发电量(kWh)','field'=>'HI.totalchargeah as totalgeneration','fields1'=>'totalgeneration','enname'=>'Cumulative power generation(kWh)'),
  303. array('name'=>'累计用电量(kWh)','field'=>'HI.totaldischarah as totalconsumption','fields1'=>'totalconsumption','enname'=>'Cumulative power consumption(kWh)'),
  304. );
  305. // $system_info_log = array(
  306. // array('name'=>'系统电压(V)','field'=>'L.sysvoltage','fields1'=>'sysvoltage','enname'=>'System voltage(V)'),
  307. // array('name'=>'系统电流(A)','field'=>'L.syscurrent','fields1'=>'syscurrent','enname'=>'System current(A)'),
  308. // array('name'=>'控制器温度(℃)','field'=>'L.temper as controlTemper','fields1'=>'controlTemper','enname'=>'Controller temperature(℃)'),
  309. // );
  310. // 历史信息日志
  311. // $history_info_log = array(
  312. // array('name'=>'运行天数','field'=>'L.rundays','fields1'=>'rundays','enname'=>'Running duration'),
  313. // array('name'=>'蓄电池总充满次数','field'=>'L.fulltimes','fields1'=>'fulltimes','enname'=>'Full charge times'),
  314. // array('name'=>'蓄电池总充电安时数(ah)','field'=>'L.totalchargeah','fields1'=>'totalchargeah','enname'=>'Total charge AH(ah)'),
  315. // array('name'=>'蓄电池总放电安时数(ah)','field'=>'L.totaldischarah','fields1'=>'totaldischarah','enname'=>'Total discharge AH(ah)'),
  316. // );
  317. // $fields = array_merge($def,$lampinfo,$lamp_info_log,$solar_info_log,$battery_info_log,$electric_info_log,$system_info_log,$history_info_log);
  318. $fields = array_merge($def,$lampinfo,$lamp_info_log,$solar_info_log,$electric_info_log);
  319. // $fields = $def;
  320. $def = explode(',', $fieldstr);
  321. foreach ($fields as &$v) {
  322. if (in_array($v['fields1'], $def)) {
  323. $v['select'] = '1';
  324. }else{
  325. $v['select'] = '0';
  326. }
  327. }
  328. exit(json_result('0000',$this->response['0000'],array('list'=>$fields)));
  329. }
  330. // 路灯下拉列表
  331. public function lamp_list(){
  332. $networkid = intval($this->input->post('networkid',true));
  333. $projectid = intval($this->input->post('projectid',true));
  334. if (empty($networkid) && empty($projectid)) {
  335. exit(json_result('0405',$this->response['0405'],array()));
  336. }
  337. if (!empty($networkid)) {
  338. $data = $this->Lamp_model->get_list(array('networkid'=>$networkid), 'number,id');
  339. }else{
  340. $data = $this->Lamp_model->get_list(array('projectid'=>$projectid), 'number,id');
  341. }
  342. exit(json_result('0000',$this->response['0000'],$data));
  343. }
  344. // 获取单个路灯的经纬度
  345. public function get_lng_lat(){
  346. $lampid = $this->input->post('lampid',true);
  347. $projectid = $this->input->post('projectid',true);
  348. $section = $this->input->post('section',true);
  349. $lampData = array();
  350. if (!empty($lampid)) {
  351. $where = array('id'=>$lampid,'longitude !='=>0,'latitude !='=>0);
  352. if (!empty($section)) {
  353. $where['section'] = $section;
  354. }
  355. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  356. }
  357. if (!empty($projectid)) {
  358. $where = array('projectid'=>$projectid,'longitude !='=>0,'latitude !='=>0);
  359. if (!empty($section)) {
  360. $where['section'] = $section;
  361. }
  362. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  363. }
  364. if (empty($lampData)) {
  365. $lampData = array('longitude'=>0,'latitude'=>0);
  366. }
  367. exit(json_result('0000',$this->response['0000'],$lampData));
  368. }
  369. public function get_country(){
  370. $role = $this->get_user_info('role');
  371. $where = array();
  372. if ($role != SYSTEM_ADMIN) {
  373. $company = $this->get_user_info('company');
  374. $where['company'] = $company;
  375. }
  376. $pro_list = $this->Project_model->get_list($where,'cityid');
  377. $cityArr = array_unique(array_column($pro_list, 'cityid'));
  378. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  379. $areaList = array();
  380. $cityList = array();
  381. $proList = array();
  382. $comList = array();
  383. foreach ($list as $key => $value) {
  384. if ($value['level'] == 1) {
  385. $comList[] = $value;
  386. }elseif ($value['level'] == 2) {
  387. $proList[] = $value;
  388. }elseif ($value['level'] == 3) {
  389. $cityList[] = $value;
  390. }else {
  391. $areaList[] = $value;
  392. }
  393. }
  394. if (!empty($areaList)) {
  395. $cityArr = array_unique(array_column($areaList, 'pid'));
  396. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  397. foreach ($list as $key => $value) {
  398. if ($value['level'] == 1) {
  399. $comList[] = $value;
  400. }elseif ($value['level'] == 2) {
  401. $proList[] = $value;
  402. }else {
  403. $cityList[] = $value;
  404. }
  405. }
  406. }
  407. if (!empty($cityList)) {
  408. $cityArr = array_unique(array_column($cityList, 'pid'));
  409. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  410. foreach ($list as $key => $value) {
  411. if ($value['level'] == 1) {
  412. $comList[] = $value;
  413. }else {
  414. $proList[] = $value;
  415. }
  416. }
  417. }
  418. if (!empty($proList)) {
  419. $cityArr = array_unique(array_column($proList, 'pid'));
  420. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  421. foreach ($list as $key => $value) {
  422. if ($value['level'] == 1) $comList[] = $value;
  423. }
  424. }
  425. if (empty($comList)) exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  426. $cityArr = array_unique(array_column($comList, 'id'));
  427. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name',null,null,'convert(english_name using gbk) ASC,id DESC');
  428. exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
  429. }
  430. public function get_province(){
  431. $countryId = intval($this->input->post('countryId',true));
  432. $role = $this->get_user_info('role');
  433. $where = array();
  434. if ($role != SYSTEM_ADMIN) {
  435. $company = $this->get_user_info('company');
  436. $where['company'] = $company;
  437. }
  438. $pro_list = $this->Project_model->get_list($where,'cityid');
  439. $cityArr = array_unique(array_column($pro_list, 'cityid'));
  440. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  441. $areaList = array();
  442. $cityList = array();
  443. $proList = array();
  444. foreach ($list as $key => $value) {
  445. if ($value['level'] == 2) {
  446. $proList[] = $value;
  447. }elseif ($value['level'] == 3) {
  448. $cityList[] = $value;
  449. }elseif ($value['level'] == 4) {
  450. $areaList[] = $value;
  451. }
  452. }
  453. if (!empty($areaList)) {
  454. $cityArr = array_unique(array_column($areaList, 'pid'));
  455. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  456. foreach ($list as $key => $value) {
  457. if ($value['level'] == 2) {
  458. $proList[] = $value;
  459. }elseif ($value['level'] == 3) {
  460. $cityList[] = $value;
  461. }
  462. }
  463. }
  464. if (!empty($cityList)) {
  465. $cityArr = array_unique(array_column($cityList, 'pid'));
  466. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  467. foreach ($list as $key => $value) {
  468. if ($value['level'] == 2) $proList[] = $value;
  469. }
  470. }
  471. if (empty($proList)) exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  472. $cityArr = array_unique(array_column($proList, 'id'));
  473. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name',null,null,'convert(english_name using gbk) ASC,id DESC');
  474. exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
  475. }
  476. }