EnergyGas.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. use think\helper\Str;
  5. class EnergyGas extends Auth
  6. {
  7. public function index(){
  8. $tree = model('EnergyGas')->showAllTree();
  9. $this->traverseArray($tree);
  10. // halt($tree);
  11. $this->assign('tree',$tree);
  12. return $this->fetch();
  13. }
  14. /**
  15. * 新增/编辑
  16. */
  17. public function add($pid=0,$t=0,$id=0){
  18. if(request()->isPost()){
  19. $res = model('EnergyGas')->updates();
  20. if($res){
  21. $this->success('操作成功',url('index'));
  22. }else{
  23. $this->error(model('EnergyGas')->getError());
  24. }
  25. }else{
  26. $meta_title = '新增';
  27. if($id){
  28. $info = db('energy_gas')->where('id',$id)->find();
  29. $info['dep'] = explode(',',$info['dep']);
  30. $this->assign('info',$info);
  31. $info['s'] = $info['share'] ? (string)$info['share'] : '';
  32. $meta_title = '编辑';
  33. }
  34. $map[] = ['del','=',0];
  35. $map[]= ['enable','=',1];
  36. $map[]= ['org_id','=',$this->orgId];
  37. $alists = db('energy_area')
  38. ->field('id,title')
  39. ->where($map)
  40. ->where('pid',0)
  41. ->select();
  42. foreach ($alists as $k=>$v) {
  43. $alists[$k]['children'] = db('energy_area')
  44. ->field('id,title')
  45. ->where('pid', $v['id'])
  46. ->where($map)
  47. ->select();
  48. foreach ($alists[$k]['children'] as $kk => $vv) {
  49. $alists[$k]['children'][$kk]['children'] = db('energy_area')
  50. ->field('id,title')
  51. ->where('pid', $vv['id'])
  52. ->where($map)
  53. ->select();
  54. }
  55. }
  56. $dlists = db('energy_dep')
  57. ->field('id,name')
  58. ->where($map)
  59. ->select();
  60. $tlists = db('energy_sort')
  61. ->field('id,name')
  62. ->where($map)
  63. ->select();
  64. $this->assign('alist',$alists);
  65. $this->assign('dlist',$dlists);
  66. $this->assign('tlist',$tlists);
  67. $this->assign('pid',$pid);
  68. $this->assign('t',$t);
  69. $this->assign('meta_title',$meta_title);
  70. return $this->fetch();
  71. }
  72. }
  73. /**
  74. * 拆分电表
  75. */
  76. public function split($id=0)
  77. {
  78. if(request()->isPost()){
  79. $id = input('post.id');
  80. $split = input('post.split');
  81. $res = Db::name('energy_gas')->where('id',$id)->setField(['split'=>$split]);
  82. if($res){
  83. $this->success('操作成功',url('index'));
  84. }else{
  85. $this->error('操作失败');
  86. }
  87. }else{
  88. $info = db('energy_gas')->where('id',$id)->find();
  89. $this->assign('info',$info);
  90. $map[] = ['del','=',0];
  91. $map[]= ['enable','=',1];
  92. $map[]= ['org_id','=',$this->orgId];
  93. $map[]= ['id','<>',$id];
  94. $list = Db::name('energy_gas')
  95. ->where('parent_id','>',0)
  96. ->where($map)
  97. ->select();
  98. foreach ($list as $k=>$v) {
  99. $list[$k]['number'] = $v['name'].'————'.$v['number'];
  100. }
  101. $this->assign('list',$list);
  102. $this->assign('id',$id);
  103. return $this->fetch();
  104. }
  105. }
  106. public function changeEnable($id=0,$enable=0){
  107. if($id <= 0){
  108. $this->error('参数错误');
  109. }
  110. $ret = Db::name('energy_gas')->where('org_id',$this->orgId)->where('id',$id)->setField('enable',$enable);
  111. if(!$ret){
  112. $this->error('操作失败');
  113. }
  114. $this->success('操作成功');
  115. }
  116. /**
  117. * 删除记录
  118. * @param int $id
  119. */
  120. public function del($id=0){
  121. if(!$id){
  122. $this->error('参数错误');
  123. }
  124. // 检查是否有子级
  125. $ret = Db::name('energy_gas')->where('org_id',$this->orgId)->where('parent_id',$id)->where('del',0)->find();
  126. if($ret){
  127. $this->error('有子燃气表不能删除');
  128. }
  129. $res = Db::name('energy_gas')->where('org_id',$this->orgId)->where('id',$id)->setField('del',1);
  130. if($res){
  131. $this->success('删除成功');
  132. }else{
  133. $this->error('删除失败');
  134. }
  135. }
  136. /**
  137. * 循环tree给字段重新赋值
  138. */
  139. public function traverseArray(&$array) {
  140. foreach ($array as &$item) {
  141. // 修改type_e的值
  142. if (isset($item['type_e'])) {
  143. $item['type_e'] = Db::name('energy_sort')->where('org_id',$this->orgId)->where('id',$item['type_e'])->value('name');
  144. }
  145. // 如果存在children,递归调用
  146. if (isset($item['children']) && is_array($item['children'])) {
  147. $this->traverseArray($item['children']);
  148. }
  149. }
  150. }
  151. /**
  152. * 换表
  153. * @param string $sn
  154. */
  155. public function change($sn=''){
  156. if(!$sn){
  157. $this->error('参数错误');
  158. }
  159. $record = Db::name('energy_gas_record')
  160. ->where('sn',$sn)
  161. ->where('del',0)
  162. ->order('read_yyyymmdd desc')
  163. ->field('degree,read_time')
  164. ->findOrEmpty();
  165. if (empty($record)){
  166. $this->error('该表没有抄表记录');
  167. }
  168. $res = Db::name('energy_change_log')
  169. ->insert([
  170. 'org_id'=>$this->orgId,
  171. 'sn'=>$sn,
  172. 'degree'=>$record['degree'],
  173. 'read_time'=>$record['read_time'],
  174. 'create_time'=>getTime(),
  175. ]);
  176. if($res){
  177. $this->success('换表成功');
  178. }else{
  179. $this->error('换表失败');
  180. }
  181. }
  182. public function getDep() {
  183. $data = $this->request->param();
  184. $value = $data['param'];
  185. if ($value){
  186. $map[] = ['address','like','%'.$value.'%'];
  187. }else{
  188. $map[] = ['address','=',0];
  189. }
  190. $map[] = ['del','=',0];
  191. $map[]= ['enable','=',1];
  192. $map[]= ['org_id','=',$this->orgId];
  193. $lists = db('energy_dep')
  194. ->field('id,name')
  195. ->where($map)
  196. ->select();
  197. return json(['data'=>$lists]);
  198. }
  199. }