Files

748 lines
26 KiB
PHP

<?php
session_start();
if( !defined('IN') ) die('bad request!');
include_once( AROOT . 'controller' . DS . 'app.class.php');
header("Content-Type: text/html; charset=utf-8");
class big_screenController extends appController
{
public function __construct(){
parent::__construct();
}
// 发送错误结果集
public function send_error($number,$msg)
{
$obj = array();
$obj['code'] = intval($number);
$obj['result'] = $msg;
if( g('API_EMBED_MODE') == 1 ){
return json_encode($obj);
}else{
header("Content-Type: application/json");
die(json_encode($obj));
}
}
//发送结果集
public function send_result($data)
{
$obj = array();
$obj['code'] = 0;
$obj['result'] = 'success';
$obj['data'] = $data;
if( g('API_EMBED_MODE') == 1 ){
return json_encode($obj);
}else{
header("Content-Type: application/json");
die(json_encode($obj));
}
}
/**
* 返回首页列表
*/
public function big_screen_device()
{
$token = $_SESSION['token'];
if(v('id')==null){
$sql = prepare("select project_id from user where token = ?s limit 1",array($token));
$project_id = get_var($sql);
if($project_id == 1){
header("Location:?c=big_screen&a=big_screen_device&id=1&did=1037");
}elseif($project_id == 3){
header("Location:?c=big_screen&a=big_screen_device&id=69&did=1043");
}elseif($project_id == 2){
header("Location:?c=big_screen&a=big_screen_device&id=7&did=7");
}
}else{
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select id,name,register_address as address,if(status=1,'在线','离线') as status,f_did,svg_type from device where status = 1 order by CONVERT(name USING gbk)";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select id,name,register_address as address,if(status=1,'在线','离线') as status,f_did,svg_type from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1) order by CONVERT(name USING gbk)",array($token));
}
$svg_type = get_var("select svg_type from device where id=".v('id')." limit 1");
$result = get_data($sql);
$data['device_list']=$result;
$data['svg_type']=$svg_type==null?1:$svg_type;
render($data, 'web', 'big_screen_device');
}
}
public function big_screen_device2()
{
$token = $_SESSION['token'];
if(v('id')==null){
$sql = prepare("select project_id from user where token = ?s limit 1",array($token));
$project_id = get_var($sql);
if($project_id == 1){
header("Location:?c=big_screen&a=big_screen_device2&id=1&did=1037");
}elseif($project_id == 3){
header("Location:?c=big_screen&a=big_screen_device2&id=69&did=1043");
}elseif($project_id == 2){
header("Location:?c=big_screen&a=big_screen_device2&id=7&did=7");
}
}else{
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select id,name,register_address as address,if(status=1,'在线','离线') as status,f_did,svg_type from device where status = 1 order by CONVERT(name USING gbk)";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select id,name,register_address as address,if(status=1,'在线','离线') as status,f_did,svg_type from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1) order by CONVERT(name USING gbk)",array($token));
}
$svg_type = get_var("select svg_type from device where id=".v('id')." limit 1");
$result = get_data($sql);
$data['device_list']=$result;
$data['svg_type']=$svg_type==null?1:$svg_type;
render($data, 'web', 'big_screen_device2');
}
}
/*
*
* 获取登录用户的权限
*/
public function getUserRole($token)
{
$sql = prepare("select role_id from user where token = ?s limit 0,1",array($token));
$role_id = get_var($sql);
return $role_id;
}
// 获取设备列表
public function getBigScreenDeviceList()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select id,name,register_address as address,if(status=1,'在线','离线') as status from device where status = 1";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select id,name,register_address as address,if(status=1,'在线','离线') as status from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
}
$result = get_data($sql);
return self::send_result($result);
}
// 设备运行详情
public function getBigScreenDeviceRunInfo()
{
$device_id = $_GET['id'];
// 累计调控次数
$sql = prepare("select action_all_count from data where device_id = ?i order by id desc limit 1",array($device_id));
$result['action_all_count'] = get_var($sql) == null ? 0 : get_var($sql);
$sql_1 = prepare("select count(*) from warn where device_id = ?i",array($device_id));
$result['warn_count'] = get_var($sql_1) == null ? 0 : get_var($sql_1);
return self::send_result($result);
}
// 设备当前情况
public function getBigScreenDeviceRunCurrentInfo()
{
$device_id = $_GET['id'];
$sql = prepare("select main_sewage_pump,standby_sewage_pump,main_rain_pump,gate_up,gate_down,automatic_status from data where device_id = ?i order by id desc limit 1",array($device_id));
$data= get_line($sql);
if($data['main_sewage_pump']==1)
{
$data['main_sewage_pump']='开启';
}
elseif($data['main_sewage_pump']==2)
{
$data['main_sewage_pump']='关闭';
}
else
{
$data['main_sewage_pump']='报警';
}
if($data['standby_sewage_pump']==1)
{
$data['standby_sewage_pump']='开启';
}
elseif($data['standby_sewage_pump']==2)
{
$data['standby_sewage_pump']='关闭';
}
else
{
$data['standby_sewage_pump']='报警';
}
if($data['main_rain_pump']==1)
{
$data['main_rain_pump']='开启';
}
elseif($data['main_rain_pump']==2)
{
$data['main_rain_pump']='关闭';
}
else
{
$data['main_rain_pump']='报警';
}
if($data['gate_up'] == 1)
{
$data['gate_status'] = '上升';
}
else
{
if($data['gate_down'] == 1)
{
$data['gate_status'] = '下降';
}
else
{
$data['gate_status'] = '停止';
}
}
if($data['gate_up']==1){$data['gate_up']='闸门上升';}else{$data['gate_up']='闸门停止上升';}
if($data['gate_down']==1){$data['gate_down']='闸门下降';}else{$data['gate_down']='闸门停止下降';}
if($data['automatic_status']==1){$data['automatic_status']='自动模式';}else{$data['automatic_status']='手动模式';}
$sql_1 = prepare("select name from strategy where id = (select strategy_id from device where id = ?i limit 1)",array($device_id));
$data['strategy'] = get_var($sql_1);
return self::send_result($data);
}
// 事件列表
public function getBigScreenDeviceEventList()
{
$device_id = $_GET['id'];
$sql = prepare("select device_id,event,event_time from event where device_id = ?i order by id desc limit 10",array($device_id));
$data = get_data($sql);
if(!empty($data))
{
for ($i=0; $i < count($data); $i++)
{
$sql_1 = prepare("select terminal.name from device left join terminal on terminal.id = device.terminal_id where device.id = ?i limit 1",array($data[$i]['device_id']));
$terminal_name = get_var($sql_1);
$result[$i]['terminal_name'] = $terminal_name;
$result[$i]['event'] = $data[$i]['event'];
$result[$i]['event_time'] = $data[$i]['event_time'];
}
}else
{
$result = false;
}
return self::send_result($result);
}
// 历史数据
public function getBigScreenHospitalDataList()
{
$device_id = $_GET['id'];
$sql = prepare("select voltage_a_data,voltage_b_data,voltage_c_data,current_total_useful_power_data,elec_conductivity_tds_data,rainfall_data,rainsnow,level_data,ph_data,ammonia_data,created_at from data where device_id = ?i order by created_at desc limit 10",array($device_id));
$data= get_data($sql);
if(!empty($data))
{
$result = $data;
}else
{
$result = false;
}
return self::send_result($result);
}
// 设备实时数据
public function getBigScreenDeviceRealData()
{
$device_id = $_GET['id'];
$sql = prepare("select level_data,ph_data,rainfall_data,rainsnow,ammonia_data,elec_conductivity_tds_data from data where device_id = ?i order by id desc limit 1",array($device_id));
$data= get_line($sql);
if(!empty($data))
{
$result = $data;
}else
{
$result['level_data'] = 0;
$result['ph_data'] = 0;
$result['rainfall_data'] = 0;
$result['rainsnow'] = 0;
$result['ammonia_data'] = 0;
}
return self::send_result($result);
}
// 设备实时图名称
public function getBigScreenDeviceName()
{
$device_id = $_GET['id'];
$sql = prepare("select name from device where id = ?i limit 1",array($device_id));
$data= get_var($sql);
return self::send_result($data);
}
// 默认设备编码
public function getBigScreenDeviceId()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select id from device where status = 1 limit 1";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select id from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1) limit 1",array($token));
}
$result = get_var($sql);
return self::send_result($result);
}
// 大屏 雨污分流智能管理平台
// 项目总览
public function getBigScreenDashboardProjectOverview()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
// 项目总数
$sql = "select count(*) from project";
// 控制柜总数
$sql_1 = "select count(*) from device where type = 1";
// 曝气机总数
$sql_2 = "select count(*) from device where type = 2";
// 管网总数
$sql_3 = "select count(*) from device where type = 3";
// 在线设备总数
$sql_4 = "select count(*) from device where status = 1";
}
elseif($role_id == 1) // 项目账号
{
// 项目总数
$sql = prepare("select count(*) from project where id = (select project_id from user where token = ?s limit 1)",array($token));
// 控制柜总数
$sql_1 = prepare("select count(*) from device where type = 1 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
// 曝气机总数
$sql_2 = prepare("select count(*) from device where type = 2 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
// 管网总数
$sql_3 = prepare("select count(*) from device where type = 3 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
// 在线设备总数
$sql_4 = prepare("select count(*) from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
}
$project_count = get_var($sql) == null ? 0 : intval(get_var($sql));
$device_1_count = get_var($sql_1) == null ? 0 : intval(get_var($sql_1));
$device_2_count = get_var($sql_2) == null ? 0 : intval(get_var($sql_2));
$device_3_count = get_var($sql_3) == null ? 0 : intval(get_var($sql_3));
$device_4_count = get_var($sql_4) == null ? 0 : intval(get_var($sql_4));
$result = [
'project_count'=>$project_count,
'device_1_count'=>$device_1_count,
'device_2_count'=>$device_2_count,
'device_3_count'=>$device_3_count,
'device_4_count'=>$device_4_count
];
return self::send_result($result);
}
// 数据统计 - 设备情况统计
public function getBigScreenDashboardProjectDataDeviceRunInfo()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
// 在线设备
$sql_1 = "select count(*) from device where status = 1";
// 安装中设备
$sql_2 = "select count(*) from device where status = 2";
// 预警设备
$sql_3 = "select count(*) from warn group by device_id";
}
elseif($role_id == 1) // 项目账号
{
// 在线设备
$sql_1 = prepare("select count(*) from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
// 安装中设备
$sql_2 = prepare("select count(*) from device where status = 2 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
// 预警设备
$sql_3 = "select count(*) from warn group by device_id";
}
$device_1_count = get_var($sql_1) == null ? 0 : get_var($sql_1);
$device_2_count = get_var($sql_2) == null ? 0 : get_var($sql_2);
$device_3_count = get_var($sql_3) == null ? 0 : get_var($sql_3);
$result = [
'device_online_count'=>$device_1_count,
'device_offline_count'=>$device_2_count,
'device_warn_count'=>$device_3_count
];
return self::send_result($result);
}
// 数据统计 - 城市设备分布系统现状
public function getBigScreenDashboardDataCity()
{
$city_array = ['榆林市','延安市','铜川市','渭南市','咸阳市','西安市','宝鸡市','商洛市','安康市','汉中市'];
for ($i=0; $i < count($city_array); $i++)
{
$city = $city_array[$i];
$sql = prepare("select count(*) from device where area_id = (select id from area where note = ?s limit 1)",array($city));
$device_all_count = get_var($sql) == null ? 0 : get_var($sql);
$sql_1 = prepare("select count(*) from device where status = 1 and area_id = (select id from area where note = ?s limit 1)",array($city));
$device_online_count = get_var($sql_1) == null ? 0 : get_var($sql_1);
$sql_2 = prepare("select count(*) from device where status = 2 and area_id = (select id from area where note = ?s limit 1)",array($city));
$device_offline_count = get_var($sql_2) == null ? 0 : get_var($sql_2);
$result['all'][$i] = intval($device_all_count);
$result['online'][$i] = intval($device_online_count);
$result['offline'][$i] = intval($device_offline_count);
}
return self::send_result($result);
}
// 数据统计 - 调控频率排行榜
public function getBigScreenDashboardDataControlRank()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select device.name,count(event.id) as totalCount from event left join device on event.device_id = device.id group by event.device_id order by totalCount desc limit 10";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select device.name,count(event.id) as totalCount from event left join device on event.device_id = device.id where device.project_id = (select project_id from user where token = ?s limit 1) group by event.device_id order by totalCount desc limit 10",array($token));
}
$data = get_data($sql);
if(!empty($data))
{
for ($i=0; $i < count($data); $i++)
{
$result['name'][$i] = $data[$i]['name'];
$result['totalCount'][$i] = intval($data[$i]['totalCount']);
}
}
else
{
$result = false;
}
return self::send_result($result);
}
// 地图监控点 - 事件类型分类
public function getBigScreenDashboardMapEventType()
{
$event_array = ['主污泵','备污泵','雨水泵','闸门上升','闸门下降'];
for ($i=0; $i < count($event_array); $i++)
{
$event = $event_array[$i];
$sql = "select count(*) from event where event like '%".$event."%'";
$event_count = get_var($sql) == null ? 0 : get_var($sql);
$result['event'][$i] = intval($event_count);
}
return self::send_result($result);
}
// 设备实时数据
public function getBigScreenDashboardDeviceRealData()
{
$token = $_SESSION['token'];
$role_id = $this->getUserRole($token);
if($role_id == 2) // 超级管理员账号
{
$sql = "select id,name from device where status = 1";
}
elseif($role_id == 1) // 项目账号
{
$sql = prepare("select id,name from device where status = 1 and project_id = (select project_id from user where token = ?s limit 1)",array($token));
}
$data = get_data($sql);
if(!empty($data))
{
for ($i=0; $i < count($data); $i++)
{
$sql_1 = prepare("select level_data,ph_data,rainfall_data,ammonia_data,rainsnow from data where device_id = ?i order by id desc limit 1",array($data[$i]['id']));
$data_1= get_line($sql_1);
$result[$i]['name'] = $data[$i]['name'];
$result[$i]['level_data'] = $data_1['level_data']==null?0:round($data_1['level_data'],2);
$result[$i]['ph_data'] = $data_1['ph_data']==null?0:round($data_1['ph_data'],2);
$result[$i]['rainfall_data'] = $data_1['rainfall_data']==null?0:round($data_1['rainfall_data'],2);
$result[$i]['ammonia_data'] = $data_1['ammonia_data']==null?0:round($data_1['ammonia_data'],2);
$result[$i]['rainsnow'] = $data_1['rainsnow']==null?0:round($data_1['rainsnow'],2);
}
}
else
{
$result = false;
}
return self::send_result($result);
}
// 设备实时数据
public function getCommand()
{
$command = $_GET['command'];
$token = $_SESSION['token'];
$name = $_GET['name'];
$ws_client_id_sql = prepare("select id from user where token = ?s limit 1",array($token));
$ws_client_id = get_var($ws_client_id_sql);
$f_did_sql = prepare("select f_did from device where name = ?s limit 1",array($name));
$f_did = get_var($f_did_sql);
if($command=="主污泵启动")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"主污泵启动","content":"000100000006FF05001EFF00"}';
}
if($command=="主污泵停止")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"主污泵停止","content":"000100000006FF05001E0000"}';
}
if($command=="备污泵启动")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"备污泵启动","content":"000100000006FF050020FF00"}';
}
if($command=="备污泵停止")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"备污泵停止","content":"000100000006FF0500200000"}';
}
if($command=="雨水泵启动")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"雨水泵启动","content":"000100000006FF050022FF00"}';
}
if($command=="雨水泵停止")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"雨水泵停止","content":"000100000006FF0500220000"}';
}
if($command=="闸门上升")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门停止下降","content":"000100000006FF0500250000"}';
$result[1] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门上升","content":"000100000006FF050024FF00"}';
}
if($command=="闸门下降")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门停止上升","content":"000100000006FF0500240000"}';
$result[1] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门下降","content":"000100000006FF050025FF00"}';
}
if($command=="闸门停止")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门停止上升","content":"000100000006FF0500240000"}';
$result[1] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"闸门停止下降","content":"000100000006FF0500250000"}';
}
if($command=="工控机报警复位")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"工控机报警复位","content":"000100000006FF0500270000"}'; // 这个指令和真实的指令不一致
}
/* 想改又不想改 */
if($command=="设置远程模式")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"设置远程模式","content":"000100000006FF050082FF00"}';
}
if($command=="设置本地模式")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"设置本地模式","content":"000100000006FF0500820000"}';
}
if($command=="M500主污泵液位生效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M500主污泵液位生效","content":"000100000006FF0501F4FF00"}';
}
if($command=="M500主污泵液位失效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M500主污泵液位失效","content":"000100000006FF0501F40000"}';
}
if($command=="M502备污泵液位生效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M502备污泵液位生效","content":"000100000006FF0501F6FF00"}';
}
if($command=="M502备污泵液位失效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M502备污泵液位失效","content":"000100000006FF0501F60000"}';
}
if($command=="M501闸门雨量控制生效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M501闸门雨量控制生效","content":"000100000006FF0501F5FF00"}';
}
if($command=="M501闸门雨量控制失效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M501闸门雨量控制失效","content":"000100000006FF0501F50000"}';
}
if($command=="M503雨量定时清零生效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M503雨量定时清零生效","content":"000100000006FF0501F7FF00"}';
}
if($command=="M503雨量定时清零失效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M503雨量定时清零失效","content":"000100000006FF0501F70000"}';
}
if($command=="M504雨雪定时清零雨量生效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M504雨雪定时清零雨量生效","content":"000100000006FF0501F8FF00"}';
}
if($command=="M504雨雪定时清零雨量失效")
{
$result[0] = '{"cmd":"control","ws_client_id":"'.$ws_client_id.'","device_id":"'.$f_did.'","name":"M504雨雪定时清零雨量失效","content":"000100000006FF0501F80000"}';
}
return self::send_result($result);
}
public function getBigScreenCurrentTime()
{
$id = $_GET['id'];
// 查询出设备的最后上来的数据,没有数据为当前时间
$sql = prepare("select created_at from data where device_id = ?i order by created_at desc limit 1",array($id));
$data= get_var($sql);
if($data)
{
$bigScreenCurrentTime = substr($data,-8);
}else
{
$bigScreenCurrentTime = date("H:i:s",time());
}
return self::send_result($bigScreenCurrentTime);
}
public function convertId()
{
$device_name = $_GET['device_name'];
$sql = prepare("select id from device where name = ?s limit 1",array($device_name));
$device_id = get_var($sql);
return self::send_result($device_id);
}
public function judgeDevice()
{
$did = $_GET['did'];
$name = $_GET['name'];
$sql = prepare("select name from device where f_did = ?s limit 1",array($did));
$device_name = get_var($sql);
if($name == $device_name)
{
$result = 'success';
}else
{
$result = 'false';
}
return self::send_result($result);
}
}
?>