| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 | 
							- <?php
 
- namespace app\admin\controller;
 
- use think\App;
 
- use think\Db;
 
- class UserStatistics extends Auth {
 
-     public function user() {
 
-         $roles = Db::name('roles')
 
-             ->where('type', 1)
 
-             ->where('parent_id', 0)
 
-             ->select();
 
-         $all = 0;
 
-         foreach ($roles as $k => $v) {
 
-             $res = Db::name('user')
 
-                 ->alias('a')
 
-                 ->join('user_roles b', 'a.id=b.user_id')
 
-                 ->join('user_org c', 'a.id=c.user_id')
 
-                 ->join('roles d', 'b.roles_id=d.id')
 
-                 ->where('a.del', 0)
 
-                 ->where('a.enable', 1)
 
-                 ->where('d.parent_id', $v['id'])
 
-                 ->where('c.org_id', $this->orgId)
 
-                 ->count();
 
-             $roles[$k]['value'] = $res ? $res : 0;
 
-             $all += $res;
 
-         }
 
-         $this->assign('list', $roles);
 
-         $this->assign('allCount', $all);
 
-         return $this->fetch();
 
-     }
 
-     public function org_order() {
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $title = input('title','');
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $list = $this->orgOrderData($start1, $end1,$title);
 
-         $this->assign('list', $list['list']);
 
-         $this->assign('totalList', $list['dt']);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         $this->assign('title', $title);
 
-         return $this->fetch();
 
-     }
 
-     public function orgOrderData($start1, $end1,$title) {
 
-         $map[] = ['del','=',0];
 
-         if($title !=''){
 
-             $map[] = ['name','like','%'.$title.'%'];
 
-         }
 
-         $list = Db::name('org')
 
-             ->where('type',1)
 
-             ->where('enable',1)
 
-             ->where($map)
 
-             ->where('parent_id',1)
 
-             ->field('id,name')
 
-             ->select();
 
-         $map1[] = ['create_time', '>=', $start1];
 
-         $map1[] = ['create_time', '<=', $end1];
 
-         $alist = [];
 
-         foreach ($list as $k1 => $v1) {
 
-             $orgs = model('org')->getAllNextId($v1['id']);
 
-             $orgList = Db::name('org')
 
-                 ->where('del',0)
 
-                 ->where('enable',1)
 
-                 ->where('type',2)
 
-                 ->whereIn('id',$orgs)
 
-                 ->field('id,name')
 
-                 ->select();
 
-             foreach ($orgList as $kk=>$vv){
 
-                 $count = Db::name('orders')
 
-                     ->where('del', 0)
 
-                     ->where('org_id', $vv['id'])
 
-                     ->where($map1)
 
-                     ->count();
 
-                 $bx = Db::name('orders')
 
-                     ->where('del', 0)
 
-                     ->where('org_id', $vv['id'])
 
-                     ->where('work_type_mode', 1)
 
-                     ->where($map1)
 
-                     ->count();
 
-                 $bj = Db::name('orders')
 
-                     ->where('del', 0)
 
-                     ->where('org_id', $vv['id'])
 
-                     ->where('work_type_mode', 2)
 
-                     ->where($map1)
 
-                     ->count();
 
-                 $ys = Db::name('orders')
 
-                     ->where('del', 0)
 
-                     ->where('org_id', $vv['id'])
 
-                     ->where('work_type_mode', 3)
 
-                     ->where($map1)
 
-                     ->count();
 
-                 $yh = Db::name('orders')
 
-                     ->where('del', 0)
 
-                     ->where('org_id', $vv['id'])
 
-                     ->where('work_type_mode', 4)
 
-                     ->where($map1)
 
-                     ->count();
 
-                 $alist[] = [
 
-                     'area_name'=> $kk==0 ?$v1['name']:'',
 
-                     'org_num'=>count($orgList),
 
-                     'name'=>$vv['name'],
 
-                     'count'=>$count,
 
-                     'bx'=>$bx,
 
-                     'bj'=>$bj,
 
-                     'ys'=>$ys,
 
-                     'yh'=>$yh,
 
-                 ];
 
-             }
 
-         }
 
-         $totalList =[
 
-             array_sum(array_column($alist,'count')),
 
-             array_sum(array_column($alist,'bx')),
 
-             array_sum(array_column($alist,'bj')),
 
-             array_sum(array_column($alist,'ys')),
 
-             array_sum(array_column($alist,'yh')),
 
-         ];
 
-         return ['list'=>$alist,'dt'=>$totalList];
 
-     }
 
-     public function orgOrderExport() {
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $title = input('title','');
 
-         $list = $this->orgOrderData($start1, $end1,$title);
 
-         $ret = $list['list'];
 
-         $totalList = $list['dt'];
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $title = '各项目订单统计';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">区域名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">项目名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总数</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">报修</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">保洁</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">运送</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">应急</th>';
 
-         $res.='</tr>';
 
-         foreach ($ret as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             if($v['area_name']){
 
-                 $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['org_num'].'">'.$v['area_name'].'</td>';
 
-             }
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['name'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['count'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['bx'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['bj'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['ys'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['yh'].'</td>';
 
-             $res.='</tr>';
 
-         }
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" colspan="2">合计:</td>';
 
-         foreach ($totalList as $k=>$v){
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" >'.$v.'</td>';
 
-         }
 
-         $res.='</tr>';
 
-         echo $res;
 
-     }
 
-     public function org_user() {
 
-         $title = input('title','');
 
-         $list = $this->orgUserData($title);
 
-         $this->assign('list', $list['list']);
 
-         $this->assign('totalList', $list['totalList']);
 
-         $this->assign('title',$title);
 
-         return $this->fetch();
 
-     }
 
-     public function orgUserData($title) {
 
-         $map[] = ['del','=',0];
 
-         if($title !=''){
 
-             $map[] = ['name','like','%'.$title.'%'];
 
-         }
 
-         $lists = Db::name('org')
 
-             ->where('type',1)
 
-             ->where('enable',1)
 
-             ->where($map)
 
-             ->where('parent_id',1)
 
-             ->field('id,name')
 
-             ->select();
 
-         $alist = [];
 
-         foreach ($lists as $k1 => $v1) {
 
-             $orgs = model('org')->getAllNextId($v1['id']);
 
-             $orgList = Db::name('org')
 
-                 ->where('del',0)
 
-                 ->where('enable',1)
 
-                 ->where('type',2)
 
-                 ->whereIn('id',$orgs)
 
-                 ->field('id,name')
 
-                 ->select();
 
-             foreach ($orgList as $kk=>$vv){
 
-                 $res = Db::name('user')
 
-                     ->alias('a')
 
-                     ->field('a.id,d.parent_id')
 
-                     ->join('user_roles b', 'a.id=b.user_id')
 
-                     ->join('user_org c', 'a.id=c.user_id')
 
-                     ->join('roles d', 'b.roles_id=d.id')
 
-                     ->where('a.del', 0)
 
-                     ->where('a.enable', 1)
 
-                     ->where('d.parent_id', 'in',[3,4,5,6,7,8,9,10])
 
-                     ->where('c.org_id', $vv['id'])
 
-                     ->select();
 
-                 $a1 = $a2 = $a3= $a4= $a5= $a6= $a7 = $a8 =0;
 
-                 foreach ($res as $kkk=>$vvv){
 
-                     if($vvv['parent_id'] == 3){
 
-                         $a1 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 4){
 
-                         $a2 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 5){
 
-                         $a3 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 6){
 
-                         $a4 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 7){
 
-                         $a5 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 8){
 
-                         $a6 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 9){
 
-                         $a7 +=1;
 
-                     }
 
-                     if($vvv['parent_id'] == 10){
 
-                         $a8 +=1;
 
-                     }
 
-                 }
 
-                 $alist[] = [
 
-                     'area_name'=> $kk==0 ?$v1['name']:'',
 
-                     'org_num'=>count($orgList),
 
-                     'name'=>$vv['name'],
 
-                     'count'=>count($res),
 
-                     'a1'=>$a1,
 
-                     'a2'=>$a2,
 
-                     'a3'=>$a3,
 
-                     'a4'=>$a4,
 
-                     'a5'=>$a5,
 
-                     'a6'=>$a6,
 
-                     'a7'=>$a7,
 
-                     'a8'=>$a8,
 
-                 ];
 
-             }
 
-         }
 
-         $totalList =[
 
-             array_sum(array_column($alist,'count')),
 
-             array_sum(array_column($alist,'a1')),
 
-             array_sum(array_column($alist,'a2')),
 
-             array_sum(array_column($alist,'a3')),
 
-             array_sum(array_column($alist,'a4')),
 
-             array_sum(array_column($alist,'a5')),
 
-             array_sum(array_column($alist,'a6')),
 
-             array_sum(array_column($alist,'a7')),
 
-             array_sum(array_column($alist,'a8')),
 
-         ];
 
-         return ['list'=>$alist,'totalList'=>$totalList];
 
-     }
 
-     public function orgUserExport() {
 
-         $title = input('title','');
 
-         $list = $this->orgUserData($title);
 
-         $ret = $list['list'];
 
-         $totalList = $list['totalList'];
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $title = '各项目人员统计';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">区域名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">项目名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总数</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">客户</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">综合</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">保安</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">运送</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">维修</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">保洁</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">调度</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">管理层</th>';
 
-         $res.='</tr>';
 
-         foreach ($ret as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             if($v['area_name']){
 
-                 $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['org_num'].'">'.$v['area_name'].'</td>';
 
-             }
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['name'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['count'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a1'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a2'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a3'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a4'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a5'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a6'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a7'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['a8'].'</td>';
 
-             $res.='</tr>';
 
-         }
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" colspan="2">合计:</td>';
 
-         foreach ($totalList as $k=>$v){
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" >'.$v.'</td>';
 
-         }
 
-         $res.='</tr>';
 
-         echo $res;
 
-     }
 
- }
 
 
  |