123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <?php
- class DpsbChannelAction extends CommonAction {
- const tableName = 'dpsb_channel';
- const pkName = 'ID';
-
-
- function sys_list( ){
- $list = new \Jms\Gui\ClGrid();
- $list->sql_sort = 'ChNumber desc';
- $list->sql_filter = function($search,&$cond){
- // 如果是从大棚点击查看的
- $id = I('get.id');
- $where = array('FarmlandId' => $id);
- $device_ids = M('dpsb_chgroup')->field('DeviceId,Chgroup')->where($where)->select();
- if( $device_ids ){
- $query_sql = '';
- for($i=0; $i<count($device_ids); $i++){
- $query_sql .= '(DeviceId=' .$device_ids[$i]['DeviceId'] .' AND ChGroup='.$device_ids[$i]['Chgroup'].'),';
- }
- $query_sql = str_replace(',','OR',rtrim($query_sql,','));
- $cond = array($query_sql);
- }else{
- $cond['DeviceId'] = $id;
- }
-
- };
- $list->row_filter = function(&$row) use ($list){
- $type = new \Zndp\Device\ChannelType;
- $typeinfo = $type->getTypeInfo($row['ChType']);
- $row['ChannelType_text'] = $typeinfo[0].'('.$typeinfo[1].')';
- $row['ChannelGroup_text'] = '通道组'.($row['ChGroup']+1);
- if($row['IsUse'] == 0){
- $row['IsUse_text'] = "<span style = 'color:gray'>未使用</span>";
- }else{
- $row['IsUse_text'] = "<span style = 'color:green'>使用</span>";
- }
- if($row['ChMan'] == 1){
- $row['ChMan_text'] = "<span style = 'color:gray'>手动</span>";
- }else{
- $row['ChMan_text'] = "<span style = 'color:green'>自动</span>";
- }
- $row['DeviceId'] = M('dpsb_device')->where(array('ID'=>$row['DeviceId']))->getField('WorkUnitName');
- // 传感器名称可编辑
- $row['DisplayName'] = $list->renderXEditableInput('编辑传感器名称',$row,'DisplayName');
- };
- $list->toolbar_filter = function(&$button){
-
- $deviceid = I('get.id');
- if($button['icon'] == 'add'){
- $button['url'] .= '&deviceid=' .$deviceid; //修改按钮网址
- }
- };
- $list->display($this);
- }
-
-
- function sys_addedit( ){
- $form = new \Jiaruan\LigerIframeForm();
- $form->before_add = function(&$data){
- $data['DeviceId'] = I('get.deviceid');
- //检测IMEI是否重复
- $chnumber = trim($data['ChNumber']);
- $channel_info = M('dpsb_channel')->where(array('ChNumber'=>$chnumber))->find();
- if($channel_info){
- json_fail('该通道已存在,请重新输入!');
- }
- //判断通道组中存在某一通道类型之后不能再重复添加
- $ghannelgroup = trim($data['ChGroup']);
- $channel_info = M('dpsb_channel')->where(array('ChGroup'=>$ghannelgroup))->find();
- if($data['ChType'] == $channel_info['ChType']){
- json_fail('该通道类型已存在,请重新输入!');
- }
- };
- $form->before_save = function(&$data){
- $id = I('get.id');
- $chnumber = trim($data['ChNumber']);
- $cond = array('ID'=>$id);
- $userinfo = M('dpsb_channel')->where($cond)->field('ChNumber')->find();
- $channel_info = M('dpsb_channel')->where(array('ChNumber'=>$chnumber))->find();
- if($chnumber != $userinfo['ChNumber'] && $channel_info){
- json_fail('该通道已存在,请重新输入!');
- }
- };
- $form->form_filter = function(&$form){
- //显示下拉数据
- $type = new \Zndp\Device\ChannelType;
- $channeltype = $type->getTypeOptions();
- $form['fields']['ChType']['editor'] = array('options'=>$channeltype);
- };
-
- $form->display($this);
- }
-
-
- public function sys_del( ){
- if (IS_AJAX) {
- $channel_id = I('get.id');
- if ( empty($channel_id)) {
- json_fail('设备id不能为空');
- }
- if(M('dpsb_channel')->where(array( 'ID' => $channel_id ))->delete() === false){
- json_fail('删除失败','');
- }
- json_success('删除成功','');
- }
-
- }
-
-
- public function test( ){
- var_dump(time());
-
- }
-
-
- function send( ){
- $form = new \Jiaruan\LigerIframeForm();
- $form->before_save = function(&$data){
- //$addr = M('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('DeviceAddr');
- $host = '127.0.0.1';
- $port = 10240;
- $socket = new Jms\Network\TcpClient($host,$port);
- $cmd = array(
- "method" => "apiSendControl",
- "Addr" => $data['DeviceAddr'], //设备addr
- "channelNumber" => $data['ChNumber'], //通道编号
- "status" => $data['Status'],
- );
- $res = $socket->send(json_encode($cmd));
- // var_dump($res);
- if($res['success']){
- json_success('下发成功');
- }else{
- json_fail($res['message']);
- }
- };
- $form->before_display = function(&$data){
- $data['DeviceId_text'] = MM('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('WorkUnitName');
- $data['DeviceAddr'] = MM('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('DeviceAddr');
- };
-
- $form->display($this);
- }
-
-
- public function sys_start( ){
- if(IS_AJAX){
- $id = I('get.id');
- if ( empty($id)) {
- json_fail('通道id不能为空');
- }
- $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
- $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
- $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
- $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" => 1,
- );
- $res = $socket->send(json_encode($cmd));
- if($res['success']){
- json_success('下发成功');
- }else{
- json_fail($res['message']);
- }
- }
- }
-
-
- public function sys_close( ){
- if(IS_AJAX){
- $id = I('get.id');
- if ( empty($id)) {
- json_fail('通道id不能为空');
- }
- $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
- $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
- $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
- $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" => 2,
- );
- $res = $socket->send(json_encode($cmd));
- if($res['success']){
- json_success('下发成功');
- }else{
- json_fail($res['message']);
- }
- }
-
- }
-
-
- public function sys_stop( ){
- if(IS_AJAX){
- $id = I('get.id');
- if ( empty($id)) {
- json_fail('通道id不能为空');
- }
- $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
- $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
- $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
- $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" => 0,
- );
- $res = $socket->send(json_encode($cmd));
- if($res['success']){
- json_success('下发成功');
- }else{
- json_fail($res['message']);
- }
-
- }
- }
-
- }
|