<?php
namespace app\api\controller\screen;

use app\hander\HelpHander;
use think\Controller;
use think\Db;
use think\helper\Str;
use think\Request;

class Threelevel extends Controller{

    private $orgId = 0; //组织id
    private $title = '';
    private $spOrgId = 5; //国天sp 厦门中山医院
    private $bjOrgId = 11; //霸洁云 贵州省黔西市人民医院
    private $xcOrgId = 18; //新城悦 嘉善县中医院

    protected function initialize()
    {
        parent::initialize();

        $dd = think_decrypt(input('orgId','','trim'));
        if(!$dd){
            HelpHander::error('参数错误1');
        }
        $dd = explode('|',$dd);
        if(count($dd) != 2){
            HelpHander::error('参数错误2');
        }
        $orgId = (int)$dd[0];

        if($orgId < 1){
            HelpHander::error('参数错误3');
        }
        $this->orgId = $orgId;

//        $orgId = input('orgId',0);
//        if($orgId < 1){
//            HelpHander::error('参数错误');
//        }
//        $this->orgId = $orgId;

        $org = Db::name('org')->where('del',0)->where('id',$orgId)->find();
        if(!$org){
            HelpHander::error('参数错误');
        }

        $this->title = $org['name'].'后勤总数据大屏';

    }
    public function getTitle(){
        HelpHander::success($this->title);
    }


    public function projectCount(){
        if($this->orgId == 3){
            $userCount = gtspdb('user')
                ->alias('u')
                ->join('user_org uo','uo.USER_ID=u.USER_ID')
                ->join('org o','o.ORG_ID=uo.ORG_ID')
                ->where('u.DEL_REF',0)
                ->where('u.TYPE',0)
                ->where('o.ENABLE',1)
                ->where('o.DEL_REF',0)
                ->where('o.ORG_ID',$this->spOrgId)
                ->count();

            $orderCount = gtspdb('orders')
                ->where('DEL_REF',0)
                ->where('ORG_ID',$this->spOrgId)
                ->count();

            $todoCount = gtspdb('todo')
                ->where('DEL_REF',0)
                ->where('ORG_ID',$this->spOrgId)
                ->count();

            $task1 = gtspdb('patrol_task')
                ->where('DEL_REF',0)
                ->where('ORG_ID',$this->spOrgId)
                ->count();

            $taskCount =  $task1;

        }elseif($this->orgId == 24){
            $userCount = bjydb('user')
                ->alias('u')
                ->join('user_org uo','uo.user_id=u.id')
                ->join('org o','o.id=uo.org_id')
                ->where('u.del',0)
                ->where('u.type',0)
                ->where('o.enable',1)
                ->where('o.del',0)
                ->where('o.id',$this->bjOrgId)
                ->count();

            $orderCount = bjydb('orders')
                ->where('del',0)
                ->where('org_id',$this->bjOrgId)
                ->count();

            $todoCount = bjydb('todo')
                ->where('del',0)
                ->where('org_id',$this->bjOrgId)
                ->count();

            $task1 = bjydb('patrol_task')
                ->where('del',0)
                ->where('org_id',$this->bjOrgId)
                ->count();

            $task2 = bjydb('device_task')
                ->where('del',0)
                ->where('org_id',$this->bjOrgId)
                ->count();

            $taskCount =  $task1 + $task2;
        }elseif($this->orgId == 26){
            $userCount = xcydb('user')
                ->alias('u')
                ->join('user_org uo','uo.user_id=u.id')
                ->join('org o','o.id=uo.org_id')
                ->where('u.del',0)
                ->where('u.type',0)
                ->where('o.enable',1)
                ->where('o.del',0)
                ->where('o.id',$this->xcOrgId)
                ->count();

            $orderCount = xcydb('orders')
                ->where('del',0)
                ->where('org_id',$this->xcOrgId)
                ->count();

            $todoCount = xcydb('todo')
                ->where('del',0)
                ->where('org_id',$this->xcOrgId)
                ->count();

            $task1 = xcydb('patrol_task')
                ->where('del',0)
                ->where('org_id',$this->xcOrgId)
                ->count();

            $task2 = xcydb('device_task')
                ->where('del',0)
                ->where('org_id',$this->xcOrgId)
                ->count();

            $taskCount =  $task1 + $task2;
        }else{
            $userCount = Db::name('user')
                ->alias('u')
                ->join('user_org uo','uo.user_id=u.id')
                ->join('org o','o.id=uo.org_id')
                ->where('u.del',0)
                ->where('u.type',0)
                ->where('o.enable',1)
                ->where('o.del',0)
                ->where('o.id',$this->orgId)
                ->count();

            $orderCount = Db::name('orders')
                ->where('del',0)
                ->where('org_id',$this->orgId)
                ->count();

            $todoCount = Db::name('todo')
                ->where('del',0)
                ->where('org_id',$this->orgId)
                ->count();

            $task1 = Db::name('patrol_task')
                ->where('del',0)
                ->where('org_id',$this->orgId)
                ->count();

            $task2 = Db::name('device_task')
                ->where('del',0)
                ->where('org_id',$this->orgId)
                ->count();

            $taskCount =  $task1 + $task2;
        }

        $data = [
            'count1'=>$userCount,
            'count2'=>$orderCount,
            'count3'=>$todoCount,
            'count4'=>$taskCount,
            'count5'=>23,

        ];
        HelpHander::success($data);
    }


    public function todayTodoInfo(){

        $date = date('Ymd');

        if($this->orgId == 3){
            $map[] = ['CREATE_YYYYMMDD','=',$date];
            $map[] = ['DEL_REF','=',0];

            $count = gtspdb('todo')->where($map)->where('ORG_ID',$this->spOrgId)->count();

            $map[] = ['TODO_MODE','=',3];
            $overCount = gtspdb('todo')->where($map)->where('ORG_ID',$this->spOrgId)->count();

            $overBl = 0;
            if($count > 0){
                $overBl = round($overCount/$count*100,0);
            }

        }elseif($this->orgId == 24){
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = bjydb('todo')->where($map)->where('org_id',$this->bjOrgId)->count();

            $map[] = ['todo_mode','=',3];
            $overCount = bjydb('todo')->where($map)->where('org_id',$this->bjOrgId)->count();

            $overBl = 0;
            if($count > 0){
                $overBl = round($overCount/$count*100,0);
            }
        }elseif($this->orgId == 26){
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = xcydb('todo')->where($map)->where('org_id',$this->xcOrgId)->count();

            $map[] = ['todo_mode','=',3];
            $overCount = xcydb('todo')->where($map)->where('org_id',$this->xcOrgId)->count();

            $overBl = 0;
            if($count > 0){
                $overBl = round($overCount/$count*100,0);
            }
        }else{
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = Db::name('todo')->where($map)->where('org_id',$this->orgId)->count();

            $map[] = ['todo_mode','=',3];
            $overCount = Db::name('todo')->where($map)->where('org_id',$this->orgId)->count();

            $overBl = 0;
            if($count > 0){
                $overBl = round($overCount/$count*100,0);
            }

        }

        $data = [
            'count'=>$count,
            'value'=>$overBl
        ];

        HelpHander::success($data);
    }

    public function todayTodoType(){
        $date = date('Ymd');

        if($this->orgId == 3){
            $map[] = ['CREATE_YYYYMMDD','=',$date];
            $map[] = ['DEL_REF','=',0];
            $map[] = ['ORG_ID','=',$this->spOrgId];

            $count = gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',1)->count();
            $count2 = gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',2)->count();
            $count3 = gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',3)->count();
            $count4 = gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',4)->count();


            $map[] = ['TODO_MODE','=',3];

            //保修
            $bxCount =  gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',1)->count();
            //保洁
            $bjCount =  gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',2)->count();
            //运送
            $ysCount =  gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',3)->count();
            //隐患
            $yhCount =  gtspdb('todo')->where($map)->where('WORK_TYPE_MODE',4)->count();

        }elseif($this->orgId == 24){
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = bjydb('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->bjOrgId)->count();
            $count2 = bjydb('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->bjOrgId)->count();
            $count3 = bjydb('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->bjOrgId)->count();
            $count4 = bjydb('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->bjOrgId)->count();


            $map[] = ['todo_mode','=',3];

            //保修
            $bxCount =  bjydb('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->bjOrgId)->count();
            //保洁
            $bjCount =  bjydb('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->bjOrgId)->count();
            //运送
            $ysCount =  bjydb('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->bjOrgId)->count();
            //隐患
            $yhCount =  bjydb('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->bjOrgId)->count();

        }elseif($this->orgId == 26){
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = xcydb('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->xcOrgId)->count();
            $count2 = xcydb('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->xcOrgId)->count();
            $count3 = xcydb('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->xcOrgId)->count();
            $count4 = xcydb('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->xcOrgId)->count();


            $map[] = ['todo_mode','=',3];

            //保修
            $bxCount =  xcydb('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->xcOrgId)->count();
            //保洁
            $bjCount =  xcydb('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->xcOrgId)->count();
            //运送
            $ysCount =  xcydb('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->xcOrgId)->count();
            //隐患
            $yhCount =  xcydb('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->xcOrgId)->count();

        }else{
            $map[] = ['create_yyyymmdd','=',$date];
            $map[] = ['del','=',0];

            $count = Db::name('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->orgId)->count();
            $count2 = Db::name('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->orgId)->count();
            $count3 = Db::name('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->orgId)->count();
            $count4 = Db::name('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->orgId)->count();


            $map[] = ['todo_mode','=',3];

            //保修
            $bxCount =  Db::name('todo')->where($map)->where('work_type_mode',1)->where('org_id',$this->orgId)->count();
            //保洁
            $bjCount =  Db::name('todo')->where($map)->where('work_type_mode',2)->where('org_id',$this->orgId)->count();
            //运送
            $ysCount =  Db::name('todo')->where($map)->where('work_type_mode',3)->where('org_id',$this->orgId)->count();
            //隐患
            $yhCount =  Db::name('todo')->where($map)->where('work_type_mode',4)->where('org_id',$this->orgId)->count();


        }


        $bxBl = $bjBl = $ysBl = $yhBl =0;
        if($count > 0){
            $bxBl  = round($bxCount/$count*100,0);

        }
        if($count2 >0){
            $bjBl  = round($bjCount/$count2*100,0);
        }
        if($count3 >0){
            $ysBl  = round($ysCount/$count3*100,0);
        }
        if($count4 >0){
            $yhBl  = round($yhCount/$count4*100,0);
        }
        $data = [
            'bx'=>['count'=>$bxCount,'bl'=>$bxBl],
            'bj'=>['count'=>$bjCount,'bl'=>$bjBl],
            'ys'=>['count'=>$ysCount,'bl'=>$ysBl],
            'yh'=>['count'=>$yhCount,'bl'=>$yhBl],
        ];
        HelpHander::success($data);
    }

    public function rolesUserList(){

        if($this->orgId == 3){
            $initarr = array(
                array(
                    'type' => 1,
                    'name' => '客户人员',
                    'mode' => 182838,
                ),
                array(
                    'type' => 2,
                    'name' => '综合人员',
                    'mode' => 182848,
                ),
                array(
                    'type' => 3,
                    'name' => '运送人员',
                    'mode' => 182868,
                ),
                array(
                    'type' => 4,
                    'name' => '维修人员',
                    'mode' => 182878,
                ),
                array(
                    'type' => 5,
                    'name' => '保洁人员',
                    'mode' => 1828108,
                ),
                array(
                    'type' => 6,
                    'name' => '保安人员',
                    'mode' => 182858,
                ),
                array(
                    'type' => 7,
                    'name' => '调度人员',
                    'mode' => 1828118,
                ),
                array(
                    'type' => 8,
                    'name' => '监管人员',
                    'mode' => 1828128,
                )
            );
            $roles = [];
            foreach ($initarr as $k=>$v){
                $roles[$k]['name'] = $v['name'];
                $rolesId = gtspdb('roles')
                    ->where('mode','like',$v['mode'].'%')
                    ->where('MODE','<>',$v['mode'])
                    ->where('ORG_ID',$this->spOrgId)
                    ->column('ROLES_ID');
                $roles[$k]['ids'] = $rolesId;
            }

            foreach ($roles as $k=>$v){
                $roles[$k]['value'] = gtspdb('user_roles')
                    ->alias('ur')
                    ->join('user u','u.USER_ID=ur.USER_ID')
                    ->whereIn('ur.ROLES_ID',$v['ids'])
                    ->where('u.DEL_REF',0)

                    ->count();
            }

        }elseif($this->orgId == 24){
            $roles = bjydb('roles')
                ->field('id,name')
                ->where('parent_id',0)
                ->whereIn('id',[5,6,7,8,9,11])
                ->where('type',1)
                ->where('del',0)
                ->where('enable',1)
                ->select();
            foreach ($roles as $k=>$v){
                $roles[$k]['ids'] = bjydb('roles')
                    ->where('parent_id',$v['id'])
                    ->where('type',1)
                    ->where('del',0)
                    ->where('enable',1)
                    ->where('org_id',$this->bjOrgId)
                    ->column('id');
            }

            foreach ($roles as $k=>$v){
                $roles[$k]['value'] = bjydb('user_roles')
                    ->alias('ur')
                    ->join('user u','u.id=ur.user_id')
                    ->whereIn('ur.roles_id',$v['ids'])
                    ->where('u.del',0)
                    ->count();

            }
        }elseif($this->orgId == 26){
            $roles = xcydb('roles')
                ->field('id,name')
                ->where('parent_id',0)
                ->whereIn('id',[5,6,7,8,9,11])
                ->where('type',1)
                ->where('del',0)
                ->where('enable',1)
                ->select();
            foreach ($roles as $k=>$v){
                $roles[$k]['ids'] = xcydb('roles')
                    ->where('parent_id',$v['id'])
                    ->where('type',1)
                    ->where('del',0)
                    ->where('enable',1)
                    ->where('org_id',$this->xcOrgId)
                    ->column('id');
            }

            foreach ($roles as $k=>$v){
                $roles[$k]['value'] = xcydb('user_roles')
                    ->alias('ur')
                    ->join('user u','u.id=ur.user_id')
                    ->whereIn('ur.roles_id',$v['ids'])
                    ->where('u.del',0)
                    ->count();

            }
        }else{
            $roles = Db::name('roles')
                ->field('id,name')
                ->where('parent_id',0)
                ->whereIn('id',[5,6,7,8,9,11])
                ->where('type',1)
                ->where('del',0)
                ->where('enable',1)
                ->select();
            foreach ($roles as $k=>$v){
                $roles[$k]['ids'] = Db::name('roles')
                    ->where('parent_id',$v['id'])
                    ->where('type',1)
                    ->where('del',0)
                    ->where('enable',1)
                    ->where('org_id',$this->orgId)
                    ->column('id');
            }

            foreach ($roles as $k=>$v){
                $roles[$k]['value'] = Db::name('user_roles')
                    ->alias('ur')
                    ->join('user u','u.id=ur.user_id')
                    ->whereIn('ur.roles_id',$v['ids'])
                    ->where('u.del',0)
                    ->count();

            }

        }


        HelpHander::success($roles);

    }

    public function workTypeModeList(){

        if($this->orgId == 3){
            $map[] = ['ORG_ID','=',$this->spOrgId];
            $map[] = ['CREATE_TIME','>=',date('Y-m').'-01 00:00:00'];
            $map[] = ['CREATE_TIME','<=',date('Y-m').'-31 23:59:59'];
            $map[] = ['DEL_REF','=',0];

            $count = gtspdb('todo')->where($map)->count();

            $bj = gtspdb('todo')->where('WORK_TYPE_MODE',2)->where($map)->count();

            $ys = gtspdb('todo')->where('WORK_TYPE_MODE',3)->where($map)->count();

            $bx = gtspdb('todo')->where('WORK_TYPE_MODE',1)->where($map)->count();

            $yh = gtspdb('todo')->where('WORK_TYPE_MODE',4)->where($map)->count();

            $data = [
                'title'=>['总数','保洁','运送','保修','隐患',],
                'list'=>[ $count,$bj,$ys,$bx,$yh],
            ];
        }elseif($this->orgId == 24){
            $map[] = ['org_id','=',$this->bjOrgId];
            $map[] = ['create_time','>=',date('Y-m').'-01 00:00:00'];
            $map[] = ['create_time','<=',date('Y-m').'-31 23:59:59'];

            $count = bjydb('todo')->where($map)->count();

            $bj = bjydb('todo')->where('work_type_mode',2)->where('del',0)->where($map)->count();

            $ys = bjydb('todo')->where('work_type_mode',3)->where('del',0)->where($map)->count();

            $bx = bjydb('todo')->where('work_type_mode',1)->where('del',0)->where($map)->count();

            $yh = bjydb('todo')->where('work_type_mode',4)->where('del',0)->where($map)->count();

            $ph = bjydb('ph_todo')->where($map)->count();

            $data = [
                'title'=>['总数','保洁','运送','保修','隐患','陪护'],
                'list'=>[ $count+$ph,$bj,$ys,$bx,$yh,$ph],

            ];
        }elseif($this->orgId == 26){
            $map[] = ['org_id','=',$this->xcOrgId];
            $map[] = ['create_time','>=',date('Y-m').'-01 00:00:00'];
            $map[] = ['create_time','<=',date('Y-m').'-31 23:59:59'];

            $count = xcydb('todo')->where($map)->count();

            $bj = xcydb('todo')->where('work_type_mode',2)->where('del',0)->where($map)->count();

            $ys = xcydb('todo')->where('work_type_mode',3)->where('del',0)->where($map)->count();

            $bx = xcydb('todo')->where('work_type_mode',1)->where('del',0)->where($map)->count();

            $yh = xcydb('todo')->where('work_type_mode',4)->where('del',0)->where($map)->count();

            $ph = xcydb('ph_todo')->where($map)->count();

            $data = [
                'title'=>['总数','保洁','运送','保修','隐患','陪护'],
                'list'=>[ $count+$ph,$bj,$ys,$bx,$yh,$ph],

            ];
        }else{
            $map[] = ['org_id','=',$this->orgId];
            $map[] = ['create_time','>=',date('Y-m').'-01 00:00:00'];
            $map[] = ['create_time','<=',date('Y-m').'-31 23:59:59'];

            $count = Db::name('todo')->where($map)->count();

            $bj = Db::name('todo')->where('work_type_mode',2)->where('del',0)->where($map)->count();

            $ys = Db::name('todo')->where('work_type_mode',3)->where('del',0)->where($map)->count();

            $bx = Db::name('todo')->where('work_type_mode',1)->where('del',0)->where($map)->count();

            $yh = Db::name('todo')->where('work_type_mode',4)->where('del',0)->where($map)->count();

            $ph = Db::name('ph_todo')->where($map)->count();

            $data = [
                'title'=>['总数','保洁','运送','保修','隐患','陪护'],
                'list'=>[ $count+$ph,$bj,$ys,$bx,$yh,$ph],

            ];

        }



        HelpHander::success($data);

    }

    public function userCommentScoreList(){

        if($this->orgId == 3){
            $user = gtspdb('comment')
                ->field('USER_ID')
                ->where('ORG_ID',$this->spOrgId)
                ->group('USER_ID')
                ->select();
            foreach ($user as $k=>$v){
                $user[$k]['score'] = gtspdb('comment')
                    ->where('USER_ID',$v['USER_ID'])
                    ->sum('SCORE');
                $user[$k]['name'] = gtspdb('user')->where('USER_ID',$v['USER_ID'])->value('REAL_NAME');
                $user[$k]['dep'] = gtspdb('user_org')
                    ->alias('uo')
                    ->join('org o','o.ORG_ID=uo.ORG_ID')
                    ->where('uo.USER_ID',$v['USER_ID'])
                    ->where('uo.ORG_TYPE',1)
                    ->where('o.TYPE',3)
                    ->value('NAME');
                $roles = gtspdb('user_roles')
                    ->alias('ur')
                    ->join('roles r','r.ROLES_ID=ur.ROLES_ID')
                    ->where('ur.USER_ID',$v['USER_ID'])
                    ->value('r.NAME');
                $user[$k]['roles'] = $roles ? $roles:'';
//                $task1 = gtspdb('patrol_task')
//                    ->alias('pt')
//                    ->join('patrol_record pr','pr.PATROL_TASK_ID=pt.PATROL_TASK_ID')
//                    ->where('pr.USER_ID',$v['USER_ID'])
//                    ->where('pt.STATUS',2)
//                    ->where('pt.DEL_REF',0)
//                    ->where('pr.ORG_ID',$this->spOrgId)
//                    ->count();
                $task1 = gtspdb('comment')
                    ->where('USER_ID',$v['USER_ID'])
                    ->count();
                $taskCount =  $task1;

                $user[$k]['task'] = $taskCount;
            }

            $list = list_sort_by($user,'score','desc');
            $data = [];
            $host = request()->domain(true);
            foreach ($list as $k=>$v){
                if(isset($k) && $k==0){
                    $top = '<img src="'.$host.'/screen/images/TOP1.png" width="20" >';
                }elseif (isset($k) && $k==1){
                    $top = '<img src="'.$host.'/screen/images/TOP2.png" width="20" >';
                }elseif (isset($k) && $k==2){
                    $top = '<img src="'.$host.'/screen/images/TOP3.png" width="20">';
                }else{
                    $top = 'TOP'.($k+1);
                }
                $data[] = [$top,$v['name'],$v['dep'],$v['roles'],$v['task'],$v['score']];
            }

        }elseif($this->orgId == 24){
            $user = bjydb('comment')
                ->field('user_id')
                ->where('org_id',$this->bjOrgId)
                ->group('user_id')
                ->select();
            foreach ($user as $k=>$v){
                $user[$k]['score'] = bjydb('comment')
                    ->where('org_id',$this->bjOrgId)
                    ->where('user_id',$v['user_id'])
                    ->sum('score');
                $user[$k]['name'] = bjydb('user')->where('id',$v['user_id'])->value('real_name');
                $user[$k]['dep'] = bjydb('user_dep')
                    ->alias('ud')
                    ->join('dep d','d.id=ud.dep_id')
                    ->where('ud.user_id',$v['user_id'])
                    ->value('title');
                $rolesId = bjydb('user_roles')
                    ->alias('ur')
                    ->join('roles r','r.id=ur.roles_id')
                    ->where('ur.user_id',$v['user_id'])
                    ->value('r.parent_id');
                $user[$k]['roles'] = $rolesId ? bjydb('roles')->where('id',$rolesId)->value('name'):'';

                $user[$k]['task'] = bjydb('comment')
                    ->where('org_id',$this->bjOrgId)
                    ->where('user_id',$v['user_id'])
                    ->count();
            }

            $list = list_sort_by($user,'score','desc');
            $data = [];
            $host = request()->domain(true);
            foreach ($list as $k=>$v){
                if(isset($k) && $k==0){
                    $top = '<img src="'.$host.'/screen/images/TOP1.png" width="20" >';
                }elseif (isset($k) && $k==1){
                    $top = '<img src="'.$host.'/screen/images/TOP2.png" width="20" >';
                }elseif (isset($k) && $k==2){
                    $top = '<img src="'.$host.'/screen/images/TOP3.png" width="20">';
                }else{
                    $top = 'TOP'.($k+1);
                }
                $data[] = [$top,$v['name'],$v['dep'],$v['roles'],$v['task'],$v['score']];
            }

        }elseif($this->orgId == 26){
            $user = xcydb('comment')
                ->field('user_id')
                ->where('org_id',$this->xcOrgId)
                ->group('user_id')
                ->select();
            foreach ($user as $k=>$v){
                $user[$k]['score'] = xcydb('comment')
                    ->where('org_id',$this->xcOrgId)
                    ->where('user_id',$v['user_id'])
                    ->sum('score');
                $user[$k]['name'] = xcydb('user')->where('id',$v['user_id'])->value('real_name');
                $user[$k]['dep'] = xcydb('user_dep')
                    ->alias('ud')
                    ->join('dep d','d.id=ud.dep_id')
                    ->where('ud.user_id',$v['user_id'])
                    ->value('title');
                $rolesId = xcydb('user_roles')
                    ->alias('ur')
                    ->join('roles r','r.id=ur.roles_id')
                    ->where('ur.user_id',$v['user_id'])
                    ->value('r.parent_id');
                $user[$k]['roles'] = $rolesId ? xcydb('roles')->where('id',$rolesId)->value('name'):'';

                $user[$k]['task'] = xcydb('comment')
                    ->where('org_id',$this->xcOrgId)
                    ->where('user_id',$v['user_id'])
                    ->count();
            }

            $list = list_sort_by($user,'score','desc');
            $data = [];
            $host = request()->domain(true);
            foreach ($list as $k=>$v){
                if(isset($k) && $k==0){
                    $top = '<img src="'.$host.'/screen/images/TOP1.png" width="20" >';
                }elseif (isset($k) && $k==1){
                    $top = '<img src="'.$host.'/screen/images/TOP2.png" width="20" >';
                }elseif (isset($k) && $k==2){
                    $top = '<img src="'.$host.'/screen/images/TOP3.png" width="20">';
                }else{
                    $top = 'TOP'.($k+1);
                }
                $data[] = [$top,$v['name'],$v['dep'],$v['roles'],$v['task'],$v['score']];
            }

        }else{
            $user = Db::name('comment')
                ->field('user_id')
                ->where('org_id',$this->orgId)
                ->group('user_id')
                ->select();
            foreach ($user as $k=>$v){
                $user[$k]['score'] = Db::name('comment')
                    ->where('org_id',$this->orgId)
                    ->where('user_id',$v['user_id'])
                    ->sum('score');
                $user[$k]['name'] = Db::name('user')->where('id',$v['user_id'])->value('real_name');
                $user[$k]['dep'] = Db::name('user_dep')
                    ->alias('ud')
                    ->join('dep d','d.id=ud.dep_id')
                    ->where('ud.user_id',$v['user_id'])
                    ->value('title');
                $rolesId = Db::name('user_roles')
                    ->alias('ur')
                    ->join('roles r','r.id=ur.roles_id')
                    ->where('ur.user_id',$v['user_id'])
                    ->value('r.parent_id');
                $user[$k]['roles'] = $rolesId ? Db::name('roles')->where('id',$rolesId)->value('name'):'';
//                $task1 = Db::name('patrol_task')
//                    ->alias('pt')
//                    ->join('patrol_record pr','pr.patrol_task_id=pt.id')
//                    ->where('pr.user_id',$v['user_id'])
//                    ->where('pt.status',2)
//                    ->where('pt.del',0)
//                    ->where('pr.org_id',$this->orgId)
//                    ->count();
//
//                $task2 = Db::name('device_task')
//                    ->alias('dt')
//                    ->join('device_record dr','dr.task_id=dt.id')
//                    ->where('dr.user_id',$v['user_id'])
//                    ->where('dt.status',2)
//                    ->where('dt.del',0)
//                    ->where('dr.org_id',$this->orgId)
//                    ->count();
//
//                $task3 = Db::name('daily_task')
//                    ->alias('dt')
//                    ->join('daily_record dr','dr.task_id=dt.id')
//                    ->where('dr.user_id',$v['user_id'])
//                    ->where('dt.status',2)
//                    ->where('dt.del',0)
//                    ->where('dr.org_id',$this->orgId)
//                    ->count();
//
//                $taskCount =  $task1 + $task2 + $task3;

                $user[$k]['task'] = Db::name('comment')
                    ->where('org_id',$this->orgId)
                    ->where('user_id',$v['user_id'])
                    ->count();
            }

            $list = list_sort_by($user,'score','desc');
            $data = [];
            $host = request()->domain(true);
            foreach ($list as $k=>$v){
                if(isset($k) && $k==0){
                    $top = '<img src="'.$host.'/screen/images/TOP1.png" width="20" >';
                }elseif (isset($k) && $k==1){
                    $top = '<img src="'.$host.'/screen/images/TOP2.png" width="20" >';
                }elseif (isset($k) && $k==2){
                    $top = '<img src="'.$host.'/screen/images/TOP3.png" width="20">';
                }else{
                    $top = 'TOP'.($k+1);
                }
                $data[] = [$top,$v['name'],$v['dep'],$v['roles'],$v['task'],$v['score']];
            }

        }


        HelpHander::success($data);
    }


    // 获取大屏紧急联系人或图片
    public function getOrgInfo(){
        $data = [
            'name' => model('Config')->getConfig('org_emergency_name',$this->orgId),
            'phone' => model('Config')->getConfig('org_emergency_phone',$this->orgId),
            'img' => model('Config')->getConfig('org_screen_img',$this->orgId)
        ];
        HelpHander::success($data);
    }

    public function orgQuarterRankList(){
        //获取当前季度
        $season = ceil((date('n'))/3);
        //当前季度开始时间戳
        $startTime = date('Y-m-d H:i:s', mktime(0,0,0,$season*3-3+1,1,date('Y')));
        //获取当前季度结束时间戳
        $overTime = date('Y-m-d H:i:s', mktime(23,59,59,$season*3,date('t',mktime(0,0,0,$season*3,1,date("Y"))),date('Y')));


        $orgList = Db::name('org')
            ->field('id,name')
            ->where('type',2)
            ->where('enable',1)
            ->where('del',0)
            ->select();
        foreach ($orgList as $k=>$v){
            if($v['id'] == 3){
                $orgList[$k]['count'] = gtspdb('comment')
                    ->where('ORG_ID',$v['id'])
                    ->where('CREATE_TIME','>=',$startTime)
                    ->where('CREATE_TIME','<=',$overTime)
                    ->sum('SCORE');
            }elseif ($v['id'] == 24){
                $orgList[$k]['count'] = bjydb('comment')
                    ->where('org_id',$this->bjOrgId)
                    ->where('create_time','>=',$startTime)
                    ->where('create_time','<=',$overTime)
                    ->sum('score');
            }elseif ($v['id'] == 26){
                $orgList[$k]['count'] = xcydb('comment')
                    ->where('org_id',$this->xcOrgId)
                    ->where('create_time','>=',$startTime)
                    ->where('create_time','<=',$overTime)
                    ->sum('score');
            }else{
                $orgList[$k]['count'] = Db::name('comment')
                    ->where('org_id',$v['id'])
                    ->where('create_time','>=',$startTime)
                    ->where('create_time','<=',$overTime)
                    ->sum('score');
            }


        }
        $list = list_sort_by($orgList,'count','desc');
        $curTop = 1;
        $curNums = 0;
        foreach ($list as $k=>$v){
            if($v['id'] == $this->orgId){
                $curTop = $k+1;
                $curNums = $v['count'];
            }
        }

        $data = [
            'my'=>['top'=>$curTop,'nums'=>$curNums],
            'jn'=>['top'=>2,'nums'=>4.6],
        ];

        HelpHander::success($data);
    }


    //任务数据总览
    public function taskList(){
        $mode = input('mode/d',3);
        if(!in_array($mode,[1,2,3,4])){
            HelpHander::error('参数错误');
        }

        if($this->orgId == 3){
            $data = [];
            $header = ['状态', '类型', '始发地', '目的地', '需求时间', '执行人', '派工时间', '接收时间'];
            if($mode == 5){
                $header = ['状态', '订单号', '类型', '护工', '下单时间'];
                $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')
                    ->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[] = [$stxt,$v['sn'],$cate,$users,$v['create_time']];
                }
            }else{
                if($mode == 1){
                    $header = ['状态', '科室', '报修事项', '内容', '下单时间'];
                }else if($mode == 2||$mode == 4){
                    $header = ['状态', '科室', '内容', '下单时间'];
                }
                $lists = gtspdb('orders')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('CURR_ORDER_MODE','in',[1,5])
                    ->where('WORK_TYPE_MODE',$mode)
                    ->where('DEL_REF',0)
                    ->order('ORDER_ID DESC')
                    ->limit(20)
                    ->field('ORDER_ID,CURR_ORDER_MODE,CREATTE_TIME,SEND_TIME,CONTENT,DEP_ID')
                    ->select();
                foreach ($lists as $k=>$v){
                    $dep = gtspdb('org')->where('ORG_ID',$v['DEP_ID'])->value('NAME');
                    $status = gtspdb('order_mode')->where('ORDER_MODE',$v['CURR_ORDER_MODE'])->value('OUT_CONTENT');
                    if($mode == 1){ // 报修
                        $type = gtspdb('order_repair')
                            ->alias('or')
                            ->leftJoin('order_type ot','ot.ORDER_TYPE_ID = or.TYPE_ID')
                            ->where('or.ORDER_ID',$v['ORDER_ID'])
                            ->value('NAME');
                        $data[] = [$status,$dep,$type?$type:'',$v['CONTENT'],$v['CREATTE_TIME']];
                    }else if($mode == 3){ //运送
                        $convey = gtspdb('order_convey')
                            ->alias('oc')
                            ->join('convey_cate cc','cc.ID = oc.TYPE')
                            ->where('oc.ORDER_ID',$v['ORDER_ID'])
                            ->field('oc.*,cc.NAME as cate_title')
                            ->find();
                        $sa = gtspdb('address')->where('ADDRESS_ID',$convey['START'])->find();
                        $sa1  =  $ea1 = '';
                        if($sa){
                            $sa1 = gtspdb('address')->where('PARENT_ID',$sa['ADDRESS_ID'])->value('NAME');
                        }

                        $start = $sa1.$sa['NAME'];

                        $ea = gtspdb('address')->where('ADDRESS_ID',$convey['END'])->find();
                        if($ea){
                            $ea1 = gtspdb('address')->where('PARENT_ID',$sa['ADDRESS_ID'])->value('NAME');
                        }

                        $end = $ea1.$ea['NAME'];

                        $todos = gtspdb('todo')
                            ->alias('t')
                            ->join('user u','u.USER_ID = t.TO_USER_ID')
                            ->where('t.ORDER_ID',$v['ORDER_ID'])
                            ->where('t.DEL_REF',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];
                    }else{ // 保洁,隐患预警
                        $data[] = [$status,$dep,$v['CONTENT'],$v['CREATTE_TIME']];
                    }
                }
            }

        }elseif ($this->orgId == 24){
            $data = [];
            $header = ['状态', '类型', '始发地', '目的地', '需求时间', '执行人', '派工时间', '接收时间'];
            if($mode == 1){
                $header = ['状态', '科室', '报修事项', '内容', '下单时间'];
            }else if($mode == 2||$mode == 4){
                $header = ['状态', '科室', '内容', '下单时间'];
            }
            $lists = bjydb('orders')
                ->where('org_id',$this->bjOrgId)
                ->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')
                ->select();
            foreach ($lists as $k=>$v){
                $dep = bjydb('dep')->where('id',$v['dep_id'])->value('title');
                $status = bjydb('order_mode')->where('id',$v['order_mode'])->value('out_content');
                if($mode == 1){ // 报修
                    $type = bjydb('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']];
                }else if($mode == 3){ //运送
                    $convey = bjydb('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 = bjydb('address')->where('id',$convey['start'])->value('title');
                    $end = bjydb('address')->where('id',$convey['end'])->value('title');

                    $todos = bjydb('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];
                }else{ // 保洁,隐患预警
                    $data[] = [$status,$dep,$v['content'],$v['create_time']];
                }
            }
        }elseif ($this->orgId == 26){
            $data = [];
            $header = ['状态', '类型', '始发地', '目的地', '需求时间', '执行人', '派工时间', '接收时间'];
            if($mode == 1){
                $header = ['状态', '科室', '报修事项', '内容', '下单时间'];
            }else if($mode == 2||$mode == 4){
                $header = ['状态', '科室', '内容', '下单时间'];
            }
            $lists = xcydb('orders')
                ->where('org_id',$this->xcOrgId)
                ->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')
                ->select();
            foreach ($lists as $k=>$v){
                $dep = xcydb('dep')->where('id',$v['dep_id'])->value('title');
                $status = xcydb('order_mode')->where('id',$v['order_mode'])->value('out_content');
                if($mode == 1){ // 报修
                    $type = xcydb('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']];
                }else if($mode == 3){ //运送
                    $convey = xcydb('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 = xcydb('address')->where('id',$convey['start'])->value('title');
                    $end = xcydb('address')->where('id',$convey['end'])->value('title');

                    $todos = xcydb('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];
                }else{ // 保洁,隐患预警
                    $data[] = [$status,$dep,$v['content'],$v['create_time']];
                }
            }
        }else{
            $data = [];
            $header = ['状态', '类型', '始发地', '目的地', '需求时间', '执行人', '派工时间', '接收时间'];
            if($mode == 5){
                $header = ['状态', '订单号', '类型', '护工', '下单时间'];
                $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')
                    ->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[] = [$stxt,$v['sn'],$cate,$users,$v['create_time']];
                }
            }else{
                if($mode == 1){
                    $header = ['状态', '科室', '报修事项', '内容', '下单时间'];
                }else if($mode == 2||$mode == 4){
                    $header = ['状态', '科室', '内容', '下单时间'];
                }
                $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')
                    ->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');
                    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']];
                    }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];
                    }else{ // 保洁,隐患预警
                        $data[] = [$status,$dep,$v['content'],$v['create_time']];
                    }
                }
            }

        }



        HelpHander::success(['data'=>$data,'header'=>$header]);
    }

    public function wasteRecordList(){
        $date = date('Ymd');
        $edate = date("Ymd",strtotime("-1 months",strtotime($date)));

        if($this->orgId == 3){
            $addr = gtspdb('waste_device')
                ->field('WASTE_DEVICE_ID,TITLE')
                ->where('DEL_REF',0)
                ->where('ENABLE',1)
                ->where('ORG_ID',$this->spOrgId)
                ->select();

            foreach ($addr as $k=>$v){
                $nums1 = gtspdb('waste_record')
                    ->where('CREATE_YYYYMMDD',$date)
                    ->where('WASTE_DEVICE_ID',$v['WASTE_DEVICE_ID'])
                    ->sum('WEIGHT');
                $addr[$k]['nums1'] = $nums1 ? round($nums1/1000,0) : 0;
                $nums2 =  gtspdb('waste_record')
                    ->where('CREATE_YYYYMM','=',$edate)
                    ->where('WASTE_DEVICE_ID',$v['WASTE_DEVICE_ID'])
                    ->sum('WEIGHT');
                $addr[$k]['nums2'] = $nums2 ? round($nums2/30/1000,0) : 0;
            }
            $lists =array_slice(list_sort_by($addr,'nums1','desc'),0,5) ;
            $data1 = array_column($lists,'nums1');
            $data2 = array_column($lists,'nums2');
            $title = array_column($lists,'TITLE');
        }elseif($this->orgId == 24){
            $addr = bjydb('address')
                ->field('id,title')
                ->where('del',0)
                ->where('enable',1)
                ->where('org_id',$this->bjOrgId)
                ->where('','exp',Db::raw("FIND_IN_SET(7,types)"))
                ->select();

            foreach ($addr as $k=>$v){
                $nums1 = bjydb('waste_record')
                    ->where('create_yyyymmdd','=',$date)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums1'] = $nums1 ? round($nums1/1000,0) : 0;
                $nums2 = bjydb('waste_record')
                    ->where('create_yyyymm','=',$edate)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums2'] = $nums2 ? round($nums2/30/1000,0) : 0;
            }
            $lists =array_slice(list_sort_by($addr,'nums1','desc'),0,5) ;
            $data1 = array_column($lists,'nums1');
            $data2 = array_column($lists,'nums2');
            $title = array_column($lists,'title');
        }elseif($this->orgId == 26){
            $addr = xcydb('address')
                ->field('id,title')
                ->where('del',0)
                ->where('enable',1)
                ->where('org_id',$this->xcOrgId)
                ->where('','exp',Db::raw("FIND_IN_SET(7,types)"))
                ->select();

            foreach ($addr as $k=>$v){
                $nums1 = xcydb('waste_record')
                    ->where('create_yyyymmdd','=',$date)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums1'] = $nums1 ? round($nums1/1000,0) : 0;
                $nums2 = xcydb('waste_record')
                    ->where('create_yyyymm','=',$edate)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums2'] = $nums2 ? round($nums2/30/1000,0) : 0;
            }
            $lists =array_slice(list_sort_by($addr,'nums1','desc'),0,5) ;
            $data1 = array_column($lists,'nums1');
            $data2 = array_column($lists,'nums2');
            $title = array_column($lists,'title');
        }else{
            $addr = Db::name('address')
                ->field('id,title')
                ->where('del',0)
                ->where('enable',1)
                ->where('org_id',$this->orgId)
                ->where('','exp',Db::raw("FIND_IN_SET(7,types)"))
                ->select();

            foreach ($addr as $k=>$v){
                $nums1 = Db::name('waste_record')
                    ->where('create_yyyymmdd','=',$date)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums1'] = $nums1 ? round($nums1/1000,0) : 0;
                $nums2 = Db::name('waste_record')
                    ->where('create_yyyymm','=',$edate)
                    ->where('waste_device_id',$v['id'])
                    ->sum('weight');
                $addr[$k]['nums2'] = $nums2 ? round($nums2/30/1000,0) : 0;
            }
            $lists =array_slice(list_sort_by($addr,'nums1','desc'),0,5) ;
            $data1 = array_column($lists,'nums1');
            $data2 = array_column($lists,'nums2');
            $title = array_column($lists,'title');
        }



        $data = [
            'data1'=>$data1,
            'data2'=>$data2,
            'title'=>$title,
        ];
        HelpHander::success($data);

    }


    // 巡更任务数据统计 当天及30天异常数量
    public function addrRecord(){
        //先取30内的巡更地点
        $curDay = date('Ymd');
        $start = date('Ymd',strtotime(date('Y-m-d')) - 29*24*60*60);
        if($this->orgId == 3||$this->orgId == 26){
            $lists = gtspdb('patrol_record')
                ->alias('pr')
                ->join('patrol_addr a','a.PATROL_ADDR_ID = pr.PATROL_ADDR_ID')
                ->where('pr.ORG_ID',$this->spOrgId)
                ->where('pr.PATROL_MODE',4)
                ->where('pr.CREATE_YYYYMMDD','<=',$curDay)
                ->where('pr.CREATE_YYYYMMDD','>=',$start)
                ->field('a.PATROL_ADDR_ID,a.TITLE')
                ->group('pr.PATROL_ADDR_ID')
                ->distinct(true)
                ->select();
            $titles = [];
            $y1 = [];
            $y2 = [];
            foreach ($lists as $k=>$v){
                $titles[] = mb_substr($v['TITLE'],0,4).'..';
                $count1 = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('PATROL_MODE',4)
                    ->where('CREATE_YYYYMMDD','=',$curDay)
                    ->where('PATROL_ADDR_ID','=',$v['PATROL_ADDR_ID'])
                    ->count();
                $y1[] = $count1;

                $count2 = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('PATROL_MODE',4)
                    ->where('IS_NORMAL',1)
                    ->where('CREATE_YYYYMMDD','<=',$curDay)
                    ->where('CREATE_YYYYMMDD','>=',$start)
                    ->where('PATROL_ADDR_ID','=',$v['PATROL_ADDR_ID'])
                    ->count();
                $y2[] = $count2;
            }

        }elseif($this->orgId == 24){
            $lists = bjydb('patrol_record')
                ->alias('pr')
                ->join('address a','a.id = pr.patrol_addr_id')
                ->where('pr.org_id',$this->bjOrgId)
                ->where('pr.patrol_mode',1)
                ->where('pr.create_yyyymmdd','<=',$curDay)
                ->where('pr.create_yyyymmdd','>=',$start)
                ->field('a.id,a.title')
                ->group('pr.patrol_addr_id')
                ->distinct(true)
                ->select();

            $titles = [];
            $y1 = [];
            $y2 = [];
            foreach ($lists as $k=>$v){
                $titles[] = $v['title'];
                $count1 = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('patrol_mode',1)
                    ->where('create_yyyymmdd','=',$curDay)
                    ->where('patrol_addr_id','=',$v['id'])
                    ->count();
                $y1[] = $count1;

                $count2 = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('patrol_mode',1)
                    ->where('is_normal',1)
                    ->where('create_yyyymmdd','<=',$curDay)
                    ->where('create_yyyymmdd','>=',$start)
                    ->where('patrol_addr_id','=',$v['id'])
                    ->count();
                $y2[] = $count2;
            }
        }else{
            $lists = Db::name('patrol_record')
                ->alias('pr')
                ->join('address a','a.id = pr.patrol_addr_id')
                ->where('pr.org_id',$this->orgId)
                ->where('pr.patrol_mode',1)
                ->where('pr.create_yyyymmdd','<=',$curDay)
                ->where('pr.create_yyyymmdd','>=',$start)
                ->field('a.id,a.title')
                ->group('pr.patrol_addr_id')
                ->distinct(true)
                ->select();
            $titles = [];
            $y1 = [];
            $y2 = [];
            foreach ($lists as $k=>$v){
                $titles[] = $v['title'];
                $count1 = Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('patrol_mode',1)
                    ->where('create_yyyymmdd','=',$curDay)
                    ->where('patrol_addr_id','=',$v['id'])
                    ->count();
                $y1[] = $count1;

                $count2 = Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('patrol_mode',1)
                    ->where('is_normal',1)
                    ->where('create_yyyymmdd','<=',$curDay)
                    ->where('create_yyyymmdd','>=',$start)
                    ->where('patrol_addr_id','=',$v['id'])
                    ->count();
                $y2[] = $count2;
            }

        }



        HelpHander::success(['titles' => $titles,'y1' => $y1,'y2' => $y2]);
    }


    //巡查图片
    public function patrolImg(){

        if($this->orgId == 3||$this->orgId == 26){
            $data = gtspdb('patrol_record')
                ->where('IMAGES','<>','')
                ->where('ORG_ID',$this->spOrgId)
                ->limit(20)
                ->order('PATROL_RECORD_ID desc')
                ->select();

            foreach ($data as $k=>$v){
                $img = explode(',',$v['IMAGES']);
                if($img){
                    $data[$k]['images'] = $img[0];
                }
            }

        }elseif($this->orgId == 24){
            $data = bjydb('patrol_record')
                ->where('images','<>','')
                ->where('org_id',$this->bjOrgId)
                ->limit(20)
                ->order('id desc')
                ->select();

            foreach ($data as $k=>$v){
                $img = explode(',',$v['images']);
                if($img){
                    $data[$k]['images'] = $img[0];
                }
            }
        }else{
            $data = Db::name('patrol_record')
                ->where('images','<>','')
                ->where('org_id',$this->orgId)
                ->limit(20)
                ->order('id desc')
                ->select();

            foreach ($data as $k=>$v){
                $img = explode(',',$v['images']);
                if($img){
                    $data[$k]['images'] = $img[0];
                }
            }
        }

        if(count($data)>3){
            $key = array_rand($data,4);
            $list[] = $data[$key[0]];
            $list[] = $data[$key[1]];
            $list[] = $data[$key[2]];
            $list[] = $data[$key[3]];
        }
        $eList = isset($list)?$list:$data;
        HelpHander::success($eList);
    }

    public function patrolRecordList(){
        $dlist = [
            date('Y-m-d',strtotime('-6 days')),
            date('Y-m-d',strtotime('-5 days')),
            date('Y-m-d',strtotime('-4 days')),
            date('Y-m-d',strtotime('-3 days')),
            date('Y-m-d',strtotime('-2 days')),
            date('Y-m-d',strtotime('-1 days')),
            date('Y-m-d'),
        ];
        $date = [];
        $yCount = [];
        $y2Count = [];
        $y3Count = [];
        $y4Count = [];

        if($this->orgId == 3){
            foreach ($dlist as $k=>$v){
                $tt = date('Ymd',strtotime($v));
                $count = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('CREATE_YYYYMMDD',$tt)
                    ->where('PATROL_MODE',1)
                    ->count();
                $count2 = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('CREATE_YYYYMMDD',$tt)
                    ->where('PATROL_MODE',2)
                    ->count();
                $count3 = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('CREATE_YYYYMMDD',$tt)
                    ->where('PATROL_MODE',3)
                    ->count();
                $count4 = gtspdb('patrol_record')
                    ->where('ORG_ID',$this->spOrgId)
                    ->where('CREATE_YYYYMMDD',$tt)
                    ->where('PATROL_MODE',4)
                    ->count();
                $date[] =  date('m-d',strtotime($v));
                $yCount[] = $count;
                $y2Count[] = $count2;
                $y3Count[] = $count3;
                $y4Count[] = $count4;
            }

        }elseif($this->orgId == 24||$this->orgId == 26){
            foreach ($dlist as $k=>$v){
                $tt = date('Ymd',strtotime($v));
                $count = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',1)
                    ->count();
                $count2 = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',2)
                    ->count();
                $count3 = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',3)
                    ->count();
                $count4 = bjydb('patrol_record')
                    ->where('org_id',$this->bjOrgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',4)
                    ->count();
                $date[] =  date('m-d',strtotime($v));
                $yCount[] = $count;
                $y2Count[] = $count2;
                $y3Count[] = $count3;
                $y4Count[] = $count4;
            }
        }else{
            foreach ($dlist as $k=>$v){
                $tt = date('Ymd',strtotime($v));
                $count = Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',1)
                    ->count();
                $count2 =Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',2)
                    ->count();
                $count3 =Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',3)
                    ->count();
                $count4 =Db::name('patrol_record')
                    ->where('org_id',$this->orgId)
                    ->where('create_yyyymmdd',$tt)
                    ->where('patrol_mode',4)
                    ->count();
                $date[] =  date('m-d',strtotime($v));
                $yCount[] = $count;
                $y2Count[] = $count2;
                $y3Count[] = $count3;
                $y4Count[] = $count4;
            }
        }

        $data = [
            'date'=>$date,
            'count1'=>$yCount,
            'count2'=>$y2Count,
            'count3'=>$y3Count,
            'count4'=>$y4Count,
        ];
        HelpHander::success($data);
    }

    public function deviceNhImg(){
        $host = request()->domain(true);
        $img = [
            $host.'/screen/images/nh1.png',
            $host.'/screen/images/nh2.png',
            $host.'/screen/images/nh3.png',
            $host.'/screen/images/nh4.png',
            $host.'/screen/images/nh5.png',
            $host.'/screen/images/nh6.png',
        ];
        if(count($img)>5){
            $key = array_rand($img,6);
            $list[] = $img[$key[0]];
            $list[] = $img[$key[1]];
            $list[] = $img[$key[2]];
            $list[] = $img[$key[3]];
            $list[] = $img[$key[4]];
            $list[] = $img[$key[5]];
        }
        $eList = isset($list)?$list:$img;
        HelpHander::success($eList);
    }

    public function energyList(){
//        $day = date('d');
//        $dayList = [];
//        for ($i=1;$i<=$day;$i++){
//            $dayList[] = $i;
//        }
//        $count1 = $count2 = [];
//        foreach ($dayList as $k=>$v){
//
//            $count1[] = 0;
//            $count2[] = 0;
//        }

        $dlist = [
            date('Y-m-d',strtotime('-6 days')),
            date('Y-m-d',strtotime('-5 days')),
            date('Y-m-d',strtotime('-4 days')),
            date('Y-m-d',strtotime('-3 days')),
            date('Y-m-d',strtotime('-2 days')),
            date('Y-m-d',strtotime('-1 days')),
            date('Y-m-d'),
        ];
        $title = [];
        foreach ($dlist as $k=>$v){
            $title[] = date('m-d',strtotime($v));

        }

        $data = [
            'date'=>$title,
            'count1'=>[5,7,8,6,4,9,3],
            'count2'=>[7,4,4,7,4,5,7],
        ];

        HelpHander::success($data);
    }


    // 获取所有下级的id集合
    public function getAllNextId($id,$data=[]){
        $pids = DB::name('org')->where('parent_id',$id)->column('id');
        if(count($pids)>0){
            foreach($pids as $v){
                $data[] = $v;
                $data = $this->getAllNextId($v,$data); //注意写$data 返回给上级
            }
        }
        if(count($data)>0){
            return $data;
        }else{
            return [];
        }
    }

    public function patrolList(){
        $orgId = $this->orgId;
//        $orgId = 23;
        $lists = Db::name('patrol_task')
            ->where('org_id',$orgId)
            ->where('del',0)
            ->where('start_time','<=',date('Y-m-d H:i:s',time()+12*60*60))
            ->field('id,title,status')
            ->order('start_time desc,id desc')
            ->limit(20)
            ->select();
        $lists = $lists?$lists:[];
        $data = [];
        foreach ($lists as $k=>$v){
            if($v['status'] == 0){ //0=未执行 1=执行中 2=已完成 3=未完成 5=中断 6=已关闭
                $status = "未执行";
            }else if($v['status'] == 1){
                $status = "执行中";
            }else if($v['status'] == 2){
                $status = "已完成";
            }else if($v['status'] == 3){
                $status = "未完成";
            }else if($v['status'] == 5){
                $status = "中断";
            }else{
                $status = "已关闭";
            }

            $users = Db::name('patrol_task_user')
                ->alias('a')
                ->join('user u','u.id = a.user_id')
                ->where('a.patrol_task_id',$v['id'])
                ->column('real_name');

            $arr = [$v['title'],$status,$users?implode(',',$users):''];
            $data[] = $arr;
        }

        HelpHander::success($data);
    }

    public function reservedList(){
        $lists = Db::name('dinner_reserved')
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->field('type,title,start_time')
            ->order('start_time desc,id desc')
            ->limit(20)
            ->select();
        $lists = $lists?$lists:[];
        $data = [];
        foreach ($lists as $k=>$v){
            $status = "";
            if($v['type'] == 1){ //1=早餐 2=午餐 3=晚餐
                $status = "早餐";
            }else if($v['type'] == 2){
                $status = "午餐";
            }else if($v['type'] == 3){
                $status = "晚餐";
            }

            $arr = [$status,$v['title'],$v['start_time']];
            $data[] = $arr;
        }
        HelpHander::success($data);
    }

    public function visitorList(){
        $lists = Db::name('visitor_order')
            ->where('org_id',$this->orgId)
            ->where('del',0)
            ->where('type',2)
            ->field('name,access,create_time')
            ->order('id desc')
            ->limit(20)
            ->select();
        $lists = $lists?$lists:[];
        $data = [];
        foreach ($lists as $k=>$v){
            $arr = [$v['name'],$v['access'],$v['create_time']];
            $data[] = $arr;
        }
        HelpHander::success($data);
    }

    public function dailyList(){
//        $zdid = -30;
//        $orgId = 23;
//        if($this->orgId == $zdid){
//            $orgId = $this->orgId;
//        }

        $orgId = $this->orgId;

        $map[] = ['enable', '=', 1];
        $map[] = ['org_id', '=', $orgId];
        $map[] = ['del', '=', 0];
        $lists = Db::name('daily')->where($map)->field('id,title')->order('id desc')->select();
//        if($this->orgId == $zdid){
//            $lists = Db::name('daily')->where($map)->field('id,title')->order('id desc')->select();
//        }else{
//            $lists = xcydb('daily')->where($map)->field('id,title')->order('id desc')->select();
//        }

        $hours = model('Daily')->getTimeDaily($this->orgId);
        foreach ($lists as $k=>$v){
            $m = [];
            $m[] = ['org_id','=',$orgId];
            $m[] = ['daily_id','=',$v['id']];
            $m[] = ['create_time','>=',$hours['start']];
            $m[] = ['create_time','<',$hours['end']];

            $count = Db::name('daily_record')->where($m)->count();
//            if($this->orgId == $zdid){
//                $count = Db::name('daily_record')->where($m)->count();
//            }else{
//                $count = xcydb('daily_record')->where($m)->count();
//            }

            $lists[$k]['count'] = $count;
        }
        $lists = list_sort_by($lists,'count','desc');
        if(count($lists) > 12){
            $nlist = [];
            foreach ($lists as $k=>$v){
                if(count($nlist) < 12){
                    $nlist[] = $v;
                }
            }
            HelpHander::success($nlist);
        }else{
            HelpHander::success($lists);
        }
    }

    public function elevatorList(){
        $this->orgId = 3;
        $info = Db::name('elevator_record')->where('org_id',$this->orgId)->field('id,img,type,eid,create_time')->order('id desc')->find();
        if($info){
            $title = Db::name('elevator')->where('id',$info['eid'])->value('title');
            $info['title'] = $title;
        }else{
            $info = [
                'title' => '',
                'type' => '',
                'createTime' => '',
                'img' => ''
            ];
        }
        HelpHander::success($info);
    }

    public function tossList(){
        $this->orgId = 3;
        $info = Db::name('toss')->where('org_id',$this->orgId)->field('id,img,type,address as title,create_time')->order('id desc')->find();
        if(!$info){
            $info = [
                'title' => '',
                'type' => '',
                'createTime' => '',
                'img' => ''
            ];
        }
        HelpHander::success($info);
    }

    public function parkList(){
        $this->orgId = 3;
        $info = Db::name('park_ill')->where('org_id',$this->orgId)->field('id,img,plate_sn as sn,address,create_time,video,order_id')->order('id desc')->find();
        if(!$info){
            $info = [
                'sn' => '',
                'address' => '',
                'createTime' => '',
                'img' => '',
                'video' => '',
                'orderId' => 0
            ];
        }
        HelpHander::success($info);
    }

    public function getIcons(){
        $icons1 = [
            [
                'title' => '工程 <br> 报修',
                'url' => config('app.screen_url').'/home?token='.think_encrypt('6|'.$this->orgId.'|'.time()),
                'count' => 1,
            ],
            [
                'title' => '投诉 <br> 处理',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '日常 <br> 工作',
                'url' => config('app.screen_url').'/home?token='.think_encrypt('2|'.$this->orgId.'|'.time()),
                'count' => 1,
            ],
            [
                'title' => '中央 <br> 运送',
                'url' => config('app.screen_url').'/home?token='.think_encrypt('3|'.$this->orgId.'|'.time()),
                'count' => 1,
            ],
            [
                'title' => '订单 <br> 管理',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '隐患 <br> 上报',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '会议室 <br> 预订',
                'url' => '',
                'count' => 2,
            ],
            [
                'title' => '绿化 <br> 养护',
                'url' => '',
                'count' => 1,
            ],
        ];
        $icons2 = [
            [
                'title' => '设备 <br> 台账',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '品质 <br> 检查',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '巡更 <br> 巡检',
                'url' => config('app.screen_url').'/home?token='.think_encrypt('2|'.$this->orgId.'|'.time()),
                'count' => 1,
            ],
            [
                'title' => '专项 <br> 保洁',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '人员 <br> 考勤',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '满意度 <br> 调查',
                'url' => '',
                'count' => 2,
            ],
            [
                'title' => '安全 <br> 保卫',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '智慧 <br> 抢单',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '垃圾 <br> 分类',
                'url' => '',
                'count' => 1,
            ],
        ];
        $icons3 = [
            [
                'title' => '医废 <br> 管理',
                'url' => config('app.screen_url').'/home?token='.think_encrypt('4|'.$this->orgId.'|'.time()),
                'count' => 1,
            ],
            [
                'title' => '医疗 <br> 陪护',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => ' 线上 <br> 订餐',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '设备 <br> 监控',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '耗材 <br> 管理',
                'url' => '',
                'count' => 1,
            ],
            [
                'title' => '中央运送 <br> HIS/LIS对接',
                'url' => '',
                'count' => 3,
            ],
            [
                'title' => '医废监管 <br> 平台对接',
                'url' => '',
                'count' => 4,
            ],
        ];

        HelpHander::success(['icons1'=>$icons1,'icons2'=>$icons2,'icons3'=>$icons3]);

    }


    public function canteen(){
//        $weeks = [['product', '进场人次', '出场人次']];
//        for ($i=7;$i>0;$i--){
//            $day = date('Y-m-d',time() - $i*24*60*60);
//            $weeks[] = [$day,mt_rand(200,1000),mt_rand(300,1000)];
//        }
//        $data = [
//            'in' => 413,
//            'out' => 489,
//            'source' => $weeks
//        ];

        $weeks = [['product', '留样数']];
        for ($i=7;$i>0;$i--){
            $day = date('Y-m-d',time() - ($i-1)*24*60*60);
            $kin = Db::name('dinner_reserved')->where('org_id',$this->orgId)->where('del',0)->where('start_time',$day)->count();
            $weeks[] = [$day,$kin];
        }
        $in = Db::name('dinner_reserved')->where('org_id',$this->orgId)->where('del',0)->count();
        $out = Db::name('dinner_health')->where('org_id',$this->orgId)->where('del',0)->where('enable',0)->where('end_time','<',date('Y-m-d'))->count();
        $data = [
            'in' => $in,
            'out' => $out,
            'source' => $weeks
        ];

        HelpHander::success($data);
    }

    /**
     * 任务列表
     */
    public function threejsdata(){
        $map[] = ['type','in',[1,2]];
        $map[] = ['org_id','=',$this->orgId];
        $lists = Db::name('task')->where($map)->order('start_time desc')->select();
        $lists = $lists?$lists:[];

        $news = [];
        foreach ($lists as $k=>$v){
            $arr = [
                'id' => $v['id'],
                'start_time' => $v['start_time'],
                'cate' => 0,
                'content' => '',
                'cate_title' => '',
                'user_name' => '',
            ];
            $arr['user_name'] = Db::name('user')->where('id',$v['user_id'])->value('real_name');
            if($v['type'] == 1){ // 订单
                $order = Db::name('todo')->where('todo_mode','in',[1,2])->where('del',0)->where('id',$v['bus_id'])->find();
                if(!$order || $order['work_type_mode'] == 2 || $order['work_type_mode'] == 4){
                    continue;
                }
                $arr['status'] = $order['todo_mode'] == 1?0:1;
                if($order['work_type_mode'] == 1){ // 报修,检查是否有报修地点
                    $addressId = Db::name('order_repair')->where('order_id',$order['order_id'])->value('address_id');
                    $address = Db::name('address')->where('id',$addressId)->field('id,title,xyz')->find();
                    if(!$address){
                        continue;
                    }
                    $xyz = $address['xyz']?explode(',',$address['xyz']):[];
                    if(empty($xyz) || $xyz[0] == ''){
                        $address['xyz'] = [];
                    }else{
                        $address['xyz'] = $xyz;
                    }
                    $arr['cate'] = 1; // 报修
                    $arr['cate_title'] = '报修';
                    $arr['address'] = $address;
                    $arr['content'] = Db::name('orders')->where('id',$order['order_id'])->value('content');
                }

                if($order['work_type_mode'] == 3){ // 运送
                    $addr = Db::name('order_convey')->where('order_id',$order['order_id'])->find();
                    if(!$addr){
                        continue;
                    }
                    $start = Db::name('address')->where('id',$addr['start'])->field('id,title,xyz')->find();
                    $xyz = $start['xyz']?explode(',',$start['xyz']):[];
                    if(empty($xyz) || $xyz[0] == ''){
                        $start['xyz'] = [];
                    }else{
                        $start['xyz'] = $xyz;
                    }
                    $end = Db::name('address')->where('id',$addr['end'])->field('id,title,xyz')->find();
                    $xyz = $end['xyz']?explode(',',$end['xyz']):[];
                    if(empty($xyz) || $xyz[0] == ''){
                        $end['xyz'] = [];
                    }else{
                        $end['xyz'] = $xyz;
                    }
                    $cateTitle = Db::name('convey_cate')->where('id',$addr['type'])->value('title');
                    $arr['cate'] = 2; // 运送
                    $arr['cate_title'] = '运送';
                    $arr['start'] = $start;
                    $arr['end'] = $end;
                    $arr['content'] = '从'.$start['title'].'至'.$end['title'].'执行'.$cateTitle.'任务';
                }
            }else{ // 巡更
                $ptask = Db::name('patrol_task')->where('status','in',[0,1])->where('del',0)->where('id',$v['bus_id'])->find();
                if(!$ptask){
                    continue;
                }

                $arr['content'] = $ptask['title'];
                $arr['status'] = $ptask['status'];
                if($ptask['patrol_mode'] == 1){ // 巡更
                    $arr['cate'] = 3;
                    $arr['cate_title'] = '巡更';
                }else if($ptask['patrol_mode'] == 2){ //巡视
                    $arr['cate'] = 4;
                    $arr['cate_title'] = '巡视';
                }else if($ptask['patrol_mode'] == 3){ //巡查
                    $arr['cate'] = 5;
                    $arr['cate_title'] = '巡查';
                }else{ // 巡检
                    $arr['cate'] = 6;
                    $arr['cate_title'] = '巡检';
                }
                $addrids = Db::name('patrol_task_addr')
                    ->where('patrol_task_id',$ptask['id'])
                    ->column('address_id');

                $addrs = Db::name('address')->where('id','in',$addrids)->field('id,title,xyz')->select();
                $addrs = $addrs?$addrs:[];
                foreach ($addrs as $kk=>$vv){
                    $xyz = $vv['xyz']?explode(',',$vv['xyz']):[];
                    if(empty($xyz) || $xyz[0] == ''){
                        $addrs[$kk]['xyz'] = [];
                    }else{
                        $addrs[$kk]['xyz'] = $xyz;
                    }
                }

                $arr['addrs'] = $addrs;
            }

            $news[] = $arr;
        }

        $addrList = Db::name('convey_plan_record')->where('org_id',$this->orgId)->field('addr_id,count(*) as count')->group('addr_id')->distinct(true)->select();
        $addrList = $addrList?$addrList:[];
        $newaddrs = [];
        foreach ($addrList as $k=>$v){
            $title = Db::name('address')->where('id',$v['addr_id'])->value('title');
            $newaddrs[] = [$title,$v['count']];
        }

        $data = [
            'task' => $news,
            'addrs' => $newaddrs
        ];

        HelpHander::success($data);


    }

}