DpsbChannelAction.class.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. class DpsbChannelAction extends CommonAction {
  3. const tableName = 'dpsb_channel';
  4. const pkName = 'ID';
  5. function sys_list( ){
  6. $list = new \Jms\Gui\ClGrid();
  7. $list->sql_sort = 'ChNumber desc';
  8. $list->sql_filter = function($search,&$cond){
  9. // 如果是从大棚点击查看的
  10. $id = I('get.id');
  11. $where = array('FarmlandId' => $id);
  12. $device_ids = M('dpsb_chgroup')->field('DeviceId,Chgroup')->where($where)->select();
  13. if( $device_ids ){
  14. $query_sql = '';
  15. for($i=0; $i<count($device_ids); $i++){
  16. $query_sql .= '(DeviceId=' .$device_ids[$i]['DeviceId'] .' AND ChGroup='.$device_ids[$i]['Chgroup'].'),';
  17. }
  18. $query_sql = str_replace(',','OR',rtrim($query_sql,','));
  19. $cond = array($query_sql);
  20. }else{
  21. $cond['DeviceId'] = $id;
  22. }
  23. };
  24. $list->row_filter = function(&$row) use ($list){
  25. $type = new \Zndp\Device\ChannelType;
  26. $typeinfo = $type->getTypeInfo($row['ChType']);
  27. $row['ChannelType_text'] = $typeinfo[0].'('.$typeinfo[1].')';
  28. $row['ChannelGroup_text'] = '通道组'.($row['ChGroup']+1);
  29. if($row['IsUse'] == 0){
  30. $row['IsUse_text'] = "<span style = 'color:gray'>未使用</span>";
  31. }else{
  32. $row['IsUse_text'] = "<span style = 'color:green'>使用</span>";
  33. }
  34. if($row['ChMan'] == 1){
  35. $row['ChMan_text'] = "<span style = 'color:gray'>手动</span>";
  36. }else{
  37. $row['ChMan_text'] = "<span style = 'color:green'>自动</span>";
  38. }
  39. $row['DeviceId'] = M('dpsb_device')->where(array('ID'=>$row['DeviceId']))->getField('WorkUnitName');
  40. // 传感器名称可编辑
  41. $row['DisplayName'] = $list->renderXEditableInput('编辑传感器名称',$row,'DisplayName');
  42. };
  43. $list->toolbar_filter = function(&$button){
  44. $deviceid = I('get.id');
  45. if($button['icon'] == 'add'){
  46. $button['url'] .= '&deviceid=' .$deviceid; //修改按钮网址
  47. }
  48. };
  49. $list->display($this);
  50. }
  51. function sys_addedit( ){
  52. $form = new \Jiaruan\LigerIframeForm();
  53. $form->before_add = function(&$data){
  54. $data['DeviceId'] = I('get.deviceid');
  55. //检测IMEI是否重复
  56. $chnumber = trim($data['ChNumber']);
  57. $channel_info = M('dpsb_channel')->where(array('ChNumber'=>$chnumber))->find();
  58. if($channel_info){
  59. json_fail('该通道已存在,请重新输入!');
  60. }
  61. //判断通道组中存在某一通道类型之后不能再重复添加
  62. $ghannelgroup = trim($data['ChGroup']);
  63. $channel_info = M('dpsb_channel')->where(array('ChGroup'=>$ghannelgroup))->find();
  64. if($data['ChType'] == $channel_info['ChType']){
  65. json_fail('该通道类型已存在,请重新输入!');
  66. }
  67. };
  68. $form->before_save = function(&$data){
  69. $id = I('get.id');
  70. $chnumber = trim($data['ChNumber']);
  71. $cond = array('ID'=>$id);
  72. $userinfo = M('dpsb_channel')->where($cond)->field('ChNumber')->find();
  73. $channel_info = M('dpsb_channel')->where(array('ChNumber'=>$chnumber))->find();
  74. if($chnumber != $userinfo['ChNumber'] && $channel_info){
  75. json_fail('该通道已存在,请重新输入!');
  76. }
  77. };
  78. $form->form_filter = function(&$form){
  79. //显示下拉数据
  80. $type = new \Zndp\Device\ChannelType;
  81. $channeltype = $type->getTypeOptions();
  82. $form['fields']['ChType']['editor'] = array('options'=>$channeltype);
  83. };
  84. $form->display($this);
  85. }
  86. public function sys_del( ){
  87. if (IS_AJAX) {
  88. $channel_id = I('get.id');
  89. if ( empty($channel_id)) {
  90. json_fail('设备id不能为空');
  91. }
  92. if(M('dpsb_channel')->where(array( 'ID' => $channel_id ))->delete() === false){
  93. json_fail('删除失败','');
  94. }
  95. json_success('删除成功','');
  96. }
  97. }
  98. public function test( ){
  99. var_dump(time());
  100. }
  101. function send( ){
  102. $form = new \Jiaruan\LigerIframeForm();
  103. $form->before_save = function(&$data){
  104. //$addr = M('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('DeviceAddr');
  105. $host = '127.0.0.1';
  106. $port = 10240;
  107. $socket = new Jms\Network\TcpClient($host,$port);
  108. $cmd = array(
  109. "method" => "apiSendControl",
  110. "Addr" => $data['DeviceAddr'], //设备addr
  111. "channelNumber" => $data['ChNumber'], //通道编号
  112. "status" => $data['Status'],
  113. );
  114. $res = $socket->send(json_encode($cmd));
  115. // var_dump($res);
  116. if($res['success']){
  117. json_success('下发成功');
  118. }else{
  119. json_fail($res['message']);
  120. }
  121. };
  122. $form->before_display = function(&$data){
  123. $data['DeviceId_text'] = MM('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('WorkUnitName');
  124. $data['DeviceAddr'] = MM('dpsb_device')->where(array('ID'=>$data['DeviceId']))->getField('DeviceAddr');
  125. };
  126. $form->display($this);
  127. }
  128. public function sys_start( ){
  129. if(IS_AJAX){
  130. $id = I('get.id');
  131. if ( empty($id)) {
  132. json_fail('通道id不能为空');
  133. }
  134. $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
  135. $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
  136. $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
  137. $host = '127.0.0.1';
  138. $port = 10240;
  139. $socket = new Jms\Network\TcpClient($host,$port);
  140. $cmd = array(
  141. "method" => "apiSendControl",
  142. "Addr" => $addr, //设备addr
  143. "channelNumber" => $ch_number, //通道编号
  144. "status" => 1,
  145. );
  146. $res = $socket->send(json_encode($cmd));
  147. if($res['success']){
  148. json_success('下发成功');
  149. }else{
  150. json_fail($res['message']);
  151. }
  152. }
  153. }
  154. public function sys_close( ){
  155. if(IS_AJAX){
  156. $id = I('get.id');
  157. if ( empty($id)) {
  158. json_fail('通道id不能为空');
  159. }
  160. $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
  161. $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
  162. $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
  163. $host = '127.0.0.1';
  164. $port = 10240;
  165. $socket = new Jms\Network\TcpClient($host,$port);
  166. $cmd = array(
  167. "method" => "apiSendControl",
  168. "Addr" => $addr, //设备addr
  169. "channelNumber" => $ch_number, //通道编号
  170. "status" => 2,
  171. );
  172. $res = $socket->send(json_encode($cmd));
  173. if($res['success']){
  174. json_success('下发成功');
  175. }else{
  176. json_fail($res['message']);
  177. }
  178. }
  179. }
  180. public function sys_stop( ){
  181. if(IS_AJAX){
  182. $id = I('get.id');
  183. if ( empty($id)) {
  184. json_fail('通道id不能为空');
  185. }
  186. $device_id = M('dpsb_channel')->where(array('ID'=>$id))->getField('DeviceId');
  187. $ch_number = M('dpsb_channel')->where(array('ID'=>$id))->getField('ChNumber');
  188. $addr = M('dpsb_device')->where(array('ID'=>$device_id))->getField('DeviceAddr');
  189. $host = '127.0.0.1';
  190. $port = 10240;
  191. $socket = new Jms\Network\TcpClient($host,$port);
  192. $cmd = array(
  193. "method" => "apiSendControl",
  194. "Addr" => $addr, //设备addr
  195. "channelNumber" => $ch_number, //通道编号
  196. "status" => 0,
  197. );
  198. $res = $socket->send(json_encode($cmd));
  199. if($res['success']){
  200. json_success('下发成功');
  201. }else{
  202. json_fail($res['message']);
  203. }
  204. }
  205. }
  206. }