123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- <?php
- if (!defined('BASEPATH'))exit('No direct script access allowed');
- include_once(FCPATH . 'application/models/Base_model.php');
- class Patrol_model extends Base_model {
- protected $table = 'patrol_cmd';
- public function __construct() {
- parent::__construct();
- }
- public function get_list_in($field, $array, $fields='*') {
- // $sql =
-
- if(!empty($field) && !empty($array)){
- // $this->db->where_in($field, $array);
- $s = implode(',', $array);
- $where = "{$field} in ({$s})";
- }else{
- return array();
- }
- // $this->db->select($fields);
- $query = "select {$fields} FROM {$this->table} where {$where}";
- $data = $this->db->query($query);
- return $data->result_array();
- }
-
- public function queryData($start,$offset){
- $this->db->order_by("id","DESC");
- $query = $this->db->get($this->table);
- return $query->result_array();
- }
-
- public function getList($role,$companyid,$projectid,$userid,$filter,$field = '*',$page = null,$limit = null,$type = 0){
-
- $sql_in = array();
- // if (isset($filter['keyword']) && !empty($filter['keyword'])){
- // $lampIds = explode(",",$filter['keyword']);
- // $arrIds = array();
- // foreach ($lampIds as $id){
- // if(is_numeric($id) && !empty($id)){
- // $arrIds[] = trim($id);
- // }
- // }
- // if(!empty($arrIds)){
- // $sql_in_ids = implode(',',$arrIds);
- // $sql_in =" AND L.number IN (".$sql_in_ids.")";
- // }
- // }
- if ($projectid > 0) {
- $sql_in[] = "L.projectid = {$projectid}";
- } elseif ($role != SYSTEM_ADMIN) {
- $idStr = $this->get_projectid_by_role($role,$userid,$companyid);
- if (!empty($idStr)) {
- $sql_in[] = "L.projectid in ({$idStr})";
- }else{
- $sql_in[] = "L.projectid in (0)";
- }
- }
- if (isset($filter['keyword']) && !empty($filter['keyword'])){
- $sql_in[] ="(L.number like '%".$filter['keyword']."%' OR N.networkname like '%".$filter['keyword']."%' OR P.projectname like '%".$filter['keyword']."%')";
- }
- // var_dump($filter['status']);die;
- if(isset($filter['status']) && $filter['status'] == 1){
- $sql_in[] = "AI.status = 0 ";
- }
- if(isset($filter['section']) && !empty($filter['section'])){
- $sql_in[] = "L.section = '".$filter['section']."' ";
- }
-
- $sql_limit = "";
- if (empty($type) && $limit < 1000) {
- if(is_numeric($page) && is_numeric($limit)){
- $sql_limit = " LIMIT ".($page-1)*$limit.",".$limit;
- }
- }else{
- if(is_numeric($page) && is_numeric($limit)){
- $sql_limit = " LIMIT ".$page.",".$limit;
- }
- }
-
- $where = '';
- if (!empty($sql_in)) {
- $where = 'WHERE '.implode(' AND ', $sql_in);
- }
- $sql = "SELECT
- {$field} FROM lampinfo AS L
- LEFT JOIN project AS P ON P.id = L.projectid
- LEFT JOIN network AS N ON N.id = L.networkid
- LEFT JOIN (SELECT * FROM ".$this->table." ORDER BY updatetime DESC) AS cmd ON L.id = cmd.id
- LEFT JOIN (select t1.* from alarm_info_log t1, (select lampid, max(updatetime) as maxtime from alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) as AI on AI.lampid = L.id
- {$where} order by L.number asc, L.id asc {$sql_limit}";
-
- $query = $this->db->query($sql);
- return $query->result_array();
- }
-
- public function getTotal($role,$companyid,$projectid,$userid,$filter){
- $sql_in = array();
- // if (isset($filter['keyword']) && !empty($filter['keyword'])){
- // $lampIds = explode(",",$filter['keyword']);
- // $arrIds = array();
- // foreach ($lampIds as $id){
- // if(is_numeric($id) && !empty($id)){
- // $arrIds[] = trim($id);
- // }
- // }
- // if(!empty($arrIds)){
- // $sql_in_ids = implode(',',$arrIds);
- // $sql_in =" AND L.number IN (".$sql_in_ids.")";
- // }
- // }
- if ($projectid > 0) {
- $sql_in[] = "L.projectid = {$projectid}";
- } elseif ($role != SYSTEM_ADMIN) {
- $idStr = $this->get_projectid_by_role($role,$userid,$companyid);
- if (!empty($idStr)) {
- $sql_in[] = "L.projectid in ({$idStr})";
- }else{
- $sql_in[] = "L.projectid in (0)";
- }
- }
- if (isset($filter['keyword']) && !empty($filter['keyword'])){
- $sql_in[] ="L.number like '%".$filter['keyword']."%'";
- $sql_in[] ="N.networkname like '%".$filter['keyword']."%'";
- $sql_in[] ="P.projectname like '%".$filter['keyword']."%'";
- }
- if(isset($filter['status']) && $filter['status'] == 1){
- $sql_in[] = "AI.status = 0 ";
- }
- if(isset($filter['section']) && !empty($filter['section'])){
- $sql_in[] = "L.section = '".$filter['section']."' ";
- }
- // $sql_limit = "";
- // if(is_numeric($page) && is_numeric($limit)){
- // $sql_limit = " LIMIT ".($page-1)*$limit.",".$limit;
- // }
-
- $where = '';
- if (!empty($sql_in)) {
- $where = 'WHERE '.implode(' AND ', $sql_in);
- }
- $sql = "SELECT
- count(L.id) as total FROM lampinfo AS L
- LEFT JOIN project AS P ON P.id = L.projectid
- LEFT JOIN network AS N ON N.id = L.networkid
- LEFT JOIN (SELECT * FROM ".$this->table." ORDER BY updatetime DESC) AS cmd ON L.id = cmd.id
- LEFT JOIN (select t1.* from alarm_info_log t1, (select lampid, max(updatetime) as maxtime from alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) as AI on AI.lampid = L.id
- {$where} order by L.number asc, L.id asc";
- // (select t1.* from alarm_info_log t1, (select lampid, max(updatetime) as maxtime from alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) as AI on AI.lampid = L.id
- // (SELECT * FROM alarm_info_log as t1 JOIN (SELECT max(updatetime) as time,lampid FROM alarm_info_log GROUP BY lampid) as t2 on t1.lampid = t2.lampid AND t1.updatetime = t2.time) as AI on AI.lampid = L.id
- $data = $this->db->query($sql)->row_array();
- return $data['total'];
- }
-
- // 通过角色获取巡检信息列表
- public function getPatrolInfoList($filter,$role,$userid,$companyid,$field = '*',$page = null,$limit = null,$projectid=0){
- if ($projectid > 0 ) {
- $projectIds = $projectid;
- }else{
- $projectIds = $this->get_projectid_by_role($role,$userid,$companyid);
- $projectIds = empty($projectIds) ? '0' : $projectIds;
- }
- $sql = "SELECT {$field}
- FROM patrol_info_log AS PIL
- LEFT JOIN network AS N ON PIL.networkid=N.id
- LEFT JOIN project AS P ON N.projectid=P.id
- WHERE P.id IN(".$projectIds.")" ;
-
- if (isset($filter['keyword'])) {
- $sql .= " AND (N.networkname like '%{$filter['keyword']}%'";
- $sql .= " or PIL.patroltime like '%{$filter['keyword']}%'";
- $sql .= " or N.section like '%{$filter['keyword']}%')";
- unset($filter['keyword']);
- }
- $limit_sql = "";
- if ($page != null && $limit != null){
- $limit_sql = " LIMIT ".($page-1)*$limit.",".$limit;
- }
-
- $query = $sql." ORDER BY patroltime DESC ".$limit_sql;
- $query = $this->db->query($query);
- return $query->result_array();
- }
-
- // 通过角色获取巡检信息数目
- public function getPatrolInfoTotal($filter,$role,$userid,$companyid,$projectid=0){
- if ($projectid > 0 ) {
- $projectIds = $projectid;
- }else{
- $projectIds = $this->get_projectid_by_role($role,$userid,$companyid);
- $projectIds = empty($projectIds) ? '0' : $projectIds;
- }
-
- $sql = "SELECT COUNT(*) AS total
- FROM patrol_info_log as PIL
- left join network as N on PIL.networkid = N.id
- left join project as P on P.id = N.projectid
- WHERE P.id IN('".$projectIds."')" ;
-
- if (isset($filter['keyword'])) {
- $sql .= " AND (N.networkname like '%{$filter['keyword']}%'";
- $sql .= " or PIL.patroltime like '%{$filter['keyword']}%'";
- $sql .= " or N.section like '%{$filter['keyword']}%')";
- unset($filter['keyword']);
- }
- $query = $this->db->query($sql);
- $row = $query->row_array();
- return $row['total'];
- }
-
- public function getNetworkIds($filter){
-
- foreach ($filter as $k => $v) {
- if(in_array($k, array('company','zone','province'))){
- $this->db->where($k,$v);
- }elseif ($k == 'projectid'){
- $this->db->where('id',$v);
- }elseif ($k == 'projectname'){
- $this->db->like('projectname', $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));
- }
- }
-
- $projectIds = array(0);
- $this->db->select('id');
- $query = $this->db->get('project');
- $project = $query->result_array();
- foreach ($project as $v){
- $projectIds[] = $v['id'];
- }
-
- // 查询networkIds
- $networkIds = array(0);
-
- if (isset($filter['networkid'])){
- $this->db->where('id',$filter['networkid']);
- }elseif (isset($filter['networkname'])){
- $this->db->like('networkname', $filter['networkname']);
- }
-
- $this->db->where_in('projectid', $projectIds);
- $this->db->select('id');
- $query = $this->db->get('network');
- $networks = $query->result_array();
- foreach ($networks as $v){
- $networkIds[] = $v['id'];
- }
-
- return $networkIds;
- }
- }
- ?>
|