EnergyWater.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. use think\helper\Str;
  5. class EnergyWater extends Auth
  6. {
  7. public function index(){
  8. $tree = model('EnergyWater')->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('EnergyWater')->updates();
  20. if($res){
  21. $this->success('操作成功',url('index'));
  22. }else{
  23. $this->error(model('EnergyWater')->getError());
  24. }
  25. }else{
  26. $meta_title = '新增';
  27. if($id){
  28. $info = db('energy_water')->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. $this->assign('alist',$alists);
  61. $this->assign('dlist',$dlists);
  62. $this->assign('pid',$pid);
  63. $this->assign('t',$t);
  64. $this->assign('meta_title',$meta_title);
  65. return $this->fetch();
  66. }
  67. }
  68. /**
  69. * 拆分电表
  70. */
  71. public function split($id=0)
  72. {
  73. if(request()->isPost()){
  74. $id = input('post.id');
  75. $split = input('post.split');
  76. $res = Db::name('energy_water')->where('org_id',$this->orgId)->where('id',$id)->setField(['split'=>$split]);
  77. if($res){
  78. $this->success('操作成功',url('index'));
  79. }else{
  80. $this->error('操作失败');
  81. }
  82. }else{
  83. $info = db('energy_water')->where('org_id',$this->orgId)->where('id',$id)->find();
  84. $this->assign('info',$info);
  85. $map[] = ['del','=',0];
  86. $map[]= ['enable','=',1];
  87. $map[]= ['org_id','=',$this->orgId];
  88. $map[]= ['id','<>',$id];
  89. $list = Db::name('energy_water')
  90. ->where('parent_id','>',0)
  91. ->where($map)
  92. ->where('type_w',$info['type_w'])
  93. ->select();
  94. foreach ($list as $k=>$v) {
  95. $list[$k]['number'] = $v['name'].'————'.$v['number'];
  96. }
  97. $this->assign('list',$list);
  98. $this->assign('id',$id);
  99. return $this->fetch();
  100. }
  101. }
  102. public function changeEnable($id=0,$enable=0){
  103. if($id <= 0){
  104. $this->error('参数错误');
  105. }
  106. $ret = Db::name('energy_water')->where('org_id',$this->orgId)->where('id',$id)->setField('enable',$enable);
  107. if(!$ret){
  108. $this->error('操作失败');
  109. }
  110. $this->success('操作成功');
  111. }
  112. /**
  113. * 删除记录
  114. * @param int $id
  115. */
  116. public function del($id=0){
  117. if(!$id){
  118. $this->error('参数错误');
  119. }
  120. // 检查是否有子级
  121. $ret = Db::name('energy_water')->where('org_id',$this->orgId)->where('parent_id',$id)->where('del',0)->find();
  122. if($ret){
  123. $this->error('有子水表不能删除');
  124. }
  125. $res = Db::name('energy_water')->where('org_id',$this->orgId)->where('id',$id)->setField('del',1);
  126. if($res){
  127. $this->success('删除成功');
  128. }else{
  129. $this->error('删除失败');
  130. }
  131. }
  132. /**
  133. * 循环tree给字段重新赋值
  134. */
  135. public function traverseArray(&$array) {
  136. foreach ($array as &$item) {
  137. // 修改type_e的值
  138. if (isset($item['type_w'])) {
  139. $item['type_w'] = $item['type_w'] == 0 ? '冷水' : ($item['type_w'] == 1 ? '热水进水' :'热水回水');
  140. }
  141. // 如果存在children,递归调用
  142. if (isset($item['children']) && is_array($item['children'])) {
  143. $this->traverseArray($item['children']);
  144. }
  145. }
  146. }
  147. /**
  148. * 换表
  149. * @param string $sn
  150. */
  151. public function change($sn=''){
  152. if(!$sn){
  153. $this->error('参数错误');
  154. }
  155. $record = Db::name('energy_water_record')
  156. ->where('sn',$sn)
  157. ->where('del',0)
  158. ->order('read_yyyymmdd desc')
  159. ->field('degree,read_time')
  160. ->findOrEmpty();
  161. if (empty($record)){
  162. $this->error('该表没有抄表记录');
  163. }
  164. $res = Db::name('energy_change_log')
  165. ->insert([
  166. 'org_id'=>$this->orgId,
  167. 'sn'=>$sn,
  168. 'degree'=>$record['degree'],
  169. 'read_time'=>$record['read_time'],
  170. 'create_time'=>getTime(),
  171. ]);
  172. if($res){
  173. $this->success('换表成功');
  174. }else{
  175. $this->error('换表失败');
  176. }
  177. }
  178. public function getDep() {
  179. $data = $this->request->param();
  180. $value = $data['param'];
  181. if ($value){
  182. $map[] = ['address','like','%'.$value.'%'];
  183. }else{
  184. $map[] = ['address','=',0];
  185. }
  186. $map[] = ['del','=',0];
  187. $map[]= ['enable','=',1];
  188. $map[]= ['org_id','=',$this->orgId];
  189. $lists = db('energy_dep')
  190. ->field('id,name')
  191. ->where($map)
  192. ->select();
  193. return json(['data'=>$lists]);
  194. }
  195. }