| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 | 
							- <?php 
 
- if (!defined('BASEPATH'))exit('No direct script access allowed');
 
- include_once(FCPATH . 'application/models/Base_model.php');
 
- class Weathermonitor_model extends Base_model
 
- {
 
-     protected $table = 'envmonitor';
 
-     public function __construct()
 
-     {
 
-         parent::__construct();
 
-     }
 
-     public function get_data_by_filter($filter=array(),$field="*"){
 
-         $this->db->select($field);
 
-         foreach ($filter as $key => $value) {
 
-             if (is_array($value)) {
 
-                 $this->db->where_in($key,$value);
 
-             }else{
 
-                 $this->db->where($key,$value);
 
-             }
 
-         }
 
-         return $this->db->get($this->table)->row_array();
 
-     }
 
-     // 根据条件获取监控数
 
-     public function getTotal($filter=array(),$role,$user_id,$companyid,$projectid=0){
 
-     	$sql = "SELECT count(*) as total from {$this->table} as W";
 
-     	
 
-         if ($projectid > 0) {
 
-             $projectIds = $projectid;
 
-         }else{
 
-             $projectIds = $this->get_projectid_by_role($role,$user_id,$companyid);
 
-         }
 
-         
 
-         if (isset($filter['keyword'])) {
 
-             if (!empty($filter['keyword'])) {
 
-                 $implode[] = "W.number like '%{$filter['keyword']}%'";
 
-             }
 
-             unset($filter['keyword']);
 
-         }
 
-         foreach ($filter as $key => $value) {
 
-             if (is_array($value)) {
 
-                 if (!empty($value)) {
 
-                     $str = implode(',', $value);
 
-                     $implode[] = "$key in ({$str})";
 
-                 }
 
-             }else{
 
-                 $implode[] = "$key=$value";
 
-             }
 
-             
 
-         }
 
-         if(empty($projectIds)){
 
-             $implode[] = "W.projectid in (0)";
 
-         }else{
 
-             $implode[] = "W.projectid in ({$projectIds})";
 
-         }
 
-         $where = $implode ? " WHERE " . implode(" AND ", $implode) : '';
 
-         $sql .= $where;
 
-         $res = $this->db->query($sql);
 
-         $data = $res->row_array();
 
-         return $data["total"];
 
-     }
 
-     // 通过筛选条件删除监控
 
-     public function delData($condition){
 
-         if (!empty($condition)) {
 
-             foreach ($condition as $key => $value) {
 
-                 if (is_array($value)) {
 
-                     if (!empty($value)) {
 
-                         $this->db->where_in($key,$value);
 
-                     }else{
 
-                         $this->db->where_in($key,array(0));
 
-                     }
 
-                 }else{
 
-                     $this->db->where($key,$value);
 
-                 }
 
-                 
 
-             }
 
-         }else{
 
-             return false;
 
-         }
 
-         $this->db->delete($this->table);
 
-         if ($this->db->affected_rows()) {
 
-             return true;
 
-         } else {
 
-             return false;
 
-         }
 
-     }
 
-     // (项目管理页)根据刷选条件获取视屏监控列表
 
-     public function get_list_by_filter($filter,$field='*'){
 
-         $temp = [];
 
-         $sql = "select {$field} 
 
-                 from {$this->table} as W 
 
-                 left join (select * from (select envmonitorid as wid,max(updatetime) as time from envmonitor_info_log group by envmonitorid) as t1 left join envmonitor_info_log as t2 on t1.wid = t2.envmonitorid and t1.time = t2.updatetime) as WI on W.id = WI.envmonitorid ";
 
-         foreach ($filter as $key => $value) {
 
-             if (is_array($value)) {
 
-                 if (!empty($value)) {
 
-                     $v = implode(',', $value);
 
-                     $temp[] = "W.{$key} in ($v)";
 
-                 }else{
 
-                     $temp[] = "W.{$key} in (0)";
 
-                 }
 
-             }else{
 
-                 $temp[] = "W.{$key} = '{$value}'";
 
-             }
 
-         }
 
-         if (!empty($temp)) {
 
-             $where = implode(' AND ', $temp);
 
-             $sql .= "where ".$where;
 
-         }
 
-         $data = $this->db->query($sql)->result_array();
 
-         return $data;
 
-     }
 
-     // (环境监控页)根据用户权限获取视屏监控列表
 
-     public function get_list_by_role($role,$userid,$companyid,$projectid=0,$field="*",$page=null,$limit = null,$filter=array(),$type = 0){
 
-         if ($projectid > 0) {
 
-             $projectIds = $projectid;
 
-         }else{
 
-             $projectIds = $this->get_projectid_by_role($role,$userid,$companyid);
 
-         }
 
-         $sql = "select {$field} 
 
-                 from {$this->table} as W 
 
-                 left join project as P on W.projectid = P.id 
 
-                 left join (select * from (select envmonitorid as wid,max(updatetime) as time from envmonitor_info_log group by envmonitorid) as t1 left join envmonitor_info_log as t2 on t1.wid = t2.envmonitorid and t1.time = t2.updatetime) as WI on W.id = WI.envmonitorid where 1=1 ";
 
-         if(empty($projectIds)){
 
-             $sql .= " and W.projectid in (0)";
 
-         }else{
 
-             $sql .= " and W.projectid in ({$projectIds})";
 
-         }
 
-         if (isset($filter['keyword'])) {
 
-             if (!empty($filter['keyword'])) {
 
-                 $sql .= " and W.number like '%{$filter['keyword']}%'";
 
-             }
 
-             unset($filter['keyword']);
 
-         }
 
-         foreach ($filter as $key => $value) {
 
-             if (is_array($value)) {
 
-                 if (!empty($value)) {
 
-                     $ids = implode(',', $value);
 
-                     $sql .= " and $key in ({$ids})";
 
-                 }
 
-             }else{
 
-                 $sql .= " and $key=$value";
 
-             }
 
-         }
 
-         if (empty($type)) {
 
-             if (!empty($page) && !empty($limit)){
 
-                 $sql .= " LIMIT ".($page-1)*$limit.",".$limit;
 
-             }
 
-         }else{
 
-             if (!empty($page) && !empty($limit)){
 
-                 $sql .= " LIMIT ".$page.",".$limit;
 
-             }
 
-         }
 
-         $res = $this->db->query($sql);
 
-         $data = $res->result_array();
 
-         return $data;
 
-     }
 
-     public function getDataCount($condition, $id = 0) {
 
-         if (!empty($condition)){
 
-             foreach ($condition as $k => $v) {
 
-                 $this->db->where($k,$v);
 
-             }
 
-         }
 
-         if (!empty($id)) {
 
-             $this->db->where('id !=',$id); 
 
-         }  
 
-         $query = $this->db->get($this->table);
 
-         $data = $query->row_array();        
 
-         if (empty($data)) {
 
-             return 0;
 
-         } else { 
 
-             return $id == $data['id'] ? 0 : 1;
 
-         }
 
-     }
 
-     // 报表数据
 
-     public function reportData($id,$field,$begin_time,$end_time){
 
-         $sql = "select max({$field}) as max,min({$field}) as min,avg({$field}) as avg from envmonitor_info_log where updatetime<='{$end_time}' AND updatetime>='{$begin_time}' AND envmonitorid = {$id} group by envmonitorid";
 
-         $data = $this->db->query($sql)->row_array();
 
-         return $data;
 
-     }
 
-     public function getStartYear($id){
 
-         $sql = "select min(updatetime) as time from envmonitor_info_log where envmonitorid={$id}";
 
-         $data = $this->db->query($sql)->row_array();
 
-         if (empty($date['time'])) return date('Y');
 
-         return date('Y',strtotime($date['time']));
 
-     }
 
- }
 
- ?>
 
 
  |