db->select($fields)->where($where)->get($this->table)->row_array(); } // 通过网络编号判断网络是否存在 public function project_exist_by_name($project_id,$network_num){ if (empty($project_id) || empty($network_num)) return 0; $this->db->select('id'); $this->db->where('projectid',$project_id); $this->db->where('networkid',$network_num); $res = $this->db->get($this->table)->row_array(); if (empty($res)) { return 0; }else{ return $res['id']; } } public function get_list_in($where_in_field, $where_in, $fields='*', $filter=array()) { $this->db->select($fields); if(!empty($where_in_field) && !empty($where_in)){ $this->db->where_in($where_in_field, $where_in); } if (isset($filter['keyword']) && !empty($filter['keyword'])){ $networkNames = explode(",",$filter['keyword']); foreach ($networkNames as $name){ $this->db->or_like('networkname', $name); } unset($filter['keyword']); } foreach ($filter 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); } } $this->db->where('type',0); $query = $this->db->get($this->table); return $query->result_array(); } public function getIdsLikeName($name){ $this->db->select('id'); $this->db->like('networkname', $name); $query = $this->db->get($this->table); $arrNetwork = $query->result_array(); $ids = array(); foreach ($arrNetwork as $k=> $network) { $ids[] = $network['id']; } return $ids; } public function getIdByName($name){ $this->db->select('id'); $this->db->where('networkname', $name); $query = $this->db->get($this->table); $result = $query->row_array(); if (isset($result['id'])) { return $result['id']; } return false; } public function getList($filter,$page = null,$limit = null){ if (isset($filter['network']) && empty($filter['network'])){ unset($filter['network']); } if (isset($filter['network'])){ $sql_in = ""; if (isset($filter['keyword']) && !empty($filter['keyword'])){ $networkNames = explode(",",$filter['keyword']); $i = 0; foreach ($networkNames as $name){ $prefix = $i==0 ? " AND " : " OR "; $sql_in .= $prefix."N.networkname like '%{$name}%'"; $i++; } } if(isset($filter['status']) && $filter['status'] == 1){ $sql_in = " AND N.faultcount > 0"; } $sql_limit = ""; if(is_numeric($page) && is_numeric($limit)){ $sql_limit = " LIMIT ".($page-1)*$limit.",".$limit; } $sql = "SELECT N.* ,P.`projectname` as projectname FROM network AS N LEFT JOIN project AS P ON P.id = N.projectid WHERE N.id=".intval($filter['network']).$sql_in.$sql_limit; $query = $this->db->query($sql); return $query->result_array(); } if(isset($filter['keyword']) && empty($filter['keyword'])){ unset($filter['keyword']); } if (!empty($filter) && isset($filter['ids']) && count($filter) == 1){ $sql_in = ""; if (isset($filter['ids']) && !empty($filter['ids']) && is_array($filter['ids'])){ $sql_in = " N.id IN(".implode(',', $filter['ids']).") "; } $sql_limit = ""; if(is_numeric($page) && is_numeric($limit)){ $sql_limit = " LIMIT ".($page-1)*$limit.",".$limit; } $sql = "SELECT N.* ,P.`projectname` as projectname FROM network AS N LEFT JOIN project AS P ON P.id = N.projectid WHERE ".$sql_in.$sql_limit; $query = $this->db->query($sql); return $query->result_array(); } if (!empty($filter)){ foreach ($filter as $k => $v) { if($k == 'status' || $k == 'keyword'){ continue; } $this->db->where($k,$v); } } if ($this->session->userdata('role') == COMPANY_ADMIN) { $companyid = $this->session->userdata('company_id'); $this->db->where('company', $companyid); } if ($this->session->userdata('role') == COMPANY_CUSTOMER) { $this->load->model('User_model'); $user_project = $this->User_model->get_user_zone(); if ($user_project) { $projects = explode(',', $user_project); $this->db->where_in('id',$projects); } else { $this->db->where_in('id', array(0)); } } $this->db->select('*'); $query = $this->db->get('project'); $project = $query->result_array(); if (empty($project)){ return array(); } $Ids = array(); $projectNames = array(); foreach ($project as $v){ $Ids[] = $v['id']; $projectNames[$v['id']] = $v['projectname']; } $this->db->select('*'); $this->db->where_in('projectid',$Ids); if (isset($filter['keyword']) && !empty($filter['keyword'])){ $networkNames = explode(",",$filter['keyword']); foreach ($networkNames as $name){ $this->db->or_like('networkname', $name); } } if(isset($filter['status']) && $filter['status'] == 1){ $this->db->where('faultcount >',0); } $this->db->order_by("networkid","asc"); if(is_numeric($page) && is_numeric($limit)){ $this->db->limit($limit,($page-1)*$limit); } $query = $this->db->get($this->table); $arrRet = $query->result_array(); if (empty($arrRet)){ return array(); } foreach ($arrRet as $k => $v){ $arrRet[$k]['projectname'] = $projectNames[$v['projectid']]; } return $arrRet; } public function get_list_by_filter($filter, $order = true) { $this->db->select('id'); $this->db->select('networkid,networkname,gatewaytype'); if (!empty($filter)){ foreach ($filter as $k => $v) { $this->db->where($k,$v); } } if ($order) { $this->db->order_by("networkid","asc"); } $query = $this->db->get($this->table); $arrRet = $query->result_array(); // var_dump($this->db->last_query());die; if (empty($arrRet)){ return array(); } return $arrRet; } public function getTotalByProject($projectid){ $this->db->select('count(*) as total'); $this->db->where('projectid',$projectid); $this->db->where('type',0); $data = $this->db->get($this->table)->row_array(); return $data['total']; } public function getTotal($filter, $role, $companyid, $userid = 0){ if(isset($filter['network'])){ $this->db->where('id',intval($filter['network'])); if (isset($filter['keyword']) && !empty($filter['keyword'])){ $networkNames = explode(",",$filter['keyword']); foreach ($networkNames as $name){ $this->db->or_like('networkname', $name); } } $query = $this->db->get($this->table); $ret = $query->row_array(); return !empty($ret) ? 1 : 0; } if (!empty($filter)){ if (isset($filter['ids']) && !empty($filter['ids']) && is_array($filter['ids'])){ $this->db->where_in('id',$filter['ids']); unset($filter['ids']); } foreach ($filter as $k => $v) { if(in_array($k, array('status','keyword','nw_status','projectid'))){ continue; } $this->db->where($k,$v); } } $projectIds = $this->get_projectid_by_role($role,$userid,$companyid); $Ids = empty($projectIds) ? array(0) : explode(',', $projectIds); $this->db->select('count(id) as total'); $this->db->where_in('projectid',$Ids); if (isset($filter['keyword']) && !empty($filter['keyword'])){ $networkNames = explode(",",$filter['keyword']); foreach ($networkNames as $name){ $this->db->or_like('networkname', $name); } } if(isset($filter['status']) && $filter['status'] == 1){ $this->db->where('faultcount >',0); } if (isset($filter['nw_status']) && !empty($filter['nw_status'])){ $this->db->where('status',$filter['nw_status']); } if (isset($filter['projectid']) && !empty($filter['projectid'])){ $this->db->where('projectid',$filter['projectid']); } $query = $this->db->get($this->table); $arr = $query->row_array(); return $arr['total']; } // 通过筛选条件删除网络 public function delData($condition) { if (!empty($condition)){ foreach ($condition as $k => $v) { if (is_array($v)) { if (!empty($v)) { $this->db->where_in($k,$v); }else{ $this->db->where_in($k,array(0)); } }else{ $this->db->where($k,$v); } } }else{ return false; } $this->db->delete($this->table); if ($this->db->affected_rows() > 0) { return true; } else { return false; } } public function getBatch($ids){ $this->db->where_in('id',$ids); $query = $this->db->get($this->table); $ret = $query->result_array(); if (empty($ret)){ return array(); } return $ret; } public function delBatch($data, $field = 'id'){ $this->db->where_in($field,$data); $this->db->delete($this->table); if ($this->db->affected_rows()) { return true; } else { return false; } } // 更新网络信息 public function update($filter,$data){ if (empty($filter)){ return false; } $sql = "SELECT `projectid`, `company` FROM `project` WHERE id = {$data['projectid']}"; $query = $this->db->query($sql); $project = $query->row_array(); $sql = "SELECT `ename` FROM `company` WHERE id = {$project['company']}"; $query = $this->db->query($sql); $company = $query->row_array(); $data['regpack'] = 'register-'.$company['ename'].'-'.$project['projectid'].'-'.$data['networkid']; $sql = $this->db->update_string($this->table,$data,$filter); return $this->db->query($sql); } public function insert($data){ $sql = "SELECT `projectid`, `company` FROM `project` WHERE id = {$data['projectid']}"; $query = $this->db->query($sql); $project = $query->row_array(); $sql = "SELECT `ename` FROM `company` WHERE id = {$project['company']}"; $query = $this->db->query($sql); $company = $query->row_array(); $data['regpack'] = 'register-'.$company['ename'].'-'.$project['projectid'].'-'.$data['networkid']; $this->db->insert($this->table, $data); return $this->db->insert_id(); } 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 getData($condition, $fields = '*') { $this->db->select($fields); if (!empty($condition)){ foreach ($condition as $k => $v) { $this->db->where($k,$v); } } $query = $this->db->get($this->table); $data = $query->row_array(); return $data; } // 添加路灯数 public function add_lamp_count($data){ $sql = "update `network` set `lampcount` = `lampcount` + 1, `faultcount` = `faultcount` + {$data['faultcount']} WHERE `id`={$data['networkid']}"; $this->db->query($sql); if ($this->db->affected_rows() == 1) { return true; } else { return false; } } // 减少路灯数 public function minus_lamp_count($data){ $sql = "update `network` set `lampcount` = `lampcount` - 1, `faultcount` = `faultcount` - {$data['faultcount']} WHERE `id`={$data['networkid']} and `lampcount` >= 1 and `faultcount` >= {$data['faultcount']}"; $this->db->query($sql); if ($this->db->affected_rows() == 1) { return true; } else { return false; } } // 添加监控数 public function add_monitor_count($data){ $sql = "update `network` set `monitorcount` = `monitorcount` + {$data['count']} WHERE `id`={$data['networkid']}"; $this->db->query($sql); if ($this->db->affected_rows() == 1) { return true; } else { return false; } } // 减少监控数 public function minus_monitor_count($data){ $sql = "update `network` set `monitorcount` = `monitorcount` - {$data['count']} WHERE `id`={$data['networkid']} and `monitorcount` >= {$data['count']}"; $this->db->query($sql); if ($this->db->affected_rows() == 1) { return true; } else { return false; } } public function getIdByLikeName($name){ $sql = "SELECT id FROM network WHERE networkname LIKE '%".$name."%'"; $query = $this->db->query($sql); $arr = $query->row_array(); if (!empty($arr)){ return $arr['id']; } return false; } public function getNameById($id, $field = 'networkname'){ $this->db->where('id',$id); $query = $this->db->get($this->table); $arr = $query->row_array(); return !empty($arr) ? $arr[$field] : 0; } public function minus_fault_count($id){ $sql = "update `network` set `faultcount` = `faultcount` - 1 WHERE `id`= {$id} and `faultcount` >= 1"; $this->db->query($sql); if ($this->db->affected_rows() == 1) { return true; } else { return false; } } }