DESKTOP-9JTA2JJ\HP 5 年之前
父節點
當前提交
360ab01e4f

+ 41 - 62
api/application/controllers/Alarm.php

@@ -16,6 +16,7 @@ class Alarm extends Base_Controller {
 	// 获取告警信息列表
 	public function get(){
 		$filter = array();
+		$where = array('1=1');
 		$role = $this->get_user_info('role');
 		$user_id = $this->get_user_info('id');
 		$lampid = $this->input->post('lampid',true);
@@ -47,14 +48,14 @@ class Alarm extends Base_Controller {
 		}
 
 		$page = !isset($page) ? 1 : $page;
-		$count = empty($count) ? 20 : $count;
+		$limit = empty($count) ? 20 : $count;
+		$offset = ($page - 1)*$count;
 		$section = $this->input->post('section',true);
 
 		if (!empty($section)) $filter['section'] = $section;
 		if (!empty($lampid)) $filter['lampid'] = $lampid;
 		if (!empty($keyword)) $filter['keyword'] = $keyword;
 		if (!empty($projectid)) $filter['projectid'] = $projectid;
-		if($type >= 0) $filter['type'] = $type;
 		if(!isset($lampid) && isset($status) && $status >= 0) $filter['status'] = $status;
 		if ($type == 0) {
 			$filter['status'] = empty($filter['status']) ? 0 : $filter['status'];
@@ -64,81 +65,59 @@ class Alarm extends Base_Controller {
 		if(isset($startDate)) $filter['startDate'] = $startDate;
 
 		if (empty($download)) {
-			if (isset($print) && !empty($print)) {
-				$alarm = $this->Alarm_model->getList($filter, $role, $user_id, $page, $count,1);
+			if (empty($type)) {
+				$join = array();
+				$join[] = ['table'=>'(select lampid,max(updatetime) as maxTime from warning_info_log group by lampid) as WI','cond'=>'WI.lampid = AI.lampid AND WI.maxTime = AI.updatetime','type'=>'inner'];
+				$join[] = ['table'=>'lampinfo as L','cond'=>'L.id = AI.lampid','type'=>'inner'];
+				$join[] = ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'inner'];
+				$join[] = ['table'=>'global_location as G','cond'=>'G.id = P.cityid','type'=>'inner'];
+				$where[] = '(AI.batstatus != 0 OR AI.panelstatus != 0 OR AI.lampstatus != 0 OR AI.tempstatus != 0)';
+				$where = implode(' AND ', $where);
+				$alarm = $this->Alarm_model->get_list_by_join($where, 'AI.batstatus,AI.panelstatus,AI.lampstatus,AI.tempstatus,AI.status,AI.updatetime,G.timezone,L.number,P.projectname as project,AI.id',$limit, $offset, $join, 'AI.updatetime DESC,id DESC', NUll, 'AI');
+				$total = $this->Alarm_model->get_list_by_multi_join($where, 'count(*) as total',null, null, $join, null, NUll, 'AI',true);
+				$total = $total['total'];
+				// $alarm = $this->Alarm_model->getList($filter, $role, $user_id, $page, $count,1);
 			}else{
-				$alarm = $this->Alarm_model->getList($filter, $role, $user_id, $page, $count);
+				$join = array();
+				// $join[] = ['table'=>'(select lampid,max(updatetime) as maxTime from warning_info_log group by lampid) as WI','cond'=>'WI.lampid = AI.lampid AND WI.maxTime = AI.updatetime','type'=>'inner'];
+				$join[] = ['table'=>'lampinfo as L','cond'=>'L.id = AI.lampid','type'=>'inner'];
+				$join[] = ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'inner'];
+				$join[] = ['table'=>'global_location as G','cond'=>'G.id = P.cityid','type'=>'inner'];
+				$where[] = '(AI.batstatus != 0 OR AI.panelstatus != 0 OR AI.lampstatus != 0 OR AI.tempstatus != 0)';
+				$where = implode(' AND ', $where);
+				$alarm = $this->Alarm_model->get_list_by_join($where, 'AI.batstatus,AI.panelstatus,AI.lampstatus,AI.tempstatus,AI.status,AI.updatetime,G.timezone,L.number,P.projectname as project,AI.id',$limit, $offset, $join, 'AI.updatetime DESC,id DESC', NUll, 'AI');
+				$total = $this->Alarm_model->get_list_by_multi_join($where, 'count(*) as total',null, null, $join, null, NUll, 'AI',true);
+				$total = $total['total'];
 			}
 			
-			$total = $this->Alarm_model->getDataCount($filter, $role, $user_id);
 			$alarm = empty($alarm) ? array() : $alarm;
 
-			foreach($alarm as &$v){
-				// if (empty($projectid)) {
-				// 	$lampData = $this->Lamp_model->getOne($v['lampid'],'L.projectid');
-				// 	$projectid = $lampData['projectid'];
-				// }
-				// $timezone = $this->Project_model->get_timezone_by_projectid($projectid);
-				// if (!empty($v['updatetime'])) {
-				// 	$v['updatetime'] = date_change($v['updatetime'],8,$timezone['value']);
-				// }
-	
-				if (empty($version)) {
-					$v['statusStr'] = empty($v['status']) && $v['isfaulted'] == 1 ? '未处理' : '已处理';
-					$stralarmtype = trim($v['stralarmtype']);
-	                if (!empty($stralarmtype)) {
-	                    $alarmArr = explode(',', $stralarmtype);
-	                    $temp = array();
-	                    foreach ($alarmArr as $a) {
-	                    	if ($a == '电池故障') {
-	                            $a = '电池电压异常';
-	                        }
-	                        $temp[] = $a;
-	                    }
-	                    $v['stralarmtype'] = implode(',', $temp);
-	                }
-				}else{
-					$v['statusStr'] = empty($v['status']) && $v['isfaulted'] == 1 ? 'Untreated' : 'Already processed';
 
-					$stralarmtype = trim($v['stralarmtype']);
-	                if (!empty($stralarmtype)) {
-	                    $alarmArr = explode(',', $stralarmtype);
-	                    $temp = array();
-	                    foreach ($alarmArr as $a) {
-	                    	if ($a == '电池故障') {
-	                            $a = '电池电压异常';
-	                        }
-	                        if ($v['lampprotocoltype'] == 1) {
-	                        	$temp[] = modbus_alarm_translate($a);
-	                        }else{
-	                        	$temp[] = alarm_translate($a);
-	                        }
-	                    }
-	                    $v['stralarmtype'] = implode('.', $temp);
-	                }
-				}
+			$batstatus = $this->config->item('batstatus');
+	        $panelstatus = $this->config->item('panelstatus');
+	        $lampstatus = $this->config->item('lampstatus');
+	        $tempstatus = $this->config->item('tempstatus');
+	        
+			foreach($alarm as &$value){
+
+				$temp2 = array();
+		        if (isset($batstatus[$value['batstatus']])) $temp2[] = $batstatus[$value['batstatus']];
+		        if (isset($panelstatus[$value['panelstatus']])) $temp2[] = $panelstatus[$value['panelstatus']];
+		        if (isset($lampstatus[$value['lampstatus']])) $temp2[] = $lampstatus[$value['lampstatus']];
+		        if (isset($tempstatus[$value['tempstatus']])) $temp2[] = $tempstatus[$value['tempstatus']];
+		        $value['stralarmtype'] = implode(',', $temp2);
+		        $value['updatetime'] = set_timezone($value['updatetime'],$value['timezone']);
 			}
 			$data = array('history_list'=>$alarm, 'total'=>ceil($total/$count));
 			if (empty($type)) {
 				$filter['status'] = 0;
-				$data['fault'] = $this->Alarm_model->getDataCount($filter, $role, $user_id);
+				$filter['fault'] = 0;
+				// $data['fault'] = $this->Alarm_model->getDataCount($filter, $role, $user_id);
 			}
 			exit(json_result('0000', $this->response['0000'], array('list'=>$data)));
 		}else{
 			$alarm = $this->Alarm_model->getList($filter, $role, $user_id, ($page-1)*$count, 3000);
 			$alarm = empty($alarm) ? array() : $alarm;
-			// if (!empty($projectid)) {
-			// 	foreach($alarm as &$v){
-			// 		if (empty($projectid)) {
-			// 			$lampData = $this->Lamp_model->getOne($v['lampid'],'L.projectid');
-			// 			$projectid = $lampData['projectid'];
-			// 		}
-			// 		$timezone = $this->Project_model->get_timezone_by_projectid($projectid);
-			// 		if (!empty($v['updatetime'])) {
-			// 			$v['updatetime'] = date_change($v['updatetime'],8,$timezone['value']);
-			// 		}
-			// 	}
-			// }
 			// 导出到Excel
 			if (empty($version)) {
 				$title = array(

+ 25 - 0
api/application/controllers/Home.php

@@ -618,4 +618,29 @@ class Home extends Base_Controller {
 
         exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
     }
+
+    // 告警状态下拉列表
+    public function alarm_type_list(){
+        $version = $this->session->userdata('version');
+        
+        $batstatus = $this->config->item('batstatus');
+        $panelstatus = $this->config->item('panelstatus');
+        $lampstatus = $this->config->item('lampstatus');
+        $tempstatus = $this->config->item('tempstatus');
+        $list = array();
+        foreach ($batstatus as $key => $value) {
+            $list[] = ['name'=>$value,'value'=>'1'.$key];
+        }
+
+        foreach ($panelstatus as $key => $value) {
+            $list[] = ['name'=>$value,'value'=>'2'.$key];
+        }
+        foreach ($lampstatus as $key => $value) {
+            $list[] = ['name'=>$value,'value'=>'3'.$key];
+        }
+        foreach ($tempstatus as $key => $value) {
+            $list[] = ['name'=>$value,'value'=>'4'.$key];
+        }
+        exit(json_result('0000',$this->response['0000'],$list));
+    }
 }

+ 5 - 4
api/application/controllers/Repair.php

@@ -57,7 +57,7 @@ class Repair extends Base_Controller
 	public function near_repair_list(){
 		$role = $this->get_user_info('role');
 		$userid = $this->get_user_info('id');
-		$companyid = $this->get_user_info('companyid');
+		$company = $this->get_user_info('company');
 
 		// 设置需要获取的字段
 		$field = "P.projectname as project_name,
@@ -69,11 +69,12 @@ class Repair extends Base_Controller
 				  R.created as createtime";
 
 		// 获取维修列表数据
-		$data = $this->Repair_model->get_list_by_role(array(),$role,$userid,$companyid,0,$field,1,10);
+		// $data = $this->Repair_model->get_list_by_role(array(),$role,$userid,$company,0,$field,1,10);
 
 		// 获取维修人员总数
-		$total = $this->Repair_model->get_repair_user_total(array('id'=>$userid,'role'=>$role));
-		exit(json_result('0000',$this->response['0000'],array('repair_list'=>$data,'total'=>$total)));
+		// $total = $this->Repair_model->get_repair_user_total(array('id'=>$userid,'role'=>$role));
+		// exit(json_result('0000',$this->response['0000'],array('repair_list'=>$data,'total'=>$total)));
+		exit(json_result('0000',$this->response['0000'],array('repair_list'=>array(),'total'=>0)));
 	}
 
 	// 维修人员列表

+ 4 - 4
api/application/controllers/Report.php

@@ -451,7 +451,7 @@ class Report extends Base_Controller {
     public function home(){
         $role = $this->get_user_info('role');
         $userid = $this->get_user_info('id');
-        $companyid = $this->get_user_info('companyid');
+        $company = $this->get_user_info('company');
         $download = $this->input->post('download',true);
 
         $keyword = $this->input->post('keyword',true);
@@ -469,7 +469,7 @@ class Report extends Base_Controller {
         $projectid = $this->input->post('projectid', true);
         // 以项目为单位获取发用电量
         if ($type == 'power' && empty($projectid)) {
-            $projectData = $this->Project_model->get_projectid($role,$userid,$companyid,$page,$count,$keyword);
+            $projectData = $this->Project_model->get_projectid($role,$userid,$company,$page,$count,$keyword);
             $item_ids = $projectData['idArr'];
             $result = array();
             foreach ($item_ids as $key => $value) {
@@ -485,7 +485,7 @@ class Report extends Base_Controller {
 
         if (empty($projectid)) {  // 没有传项目id
             $show_type = 'project';
-            $item_ids = $this->Lamp_model->get_projectid_by_role($role,$userid,$companyid);
+            $item_ids = $this->Lamp_model->get_projectid_by_role($role,$userid,$company);
             $item_ids_arr = empty($item_ids) ? array(0) : explode(",", $item_ids);
             
         }else{  // 有传项目id
@@ -507,7 +507,7 @@ class Report extends Base_Controller {
         }
     
         // 获取项目下对应的路灯列表
-        $list = $this->Lamp_model->report_get_list_in('L.projectid', $item_ids_arr, 'L.id as id, L.number as name,P.projectname,N.networkname,L.projectid,L.section',$fiter); 
+        $list = $this->Lamp_model->report_get_list_in('L.projectid', $item_ids_arr, 'L.id as id, L.number as name,P.projectname,L.projectid,L.section',$fiter); 
         // var_dump($list);
         $function = 'get'.ucfirst($type).'DataByFilter';
         $result = array();

+ 1 - 1
api/application/models/Alarm_model.php

@@ -3,7 +3,7 @@ if (!defined('BASEPATH'))exit('No direct script access allowed');
 include_once(FCPATH . 'application/models/Base_model.php');
 class Alarm_model extends Base_model {
 
-    protected $table = 'alarm_info_log';
+    protected $table = 'warning_info_log';
 
     public function __construct() {
         parent::__construct();

+ 5 - 5
api/application/models/Lamp_model.php

@@ -153,9 +153,9 @@ class Lamp_model extends Base_model {
             }
         }
 
-		if(isset($filter['networkid']) && !empty($filter['networkid'])){
-			$this->db->where('L.networkid', $filter['networkid']);
-		}
+		// if(isset($filter['networkid']) && !empty($filter['networkid'])){
+		// 	$this->db->where('L.networkid', $filter['networkid']);
+		// }
         
         if (isset($filter['keyword']) && !empty($filter['keyword'])){
 			$this->db->like('L.number', $filter['keyword']);
@@ -169,9 +169,9 @@ class Lamp_model extends Base_model {
     
         $this->db->from($this->table.' as L');
         $this->db->join('project as P', 'L.projectid = P.id', 'left');
-		$this->db->join('network as N', 'L.networkid = N.id', 'left');
+		// $this->db->join('network as N', 'L.networkid = N.id', 'left');
         // $this->db->join('(select lampid,max(updatetime) as updatetime from lamp_info_log group by lampid) as LI', 'L.id = LI.lampid', 'left');
-        $this->db->order_by("L.number ASC,N.networkname ASC");
+        $this->db->order_by("L.number ASC");
         if(!empty($filter['page']) && !empty($filter['count'])){
         	$this->db->limit($filter['count'],($filter['page']-1)*$filter['count']);
 		}