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'])); } } ?>