123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- <?php
- class DpjkMobileAction extends Action {
-
-
- public function getDeivceRealDataTest( ){
- $device_info = MM('dpsb_device')->where(array('ID'=>$device_id))->find();
- if(!$device_info)
- return false;
- $data = array(
- "id" => $device_id,
- "title" => $device_info['WorkUnitName'],
- "addr" => $device_info['DeviceAddr'],
- "time" => $device_info['GatherTime'],
- "channels" => array(),
- "rollfilm" => array(),
- );
- for($i=0;$i<3;$i++){
- $channel_data = array();
- //气温
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::TEMPERATURE,
- 'ChGroup' => $i,
- );
- $qw_info = MM('dpsb_channel')->where($where)->find();
- if(!$qw_info){
- continue;
- }
- //湿度
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::HUMIDITY,
- 'ChGroup' => $i,
- );
- $sd_info = MM('dpsb_channel')->where($where)->find();
- if(!$sd_info){
- continue;
- }
- //光照
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::ILLINATIONUM,
- 'ChGroup' => $i,
- );
- $gz_info = MM('dpsb_channel')->where($where)->find();
- if(!$gz_info){
- continue;
- }
- //卷膜1
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::FILM_CONTROL,
- 'ChGroup' => $i,
- );
- $jm_left_info = MM('dpsb_channel')->where($where)->order('ChNumber asc')->find();
- if(!$jm_left_info){
- continue;
- }
- //卷膜5
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::FILM_CONTROL,
- 'ChGroup' => $i,
- );
- $jm_right_info = MM('dpsb_channel')->where($where)->order('ChNumber desc')->find();
- if(!$jm_right_info){
- continue;
- }
- $channel_data = array(
- 'qw' => $qw_info['ChValue'],
- 'sd' => $sd_info['ChValue'],
- 'gz' => $gz_info['ChValue'],
- 'group' => $i+1,
- );
- array_push($data['channels'],$channel_data);
- $roll_left_film_data = array(
- 'jm' => $jm_left_info['ChNumber'],
- 'name' => $jm_left_info['DisplayName'],
- 'group' => $i+1,
- );
- array_push($data['rollfilm'],$roll_left_film_data);
- $roll_right_film_data = array(
- 'jm' => $jm_right_info['ChNumber'],
- 'name' => $jm_left_info['DisplayName'],
- 'group' => $i+1,
- );
- array_push($data['rollfilm'],$roll_right_film_data);
-
- }
- return $data;
-
- }
-
-
- public function login( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- //用户信息
- $username = I('post.Username');
- $password = I('post.Password');
- //检查是否是操作员
- $where = array(
- 'UserName'=>$username
- );
- $userinfo = MM('uc_user')->where($where)->find();
- if(!$userinfo){
- json_fail('该用户不存在');
- }
- /*
- //用户是否有权限
- if($userinfo['RoleId'] != \Zndp\User\RoleEnum::FARM_OPERATOR){
- json_fail('当前用户没有操作权限');
- }*/
- $login_list = array(
- \Zndp\User\RoleEnum::BASE_ADMINISTRATOR,//基地管理员
- \Zndp\User\RoleEnum::BASE_LEADER,//基地负责人
- );
- if( !in_array($userinfo['RoleId'],$login_list) ){
- json_fail('当前用户没有登录权限');
- }
- //密码错误
- $password = (new \Zndp\User\Util)->encPwd($password);
- if($password != $userinfo['Password']){
- json_fail('用户名或者密码不正确');
- }
- //保存用户cid
- $cid = I('post.cid');
- if($cid){
- $result = MM('uc_user')->where($where)->setField('ClientId',$cid);
- if($result === false){
- json_fail('CID有误');
- }
- }
- //登录成功
- json_success('登陆成功',$userinfo['ID']);
- }
-
-
- public function allDevicesRealTimeData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- $userid = I('get.userid');
- if(!$userid){
- json_fail('用户信息不存在');
- }
- /*$farmid = MM('uc_user')->where(array('ID'=>$userid))->getField('FarmId');
- if(!$farmid){
- json_fail('用户下没有农场');
- }*/
- // 新流程
- $depart_id = MM('uc_user')->where(array('ID'=>$userid))->getField('OrganizationId');
- if(!$depart_id){
- json_fail('账号部门信息有误,请联系负责人');
- }
- //获取部门下所有基地
- $base_ids = \Zndp\User\Util::get_depart_farm($depart_id);
- $where = array('FarmId'=>array('IN',$base_ids));
- $group_list = MM('dpsb_group')->where($where)->select();
- if(!$group_list){
- json_fail('设备组不存在');
- }
- $device_data_list = array();
- foreach($group_list as $row){
- $device_list = MM('dpsb_device')->where(array('DeviceGroupId'=>$row['ID']))->select();
- foreach($device_list as $device){
- $device_data = $this->getDeivceRealData($device['ID']);
- array_push($device_data_list,$device_data);
- }
- }
- json_success('',$device_data_list);
-
- }
-
-
- private function getDeivceRealData( $device_id ){
- $device_info = MM('dpsb_device')->where(array('ID'=>$device_id))->find();
- if(!$device_info)
- return false;
- $data = array(
- "id" => $device_id,
- "title" => $device_info['WorkUnitName'],
- "addr" => $device_info['DeviceAddr'],
- "time" => $device_info['GatherTime'],
- "channels" => array(),
- "rollfilm" => array(),
- );
- for($i=0;$i<3;$i++){
- $channel_data = array();
- //气温
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::TEMPERATURE,
- 'ChGroup' => $i,
- );
- $qw_info = MM('dpsb_channel')->where($where)->find();
- if(!$qw_info){
- continue;
- }
- //湿度
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::HUMIDITY,
- 'ChGroup' => $i,
- );
- $sd_info = MM('dpsb_channel')->where($where)->find();
- if(!$sd_info){
- continue;
- }
- //光照
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::ILLINATIONUM,
- 'ChGroup' => $i,
- );
- $gz_info = MM('dpsb_channel')->where($where)->find();
- if(!$gz_info){
- continue;
- }
- //卷膜1
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::FILM_CONTROL,
- 'ChGroup' => $i,
- );
- $jm_left_info = MM('dpsb_channel')->where($where)->order('ChNumber asc')->find();
- if(!$jm_left_info){
- continue;
- }
- //卷膜5
- $where = array(
- 'DeviceId'=>$device_id,
- 'ChType'=> \Zndp\Device\ChannelType::FILM_CONTROL,
- 'ChGroup' => $i,
- );
- $jm_right_info = MM('dpsb_channel')->where($where)->order('ChNumber desc')->find();
- if(!$jm_right_info){
- continue;
- }
- $channel_data = array(
- 'qw' => $qw_info['ChValue'],
- 'sd' => $sd_info['ChValue'],
- 'gz' => $gz_info['ChValue'],
- 'group' => $i+1,
- );
- array_push($data['channels'],$channel_data);
- $roll_left_film_data = array(
- 'jm' => $jm_left_info['ChNumber'],
- 'name' => $jm_left_info['DisplayName'],
- 'group' => $i+1,
- );
- array_push($data['rollfilm'],$roll_left_film_data);
- $roll_right_film_data = array(
- 'jm' => $jm_right_info['ChNumber'],
- 'name' => $jm_right_info['DisplayName'],
- 'group' => $i+1,
- );
- array_push($data['rollfilm'],$roll_right_film_data);
-
- }
- return $data;
-
- }
-
-
- public function oneDeviceRealTimeData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- $userid = I('get.userid');
- $deviceid = I('get.deviceid');
- if(!$deviceid)
- json_fail('设备id不存在');
- if(!$userid)
- json_fail('用户信息不存在');
- $farmid = MM('uc_user')->where(array('ID'=>$userid))->getField('FarmId');
- if(!$farmid)
- json_fail('用户下没有农场');
- $group_list = MM('dpsb_group')->where(array('FarmId'=>$farmid))->select();
- if(!$group_list)
- json_fail('设备组不存在');
- $device_data = $this->getDeivceRealData($deviceid);
- json_success('',$device_data);
-
- }
-
-
- public function getAlarmData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- //获取登录用户部门id
- $userid = I('get.userid');
- $where = array('ID'=>$userid);
- $user_info = MM('uc_user')->field('RoleId,OrganizationId')->where($where)->find();
- //组装查询条件
- if( $user_info['RoleId'] == \Zndp\User\RoleEnum::BASE_ADMINISTRATOR){//基地管理员只查看自己的大棚
- $where = array( 'ManagerId' => $userid );
- }else{//否则查出该部门下所有基地
- $base_ids = \Zndp\User\Util::get_depart_farm($user_info['OrganizationId']);
- $where = array('FarmId'=>array('IN',$base_ids));
- }
- //查出大棚告警日志
- $farmland_ids = MM('dpyh_farmland')->field('ID')->where($where)->select();
- $farmland_ids = array_column($farmland_ids,'ID');
- $where = array( 'FarmlandId' => array('IN',$farmland_ids) );
- $alarm_list = MM('dpsj_alarm_log')->where($where)->order('SendTime desc')->limit(100)->select();
- if( $alarm_list ){
- $alarm_list = array(
- 'success' => true,
- 'message' => '获取成功',
- 'data' => $alarm_list
- );
- }else{
- $alarm_list = array(
- 'success' => false,
- 'message' => '没有数据',
- 'data' => $alarm_list
- );
- }
- echo json_encode($alarm_list,JSON_UNESCAPED_UNICODE);
- }
-
-
- public function allFarmlandRealTimeData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- $userid = I('get.userid');
- if(!$userid){
- json_fail('用户信息不存在');
- }
- // 新流程
- $user_info = MM('uc_user')->field('ID,RoleId,OrganizationId')->where(array('ID'=>$userid))->find();
- if(!$user_info['OrganizationId']){
- json_fail('账号部门信息有误,请联系负责人');
- }
- if($user_info['RoleId'] == \Zndp\User\RoleEnum::BASE_ADMINISTRATOR ){ //基地管理员只能查看自己管理的大棚
- $where = array('ManagerId'=>$user_info['ID']);
- $farmland_list = MM('dpyh_farmland')->field('ID,FarmlandName')->where($where)->select();
- }else{
- //获取部门下所有基地
- $base_ids = \Zndp\User\Util::get_depart_farm($user_info['OrganizationId']);
- $where = array('FarmId'=>array('IN',$base_ids));
- $farmland_list = MM('dpyh_farmland')->field('ID,FarmlandName')->where($where)->select();
- }
- if(!$farmland_list){
- json_fail('没有大棚存在');
- }
- $farmland_data_list = array();
- foreach($farmland_list as $farmland){
- $where = array('FarmlandId'=>$farmland['ID']);
- $chgroup_list = MM('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- foreach($chgroup_list as $chgroup){ //传设备id和通道组用于获取通道
- $channel_data = $this->getChgroupRealData($chgroup['DeviceId'],$chgroup['ChGroup'],$farmland);
- array_push($farmland_data_list,$channel_data);
- }
- }
- json_success('',$farmland_data_list);
-
- }
-
-
- private function getChgroupRealData( $device_id, $chgroup, $farmland_info ){
- $where = array('DeviceId'=>$device_id,'ChGroup'=>$chgroup);
- //查找通道组下所有通道
- $channel_list = MM('dpsb_channel')->field('ChNumber,DisplayName,ChType,ChValue,GatherTime')->where($where)->order('ChNumber asc')->select();
- if(!$channel_list || !$farmland_info){
- return false;
- }
- //拼接数据
- $device_addr = MM('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
- $farmland_data = array(
- 'id' => $farmland_info['ID'], //用于传给详情页面
- 'title' => $farmland_info['FarmlandName'],//显示标题
- 'addr' => $device_addr,//设备序列号
- //'time' => $channel_list['GatherTime'],//最新上报数据时间
- "channels" => array(),//光照、温度、湿度传感器数据
- "rollfilm" => array(),//卷膜机数据
- );
- $channel_data = array(); //初始化传感器数据
- $jm_data = array(); //初始化卷膜机数据
- foreach($channel_list as $channel){
- $channel_unit = (new \Zndp\Device\ChannelType())->getTypeUnit($channel['ChType']);//传感器单位
- if($channel['ChType'] == \Zndp\Device\ChannelType::TEMPERATURE ){ //气温+
- $farmland_data['time'] = $channel['GatherTime'];//最新上报数据时间
- $data = array(
- 'name' => $channel['DisplayName'], //名称
- 'value'=> $channel['ChValue'], //值
- 'unit' => $channel_unit, //单位
- 'icon' => 'icon_qw.png', //图标
- );
- array_push($channel_data,$data);
- //$channel_data[$channel['DisplayName']] = $channel['ChValue'] .' '.$channel_unit;
- }elseif($channel['ChType'] == \Zndp\Device\ChannelType::HUMIDITY){ //湿度
- if( $farmland_data['time'] < $channel['GatherTime'] ){
- $farmland_data['time'] = $channel['GatherTime'];//最新上报数据时间
- }
- $data = array(
- 'name' => $channel['DisplayName'], //名称
- 'value'=> $channel['ChValue'], //值
- 'unit' => $channel_unit, //单位
- 'icon' => 'icon_sd.png', //图标
- );
- array_push($channel_data,$data);
- //$channel_data[$channel['DisplayName']] = $channel['ChValue'] .' '.$channel_unit;
- }elseif($channel['ChType'] == \Zndp\Device\ChannelType::ILLINATIONUM){ //光照
- if( $farmland_data['time'] < $channel['GatherTime'] ){
- $farmland_data['time'] = $channel['GatherTime'];//最新上报数据时间
- }
- $data = array(
- 'name' => $channel['DisplayName'], //名称
- 'value'=> $channel['ChValue'], //值
- 'unit' => $channel_unit, //单位
- 'icon' => 'icon_gz.png', //图标
- );
- array_push($channel_data,$data);
- //$channel_data[$channel['DisplayName']] = $channel['ChValue'] .' '.$channel_unit;
- }elseif($channel['ChType'] == \Zndp\Device\ChannelType::FILM_CONTROL){ //卷膜机
- $jm_name = \Zndp\Device\ChannelType::getDisplayName($channel['ChType'],$chgroup,$channel['ChNumber']);
- $jm_data[] = array(
- 'jm' => $channel['ChNumber'],//通道号
- 'name' => $jm_name, //卷膜机名称
- 'group' => $chgroup //通道组
- );
- }else{
-
- }
- }
- $farmland_data['channels'] = $channel_data;
- $farmland_data['rollfilm'] = $jm_data;
- return $farmland_data;
- }
-
-
- public function oneFarmlandRealTimeData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- $userid = I('get.userid');
- $farmland_id = I('get.farmland_id');
- if(!$farmland_id || !$userid){
- json_fail('用户或大棚id不存在');
- }
- $where = array('ID'=>$farmland_id);
- $farmland_info = MM('dpyh_farmland')->field('ID,FarmlandName')->where($where)->find();
- $where = array('FarmlandId'=>$farmland_id);
- $chgroup_info = MM('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->find();
- $channel_data = $this->getChgroupRealData($chgroup_info['DeviceId'],$chgroup_info['ChGroup'],$farmland_info);
-
- json_success('',$channel_data);
-
- }
-
-
- public function getAppAlarmData( ){
- //允许所有域名跨域访问
- header('Access-Control-Allow-Origin: *');
- //获取登录用户部门id
- $userid = I('get.userid');
- $where = array('ID'=>$userid);
- $user_info = MM('uc_user')->field('RoleId,OrganizationId')->where($where)->find();
- //组装查询条件
- if( $user_info['RoleId'] == \Zndp\User\RoleEnum::BASE_ADMINISTRATOR){//基地管理员只查看自己的大棚
- $where = array( 'ManagerId' => $userid );
- }else{//否则查出该部门下所有基地
- $base_ids = \Zndp\User\Util::get_depart_farm($user_info['OrganizationId']);
- $where = array('FarmId'=>array('IN',$base_ids));
- }
- //查出大棚告警日志
- $farmland_ids = MM('dpyh_farmland')->field('ID')->where($where)->select();
- $farmland_ids = array_column($farmland_ids,'ID');
- $where = array( 'FarmlandId' => array('IN',$farmland_ids), 'Platform'=>1 );
- $alarm_list = MM('dpsj_alarm_log')->where($where)->order('SendTime desc')->limit(100)->select();
- if( $alarm_list ){
- $alarm_list = array(
- 'success' => true,
- 'message' => '获取成功',
- 'data' => $alarm_list
- );
- }else{
- $alarm_list = array(
- 'success' => false,
- 'message' => '没有数据',
- 'data' => $alarm_list
- );
- }
- echo json_encode($alarm_list,JSON_UNESCAPED_UNICODE);
- }
-
- }
|