Electric_model.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. <?php
  2. if (!defined('BASEPATH'))exit('No direct script access allowed');
  3. class Electric_model extends CI_Model {
  4. protected $CI;
  5. public function __construct() {
  6. parent::__construct();
  7. }
  8. // 发电量,用电量
  9. public function getPowerDataByFilter($idArr,$date,$type){
  10. $table = 'electric_info_log';
  11. $table = 'statistics';
  12. $updateTimeDef = "";
  13. if ($type == 'day'){
  14. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  15. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  16. $updateTimeDef = date('Y-m-d',strtotime($date));
  17. } elseif ($type == 'month'){
  18. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  19. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  20. $updateTimeDef = date('Y-m',strtotime($endDate));
  21. } else {
  22. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  23. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  24. $updateTimeDef = date('Y',strtotime($endDate));
  25. }
  26. if (empty($idArr)) {
  27. return array(
  28. 'daygeneration' => 0,
  29. 'dayconsumption' => 0,
  30. 'totalgeneration' => 0,
  31. 'totalconsumption' => 0,
  32. 'monthgeneration' => 0,
  33. 'monthconsumption' => 0,
  34. 'yeargeneration' => 0,
  35. 'yearconsumption' => 0,
  36. 'updatetime' => $updateTimeDef,
  37. );
  38. }
  39. $ids = implode(",", $idArr);
  40. // 当天发电量,用电量
  41. // $query = "SELECT sum(daygeneration) as daygeneration,sum(dayconsumption) as dayconsumption,max(updatetime) as updatetime FROM (SELECT MAX(daygeneration) AS daygeneration,MAX(dayconsumption) AS dayconsumption,updatetime FROM electric_info_log
  42. // WHERE lampid IN(".$ids.")
  43. // AND updatetime>='".$beginDate."'
  44. // AND updatetime<='".$endDate."' group by lampid) as t1";
  45. // $query = "SELECT lampid,MAX(daygeneration) AS daygeneration,MAX(dayconsumption) AS dayconsumption,max(updatetime) as updatetime FROM {$table}
  46. // WHERE lampid IN(".$ids.")
  47. // AND updatetime>='".$beginDate."'
  48. // AND updatetime<='".$endDate."' group by lampid";
  49. $query = "SELECT lampid,MAX(dayGeneration) AS daygeneration,MAX(dayConsumption) AS dayconsumption,max(updatetime) as updatetime FROM {$table}
  50. WHERE lampid IN(".$ids.")
  51. AND updatetime>='".$beginDate."'
  52. AND updatetime<='".$endDate."' group by lampid";
  53. $query = $this->db->query($query);
  54. $dayData = $query->result_array();
  55. $dayData = $this->format_data($dayData);
  56. // 总发电量,总用电量
  57. // $query = "SELECT lampid,MAX(totalgeneration) AS totalgeneration,MAX(totalconsumption) AS totalconsumption FROM electric_info_log
  58. // WHERE lampid IN(".$ids.") group by lampid";
  59. // $query = "SELECT EI.lampid,EI.totalgeneration AS totalgeneration,EI.totalconsumption AS totalconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  60. // WHERE lampid IN(".$ids.") group by lampid) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  61. $query = "SELECT EI.lampid,EI.totalGeneration AS totalgeneration,EI.totalConsumption AS totalconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  62. WHERE lampid IN(".$ids.") and updatetime <= '".$endDate."' group by lampid ) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  63. $query = $this->db->query($query);
  64. $allData = $query->result_array();
  65. $allData = $this->format_data($allData);
  66. //当月第一天和当年第一天
  67. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  68. $beginDateYear = date('Y-01-01 00:00:00', strtotime($beginDate));
  69. //上个月的累积发电量和用电量
  70. // $query = "SELECT lampid,max(totalgeneration) as lastmonthgeneration, max(totalconsumption) as lastmonthconsumption
  71. // FROM electric_info_log WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateMonth."' group by lampid";
  72. // $query = "SELECT EI.lampid,EI.totalgeneration AS lastmonthgeneration,EI.totalconsumption AS lastmonthconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  73. // WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateMonth."' group by lampid) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  74. $query = "SELECT EI.lampid,EI.totalGeneration AS lastmonthgeneration,EI.totalConsumption AS lastmonthconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  75. WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateMonth."' group by lampid) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  76. $query = $this->db->query($query);
  77. $monthData = $query->result_array();
  78. $monthData = $this->format_data($monthData);
  79. //去年的累积发电量和用电量
  80. // $query = "SELECT lampid,max(totalgeneration) as lastyeargeneration, max(totalconsumption) as lastyearconsumption
  81. // FROM electric_info_log WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateYear."' group by lampid";
  82. // $query = "SELECT EI.lampid,EI.totalgeneration AS lastyeargeneration,EI.totalconsumption AS lastyearconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  83. // WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateYear."' group by lampid) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  84. $query = "SELECT EI.lampid,EI.totalGeneration AS lastyeargeneration,EI.totalConsumption AS lastyearconsumption FROM {$table} as EI join (SELECT lampid,max(updatetime) as time FROM {$table}
  85. WHERE lampid IN(".$ids.") AND updatetime<'".$beginDateYear."' group by lampid) as T on T.lampid = EI.lampid AND T.time = EI.updatetime";
  86. $query = $this->db->query($query);
  87. $yearData = $query->result_array();
  88. $yearData = $this->format_data($yearData);
  89. $temp = array();
  90. foreach ($idArr as $value) {
  91. $dayData[$value]['daygeneration'] = isset($dayData[$value]['daygeneration']) ? round($dayData[$value]['daygeneration'],2) : 0;
  92. $dayData[$value]['dayconsumption'] = isset($dayData[$value]['dayconsumption']) ? round($dayData[$value]['dayconsumption'],2) : 0;
  93. $allData[$value]['totalgeneration'] = isset($allData[$value]['totalgeneration']) ? round($allData[$value]['totalgeneration'],2) : 0;
  94. $allData[$value]['totalconsumption'] = isset($allData[$value]['totalconsumption']) ? round($allData[$value]['totalconsumption'],2) : 0;
  95. $monthData[$value]['lastmonthgeneration'] = isset($monthData[$value]['lastmonthgeneration']) ? round($monthData[$value]['lastmonthgeneration'],2) : 0;
  96. $monthData[$value]['lastmonthconsumption'] = isset($monthData[$value]['lastmonthconsumption']) ? round($monthData[$value]['lastmonthconsumption'],2) : 0;
  97. $yearData[$value]['lastyeargeneration'] = isset($yearData[$value]['lastyeargeneration']) ? round($yearData[$value]['lastyeargeneration'],2) : 0;
  98. $yearData[$value]['lastyearconsumption'] = isset($yearData[$value]['lastyearconsumption']) ? round($yearData[$value]['lastyearconsumption'],2) : 0;
  99. // var_dump($value);die;
  100. if ($type == 'day'){
  101. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m-d',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  102. } elseif ($type == 'month'){
  103. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  104. } else {
  105. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  106. }
  107. // var_dump($allData);die;
  108. $temp[$value] = array(
  109. 'daygeneration' => $dayData[$value]['daygeneration'] ,
  110. 'dayconsumption' => $dayData[$value]['dayconsumption'] ,
  111. 'totalgeneration' => $allData[$value]['totalgeneration'] ,
  112. 'totalconsumption' => $allData[$value]['totalconsumption'] ,
  113. 'monthgeneration' => !empty($monthData[$value]['lastmonthgeneration']) ? round($allData[$value]['totalgeneration']-$monthData[$value]['lastmonthgeneration'],2) : $allData[$value]['totalgeneration'],
  114. 'monthconsumption' => !empty($monthData[$value]['lastmonthconsumption']) ? round($allData[$value]['totalconsumption']-$monthData[$value]['lastmonthconsumption'],2) : $allData[$value]['totalconsumption'],
  115. 'yeargeneration' => !empty($yearData[$value]['lastyeargeneration']) ? $allData[$value]['totalgeneration']-$yearData[$value]['lastyeargeneration'] : $allData[$value]['totalgeneration'],
  116. 'yearconsumption' => !empty($yearData[$value]['lastyearconsumption']) ? $allData[$value]['totalconsumption']-$yearData[$value]['lastyearconsumption'] : $allData[$value]['totalconsumption'],
  117. 'updatetime' => $updatetime
  118. );
  119. }
  120. return $temp;
  121. }
  122. public function getBatterychargeDataByFilter($ids,$date,$type){
  123. if (date('m',time()) - date('m',strtotime($date)) > 3) {
  124. $table = 'history_info_log_back';
  125. }else{
  126. $table = 'history_info_log';
  127. }
  128. $updateTimeDef = "";
  129. if ($type == 'day'){
  130. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  131. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  132. $updateTimeDef = date('Y-m-d',strtotime($date));
  133. } elseif ($type == 'month'){
  134. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  135. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  136. $updateTimeDef = date('Y-m',strtotime($endDate));
  137. } else {
  138. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  139. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  140. $updateTimeDef = date('Y',strtotime($endDate));
  141. }
  142. if (empty($ids)) {
  143. return array(
  144. 'overtimes' => 0,
  145. 'fulltimes' => 0,
  146. 'monthfulltimes' => 0,
  147. 'monthovertimes' => 0,
  148. 'yearfulltimes' => 0,
  149. 'yearovertimes' => 0,
  150. 'updatetime' => $updateTimeDef,
  151. );
  152. }
  153. $ids = implode(",", $ids);
  154. $query = "SELECT MAX(overtimes) as overtimes,MAX(fulltimes) as fulltimes,MAX(totalchargeah) as totalchargeah,MAX(totaldischarah) as totaldischarah,MAX(updatetime) as updatetime FROM {$table}
  155. WHERE lampid IN(".$ids.")
  156. AND updatetime>='".$beginDate."'
  157. AND updatetime<='".$endDate."'";
  158. $query = $this->db->query($query);
  159. $dayData = $query->row_array();
  160. $dayData['overtimes'] = !empty($dayData['overtimes']) ? $dayData['overtimes'] : 0;
  161. $dayData['fulltimes'] = !empty($dayData['fulltimes']) ? $dayData['fulltimes'] : 0;
  162. $dayData['totalchargeah'] = !empty($dayData['totalchargeah']) ? $dayData['totalchargeah'] : 0;
  163. $dayData['totaldischarah'] = !empty($dayData['totaldischarah']) ? $dayData['totaldischarah'] : 0;
  164. // 获取当前月份第一天 和最后一天
  165. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  166. $endDateMonth = $endDate;
  167. $query = "SELECT overtimes ,fulltimes
  168. FROM {$table} WHERE lampid IN(".$ids.")
  169. AND updatetime>='".$beginDateMonth."'
  170. AND updatetime<='".$endDateMonth."'
  171. ORDER BY updatetime ASC
  172. ";
  173. $query = $this->db->query($query);
  174. $monthData = $query->result_array();
  175. $monthData['overtimes'] = !empty($monthData['overtimes']) ? $monthData['overtimes'] : 0;
  176. $monthData['fulltimes'] = !empty($monthData['fulltimes']) ? $monthData['fulltimes'] : 0;
  177. $query = "SELECT overtimes ,fulltimes
  178. FROM {$table} WHERE lampid IN(".$ids.")
  179. AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  180. AND updatetime<='".$endDate."'
  181. ORDER BY updatetime ASC";
  182. $query = $this->db->query($query);
  183. $yearData = $query->result_array();
  184. $yearData['overtimes'] = !empty($yearData['overtimes']) ? $yearData['overtimes'] : 0;
  185. $yearData['fulltimes'] = !empty($yearData['fulltimes']) ? $yearData['fulltimes'] : 0;
  186. if ($type == 'day'){
  187. $updatetime = isset($dayData['updatetime']) && !empty($dayData['updatetime']) ? date('Y-m-d',strtotime($dayData['updatetime'])) : $updateTimeDef;
  188. } elseif ($type == 'month'){
  189. $updatetime = isset($dayData['updatetime']) && !empty($dayData['updatetime']) ? date('Y-m',strtotime($dayData['updatetime'])) : $updateTimeDef;
  190. } else {
  191. $updatetime = isset($dayData['updatetime']) && !empty($dayData['updatetime']) ? date('Y',strtotime($dayData['updatetime'])) : $updateTimeDef;
  192. }
  193. return array(
  194. 'overtimes' => $dayData['overtimes'],
  195. 'fulltimes' => $dayData['fulltimes'],
  196. 'monthovertimes' => !empty($monthData) ? $monthData[count($monthData)-1]['overtimes'] - $monthData[0]['overtimes'] : 0,
  197. 'monthfulltimes' => !empty($monthData) ? $monthData[count($monthData)-1]['fulltimes'] - $monthData[0]['fulltimes'] : 0,
  198. 'yearovertimes' => !empty($yearData) ? $yearData[count($yearData)-1]['overtimes'] - $yearData[0]['overtimes'] : 0,
  199. 'yearfulltimes' => !empty($yearData) ? $yearData[count($yearData)-1]['overtimes'] - $yearData[0]['overtimes'] : 0,
  200. 'updatetime' => $updatetime
  201. );
  202. }
  203. // 功率
  204. public function getCapacityDataByFilter($idArr,$date,$type){
  205. $table = 'battery_info_log';
  206. $table = 'statistics';
  207. $updateTimeDef = "";
  208. if ($type == 'day'){
  209. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  210. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  211. $updateTimeDef = date('Y-m-d',strtotime($date));
  212. } elseif ($type == 'month'){
  213. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  214. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  215. $updateTimeDef = date('Y-m',strtotime($endDate));
  216. } else {
  217. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  218. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  219. $updateTimeDef = date('Y',strtotime($endDate));
  220. }
  221. if (empty($idArr)) {
  222. return array(
  223. 'daychargemaxpow' => 0,
  224. 'daydischarmaxpow' => 0,
  225. 'monthchargemaxpow' => 0,
  226. 'monthdischarmaxpow' => 0,
  227. 'yearchargemaxpow' => 0,
  228. 'yeardischarmaxpow' => 0,
  229. 'updatetime' => $updateTimeDef,
  230. );
  231. }
  232. $ids = implode(",", $idArr);
  233. // $query = "SELECT lampid,MAX(daychargemaxpow) as daychargemaxpow, MAX(daydischarmaxpow) as daydischarmaxpow, MAX(updatetime) as updatetime
  234. // FROM {$table}
  235. // WHERE lampid IN(".$ids.")
  236. // AND updatetime>='".$beginDate."'
  237. // AND updatetime<='".$endDate."' group by lampid";
  238. $query = "SELECT lampid,MAX(dayCharMaxPower) as daychargemaxpow, MAX(dayDischarMaxPower) as daydischarmaxpow, MAX(updatetime) as updatetime
  239. FROM {$table}
  240. WHERE lampid IN(".$ids.")
  241. AND updatetime>='".$beginDate."'
  242. AND updatetime<='".$endDate."' group by lampid";
  243. $query = $this->db->query($query);
  244. $dayData = $query->result_array();
  245. $dayData = $this->format_data($dayData);
  246. // 获取当前月份第一天 和最后一天
  247. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  248. $endDateMonth = $endDate;
  249. // $query = "SELECT lampid,MAX(daychargemaxpow) as monthchargemaxpow,MAX(daydischarmaxpow) AS monthdischarmaxpow
  250. // FROM {$table} WHERE lampid IN(".$ids.")
  251. // AND updatetime>='".$beginDateMonth."'
  252. // AND updatetime<='".$endDateMonth."' group by lampid";
  253. $query = "SELECT lampid,MAX(monthCharMaxPower) as monthchargemaxpow,MAX(monthDischarMaxPower) AS monthdischarmaxpow
  254. FROM {$table} WHERE lampid IN(".$ids.")
  255. AND updatetime>='".$beginDateMonth."'
  256. AND updatetime<='".$endDateMonth."' group by lampid";
  257. $query = $this->db->query($query);
  258. $monthData = $query->result_array();
  259. $monthData = $this->format_data($monthData);
  260. $query = "SELECT lampid,MAX(yearCharMaxPower) as yearchargemaxpow,MAX(yearDischarMaxPower) AS yeardischarmaxpow
  261. FROM {$table} WHERE lampid IN(".$ids.")
  262. AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  263. AND updatetime<='".$endDate."' group by lampid";
  264. $query = $this->db->query($query);
  265. $yearData = $query->result_array();
  266. $yearData = $this->format_data($yearData);
  267. $temp = array();
  268. foreach ($idArr as $value) {
  269. if ($type == 'day'){
  270. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m-d',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  271. } elseif ($type == 'month'){
  272. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  273. } else {
  274. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  275. }
  276. $temp[$value] = array(
  277. 'daychargemaxpow' => isset($dayData[$value]['daychargemaxpow']) ? round($dayData[$value]['daychargemaxpow'], 2) : 0,
  278. 'daydischarmaxpow' => isset($dayData[$value]['daydischarmaxpow']) ? round($dayData[$value]['daydischarmaxpow'], 2) : 0,
  279. 'monthchargemaxpow' => isset($monthData[$value]['monthchargemaxpow']) ? round($monthData[$value]['monthchargemaxpow'], 2) : 0,
  280. 'monthdischarmaxpow' => isset($monthData[$value]['monthdischarmaxpow']) ? round($monthData[$value]['monthdischarmaxpow']) : 0,
  281. 'yearchargemaxpow' => isset($yearData[$value]['yearchargemaxpow']) ? round($yearData[$value]['yearchargemaxpow'], 2) : 0,
  282. 'yeardischarmaxpow' => isset($yearData[$value]['yeardischarmaxpow']) ? round($yearData[$value]['yeardischarmaxpow'], 2) : 0,
  283. 'updatetime' => $updatetime
  284. );
  285. }
  286. return $temp;
  287. }
  288. // 电压
  289. public function getVoltageDataByFilter($idArr,$date,$type){
  290. $table = 'battery_info_log';
  291. $table = 'statistics';
  292. $updateTimeDef = "";
  293. if ($type == 'day'){
  294. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  295. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  296. $updateTimeDef = date('Y-m-d',strtotime($date));
  297. } elseif ($type == 'month'){
  298. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  299. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  300. $updateTimeDef = date('Y-m',strtotime($endDate));
  301. } else {
  302. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  303. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  304. $updateTimeDef = date('Y',strtotime($endDate));
  305. }
  306. if (empty($idArr)) {
  307. return array(
  308. 'voltagedaymin' => 0,
  309. 'voltagedaymax' => 0,
  310. 'monthvoltagedaymin' => 0,
  311. 'monthvoltagedaymax' => 0,
  312. 'yearvoltagedaymin' => 0,
  313. 'yearvoltagedaymax' => 0,
  314. 'totalvoltagedaymin' => 0,
  315. 'totalvoltagedaymax' => 0,
  316. 'updatetime' => $updateTimeDef,
  317. );
  318. }
  319. $ids = implode(",", $idArr);
  320. // $query = "SELECT lampid, MIN(voltagedaymin) as voltagedaymin,MAX(voltagedaymax) AS voltagedaymax,MAX(updatetime) AS updatetime
  321. // FROM {$table}
  322. // WHERE lampid IN(".$ids.")
  323. // AND updatetime>='".$beginDate."'
  324. // AND updatetime<='".$endDate."' group by lampid";
  325. $query = "SELECT lampid, MIN(dayMinVoltage) as voltagedaymin,MAX(dayMaxVoltage) AS voltagedaymax,MAX(updatetime) AS updatetime
  326. FROM {$table}
  327. WHERE lampid IN(".$ids.")
  328. AND updatetime>='".$beginDate."'
  329. AND updatetime<='".$endDate."' group by lampid";
  330. $query = $this->db->query($query);
  331. $dayData = $query->result_array();
  332. $dayData = $this->format_data($dayData);
  333. // 获取当前月份第一天 和最后一天
  334. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  335. $endDateMonth = $endDate;
  336. // $query = "SELECT lampid, MIN(voltagedaymin) as monthvoltagedaymin,MAX(voltagedaymax) AS monthvoltagedaymax
  337. // FROM {$table} WHERE lampid IN(".$ids.")
  338. // AND updatetime>='".$beginDateMonth."'
  339. // AND updatetime<='".$endDateMonth."' group by lampid";
  340. $query = "SELECT lampid, MIN(monthMinVoltage) as monthvoltagedaymin,MAX(monthMaxVoltage) AS monthvoltagedaymax
  341. FROM {$table} WHERE lampid IN(".$ids.")
  342. AND updatetime>='".$beginDateMonth."'
  343. AND updatetime<='".$endDateMonth."' group by lampid";
  344. $query = $this->db->query($query);
  345. $monthData = $query->result_array();
  346. $monthData = $this->format_data($monthData);
  347. // $query = "SELECT lampid,MIN(voltagedaymin) as yearvoltagedaymin,MAX(voltagedaymax) AS yearvoltagedaymax
  348. // FROM {$table} WHERE lampid IN(".$ids.")
  349. // AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  350. // AND updatetime<='".$endDate."' group by lampid";
  351. $query = "SELECT lampid,MIN(yearMinVoltage) as yearvoltagedaymin,MAX(yearMaxVoltage) AS yearvoltagedaymax
  352. FROM {$table} WHERE lampid IN(".$ids.")
  353. AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  354. AND updatetime<='".$endDate."' group by lampid";
  355. $query = $this->db->query($query);
  356. $yearData = $query->result_array();
  357. $yearData = $this->format_data($yearData);
  358. // 历史
  359. // $query = "SELECT lampid,MAX(voltagedaymin) as totalvoltagedaymin,MAX(voltagedaymax) AS totalvoltagedaymax
  360. // FROM battery_info_log WHERE lampid IN(".$ids.") AND updatetime<='".$endDate."' group by lampid";
  361. // $query = $this->db->query($query);
  362. // $totalData = $query->result_array();
  363. // $totalData = $this->format_data($totalData);
  364. $temp = array();
  365. foreach ($idArr as $key) {
  366. if ($type == 'day'){
  367. $updatetime = isset($dayData[$key]['updatetime']) && !empty($dayData[$key]['updatetime']) ? date('Y-m-d',strtotime($dayData[$key]['updatetime'])) : $updateTimeDef;
  368. } elseif ($type == 'month'){
  369. $updatetime = isset($dayData[$key]['updatetime']) && !empty($dayData[$key]['updatetime']) ? date('Y-m',strtotime($dayData[$key]['updatetime'])) : $updateTimeDef;
  370. } else {
  371. $updatetime = isset($dayData[$key]['updatetime']) && !empty($dayData[$key]['updatetime']) ? date('Y',strtotime($dayData[$key]['updatetime'])) : $updateTimeDef;
  372. }
  373. $temp[$key] = array(
  374. 'voltagedaymin' => isset($dayData[$key]['voltagedaymin']) ? round($dayData[$key]['voltagedaymin'],2) : 0,
  375. 'voltagedaymax' => isset($dayData[$key]['voltagedaymax']) ? round($dayData[$key]['voltagedaymax'],2) : 0,
  376. 'monthvoltagedaymin' => isset($monthData[$key]['monthvoltagedaymin']) ? round($monthData[$key]['monthvoltagedaymin'],2) : 0,
  377. 'monthvoltagedaymax' => isset($monthData[$key]['monthvoltagedaymax']) ? round($monthData[$key]['monthvoltagedaymax'],2) : 0,
  378. 'yearvoltagedaymin' => isset($yearData[$key]['yearvoltagedaymin']) ? round($yearData[$key]['yearvoltagedaymin'],2) : 0,
  379. 'yearvoltagedaymax' => isset($yearData[$key]['yearvoltagedaymax']) ? round($yearData[$key]['yearvoltagedaymax'],2) : 0,
  380. 'totalvoltagedaymin' => isset($totalData[$key]['totalvoltagedaymin']) ? round($totalData[$key]['totalvoltagedaymin'],2) : 0,
  381. 'totalvoltagedaymax' => isset($totalData[$key]['totalvoltagedaymax']) ? round($totalData[$key]['totalvoltagedaymax'],2) : 0,
  382. 'updatetime' => $updatetime
  383. );
  384. }
  385. return $temp;
  386. }
  387. private function format_data($data){
  388. $temp = array();
  389. foreach ($data as $v) {
  390. $temp[$v['lampid']] = $v;
  391. }
  392. return $temp;
  393. }
  394. // 电流
  395. public function getCurrentDataByFilter($idArr,$date,$type){
  396. $table = 'battery_info_log';
  397. $table = 'statistics';
  398. $updateTimeDef = "";
  399. if ($type == 'day'){
  400. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  401. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  402. $updateTimeDef = date('Y-m-d',strtotime($date));
  403. } elseif ($type == 'month'){
  404. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  405. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  406. $updateTimeDef = date('Y-m',strtotime($endDate));
  407. } else {
  408. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  409. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  410. $updateTimeDef = date('Y',strtotime($endDate));
  411. }
  412. if (empty($idArr)) {
  413. return array(
  414. 'daycharmaxcurrent' => 0,
  415. 'daydischarmaxcurrent' => 0,
  416. 'monthcharmaxcurrent' => 0,
  417. 'monthdischarmaxcurrent' => 0,
  418. 'yearcharmaxcurrent' => 0,
  419. 'yeardischarmaxcurrent' => 0,
  420. 'updatetime' => $updateTimeDef,
  421. );
  422. }
  423. $ids = implode(",", $idArr);
  424. // $query = "SELECT lampid,MAX(daycharmaxcurrent) as daycharmaxcurrent,MAX(daydischarmaxcurrent) as daydischarmaxcurrent,MAX(updatetime) as updatetime
  425. // FROM {$table}
  426. // WHERE lampid IN(".$ids.")
  427. // AND updatetime>='".$beginDate."'
  428. // AND updatetime<='".$endDate."' group by lampid";
  429. $query = "SELECT lampid,MAX(dayCharMaxCurr) as daycharmaxcurrent,MAX(dayDischarMaxCurr) as daydischarmaxcurrent,MAX(updatetime) as updatetime
  430. FROM {$table}
  431. WHERE lampid IN(".$ids.")
  432. AND updatetime>='".$beginDate."'
  433. AND updatetime<='".$endDate."' group by lampid";
  434. $query = $this->db->query($query);
  435. $dayData = $query->result_array();
  436. $dayData = $this->format_data($dayData);
  437. // 获取当前月份第一天 和最后一天
  438. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  439. $endDateMonth = $endDate;
  440. // $query = "SELECT lampid,MAX(daycharmaxcurrent) as monthcharmaxcurrent,MAX(daydischarmaxcurrent) AS monthdischarmaxcurrent
  441. // FROM {$table} WHERE lampid IN(".$ids.")
  442. // AND updatetime>='".$beginDateMonth."'
  443. // AND updatetime<='".$endDateMonth."' group by lampid";
  444. $query = "SELECT lampid,MAX(monthCharMaxCurr) as monthcharmaxcurrent,MAX(monthDischarMaxCurr) AS monthdischarmaxcurrent
  445. FROM {$table} WHERE lampid IN(".$ids.")
  446. AND updatetime>='".$beginDateMonth."'
  447. AND updatetime<='".$endDateMonth."' group by lampid";
  448. $query = $this->db->query($query);
  449. $monthData = $query->result_array();
  450. $monthData = $this->format_data($monthData);
  451. // $query = "SELECT lampid,MAX(daycharmaxcurrent) as yearcharmaxcurrent,MAX(daydischarmaxcurrent) AS yeardischarmaxcurrent
  452. // FROM {$table} WHERE lampid IN(".$ids.")
  453. // AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  454. // AND updatetime<='".$endDate."' group by lampid";
  455. $query = "SELECT lampid,MAX(yearCharMaxCurr) as yearcharmaxcurrent,MAX(yearDischarMaxCurr) AS yeardischarmaxcurrent
  456. FROM {$table} WHERE lampid IN(".$ids.")
  457. AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  458. AND updatetime<='".$endDate."' group by lampid";
  459. $query = $this->db->query($query);
  460. $yearData = $query->result_array();
  461. $yearData = $this->format_data($yearData);
  462. $temp = array();
  463. foreach ($idArr as $value) {
  464. if ($type == 'day'){
  465. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m-d',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  466. } elseif ($type == 'month'){
  467. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  468. } else {
  469. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  470. }
  471. $temp[$value] = array(
  472. 'daycharmaxcurrent' => isset($dayData[$value]['daycharmaxcurrent']) ? round($dayData[$value]['daycharmaxcurrent'],2) : 0,
  473. 'daydischarmaxcurrent' => isset($dayData[$value]['daydischarmaxcurrent']) ? round($dayData[$value]['daydischarmaxcurrent'],2) : 0,
  474. 'monthcharmaxcurrent' => isset($monthData[$value]['monthcharmaxcurrent']) ? round($monthData[$value]['monthcharmaxcurrent'],2) : 0,
  475. 'monthdischarmaxcurrent' => isset($monthData[$value]['monthdischarmaxcurrent']) ? round($monthData[$value]['monthdischarmaxcurrent'],2) : 0,
  476. 'yearcharmaxcurrent' => isset($yearData[$value]['yearcharmaxcurrent']) ? round($yearData[$value]['yearcharmaxcurrent'],2) : 0,
  477. 'yeardischarmaxcurrent' => isset($yearData[$value]['yeardischarmaxcurrent']) ? round($yearData[$value]['yeardischarmaxcurrent'],2) : 0,
  478. 'updatetime' => $updatetime
  479. );
  480. }
  481. return $temp;
  482. }
  483. // 温度
  484. public function getTemperDataByFilter($idArr,$date,$type){
  485. $table = 'battery_info_log';
  486. $table = 'statistics';
  487. $updateTimeDef = "";
  488. if ($type == 'day'){
  489. $beginDate = date('Y-m-d 00:00:00',strtotime($date));
  490. $endDate = date('Y-m-d 23:59:59',strtotime($date));
  491. $updateTimeDef = date('Y-m-d',strtotime($date));
  492. } elseif ($type == 'month'){
  493. $beginDate = date('Y-m-01 00:00:00', strtotime($date."-01 00:00:00"));
  494. $endDate = date('Y-m-t 23:59:59', strtotime($beginDate));
  495. $updateTimeDef = date('Y-m',strtotime($endDate));
  496. } else {
  497. $beginDate = date('Y-01-01 00:00:00', strtotime($date."-01-01 00:00:00"));
  498. $endDate = date('Y-12-31 23:59:59', strtotime($date."-12-31 23:59:59"));
  499. $updateTimeDef = date('Y',strtotime($endDate));
  500. }
  501. if (empty($idArr)) {
  502. return array(
  503. 'daybattmintemper' => 0,
  504. 'daybattmaxtemper' => 0,
  505. 'monthbattmintemper' => 0,
  506. 'monthbattmaxtemper' => 0,
  507. 'yearbattmintemper' => 0,
  508. 'yearbattmaxtemper' => 0,
  509. 'updatetime' => $updateTimeDef,
  510. );
  511. }
  512. $ids = implode(",", $idArr);
  513. // $query = "SELECT lampid,MIN(daybattmintemper) as daybattmintemper,MAX(daybattmaxtemper) as daybattmaxtemper,MAX(updatetime) as updatetime
  514. // FROM {$table}
  515. // WHERE lampid IN(".$ids.")
  516. // AND updatetime>='".$beginDate."'
  517. // AND updatetime<='".$endDate."' group by lampid";
  518. $query = "SELECT lampid,MIN(dayMinTemper) as daybattmintemper,MAX(dayMaxTemper) as daybattmaxtemper,MAX(updatetime) as updatetime
  519. FROM {$table}
  520. WHERE lampid IN(".$ids.")
  521. AND updatetime>='".$beginDate."'
  522. AND updatetime<='".$endDate."' group by lampid";
  523. $query = $this->db->query($query);
  524. $dayData = $query->result_array();
  525. $dayData = $this->format_data($dayData);
  526. // 获取当前月份第一天 和最后一天
  527. $beginDateMonth = date('Y-m-01 00:00:00', strtotime($beginDate));
  528. $endDateMonth = $endDate;
  529. // $query = "SELECT lampid,MIN(daybattmintemper) as monthbattmintemper,MAX(daybattmaxtemper) AS monthbattmaxtemper
  530. // FROM {$table} WHERE lampid IN(".$ids.")
  531. // AND updatetime>='".$beginDateMonth."'
  532. // AND updatetime<='".$endDateMonth."' group by lampid";
  533. $query = "SELECT lampid,MIN(monthMinTemper) as monthbattmintemper,MAX(monthMaxTemper) AS monthbattmaxtemper
  534. FROM {$table} WHERE lampid IN(".$ids.")
  535. AND updatetime>='".$beginDateMonth."'
  536. AND updatetime<='".$endDateMonth."' group by lampid";
  537. $query = $this->db->query($query);
  538. $monthData = $query->result_array();
  539. $monthData = $this->format_data($monthData);
  540. // $query = "SELECT lampid,MIN(daybattmintemper) as yearbattmintemper,MAX(daybattmaxtemper) AS yearbattmaxtemper
  541. // FROM {$table} WHERE lampid IN(".$ids.")
  542. // AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  543. // AND updatetime<='".$endDate."' group by lampid";
  544. $query = "SELECT lampid,MIN(yearMinTemper) as yearbattmintemper,MAX(yearMaxTemper) AS yearbattmaxtemper
  545. FROM {$table} WHERE lampid IN(".$ids.")
  546. AND updatetime>='".date('Y-01-01 00:00:00',strtotime($beginDate))."'
  547. AND updatetime<='".$endDate."' group by lampid";
  548. $query = $this->db->query($query);
  549. $yearData = $query->result_array();
  550. $yearData = $this->format_data($yearData);
  551. $temp = array();
  552. foreach ($idArr as $value) {
  553. if ($type == 'day'){
  554. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m-d',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  555. } elseif ($type == 'month'){
  556. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y-m',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  557. } else {
  558. $updatetime = isset($dayData[$value]['updatetime']) && !empty($dayData[$value]['updatetime']) ? date('Y',strtotime($dayData[$value]['updatetime'])) : $updateTimeDef;
  559. }
  560. $temp[$value] = array(
  561. 'daybattmintemper' => isset($dayData[$value]['daybattmintemper']) ? round($dayData[$value]['daybattmintemper'],2) : 0,
  562. 'daybattmaxtemper' => isset($dayData[$value]['daybattmaxtemper']) ? round($dayData[$value]['daybattmaxtemper'],2) : 0,
  563. 'monthbattmintemper' => isset($monthData[$value]['monthbattmintemper']) ? round($monthData[$value]['monthbattmintemper'],2) : 0,
  564. 'monthbattmaxtemper' => isset($monthData[$value]['monthbattmaxtemper']) ? round($monthData[$value]['monthbattmaxtemper'],2) : 0,
  565. 'yearbattmintemper' => isset($yearData[$value]['yearbattmintemper']) ? round($yearData[$value]['yearbattmintemper'],2) : 0,
  566. 'yearbattmaxtemper' => isset($yearData[$value]['yearbattmaxtemper']) ? round($yearData[$value]['yearbattmaxtemper'],2) : 0,
  567. 'updatetime' => $updatetime
  568. );
  569. }
  570. return $temp;
  571. }
  572. }