123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690 |
- <?php
- class DpyhFarmlandAction extends CommonAction {
- const tableName = 'dpyh_farmland';
- const pkName = 'ID';
-
-
- function sys_list( ){
- $list = new \Jms\Gui\ClGrid();
- $list->sql_sort = 'ID desc';
- $list->right_filter = function($right,$type){
- $page = $_SERVER['PATH_INFO'];
- return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
- };
- $list->sql_filter = function($search,&$cond){
- $level = I('get.lv');//获取当前部门等级
- $depart_id = I('get.id');
- if($depart_id){
- if($level == \Zndp\User\DepartEnum::PLANT_BASE){ //部门为基地
- $cond['FarmId'] = $depart_id;
- }else{ //其他上级部门
- //根据传进来的部门id获取其子部门下所有大棚
- $farm_ids = \Zndp\User\Util::get_depart_farm($depart_id);
- $cond['FarmId'] = array('IN',$farm_ids);
- }
- }else{ // 账号登录
- if($this->userinfo['OrganizationId']){
- //非平台管理员,获取登录角色下所有基地内的大棚
- $base_ids = \Zndp\User\Util::get_depart_farm($this->userinfo['OrganizationId']);
- $cond['FarmId'] = array('IN',$base_ids);
- }
- }
- //搜索条件
- if($search['FarmlandName']){ //按大棚名称搜索
- $cond['FarmlandName'] = array('LIKE',"%{$search['FarmlandName']}%");
- }
- if($search['FarmlandNum']){ //按大棚编号搜索
- $cond['FarmlandNum'] = array('LIKE',"%{$search['FarmlandNum']}%");
- }
- };
- $list->row_filter = function(&$row)use($list){
- $row['BaseId'] = $row['FarmId'];//基地id,传过去用来获取该基地下设备进行绑定
- $type_arr = array(1=>'大棚','大田');
- $row['FarmlandType_text'] = $type_arr[$row['FarmlandType']];
- $where = array('ID'=>$row['FarmId']);
- $row['FarmId_text'] = M('uc_organization')->where($where)->getField('DepartName');
- //管理员可选择
- $where = array('ID'=>$row['ManagerId']);
- $realname = M('uc_user')->where($where)->getField('RealName') ?:'点击设置';
- $url = '?s=dpyh_farmland/sys_set_manager&id='.$row['ID'].'&base_id='.$row['FarmId'];
- $row['ManagerId_text'] = $list->renderPopup($realname,$url,'设置管理员',400,250,1);
- $row['Comment'] = $list->renderXEditableTextarea('备注',$row,'Comment');
- //绑定设备
- $where = array('FarmlandId'=>$row['ID']);
- $chgroup_info = MM('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->find();
- $row['DeviceId'] = $chgroup_info['DeviceId']; //传给统计数据图形页面
- if($chgroup_info){
- $where = array('ID'=>$chgroup_info['DeviceId']);
- $device_name = MM('dpsb_device')->where($where)->getField('WorkUnitName');
- $row['BindDevice'] = $device_name . ' - 通道组'.$chgroup_info['ChGroup'];
- }
- };
- $list->toolbar_filter = function(&$button){
- if($button['icon'] == 'add'){
- $button['url'] .= '&parent_id=' .I('get.id');
- }
- };
- $list->display($this);
- }
-
-
- function sys_addedit( ){
- $form = new \Jms\Gui\ClForm();
- $form->before_save = function(&$data){
- $where = array('ID'=>$data['FarmId']);
- $level = M('uc_organization')->where($where)->getField('Level');
- if( $level != \Zndp\User\DepartEnum::PLANT_BASE ){ //不是基地
- json_fail('大棚上级部门应为基地');
- }
- };
- $form->after_modify = function($data){
- //修改redis-dpyh_alarm_set中的FarmlandName和FarmId
- $redis = Redis('dpyh_alarm_set','hash');
- $key = 'FarmlandId-' .$data['ID'];
- $val = array(
- "FarmlandName" => $data['FarmlandName'],
- "HighTempLimit" => $data['HighTempLimit'],
- "MaxTempExceed" => $data['MaxTempExceed'],
- "LowTempLimit" => $data['LowTempLimit'],
- "LowTempExceed" => $data['LowTempExceed'],
- "IsUseTempLimit" => $data['IsUseTempLimit'],
- "SmsInterval" => $data['SmsInterval'],
- "FarmId" => $data['FarmId'],
- );
- $val = json_encode($val, JSON_UNESCAPED_UNICODE);
- $hash = array($key => $val);
- $redis->push($hash);
- };
- $form->form_filter = function(&$form){
- // 初始化部门下拉选项
- $parent_id = I('get.parent_id');
- if(!$parent_id){
- $parent_id = $this->userinfo['OrganizationId'];
- }
- // 如果是基地点进来
- $where = array('ID'=>$parent_id);
- $field = 'ID as id,DepartName as text,Level';
- $base_info = M('uc_organization')->field($field)->where($where)->find();
- if($base_info['Level'] == \Zndp\User\DepartEnum::PLANT_BASE ){
- unset($base_info['Level']);
- $depart_list = array($base_info);
- }else{
- $zndp_util = new \Zndp\User\Util();
- $depart_list = $zndp_util->get_depart_option($parent_id);
- }
- $form['fields']['FarmId']['editor'] = array('options'=>$depart_list);
- };
- $form->display($this);
- }
-
-
- public function sys_del( ){
- $grid = new \Jiaruan\GridData();
- $grid->before_delete = function($data){
- //删除前对绑定的设备进行解绑
- $where = array('FarmlandId'=>$data['ID']);
- $res = M('dpsb_chgroup')->where($where)->setField('FarmlandId',-1);
- if($res === false){
- json_fail('设备解绑失败');
- }
- };
- $grid->deleteByPk($this);
- }
-
-
- function sys_nav_tree( ){
- //获取导航树数据
- $fields = 'ID as id,ParentID as pId,DepartName as name,Level as level';
- $zndp_util = new \Zndp\User\Util();
- $depart_id = $this->userinfo['OrganizationId'];
- $depart_list = $zndp_util->get_depart_option($depart_id,$fields,'name',false);
- if(empty($depart_list)){
- //没有数据,显示该
- $depart_list[0] = array('id'=>'','pid'=>'','name'=>'没有组织','direct_url'=>'');
- }else{
- for($i=0; $i<count($depart_list); $i++){// 放入链接
- /*if($depart_list[$i]['level'] <= \Zndp\User\DepartEnum::WORK_STATION){
- $depart_list[$i]['open']= true;
- }*/
- $depart_list[$i]['open']= true;
- $depart_list[$i]['direct_url'] = '?s=dpyh_farmland/sys_list&lv='.$depart_list[$i]['level'];
- }
- }
- //平台,超级管理员,插入所有大棚列表
- $admin_arr = array(\Zndp\User\RoleEnum::GENERAL_ADMINISTRATOR,\Zndp\User\RoleEnum::SUPER_ADMINISTRATOR);
- if( in_array($this->userinfo['RoleId'], $admin_arr) ){
- $all_list = array('id'=>'0','pId'=>'','name'=>'所有大棚','direct_url'=>'?s=dpyh_farmland/sys_list','open'=>true);
- array_unshift($depart_list,$all_list);
- }
- $this->assign('title','大棚管理');
- $this->assign('tree_data',$depart_list);
- $this->display();
- }
-
-
- function set_screen_msg_old( ){
- $form = new \Jms\Gui\ClForm();
- $shed = array('FirstCrop','SecondCrop','ThirdCrop','FourthCrop');
- $form->before_display = function(&$data) use($shed){
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$data['ID']);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $screen_msg = $device->where($where)->getField($shed[$val['ChGroup']]);
- if( $screen_msg ){ //如果有绑定控制设备
- $shed_data = json_decode($screen_msg, true);
- $data = array(
- 'num' => ($shed_data['num'.($val['ChGroup']+1)]),
- 'variety' => $shed_data['variety'.($val['ChGroup']+1)],
- 'farmer' => $shed_data['farmer'.($val['ChGroup']+1)],
- 'output' => $shed_data['output'.($val['ChGroup']+1)],
- 'unit' => $shed_data['unit'.($val['ChGroup']+1)]
- );
- }
- }
- if(!$data['num']){
- $data['num'] = $data['FarmlandNum'];
- }
- };
- $form->before_modify = function(&$data) use($shed){
- $farmland_id = I('get.id');
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$farmland_id);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $count = $device->where($where)->count();
- if( $count > 0 ){ //如果有绑定控制设备
- $shed_data = array(
- 'num'.($val['ChGroup']+1) => $data['num'],
- 'variety'.($val['ChGroup']+1) =>$data['variety'],
- 'farmer'.($val['ChGroup']+1) =>$data['farmer'],
- 'output'.($val['ChGroup']+1) =>$data['output'],
- 'unit'.($val['ChGroup']+1) =>$data['unit']
- );
- $shed_data = json_encode($shed_data, JSON_UNESCAPED_UNICODE);
- $result = $device->where($where)->setField( $shed[$val['ChGroup']] , $shed_data);
- if($result){
- json_success('设置成功');
- }
- }
-
- }
- json_fail('没有更改或没有绑定设备');
-
- };
- $form->display($this);
- }
-
-
- function dzp_nav_tree( ){
- //获取导航树数据
- $fields = 'ID as id,ParentID as pId,DepartName as name,Level as level';
- $zndp_util = new \Zndp\User\Util();
- $depart_id = $this->userinfo['OrganizationId'];
- $depart_list = $zndp_util->get_depart_option($depart_id,$fields,'name',false);
- if(empty($depart_list)){
- //没有数据,显示该
- $depart_list[0] = array('id'=>'','pid'=>'','name'=>'没有组织','direct_url'=>'');
- }else{
- for($i=0; $i<count($depart_list); $i++){// 放入链接
- if($depart_list[$i]['level'] <= \Zndp\User\DepartEnum::WORK_STATION){
- $depart_list[$i]['open']= true;
- }
- $depart_list[$i]['direct_url'] = '?s=dpyh_farmland/sys_list_dzp&lv='.$depart_list[$i]['level'];
- }
- }
- //平台,超级管理员,插入所有用户列表
- $admin_arr = array(\Zndp\User\RoleEnum::GENERAL_ADMINISTRATOR,\Zndp\User\RoleEnum::SUPER_ADMINISTRATOR);
- if( in_array($this->userinfo['RoleId'], $admin_arr) ){
- $all_list = array('id'=>'0','pId'=>'','name'=>'所有大棚','direct_url'=>'?s=dpyh_farmland/sys_list_dzp','open'=>true);
- array_unshift($depart_list,$all_list);
- }
- $this->assign('title','大棚管理');
- $this->assign('tree_data',$depart_list);
- $this->display();
- }
-
-
- function sys_list_dzp( ){
- $list = new \Jms\Gui\ClGrid();
- $list->sql_filter = function($search,&$cond){
- $level = I('get.lv');//获取当前部门等级
- $depart_id = I('get.id');
- if($depart_id){
- if($level == \Zndp\User\DepartEnum::PLANT_BASE){ //部门为基地
- $cond['FarmId'] = $depart_id;
- }else{ //其他上级部门
- //根据传进来的部门id获取其子部门下所有大棚
- $farm_ids = \Zndp\User\Util::get_depart_farm($depart_id);
- $cond['FarmId'] = array('IN',$farm_ids);
- }
- }else{ // 账号登录
- if($this->userinfo['OrganizationId']){
- //非平台管理员,获取登录角色下所有基地内的大棚
- $base_ids = \Zndp\User\Util::get_depart_farm($this->userinfo['OrganizationId']);
- $cond['FarmId'] = array('IN',$base_ids);
- }
- }
- };
- $list->row_filter = function(&$row){
- $farm_id = I('get.id');
- $row['BaseId'] = $farm_id;//基地id,传过去用来获取该基地下设备进行绑定
- $type_arr = array(1=>'大棚','大田');
- $row['FarmlandType_text'] = $type_arr[$row['FarmlandType']];
- $where = array('ID'=>$row['FarmId']);
- $row['FarmId_text'] = M('uc_organization')->where($where)->getField('DepartName');
- };
- $list->display($this);
- }
-
-
- function sys_list_search( ){
-
- }
-
-
- function sys_set_manager( ){
- $form = new \Jms\Gui\ClForm();
- $form->form_filter = function(&$form){
- $base_id = I('get.base_id');
- $manager_list = get_depart_manager($base_id);
- $form['fields']['ManagerId']['editor'] = array('options'=>$manager_list);
- };
- $form->before_save = function(&$data){
-
- };
- $form->display($this);
- }
-
-
- function sys_remote_list( ){
- $list = new \Jms\Gui\ClGrid();
- $list->sql_sort = 'ID desc';
- $list->right_filter = function($right,$type){
- $page = $_SERVER['PATH_INFO'];
- return \Jms\Ucenter\Right::defaultFilter($page,$right,$type);
- };
- $list->sql_filter = function($search,&$cond){
- $level = I('get.lv');//获取当前部门等级
- $depart_id = I('get.id');
- if($depart_id){
- if($level == \Zndp\User\DepartEnum::PLANT_BASE){ //部门为基地
- $cond['FarmId'] = $depart_id;
- }else{ //其他上级部门
- //根据传进来的部门id获取其子部门下所有大棚
- $farm_ids = \Zndp\User\Util::get_depart_farm($depart_id);
- $cond['FarmId'] = array('IN',$farm_ids);
- }
- }else{ // 账号登录
- if($this->userinfo['OrganizationId']){
- //非平台管理员,获取登录角色下所有基地内的大棚
- $base_ids = \Zndp\User\Util::get_depart_farm($this->userinfo['OrganizationId']);
- $cond['FarmId'] = array('IN',$base_ids);
- }
- }
- /*
- if($this->userinfo['OrganizationId']){
- //显示登录用户部门下所有大棚
- $depart_ids = \Zndp\User\Util::get_depart_farm($this->userinfo['OrganizationId']);
- $cond['FarmId'] = array('IN',$depart_ids);
- }*/
- //搜索条件
- if($search['FarmlandName']){ //按大棚名称搜索
- $cond['FarmlandName'] = array('LIKE',"%{$search['FarmlandName']}%");
- }
- if($search['FarmlandNum']){ //按大棚编号搜索
- $cond['FarmlandNum'] = array('LIKE',"%{$search['FarmlandNum']}%");
- }
- };
- $list->row_filter = function(&$row)use($list){
- //获取大棚绑定的设备通道组
- $where = array('FarmlandId' => $row['ID']);
- $chgroup_info = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->find();
- $where = array('ID'=>$chgroup_info['DeviceId']);
- $device_addr = M('dpsb_device')->where($where)->getField('DeviceAddr');
- //根据通道组查出通道值
- $where = array('DeviceId'=>$chgroup_info['DeviceId'],'ChGroup'=>$chgroup_info['ChGroup']);
- $channel_list = M('dpsb_channel')->field('ID,ChValue,ChType,ChNumber,GatherTime')->where($where)->order('GatherTime desc')->select();
- //查出设备最新更新时间
- $row['GatherTime'] = $channel_list[0]['GatherTime'];
- foreach($channel_list as $k => $ch){
- if( $ch['ChType'] == \Zndp\Device\ChannelType::TEMPERATURE ){ //温度
- $row['wd'] = $ch['ChValue'];
- }elseif( $ch['ChType'] == \Zndp\Device\ChannelType::HUMIDITY ){ //湿度
- $row['sd'] = $ch['ChValue'];
- }elseif( $ch['ChType'] == \Zndp\Device\ChannelType::ILLINATIONUM ){ //光照
- $row['gz'] = $ch['ChValue'];
- }elseif( $ch['ChType'] == \Zndp\Device\ChannelType::FILM_CONTROL ){ //卷膜机
- $jmz_arr = array(1,6,11,16);
- $jmy_arr = array(5,10,15,20);
- if( in_array($ch['ChNumber'],$jmz_arr) ){
- $open = $list->renderPopup('打开',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=1",'打开卷膜机',400,200);
- $stop = $list->renderPopup('停止',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=0",'停止卷膜机',400,200);
- $close = $list->renderPopup('关闭',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=2",'关闭卷膜机',400,200);
- $row['jmz'] = $open .' '. $stop .' '.$close;
- }
- if( in_array($ch['ChNumber'],$jmy_arr) ){
- $open = $list->renderPopup('打开',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=1",'打开卷膜机',400,200);
- $stop = $list->renderPopup('停止',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=0",'停止卷膜机',400,200);
- $close = $list->renderPopup('关闭',"?s=dpyh_farmland/control_device&farmland_id={$row['ID']}&addr={$device_addr}&ch_number={$ch['ChNumber']}&state=2",'关闭卷膜机',400,200);
- $row['jmy'] = $open .' '. $stop .' '.$close;
- }
- }else{
-
- }
- }
-
- };
- $list->display($this);
- }
-
-
- public function control_device( ){
- $addr = I('addr');
- $ch_number = I('ch_number');
- $state = I('state');
- $host = '127.0.0.1';
- $port = 10240;
- $socket = new Jms\Network\TcpClient($host,$port);
- $cmd = array(
- "method" => "apiSendControl",
- "Addr" => $addr, //设备addr
- "channelNumber" => $ch_number, //通道编号
- "status" => $state,
- );
- $res = $socket->send(json_encode($cmd));
- PB('ui_control_result',$cmd,$res);
- if($res['success']){
- exit('下发成功');
- }else{
- exit($res['message']);
- }
- }
-
-
- function sys_msg_set( ){
- $form = new \Jms\Gui\ClForm();
- $form->before_save = function(&$data){
- // 温度不能是空字符串
- if($data['HighTempLimit'] === '' || $data['LowTempLimit'] === ''){
- json_fail('温度不能为空');
- }
- // 温度必须是数字或数字字符串
- if( !is_numeric($data['HighTempLimit']) || !is_numeric($data['LowTempLimit']) ){
- json_fail('温度必须是数字');
- }
- };
- $form->after_save = function(&$data){
- // 添加大棚报警设置信息到Redis
- $redis_alarm_ser = Redis("dpyh_alarm_set","hash");
- $key = 'FarmlandId-'.$data['ID'];//大棚ID作为key
- $alarm_data = array(
- 'FarmlandName' => $data['FarmlandName'],
- 'HighTempLimit' => $data['HighTempLimit'],
- 'MaxTempExceed' => $data['MaxTempExceed'],
- 'LowTempLimit' => $data['LowTempLimit'],
- 'LowTempExceed' => $data['LowTempExceed'],
- 'IsUseTempLimit' => $data['IsUseTempLimit'],
- 'SmsInterval' => $data['SmsInterval'],
- 'FarmId' => $data['FarmId']
- );
- $val = json_encode($alarm_data,JSON_UNESCAPED_UNICODE);
- $hash = array($key => $val );
- $result = $redis_alarm_ser->add($hash);
- if(!$result){
- json_fail('Redis缓存设置失败');
- }
- };
- $form->display($this);
- }
-
-
- function sys_remote_tree( ){
- //获取导航树数据
- $fields = 'ID as id,ParentID as pId,DepartName as name,Level as level';
- $zndp_util = new \Zndp\User\Util();
- $depart_id = $this->userinfo['OrganizationId'];
- $depart_list = $zndp_util->get_depart_option($depart_id,$fields,'name',false);
- if(empty($depart_list)){
- //没有数据,显示该
- $depart_list[0] = array('id'=>'','pid'=>'','name'=>'没有组织','direct_url'=>'');
- }else{
- for($i=0; $i<count($depart_list); $i++){// 放入链接
- /*if($depart_list[$i]['level'] <= \Zndp\User\DepartEnum::WORK_STATION){
- $depart_list[$i]['open']= true;
- }*/
- $depart_list[$i]['open']= true;
- $depart_list[$i]['direct_url'] = '?s=dpyh_farmland/sys_remote_list&lv='.$depart_list[$i]['level'];
- }
- }
- //平台,超级管理员,插入所有大棚列表
- $admin_arr = array(\Zndp\User\RoleEnum::GENERAL_ADMINISTRATOR,\Zndp\User\RoleEnum::SUPER_ADMINISTRATOR);
- if( in_array($this->userinfo['RoleId'], $admin_arr) ){
- $all_list = array('id'=>'0','pId'=>'','name'=>'所有大棚','direct_url'=>'?s=dpyh_farmland/sys_remote_list','open'=>true);
- array_unshift($depart_list,$all_list);
- }
- $this->assign('title','大棚管理');
- $this->assign('tree_data',$depart_list);
- $this->display();
- }
-
-
- function set_screen_msg( ){
- $form = new \Jms\Gui\ClForm();
- $shed = array('FirstCrop','SecondCrop','ThirdCrop','FourthCrop');
- $form->before_display = function(&$data) use($shed){
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$data['ID']);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $data['content'] = $device->where($where)->getField($shed[$val['ChGroup']]);
- }
- };
- $form->before_modify = function(&$data) use($shed){
- $farmland_id = I('get.id');
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$farmland_id);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $count = $device->where($where)->count();
- if( $count > 0 ){ //如果有绑定控制设备
- $shed_data = $data['content'];
- $result = $device->where($where)->setField( $shed[$val['ChGroup']] , $shed_data);
- if($result){
- // 设置成功了,重启软件
- $addr = $device->where($where)->getField('DeviceAddr');
- $host = '127.0.0.1';
- $port = 10240;
- $socket = new Jms\Network\TcpClient($host,$port);
- $cmd = array(
- "method" => "apiReboot",
- "Addr"=>$addr,
- );
- $res = $socket->send(json_encode($cmd));
- if($res['success']){
- json_success('设置成功,设备App自动重启中');
- }else{
- json_fail('设置成功,设备App自动重启失败,原因:' .$res['message']);
- }
-
- }
- }
-
- }
- json_fail('没有更改或没有绑定设备');
-
- };
- $form->display($this);
- }
-
-
- function sys_batch_add( ){
- $form = new \Jms\Gui\ClForm();
- $form->before_add = function(&$data){
- $where = array('ID'=>$data['FarmId']);
- $farm_info = M('uc_organization')->field('Level,DepartName')->where($where)->find();
- if( $farm_info['Level'] != \Zndp\User\DepartEnum::PLANT_BASE ){ //不是基地
- json_fail('大棚上级部门应为基地');
- }
- //批量添加
- if( $data['batch_add'] == 1 ){
- //检查起始,结束编号
- if( $data['start_num'] === '' || $data['end_num'] === '' ){
- json_fail('批量添加必须填写起始和结束编号');
- }
- //编号要是数字
- if( !is_numeric($data['start_num']) || !is_numeric($data['end_num']) ){
- json_fail('起始和结束编号必须是数字');
- }
- //起始编号不能比结束大
- if( $data['start_num'] - $data['end_num'] > 0 ){
- json_fail('起始编号不能比结束编号大');
- }
- $dpyh_farmland = M('dpyh_farmland');
- $total = 0;
- $success = 0;
- $fail = 0;
- while( $data['start_num'] <= $data['end_num'] ){
- $add_data = $data;
- $add_data['ID'] = create_guid();
- $add_data['FarmlandNum'] = str_pad($data['start_num'],2,'0',STR_PAD_LEFT );
- $add_data['FarmlandName']= $farm_info['DepartName'] . $add_data['FarmlandNum'] .'号大棚';
- //添加
- $result = $dpyh_farmland->createAdd($add_data);
- if($result){
- $success++;
- }else{
- $fail++;
- }
- $total++;
- $data['start_num']++;
- }
- $msg = '总共添加:'.$total.'个,成功:'.$success.',失败:'.$fail;
- json_success( $msg );
- }
- // 单个添加编号和名称不能为空
- if( $data['FarmlandNum'] === '' || $data['FarmlandName'] === '' ){
- json_fail('单个添加必须填写:编号和名称');
- }
- };
- $form->form_filter = function(&$form){
- // 初始化部门下拉选项
- $parent_id = I('get.parent_id');
- if(!$parent_id){
- $parent_id = $this->userinfo['OrganizationId'];
- }
- // 如果是基地点进来
- $where = array('ID'=>$parent_id);
- $field = 'ID as id,DepartName as text,Level';
- $base_info = M('uc_organization')->field($field)->where($where)->find();
- if($base_info['Level'] == \Zndp\User\DepartEnum::PLANT_BASE ){ //基地
- unset($base_info['Level']);
- $depart_list = array($base_info);
- }else{
- $zndp_util = new \Zndp\User\Util();
- $depart_list = $zndp_util->get_depart_option($parent_id);
- }
- $form['fields']['FarmId']['editor'] = array('options'=>$depart_list);
- };
- //字段联动
- $form->onchange_filter = function($field,$data){
- $result = array();
- if($field == 'FarmId'){
- if($data[$field]){
- // 根据选择的基地显示管理员
- $cond = array('ID'=>$data[$field]);
- $level = M('uc_organization')->where($cond)->getField('Level');
- if( $level == \Zndp\User\DepartEnum::PLANT_BASE ){ //基地才显示
- $where = array('OrganizationId' => $data[$field], 'RoleId' => \Zndp\User\RoleEnum::BASE_ADMINISTRATOR );//只显示基地管理员
- $fields = 'ID as id,RealName as text';
- $result['ManagerId'] = M('uc_user')->field($fields)->where($where)->select();
- }else{
- $result['ManagerId'] = array();
- }
- }
- }
- return $result;
- };
- $form->display($this);
- }
-
-
- function set_screen_msg_test( ){
- $form = new \Jms\Gui\ClForm();
- $shed = array('FirstCrop','SecondCrop','ThirdCrop','FourthCrop');
- $form->before_display = function(&$data) use($shed){
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$data['ID']);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $data['content'] = $device->where($where)->getField($shed[$val['ChGroup']]);
- }
- };
- $form->before_modify = function(&$data) use($shed){
- $farmland_id = I('get.id');
- // 查出绑定的通道组
- $where = array('FarmlandId'=>$farmland_id);
- $chgroup_list = M('dpsb_chgroup')->field('DeviceId,ChGroup')->where($where)->select();
- $device = M('dpsb_device');
- foreach($chgroup_list as $key => $val){ //可能绑定有多个设备通道
- $where = array(
- 'ID' => $val['DeviceId'],
- );
- $count = $device->where($where)->count();
- if( $count > 0 ){ //如果有绑定控制设备
- $shed_data = $data['content'];
- $result = $device->where($where)->setField( $shed[$val['ChGroup']] , $shed_data);
- if($result){
- // 设置成功了,重启软件
- $addr = $device->where($where)->getField('DeviceAddr');
- $host = '127.0.0.1';
- $port = 10240;
- $socket = new Jms\Network\TcpClient($host,$port);
- $cmd = array(
- "method" => "apiReboot",
- "Addr"=>$addr,
- );
- $res = $socket->send(json_encode($cmd));
- if($res['success']){
- json_success('设置成功,设备App自动重启中');
- }else{
- json_fail('设置成功,设备App自动重启失败,原因:' .$res['message']);
- }
-
- }
- }
-
- }
- json_fail('没有更改或没有绑定设备');
-
- };
- $form->display($this);
- }
-
- }
|