EnergyElectricity.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. use think\helper\Str;
  5. class EnergyElectricity extends Auth
  6. {
  7. public function index(){
  8. $tree = model('EnergyElectricity')->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('EnergyElectricity')->updates();
  20. if($res){
  21. $this->success('操作成功',url('index'));
  22. }else{
  23. $this->error(model('EnergyElectricity')->getError());
  24. }
  25. }else{
  26. $meta_title = '新增';
  27. if($id){
  28. $info = db('energy_electricity')->where('org_id',$this->orgId)->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_electricity')->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_electricity')->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_electricity')
  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_electricity')->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_electricity')->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_electricity')->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. * 换表
  138. * @param string $sn
  139. */
  140. public function change($sn=''){
  141. if(!$sn){
  142. $this->error('参数错误');
  143. }
  144. $record = Db::name('energy_electricity_record')
  145. ->where('sn',$sn)
  146. ->where('del',0)
  147. ->order('read_yyyymmdd desc')
  148. ->field('degree,read_time')
  149. ->findOrEmpty();
  150. if (empty($record)){
  151. $this->error('该表没有抄表记录');
  152. }
  153. $res = Db::name('energy_change_log')
  154. ->insert([
  155. 'org_id'=>$this->orgId,
  156. 'sn'=>$sn,
  157. 'degree'=>$record['degree'],
  158. 'read_time'=>$record['read_time'],
  159. 'create_time'=>getTime(),
  160. ]);
  161. if($res){
  162. $this->success('换表成功');
  163. }else{
  164. $this->error('换表失败');
  165. }
  166. }
  167. /**
  168. * 循环tree给字段重新赋值
  169. */
  170. public function traverseArray(&$array) {
  171. foreach ($array as &$item) {
  172. // 修改type_e的值
  173. if (isset($item['type_e'])) {
  174. $item['type_e'] = Db::name('energy_sort')->where('org_id',$this->orgId)->where('id',$item['type_e'])->value('name');
  175. }
  176. // 如果存在children,递归调用
  177. if (isset($item['children']) && is_array($item['children'])) {
  178. $this->traverseArray($item['children']);
  179. }
  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. }