| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544 | 
							- <?php
 
- namespace app\api\controller\screen;
 
- use app\api\controller\screen\Index;
 
- use app\hander\HelpHander;
 
- use think\Db;
 
- use think\helper\Time;
 
- class Popup extends Index
 
- {
 
-     // 项目大屏--员工实时在岗情况
 
-     public function userPraise(){
 
-         $allUids = model('WorkTypeMode')->getWorkerUserIds($this->orgId);
 
-         $users = [];
 
-         if($allUids){
 
-             $users = Db::name('user')
 
-                 ->where('id','in',$allUids)
 
-                 ->order('score desc,id asc')
 
-                 ->field('id,real_name,score')
 
-                 ->limit(10)
 
-                 ->select();
 
-             $users = $users?$users:[];
 
-         }
 
-         $data = [];
 
-         foreach ($users as $k=>$v){
 
-             $top = 'TOP'.($k+1);
 
-             $data[$k]['top'] = $top;
 
-             $data[$k]['name'] = $v['real_name'];
 
-             $data[$k]['score'] = $v['score'];
 
-         }
 
-         HelpHander::success($data);
 
-     }
 
-     public function hotMate(){
 
-         $map[] = ['tm.org_id','=',$this->orgId];
 
-         $lists = Db::name('todo_mate_item')
 
-             ->alias('tmi')
 
-             ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-             ->where($map)
 
-             ->field('sum(total) as total,items_id')
 
-             ->group('items_id')
 
-             ->distinct(true)
 
-             ->order('total desc')
 
-             ->limit(10)
 
-             ->select();
 
-         $data = [];
 
-         foreach ($lists as $k=>$v){
 
-             $top = 'TOP'.($k+1);
 
-             $name = Db::name('mate_goods')->where('id',$v['items_id'])->value('title');
 
-             $data[$k]['top'] = $top;
 
-             $data[$k]['name'] = $name ? $name :'';
 
-             $data[$k]['count'] = $v['total'];
 
-         }
 
-         HelpHander::success($data);
 
-     }
 
-     public function hotDep(){
 
-         $type = input('type/d',1);
 
-         if(!in_array($type,[1,2])){
 
-             HelpHander::error('参数错误');
 
-         }
 
-         if($type == 1){ // 运送
 
-             $map[] = ['work_type_mode','=',3];
 
-             $map[] = ['org_id','=',$this->orgId];
 
-             $map[] = ['del','=',0];
 
-             $lists = Db::name('orders')
 
-                 ->where($map)
 
-                 ->where('dep_id','<>',0)
 
-                 ->field('count(*) as count,dep_id')
 
-                 ->group('dep_id')
 
-                 ->distinct(true)
 
-                 ->order('count desc')
 
-                 ->limit(10)
 
-                 ->select();
 
-         }else{ // 陪护
 
-             $map[] = ['org_id','=',$this->orgId];
 
-             $lists = Db::name('ph_orders')
 
-                 ->where($map)
 
-                 ->field('count(*) as count,dep_id')
 
-                 ->group('dep_id')
 
-                 ->distinct(true)
 
-                 ->order('count desc')
 
-                 ->limit(10)
 
-                 ->select();
 
-         }
 
-         $data = [];
 
-         foreach ($lists as $k=>$v){
 
-             $top = 'TOP'.($k+1);
 
-             $depName = Db::name('dep')->where('id',$v['dep_id'])->value('title');
 
-             $data[$k]['top'] = $top;
 
-             $data[$k]['dep_name'] = $depName?$depName:'';
 
-             $data[$k]['count'] = $v['count'];
 
-         }
 
-         HelpHander::success($data);
 
-     }
 
-     public function cateTodoCount(){
 
-         //保洁
 
-         $bjCount = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('org_id',$this->orgId)
 
-             ->where('work_type_mode',2)
 
-             ->count();
 
-         $bjCount2 = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('org_id',$this->orgId)
 
-             ->where('work_type_mode',2)
 
-             ->count();
 
-         //报修
 
-         $bxCount = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('org_id',$this->orgId)
 
-             ->where('work_type_mode',1)
 
-             ->count();
 
-         $bxCount2 = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('work_type_mode',1)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         //隐患
 
-         $yhCount = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('work_type_mode',4)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         $yhCount2 = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('work_type_mode',4)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         //运送
 
-         $ysCount = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('work_type_mode',3)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         $ysCount2 = Db::name('todo')
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->where('work_type_mode',3)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         //陪护
 
-         $phCount = Db::name('ph_todo')
 
-             ->where('create_time','>=',date('Y-m-d').' 00:00:00')
 
-             ->where('create_time','<=',date('Y-m-d').' 23:59:59')
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         $phCount2 = Db::name('ph_todo')
 
-             ->where('create_time','>=',date('Y-m-d').' 00:00:00')
 
-             ->where('create_time','<=',date('Y-m-d').' 23:59:59')
 
-             ->where('status',2)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         $data = [
 
-             ['name'=>'报修','num'=>$bxCount,'num1'=>$bxCount2],
 
-             ['name'=>'保洁','num'=>$bjCount,'num1'=>$bjCount2],
 
-             ['name'=>'运送','num'=>$ysCount,'num1'=>$ysCount2],
 
-             ['name'=>'应急','num'=>$yhCount,'num1'=>$yhCount2],
 
-             ['name'=>'陪护','num'=>$phCount,'num1'=>$phCount2],
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     public function orderCount(){
 
-         $mode = input('mode/d',1);
 
-         $type = input('type/d',1);
 
-         if(!in_array($type,[1,2,3])||!in_array($mode,[1,2,3,4])){
 
-             HelpHander::error('参数错误');
 
-         }
 
-         $date = [];
 
-         $curDay = date('Y-m-d');
 
-         if($type == 1){ // 日统计
 
-             $date[] = '03';
 
-             $date[] = '06';
 
-             $date[] = '09';
 
-             $date[] = '12';
 
-             $date[] = '15';
 
-             $date[] = '18';
 
-             $date[] = '21';
 
-             $date[] = '24';
 
-         }else if($type == 2){ // 周统计
 
-             $ms = Time::week();
 
-             $start = $ms[0];
 
-             $end = $ms[1] + 1;
 
-             $date[] = date('Y-m-d',$start);
 
-             $i = 1;
 
-             while (($start + $i*24*60*60) < $end){
 
-                 $date[] = date('Y-m-d',$start + $i*24*60*60);
 
-                 $i++;
 
-             }
 
-         }else{ // 月统计
 
-             $ms = Time::month();
 
-             $start = $ms[0];
 
-             $end = $ms[1] + 1;
 
-             $i = 1;
 
-             while (($start + $i*24*60*60) < $end){
 
-                 $date[] = date('Y-m-d',$start + $i*24*60*60);
 
-                 $i++;
 
-             }
 
-         }
 
-         $d1 = [];
 
-         $d2 = [];
 
-         $d = [];
 
-         $data = [];
 
-         foreach ($date as $k=>$v){
 
-             $map = [];
 
-             $map[] = ['org_id','=',$this->orgId];
 
-             $map[] = ['work_type_mode','=',$mode];
 
-             $map[] = ['del','=',0];
 
-             if($type == 1){ // 日统计
 
-                 if($k == 0){
 
-                     $s = $curDay.' 00:00:00';
 
-                 }else{
 
-                     $s = $curDay.' '.$date[$k-1].':00:00';
 
-                 }
 
-                 $e = $curDay.' '.$v.':00:00';
 
-                 $map[] = ['create_time','egt',$s];
 
-                 $map[] = ['create_time','lt',$e];
 
-                 $d[] = (int)$v;
 
-                 $data[$k]['name'] = $v;
 
-             }else{
 
-                 $map[] = ['create_yyyymmdd','=',date('Ymd',strtotime($v))];
 
-                 $d[] = date('m-d',strtotime($v));
 
-                 $data[$k]['name'] = date('m-d',strtotime($v));
 
-             }
 
-             $order = Db::name('orders')->where($map)->count();
 
-             $todo = Db::name('todo')->where($map)->count();
 
-             $d1[] = $todo;
 
-             $d2[] = $order;
 
-             $data[$k]['order_num'] = $order;
 
-             $data[$k]['todo_num'] = $todo;
 
-         }
 
- //        HelpHander::success(['d'=>$d,'d1'=>$d1,'d2'=>$d2]);
 
-         HelpHander::success($data);
 
-     }
 
-     public function patrolRealTime(){
 
-         $mode = input('mode');
 
-         $page = input('page',1);
 
-         $size = input('size',9);
 
-         if(!in_array($mode,[1,2,3,4])){
 
-             HelpHander::error('参数错误');
 
-         }
 
-         $lists = Db::name('patrol_record')
 
-             ->field('create_time,user_id,patrol_addr_form_id,patrol_mode,is_normal,content as info,patrol_task_id,patrol_addr_id')
 
-             ->where('patrol_mode',$mode)
 
-             ->where('org_id',$this->orgId)
 
-             ->page($page,$size)
 
-             ->order('id desc')
 
-             ->select();
 
-         $data = [];
 
-         foreach ($lists as $k=>$v){
 
-             $addrForm = Db::name('patrol_addr_form')
 
-                 ->alias('a')
 
-                 ->join('patrol_task_addr b','b.patrol_form_id = a.id')
 
-                 ->where('b.id',$v['patrol_addr_form_id'])
 
-                 ->value('a.title');
 
-             $modeTitle = Db::name('patrol_mode')
 
-                 ->where('id',$v['patrol_mode'])
 
-                 ->value('name');
 
-             $user = Db::name('user')->where('id',$v['user_id'])->value('real_name');
 
-             $is_normal = '无异常' ;
 
-             if($v['is_normal'] == 1){
 
-                 $is_normal = '有异常' ;
 
-             }
 
-             $time = date('Y-m-d H:i',strtotime($v['create_time']));
 
-             $content = '员工-'.$user.'完成'.$addrForm.$modeTitle.','.$is_normal;
 
-             $data[$k]['time'] = $time;
 
-             $data[$k]['content'] = $content;
 
-             $data[$k]['info'] = $v['info'];
 
-             $data[$k]['task_name'] = Db::name('patrol_task')->where('id',$v['patrol_task_id'])->value('title');
 
-             $data[$k]['addr_name'] = Db::name('address')->where('id',$v['patrol_addr_id'])->value('title');
 
-         }
 
-         $count = Db::name('patrol_record')
 
-             ->where('patrol_mode',$mode)
 
-             ->where('org_id',$this->orgId)
 
-             ->count();
 
-         $dt = [
 
-             'list'=>$data,
 
-             'count'=>$count
 
-         ];
 
-         HelpHander::success($dt);
 
-     }
 
-     public function taskList(){
 
-         $mode = input('mode/d',1);
 
-         if(!in_array($mode,[1,2,3,4,5])){
 
-             HelpHander::error('参数错误');
 
-         }
 
-         $data = [];
 
-         if($mode == 5){
 
-             $lists = Db::name('ph_orders')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('status','in',[1,2])
 
-                 ->order('id desc')
 
-                 ->field('id,sn,cate_id,status,create_time,start,end,contact,phone')
 
-                 ->limit(20)
 
-                 ->select();
 
-             foreach ($lists as $k=>$v){
 
-                 $cate = Db::name('cate')->where('id',$v['cate_id'])->value('title');
 
-                 $stxt = '新订单';
 
-                 $users = '';
 
-                 if($v['status'] == 2){
 
-                     $stxt = '服务中';
 
-                     $unames = Db::name('ph_todo')
 
-                         ->alias('t')
 
-                         ->join('worker w','t.worker_id = w.id')
 
-                         ->join('user u','u.id = w.user_id')
 
-                         ->where('t.order_id',$v['id'])
 
-                         ->where('t.status',1)
 
-                         ->column('real_name');
 
-                     $users = $unames?implode(',',$unames):'';
 
-                 }
 
-                 $data[$k]['status'] = $stxt;
 
-                 $data[$k]['sn'] = $v['sn'];
 
-                 $data[$k]['cate'] = $cate;
 
-                 $data[$k]['user'] = $users;
 
-                 $data[$k]['time'] = $v['create_time'];
 
-                 $data[$k]['st'] = $v['start'];
 
-                 $data[$k]['et'] = $v['end'];
 
-                 $data[$k]['contact'] = $v['contact'];
 
-                 $data[$k]['phone'] = $v['phone'];
 
-             }
 
-         }else{
 
-             $lists = Db::name('orders')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('order_mode','in',[1,4])
 
-                 ->where('work_type_mode',$mode)
 
-                 ->where('del',0)
 
-                 ->order('id desc')
 
-                 ->limit(20)
 
-                 ->field('id,order_mode,create_time,send_time,content,dep_id,sn,user_id')
 
-                 ->select();
 
-             foreach ($lists as $k=>$v){
 
-                 $dep = Db::name('dep')->where('id',$v['dep_id'])->value('title');
 
-                 $status = Db::name('order_mode')->where('id',$v['order_mode'])->value('out_content');
 
-                 $userName = Db::name('user')->where('id',$v['user_id'])->value('real_name');
 
-                 if($mode == 1){ // 报修
 
-                     $type = Db::name('order_repair')
 
-                         ->alias('or')
 
-                         ->leftJoin('order_type ot','ot.id = or.type_id')
 
-                         ->where('or.order_id',$v['id'])
 
-                         ->value('title');
 
- //                    $data[] = [$status,$dep,$type?$type:'',$v['content'],$v['create_time']];
 
-                     $data[$k]['status'] =  $status;
 
-                     $data[$k]['dep'] =  $dep;
 
-                     $data[$k]['cate'] =  $type?$type:'';
 
-                     $data[$k]['content'] =  $v['content'];
 
-                     $data[$k]['time'] = $v['create_time'];
 
-                     $data[$k]['sn'] = $v['sn'];
 
-                     $data[$k]['user_name'] = $userName;
 
-                     $data[$k]['send_time'] = $v['send_time'];
 
-                 }else if($mode == 3){ //运送
 
-                     $convey = Db::name('order_convey')
 
-                         ->alias('oc')
 
-                         ->join('convey_cate cc','cc.id = oc.type')
 
-                         ->where('oc.order_id',$v['id'])
 
-                         ->field('oc.*,cc.title as cate_title')
 
-                         ->find();
 
-                     $start = Db::name('address')->where('id',$convey['start'])->value('title');
 
-                     $end = Db::name('address')->where('id',$convey['end'])->value('title');
 
-                     $todos = Db::name('todo')
 
-                         ->alias('t')
 
-                         ->join('user u','u.id = t.to_user_id')
 
-                         ->where('t.order_id',$v['id'])
 
-                         ->where('t.del',0)
 
-                         ->where('t.todo_mode','in',[1,2,3])
 
-                         ->field('t.confirm_time,u.real_name')
 
-                         ->select();
 
-                     $todos = $todos?$todos:[];
 
-                     $unames = [];
 
-                     $confirm = '';
 
-                     foreach ($todos as $tk=>$tv){
 
-                         $unames[] = $tv['real_name'];
 
-                         if(!$confirm){
 
-                             $confirm = $tv['confirm_time'];
 
-                         }
 
-                     }
 
-                     $un = $unames?implode(',',$unames):'';
 
-                     $send = $v['send_time']?date('H:i',strtotime($v['send_time'])):'';
 
-                     $xq = date('H:i',strtotime($convey['xq_time']));
 
-                     $confirm = $confirm?date('H:i',strtotime($confirm)):'';
 
- //                    $data[] = [$status,$convey['cate_title'],$start,$end,$xq,$un,$send,$confirm];
 
-                     $data[$k]['status'] =  $status;
 
-                     $data[$k]['cate'] =  $convey['cate_title'];
 
-                     $data[$k]['start'] =  $start;
 
-                     $data[$k]['end'] =  $end;
 
-                     $data[$k]['xq'] =  $xq;
 
-                     $data[$k]['un'] =  $un;
 
-                     $data[$k]['send'] =  $send;
 
-                     $data[$k]['confirm'] = $confirm;
 
-                     $data[$k]['sn'] = $v['sn'];
 
-                     $data[$k]['user_name'] = $userName;
 
-                     $data[$k]['send_time'] = $v['send_time'];
 
-                 }else{ // 保洁,应急
 
- //                    $data[] = [$status,$dep,$v['content'],$v['create_time']];
 
-                     $data[$k]['status'] =  $status;
 
-                     $data[$k]['dep'] =  $dep;
 
-                     $data[$k]['content'] =  $v['content'];
 
-                     $data[$k]['time'] = $v['create_time'];
 
-                     $data[$k]['sn'] = $v['sn'];
 
-                     $data[$k]['user_name'] = $userName;
 
-                     $data[$k]['send_time'] = $v['send_time'];
 
-                 }
 
-             }
 
-         }
 
-         HelpHander::success($data);
 
-     }
 
-     public function wxTodoData(){
 
-         $page = input('page',1);
 
-         $size = input('size',9);
 
-         $list = Db::name('todo')
 
-             ->field('id,order_id,todo_mode,create_time,to_user_id,confirm_time,xy_time,wc_time,todo_content')
 
-             ->where('org_id',$this->orgId)
 
-             ->whereIn('todo_mode',[1,2,3])
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd','>=',date('Ymd',strtotime('-3 day')))
 
-             ->where('create_yyyymmdd','<=',date('Ymd'))
 
-             ->where('work_type_mode',1)
 
-             ->page($page,$size)
 
-             ->select();
 
-         foreach ($list as $k=>$v){
 
-             if($v['todo_mode'] == 1){
 
-                 $list[$k]['status'] = '新任务';
 
-             }elseif ($v['todo_mode'] == 2){
 
-                 $list[$k]['status'] = '进行中';
 
-             }elseif ($v['todo_mode'] == 3){
 
-                 $list[$k]['status'] = '已完成';
 
-             }
 
-             $repair = Db::name('order_type')
 
-                 ->alias('ot')
 
-                 ->field('ot.id,ot.title,ot.parent_id')
 
-                 ->join('order_repair or','or.type_id=ot.id')
 
-                 ->where('or.order_id',$v['order_id'])
 
-                 ->find();
 
-             $list[$k]['cate_title'] = Db::name('order_type')->where('id',$repair['parent_id'])->value('title');
 
-             $list[$k]['address'] = Db::name('address')
 
-                 ->alias('a')
 
-                 ->join('order_repair or','or.address_id=a.id')
 
-                 ->where('or.order_id',$v['order_id'])
 
-                 ->where('a.org_id',$this->orgId)
 
-                 ->value('a.title');
 
-             $list[$k]['create_time'] = date('H:i',strtotime($v['create_time']));
 
-             $list[$k]['confirm_time'] = $v['confirm_time']? date('H:i',strtotime($v['confirm_time'])):'';
 
-             $list[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
 
-             $list[$k]['xy_time'] = $v['xy_time'] ? round($v['xy_time']/60,1):'';
 
-             $list[$k]['wc_time'] = $v['wc_time'] ? round($v['wc_time']/60,1):'';
 
-         }
 
-         $count = Db::name('todo')
 
-             ->where('org_id',$this->orgId)
 
-             ->whereIn('todo_mode',[1,2,3])
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd','>=',date('Ymd',strtotime('-3 day')))
 
-             ->where('create_yyyymmdd','<=',date('Ymd'))
 
-             ->where('work_type_mode',1)
 
-             ->count();
 
-         $data = [
 
-             'list'=>$list,
 
-             'count'=>$count,
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     public function patrolRecord(){
 
-         $page = input('page',1);
 
-         $size = input('size',9);
 
-         $lists = Db::name('patrol_record')
 
-             ->alias('a')
 
-             ->join('patrol_task t','a.patrol_task_id = t.id')
 
-             ->join('address b','a.patrol_addr_id = b.id')
 
-             ->join('user c','a.user_id = c.id')
 
-             ->where('a.create_yyyymmdd','>=',date('Ymd',strtotime('-3 day')))
 
-             ->where('a.create_yyyymmdd','<=',date('Ymd'))
 
-             ->where('a.org_id',$this->orgId)
 
-             ->field('a.images,a.create_time,b.title as address,c.real_name as name,t.title as task_title,a.is_normal,a.content')
 
-             ->page($page,$size)
 
-             ->order('a.id desc')
 
-             ->select();
 
-         foreach ($lists as $k=>$v){
 
-             $lists[$k]['is_normal_text'] = $v['is_normal'] == 0 ? '正常':'异常';
 
-         }
 
-         $count = Db::name('patrol_record')
 
-             ->alias('a')
 
-             ->join('patrol_task t','a.patrol_task_id = t.id')
 
-             ->join('address b','a.patrol_addr_id = b.id')
 
-             ->join('user c','a.user_id = c.id')
 
-             ->where('a.create_yyyymmdd','>=',date('Ymd',strtotime('-3 day')))
 
-             ->where('a.create_yyyymmdd','<=',date('Ymd'))
 
-             ->where('a.org_id',$this->orgId)
 
-             ->count();
 
-         $data = [
 
-             'list'=>$lists,
 
-             'count'=>$count
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
- }
 
 
  |