| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047 | 
							- <?php
 
- namespace app\api\controller\screen;
 
- use app\hander\HelpHander;
 
- use app\api\controller\screen\Index;
 
- use think\Db;
 
- class Convey extends Index
 
- {
 
-     public function todoNum(){
 
-         $count = Db::name('todo')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('work_type_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->count();
 
-         $count1 = Db::name('todo')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('work_type_mode',3)
 
-             ->where('create_yyyymm',date('Ym'))
 
-             ->count();
 
-         $count2 = Db::name('todo')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('work_type_mode',3)
 
-             ->where('create_yyyy',date('Y'))
 
-             ->count();
 
-         HelpHander::success(['count'=>$count,'count1'=>$count1,'count2'=>$count2]);
 
-     }
 
-     public function todoStatusNum(){
 
-         $list = [
 
-             ['name'=>'待接单','mode'=>1],
 
-             ['name'=>'进行中','mode'=>2],
 
-             ['name'=>'已完成','mode'=>3],
 
-             ['name'=>'已超时','mode'=>5],
 
-         ];
 
-         foreach ($list as $k=>$v){
 
-             $list[$k]['value'] = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('del',0)
 
-                 ->where('todo_mode',$v['mode'])
 
-                 ->where('work_type_mode',3)
 
-                 ->where('create_yyyymmdd',date('Ymd'))
 
-                 ->count();
 
-         }
 
-         $todo = Db::name('todo')
 
-             ->alias('t')
 
-             ->field('t.done_time,oc.ywc_time')
 
-             ->join('order_convey oc','oc.order_id=t.order_id')
 
-             ->where('t.org_id',$this->orgId)
 
-             ->where('t.del',0)
 
-             ->where('t.create_yyyymmdd',date('Ymd'))
 
-             ->where('t.todo_mode',3)
 
-             ->select();
 
-         $count  = count($todo);
 
-         $nums = 0; //标准时间的送达的数量
 
-         foreach ($todo as $k=>$v){
 
-             if($v['done_time'] < $v['ywc_time']){
 
-                 $nums +=1;
 
-             }
 
-         }
 
-         $bl = '0%';
 
-         if($count >0){
 
-             $bl = round($nums/$count*100,1).'%';
 
-         }
 
-         $count1 = $bl;
 
-         //平均响应时间
 
-         $count2 = Db::name('todo')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('todo_mode',3)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->avg('xy_time');
 
-         //未派工任务数量
 
-         $orders = Db::name('orders')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->count();
 
-         $ordersCount = Db::name('orders')
 
-             ->where('org_id',$this->orgId)
 
-             ->where('del',0)
 
-             ->where('order_mode',1)
 
-             ->where('create_yyyymmdd',date('Ymd'))
 
-             ->count();
 
-         $count3 = '0%';
 
-         if($orders > 0){
 
-             $count3 = round($ordersCount/$orders*100,1).'%';
 
-         }
 
-         $data = [
 
-             'list'=>$list,
 
-             'legend'=>['待接单','进行中','已完成','已超时'],
 
-             'count'=>[
 
-                 'count1'=>$count1,
 
-                 'count2'=>round($count2/360,1),
 
-                 'count3'=>$count3,
 
-             ],
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     //运送热点区域数据
 
-     public function addrData(){
 
-         $date = date('Ymd');
 
-         $edate = date("Ymd",strtotime("-1 months",strtotime($date)));
 
-         $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(2,types)"))
 
-             ->limit(5)
 
-             ->select();
 
-         foreach ($addr as $k=>$v){
 
-             $addr[$k]['nums1'] = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('todo_convey tc','tc.todo_id=t.id')
 
-                 ->where('tc.start',$v['id'])
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.del',0)
 
-                 ->where('t.create_yyyymmdd','=',$date)
 
-                 ->count();
 
-             $nums2 = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->join('todo_convey tc','tc.todo_id=t.id')
 
-                 ->where('tc.start',$v['id'])
 
-                 ->where('t.org_id',$this->orgId)
 
-                 ->where('t.del',0)
 
-                 ->where('t.create_yyyymmdd','<=',$date)
 
-                 ->where('t.create_yyyymmdd','>',$edate)
 
-                 ->count();
 
-             $addr[$k]['nums2'] =  round($nums2/30,1);
 
- //            $addr[$k]['nums2'] =  $nums2;
 
-         }
 
-         $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);
 
-     }
 
-     public function ysTypeUser(){
 
-         $lists = model('WorkTypeMode')->getRolesUserApp(3,$this->orgId,1);
 
-         $curday = date('Ymd');
 
-         $users = Db::name('todo')
 
-             ->alias('t')
 
-             ->field('t.to_user_id')
 
-             ->join('user u','u.id=t.to_user_id')
 
-             ->where('t.org_id',$this->orgId)
 
-             ->whereIn('t.todo_mode',[1,2])
 
-             ->where('t.del',0)
 
-             ->where('t.work_type_mode',3)
 
-             ->where('t.create_yyyymmdd',$curday)
 
-             ->where('u.work',1)
 
-             ->where('u.enable',1)
 
-             ->where('u.del',0)
 
-             ->group('t.to_user_id')
 
-             ->select();
 
-         $users = $users?$users:[];
 
-         $userIds = [];
 
-         foreach ($users as $k=>$v){
 
-             $userIds[] = $v['to_user_id'];
 
-         }
 
-         $nlists = $nlists2 = [];
 
-         foreach ($lists as $k=>$v){
 
-             if(!in_array($v['id'],$userIds)){
 
-                 $nlists[] = $v;
 
-             }
 
-         }
 
-         $slist = $slist2 = [];
 
-         foreach ($nlists as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('to_user_id',$v['id'])
 
-                 ->whereIn('todo_mode',[1,2,3])
 
-                 ->where('del',0)
 
-                 ->where('create_yyyymmdd',$curday)
 
-                 ->count();
 
-             $addr = Db::name('convey_plan_record')
 
-                 ->alias('cpr')
 
-                 ->join('address a','a.id = cpr.addr_id')
 
-                 ->where('cpr.user_id',$v['id'])
 
-                 ->where('cpr.create_yyyymmdd',$curday)
 
-                 ->order('cpr.id desc')
 
-                 ->value('a.title');
 
-             if(!$addr){
 
-                 $addr = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->join('orders o','o.id=t.order_id')
 
-                     ->join('order_convey oc','oc.order_id=o.id')
 
-                     ->join('address a','a.id=oc.start')
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->where('t.org_id',$this->orgId)
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.create_yyyymmdd',$curday)
 
-                     ->order('t.id desc')
 
-                     ->value('a.title');
 
-             }
 
-             $slist[$k][] = '<span style="color: #FFE400">'.$v['real_name'].'</span>';
 
-             $slist[$k][] = '<span style="color: #FFE400">'.$count.'</span>';
 
-             $slist[$k][] = '<span style="color: #FFE400">'.$addr.'</span>';
 
-         }
 
-         foreach ($lists as $k=>$v){
 
-             if(in_array($v['id'],$userIds)){
 
-                 $nlists2[] = $v;
 
-             }
 
-         }
 
-         foreach ($nlists2 as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('to_user_id',$v['id'])
 
-                 ->whereIn('todo_mode',[1,2,3])
 
-                 ->where('del',0)
 
-                 ->where('create_yyyymmdd',$curday)
 
-                 ->count();
 
-             $addr = Db::name('convey_plan_record')
 
-                 ->alias('cpr')
 
-                 ->join('address a','a.id = cpr.addr_id')
 
-                 ->where('cpr.create_yyyymmdd',$curday)
 
-                 ->where('cpr.user_id',$v['id'])
 
-                 ->order('cpr.id desc')
 
-                 ->value('a.title');
 
-             if(!$addr){
 
-                 $addr = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->join('orders o','o.id=t.order_id')
 
-                     ->join('order_convey oc','oc.order_id=o.id')
 
-                     ->join('address a','a.id=oc.start')
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->where('t.org_id',$this->orgId)
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.create_yyyymmdd',$curday)
 
-                     ->order('t.id desc')
 
-                     ->value('a.title');
 
-             }
 
-             $slist2[$k][] = '<span style="color: #11E799">'.$v['real_name'].'</span>';
 
-             $slist2[$k][] = '<span style="color: #11E799">'.$count.'</span>';
 
-             $slist2[$k][] = '<span style="color: #11E799">'.$addr?$addr:''.'</span>';
 
-         }
 
-         $data = [
 
-             'list1'=>[
 
-                 'list'=>$slist2,
 
-                 'count'=>count($slist2),
 
-             ],
 
-             'list2'=>[
 
-                 'list'=>$slist,
 
-                 'count'=>count($slist),
 
-             ],
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     public function ysTask(){
 
-         $order = Db::name('orders')
 
-             ->alias('o')
 
-             ->field('o.*,oc.type,oc.start,oc.end,oc.xq_time,oc.ywc_time,oc.device_id,oc.name,oc.phone,oc.priority')
 
-             ->join('order_convey oc','oc.order_id=o.id')
 
-             ->where('o.create_yyyymmdd',date('Ymd'))
 
-             ->where('o.work_type_mode',3)
 
-             ->where('o.org_id',$this->orgId)
 
-             ->where('o.del',0)
 
-             ->whereIn('o.order_mode',[1,4])
 
-             ->order('oc.xq_time desc')
 
-             ->select();
 
-         $num = $num1 =0;
 
-         foreach ($order as $k=>$v){
 
-             if($v['order_mode'] == 1){
 
-                 $num +=1;
 
-             }
 
-             if($v['order_mode'] == 4){
 
-                 $num1 +=1;
 
-             }
 
-             $order[$k]['xq_time'] = date('H:i',strtotime($v['xq_time']));
 
-             $order[$k]['start_name'] = Db::name('address')->where('id',$v['start'])->value('title');
 
-             $order[$k]['end_name'] = Db::name('address')->where('id',$v['end'])->value('title');
 
-             $order[$k]['type_name'] = Db::name('convey_cate')->where('id',$v['type'])->value('title');
 
-             $todo = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->field('u.real_name,t.create_time,t.confirm_time')
 
-                 ->join('user u','u.id = t.to_user_id')
 
-                 ->whereIn('t.todo_mode',[1,2,3])
 
-                 ->where('t.del',0)
 
-                 ->where('t.order_id',$v['id'])
 
-                 ->order('t.id asc')
 
-                 ->select();
 
-             $users = [];
 
-             $confirmTime = '';
 
-             foreach ($todo as $kk=>$vv){
 
-                 $users[] = $vv['real_name'];
 
-                 if(!$confirmTime && $vv['confirm_time']){
 
-                     $confirmTime = $vv['confirm_time'];
 
-                 }else if($confirmTime && $vv['confirm_time'] && $vv['confirm_time'] < $confirmTime){
 
-                     $confirmTime = $vv['confirm_time'];
 
-                 }
 
-             }
 
-             $send_time = $todo?$todo[0]['create_time']:'';
 
-             $order[$k]['real_names'] = implode(',',$users);
 
-             $order[$k]['send_time'] = !empty($send_time)?date('H:i',strtotime($send_time)):'';
 
-             $order[$k]['confirm_time'] = !empty($confirmTime)?date('H:i',strtotime($confirmTime)):'';
 
-         }
 
-         $list = [];
 
-         foreach ($order as $k=>$v) {
 
-             if($v['order_mode'] == 1){
 
-                 $list[$k][] = '新任务';
 
-                 $list[$k][] = $v['type_name'];
 
-                 $list[$k][] = $v['start_name'];
 
-                 $list[$k][] = $v['end_name'];
 
-                 $list[$k][] = $v['xq_time'];
 
-                 $list[$k][] = $v['real_names'];
 
-                 $list[$k][] = $v['send_time'];
 
-                 $list[$k][] = $v['confirm_time'];
 
-             } elseif($v['order_mode'] == 5 && $v['confirm_time']){
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">已派工</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['type_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['start_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['end_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['xq_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['real_names'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['send_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['confirm_time'].'</span>';
 
-             }else{
 
-                 $list[$k][] = '<span style="color:#49E9A0;">进行中</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['type_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['start_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['end_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['xq_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['real_names'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['send_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#49E9A0;">'.$v['confirm_time'].'</span>';
 
-             }
 
-         }
 
-         HelpHander::success(['list'=>$list,'num'=>$num,'num1'=>$num1]);
 
-     }
 
-     //标本限时服务
 
-     public function conveyOrder(){
 
- //      $order = Db::name('orders')
 
- //          ->alias('o')
 
- //          ->field('o.order_mode,oc.*')
 
- //          ->join('order_convey oc','oc.order_id=o.id')
 
- //          ->where('o.org_id',$this->orgId)
 
- //          ->where('o.del',0)
 
- //          ->where('o.create_yyyymmdd',date('Ymd'))
 
- //          ->where('o.work_type_mode',3)
 
- //          ->whereIn('o.order_mode',[1,4,5])
 
- //          ->order('o.id desc')
 
- //          ->select();
 
- //
 
- //      foreach ($order as $k=>$v){
 
- //          $order[$k]['status'] = '';
 
- //          if($v['order_mode'] == 1){
 
- //              $order[$k]['status'] = '待派发';
 
- //          }elseif ($v['order_mode'] == 4){
 
- //              $order[$k]['status'] = '已派发';
 
- //          }elseif ($v['order_mode'] == 5){
 
- //              $order[$k]['status'] = '已完成';
 
- //          }
 
- //          $order[$k]['cate_name'] = Db::name('convey_cate')->where('id',$v['type'])->value('title');
 
- //          $order[$k]['start_name'] = Db::name('address')->where('id',$v['start'])->value('title');
 
- //      }
 
- //
 
- //      $list = [];
 
- //      foreach ($order as $k=>$v){
 
- //          $list[$k][] = $v['cate_name'];
 
- //          $list[$k][] = $v['start_name'];
 
- //          $list[$k][] = $v['xq_time'];
 
- //          $list[$k][] = $v['status'];
 
- //      }
 
- //        $todo = Db::name('todo')
 
- //            ->alias('t')
 
- //            ->field('t.todo_mode,t.to_user_id,oc.*')
 
- //            ->join('order_convey oc','t.order_id=oc.order_id')
 
- //            ->where('t.org_id',$this->orgId)
 
- //            ->where('t.del',0)
 
- //            ->where('t.create_yyyymmdd',date('Ymd'))
 
- //            ->where('t.work_type_mode',3)
 
- //            ->whereIn('t.todo_mode',[1,2])
 
- //            ->order('t.id desc')
 
- //            ->select();
 
- //        foreach ($todo as $k=>$v){
 
- //            $todo[$k]['status'] = '';
 
- //            if($v['todo_mode'] == 1){
 
- //                $todo[$k]['status'] = '待派发';
 
- //            }elseif ($v['todo_mode'] == 2){
 
- //                $todo[$k]['status'] = '已派发';
 
- //            }
 
- //            $todo[$k]['cate_name'] = Db::name('convey_cate')->where('id',$v['type'])->value('title');
 
- //            $todo[$k]['start_name'] = Db::name('address')->where('id',$v['start'])->value('title');
 
- //            $todo[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
 
- //        }
 
- //
 
- //        $list = [];
 
- //        foreach ($todo as $k=>$v){
 
- //            $list[$k][] = $v['cate_name'];
 
- //            $list[$k][] = $v['start_name'];
 
- //            $list[$k][] = date('H:i:s',strtotime($v['xq_time']));
 
- //            $list[$k][] = $v['status'];
 
- //            $list[$k][] = $v['user_name'];
 
- //        }
 
-         $map[] = ['o.del', '=', 0];
 
-         $map[] = ['o.org_id', '=', $this->orgId];
 
-         $map[] = ['o.work_type_mode', '=', 3];
 
-         $map[] = ['o.order_mode', 'in', [1, 4]];
 
-         $lists = db('orders')
 
-             ->alias('o')
 
-             ->join('order_convey oc', 'oc.order_id=o.id')
 
-             ->field('o.*,oc.type,oc.start,oc.end,oc.xq_time,oc.ywc_time,oc.device_id,oc.name,oc.phone,oc.priority')
 
-             ->where($map)
 
-             ->order(['o.order_mode' => 'asc', 'oc.xq_time' => 'desc'])
 
-             ->select();
 
-         $data = [];
 
-         foreach ($lists as $k => $v) {
 
-             $v = model('Orders')->formatOrder($v);
 
-             $v['bed_number'] = '';
 
-             $ocp = Db::name('order_convey_patient')
 
-                 ->where('order_id', $v['id'])
 
-                 ->find();
 
-             $v['bed_number'] = !empty($ocp)?$ocp['bed_number']:'';
 
-             $todo = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->where('t.order_id', $v['id'])
 
-                 ->join('user u', 'u.id = t.to_user_id')
 
-                 ->where('t.todo_mode', 'in', [1, 2, 3, 4])
 
-                 ->where('t.del', 0)
 
-                 ->field('u.real_name,t.create_time,t.confirm_time')
 
-                 ->order('t.id asc')
 
-                 ->select();
 
-             $users = [];
 
-             $confirmtime = '';
 
-             foreach ($todo as $kk => $vv) {
 
-                 $users[] = $vv['real_name'];
 
-                 if (!$confirmtime && $vv['confirm_time']) {
 
-                     $confirmtime = $vv['confirm_time'];
 
-                 }
 
-                 else {
 
-                     if ($confirmtime && $vv['confirm_time'] && $vv['confirm_time'] < $confirmtime) {
 
-                         $confirmtime = $vv['confirm_time'];
 
-                     }
 
-                 }
 
-             }
 
-             $v['real_names'] = $users? implode(',', $users):'';
 
-             $v['confirm_time'] = $confirmtime;
 
-             $last = strtotime($v['ywc_time']) - time();
 
-             $v['last_time'] = $last > 0 ? round($last / 60) : 0;
 
-             //是否有延时
 
-             $v['delay'] = 0; // 0=未延迟 1=延迟
 
-             $v['delay_diff'] = 0;
 
-             $v['delay_reason'] = '';
 
-             $delays = Db::name('order_delay')
 
-                 ->where('order_id', $v['id'])
 
-                 ->select();
 
-             $delays = $delays ? $delays : [];
 
-             foreach ($delays as $vv) {
 
-                 if ($vv['status'] == 0) {
 
-                     $v['delay'] = 1;
 
-                     $v['delay_reason'] = Db::name('delay_reason')->where('id',$vv['delay_reason_id'])->value('title');
 
-                     $vv['diff'] = time() - strtotime($vv['start_time']);
 
-                 }
 
-                 $v['delay_diff'] += $vv['diff'];
 
-             }
 
-             $v['delay_diff'] = round($v['delay_diff'] / 60);
 
-             if ($v['delay'] == 1) {
 
-                 $v['status'] = 3;
 
-             } else {
 
-                 if ($v['order_mode'] == 1) {
 
-                     $v['status'] = 1;
 
-                 } else {
 
-                     $v['status'] = 2;
 
-                 }
 
-             }
 
-             $convey = Db::name('convey_cate')
 
-                 ->alias('oc')
 
-                 ->join('time ot', 'ot.id = oc.time_id')
 
-                 ->where('oc.id', $v['type'])
 
-                 ->field('ot.*')
 
-                 ->find();
 
-             $createtime = strtotime($v['create_time']);
 
-             $curtime = time();
 
-             $ct = round(($curtime - $createtime) / 60);
 
-             if ($ct < $convey['yy_time']) {
 
-                 $ss = 0;
 
-             }
 
-             else {
 
-                 if ($ct >= $convey['yy_time'] && $ct < $convey['bz_time']) {
 
-                     $ss = 1;
 
-                 }
 
-                 else {
 
-                     if ($ct >= $convey['bz_time'] && $ct < $convey['jg_time']) {
 
-                         $ss = 2;
 
-                     }
 
-                     else {
 
-                         if ($ct >= $convey['jg_time'] && $ct < $convey['wjjg_time']) {
 
-                             $ss = 3;
 
-                         }
 
-                         else {
 
-                             $ss = 4;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             $v['ss'] = $ss;
 
-             $v['xtime'] = date('H:i', strtotime($v['xq_time']));
 
-             $v['stime'] = $v['send_time'] ? date('H:i', strtotime($v['send_time'])) : "";
 
-             $v['ctime'] = $v['confirm_time'] ? date('H:i', strtotime($v['confirm_time'])) : "";
 
-             $v['priorityName'] = isset(model('Orders')->priority[$v['priority']])?model('Orders')->priority[$v['priority']]:'';
 
- //            //只取进行中的
 
-             if(isset($v['status']) && $v['status'] == 2 && $v['ss'] >0){
 
-                 $data[] = [
 
-                     '<span style="color: yellow">'.$v['type_name'].'</span>',
 
-                     '<span style="color: yellow">'.$v['start_name'].'</span>',
 
-                     '<span style="color: yellow">'.$v['end_name'].'</span>',
 
-                     '<span style="color: yellow">进行中</span>',
 
-                     '<span style="color: yellow">'.$v['real_names'].'</span>',
 
-                 ];
 
-             }
 
-         }
 
-         HelpHander::success($data);
 
-     }
 
-     public function ysOrderWeek(){
 
- //        $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'),
 
- //        ];
 
-         $dlist = [
 
-             '02','04','06','08','10','12','14','16','18','20','22','24'
 
-         ];
 
-         $curDay = date('Y-m-d');
 
-         $list = $list1 = $date = [];
 
-         foreach ($dlist as $k=>$v){
 
-             if($k == 0){
 
-                 $s = $curDay.' 00:00:00';
 
-             }else{
 
-                 $s = $curDay.' '.$dlist[$k-1].':00:00';
 
-             }
 
-             $e = $curDay.' '.$v.':00:00';
 
-             $count = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('del',0)
 
-                 ->where('work_type_mode',3)
 
-                 ->where('create_time','>=',$s)
 
-                 ->where('create_time','<',$e)
 
-                 ->count();
 
-             $count1 = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('del',0)
 
-                 ->where('work_type_mode',3)
 
-                 ->where('todo_mode',3)
 
-                 ->where('create_time','>=',$s)
 
-                 ->where('create_time','<',$e)
 
-                 ->count();
 
-             $list[$k]= $count;
 
-             $list1[$k] = $count1;
 
-         }
 
-         $data = [
 
-             'title'=>$dlist,
 
-             'list'=>[
 
-                 'list1'=>$list1,
 
-                 'list2'=>$list,
 
-             ]
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     public function conveyCateData(){
 
-         $date = date('Ymd');
 
-         $edate = date("Ymd",strtotime("-1 months",strtotime($date)));
 
-         $cate = Db::name('convey_cate')
 
-             ->field('id,title')
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('org_id',$this->orgId)
 
-             ->select();
 
-         foreach ($cate as $k=>$v){
 
-             $cate[$k]['count'] = Db::name('orders')
 
-                 ->alias('o')
 
-                 ->join('order_convey oc','oc.order_id=o.id')
 
-                 ->whereIn('o.order_mode',[1,4,5,6])
 
-                 ->where('o.del',0)
 
-                 ->where('o.work_type_mode',3)
 
-                 ->where('o.create_yyyymmdd',date('Ymd'))
 
-                 ->where('oc.type',$v['id'])
 
-                 ->count();
 
-             $nums2 = Db::name('orders')
 
-                 ->alias('o')
 
-                 ->join('order_convey oc','oc.order_id=o.id')
 
-                 ->whereIn('o.order_mode',[1,4,5,6])
 
-                 ->where('o.del',0)
 
-                 ->where('o.work_type_mode',3)
 
-                 ->where('o.create_yyyymmdd','<=',$date)
 
-                 ->where('o.create_yyyymmdd','>',$edate)
 
-                 ->where('oc.type',$v['id'])
 
-                 ->count();
 
-             $cate[$k]['count1'] = round($nums2/30,1);;
 
-         }
 
-         $lists =array_slice(list_sort_by($cate,'count','desc'),0,6) ;
 
-         $data1 = array_column($lists,'title');
 
-         $data2 = array_column($lists,'count');
 
-         $data3 = array_column($lists,'count1');
 
-         $data = [
 
-             'title'=>$data1,
 
-             'list'=>$data2,
 
-             'list1'=>$data3,
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
-     public function ysTypeTask(){
 
-         $type = input('type',0); //3=紧急 1=超时 2=常规
 
-         $fontColor = input('fontColor','#fff'); //字体颜色 //默认白色
 
-         $jxzColor = input('jxzColor','#49E9A0'); //进行中颜色
 
-         if(!in_array($type,[1,2,3])){
 
-             HelpHander::error('参数错误');
 
-         }
 
-         $ctlist = [];
 
-         if(in_array($type,[2,3])){
 
-             $order = Db::name('orders')
 
-                 ->alias('o')
 
-                 ->field('o.*,oc.type,oc.start,oc.end,oc.xq_time,oc.ywc_time,oc.device_id,oc.name,oc.phone,oc.priority')
 
-                 ->join('order_convey oc','oc.order_id=o.id')
 
-                 ->where('o.create_yyyymmdd',date('Ymd'))
 
-                 ->where('o.work_type_mode',3)
 
-                 ->where('o.org_id',$this->orgId)
 
-                 ->where('o.del',0)
 
-                 ->where('oc.priority',$type)
 
-                 ->whereIn('o.order_mode',[1,4])
 
-                 ->order('oc.xq_time desc')
 
-                 ->select();
 
-             $num = $num1 =0;
 
-             foreach ($order as $k=>$v){
 
-                 $order[$k]['xq_time'] = date('H:i',strtotime($v['xq_time']));
 
-                 $order[$k]['start_name'] = Db::name('address')->where('id',$v['start'])->value('title');
 
-                 $order[$k]['end_name'] = Db::name('address')->where('id',$v['end'])->value('title');
 
-                 $order[$k]['type_name'] = Db::name('convey_cate')->where('id',$v['type'])->value('title');
 
-                 $todo = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->field('u.real_name,t.create_time,t.confirm_time')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.order_id',$v['id'])
 
-                     ->order('t.id asc')
 
-                     ->select();
 
-                 $users = [];
 
-                 $confirmTime = '';
 
-                 foreach ($todo as $kk=>$vv){
 
-                     $users[] = $vv['real_name'];
 
-                     if(!$confirmTime && $vv['confirm_time']){
 
-                         $confirmTime = $vv['confirm_time'];
 
-                     }else if($confirmTime && $vv['confirm_time'] && $vv['confirm_time'] < $confirmTime){
 
-                         $confirmTime = $vv['confirm_time'];
 
-                     }
 
-                 }
 
-                 $send_time = $todo?$todo[0]['create_time']:'';
 
-                 $order[$k]['real_names'] = implode(',',$users);
 
-                 $order[$k]['send_time'] = !empty($send_time)?date('H:i',strtotime($send_time)):'';
 
-                 $order[$k]['confirm_time'] = !empty($confirmTime)?date('H:i',strtotime($confirmTime)):'';
 
-                 $convey = Db::name('convey_cate')
 
-                     ->alias('oc')
 
-                     ->join('time ot', 'ot.id = oc.time_id')
 
-                     ->where('oc.id', $v['type'])
 
-                     ->field('ot.*')
 
-                     ->find();
 
-                 $createtime = strtotime($v['create_time']);
 
-                 $curtime = time();
 
-                 $ct = round(($curtime - $createtime) / 60);
 
-                 if ($ct < $convey['yy_time']) {
 
-                     $ss = 0;
 
-                 }
 
-                 else {
 
-                     if ($ct >= $convey['yy_time'] && $ct < $convey['bz_time']) {
 
-                         $ss = 1;
 
-                     }
 
-                     else {
 
-                         if ($ct >= $convey['bz_time'] && $ct < $convey['jg_time']) {
 
-                             $ss = 2;
 
-                         }
 
-                         else {
 
-                             if ($ct >= $convey['jg_time'] && $ct < $convey['wjjg_time']) {
 
-                                 $ss = 3;
 
-                             }
 
-                             else {
 
-                                 $ss = 4;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 if($ss != 4){
 
-                     if($v['order_mode'] == 1){
 
-                         $num +=1;
 
-                     }
 
-                     if($v['order_mode'] == 4){
 
-                         $num1 +=1;
 
-                     }
 
-                 $ctlist[] = $order[$k];
 
-                 }
 
-             }
 
-         }else{
 
-             $order = Db::name('orders')
 
-                 ->alias('o')
 
-                 ->field('o.*,oc.type,oc.start,oc.end,oc.xq_time,oc.ywc_time,oc.device_id,oc.name,oc.phone,oc.priority')
 
-                 ->join('order_convey oc','oc.order_id=o.id')
 
-                 ->where('o.create_yyyymmdd',date('Ymd'))
 
-                 ->where('o.work_type_mode',3)
 
-                 ->where('o.org_id',$this->orgId)
 
-                 ->where('o.del',0)
 
-                 ->whereIn('o.order_mode',[1,4])
 
-                 ->order('oc.xq_time desc')
 
-                 ->select();
 
-             $num = $num1 =0;
 
-             foreach ($order as $k=>$v){
 
-                 $order[$k]['xq_time'] = date('H:i',strtotime($v['xq_time']));
 
-                 $order[$k]['start_name'] = Db::name('address')->where('id',$v['start'])->value('title');
 
-                 $order[$k]['end_name'] = Db::name('address')->where('id',$v['end'])->value('title');
 
-                 $order[$k]['type_name'] = Db::name('convey_cate')->where('id',$v['type'])->value('title');
 
-                 $todo = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->field('u.real_name,t.create_time,t.confirm_time')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.order_id',$v['id'])
 
-                     ->order('t.id asc')
 
-                     ->select();
 
-                 $users = [];
 
-                 $confirmTime = '';
 
-                 foreach ($todo as $kk=>$vv){
 
-                     $users[] = $vv['real_name'];
 
-                     if(!$confirmTime && $vv['confirm_time']){
 
-                         $confirmTime = $vv['confirm_time'];
 
-                     }else if($confirmTime && $vv['confirm_time'] && $vv['confirm_time'] < $confirmTime){
 
-                         $confirmTime = $vv['confirm_time'];
 
-                     }
 
-                 }
 
-                 $send_time = $todo?$todo[0]['create_time']:'';
 
-                 $order[$k]['real_names'] = implode(',',$users);
 
-                 $order[$k]['send_time'] = !empty($send_time)?date('H:i',strtotime($send_time)):'';
 
-                 $order[$k]['confirm_time'] = !empty($confirmTime)?date('H:i',strtotime($confirmTime)):'';
 
-                 $convey = Db::name('convey_cate')
 
-                     ->alias('oc')
 
-                     ->join('time ot', 'ot.id = oc.time_id')
 
-                     ->where('oc.id', $v['type'])
 
-                     ->field('ot.*')
 
-                     ->find();
 
-                 $createtime = strtotime($v['create_time']);
 
-                 $curtime = time();
 
-                 $ct = round(($curtime - $createtime) / 60);
 
-                 if ($ct < $convey['yy_time']) {
 
-                     $ss = 0;
 
-                 }
 
-                 else {
 
-                     if ($ct >= $convey['yy_time'] && $ct < $convey['bz_time']) {
 
-                         $ss = 1;
 
-                     }
 
-                     else {
 
-                         if ($ct >= $convey['bz_time'] && $ct < $convey['jg_time']) {
 
-                             $ss = 2;
 
-                         }
 
-                         else {
 
-                             if ($ct >= $convey['jg_time'] && $ct < $convey['wjjg_time']) {
 
-                                 $ss = 3;
 
-                             }
 
-                             else {
 
-                                 $ss = 4;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 if($ss == 4){
 
-                     if($v['order_mode'] == 1){
 
-                         $num +=1;
 
-                     }
 
-                     if($v['order_mode'] == 4){
 
-                         $num1 +=1;
 
-                     }
 
-                     $ctlist[] = $order[$k];
 
-                 }
 
-             }
 
-         }
 
-         $list = [];
 
-         foreach ($ctlist as $k=>$v) {
 
-             if($v['order_mode'] == 1){
 
-                 $list[$k][] = '新任务';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['type_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['start_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['end_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['xq_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['real_names'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['send_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$fontColor.'">'.$v['confirm_time'].'</span>';
 
-             } elseif($v['order_mode'] == 5 && $v['confirm_time']){
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">已派工</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['type_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['start_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['end_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['xq_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['real_names'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['send_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:#0FC2DD;">'.$v['confirm_time'].'</span>';
 
-             }else{
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">进行中</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['type_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['start_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['end_name'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['xq_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['real_names'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['send_time'].'</span>';
 
-                 $list[$k][] = '<span style="color:'.$jxzColor.'">'.$v['confirm_time'].'</span>';
 
-             }
 
-         }
 
-         HelpHander::success(['list'=>$list,'num'=>$num,'num1'=>$num1]);
 
-     }
 
-     public function ysTypeUserAll(){
 
-         $dmColor = input('dmColor','#FFE400'); //待命运送员颜色 默认黄色
 
-         $lists = model('WorkTypeMode')->getRolesUserApp(3,$this->orgId,1);
 
-         $curday = date('Ymd');
 
-         $userIds = Db::name('todo')
 
-             ->alias('t')
 
-             ->field('t.to_user_id')
 
-             ->join('user u','u.id=t.to_user_id')
 
-             ->where('t.org_id',$this->orgId)
 
-             ->whereIn('t.todo_mode',[1,2])
 
-             ->where('t.del',0)
 
-             ->where('t.work_type_mode',3)
 
- //            ->where('t.create_yyyymmdd',$curday)  //去掉时间限制
 
-             ->where('u.work',1)
 
-             ->where('u.enable',1)
 
-             ->where('u.del',0)
 
-             ->group('t.to_user_id')
 
-             ->column('t.to_user_id');
 
- //        $users = $users?$users:[];
 
- //        $userIds = [];
 
- //        foreach ($users as $k=>$v){
 
- //            $userIds[] = $v['to_user_id'];
 
- //        }
 
-         $nlists = $nlists2 = [];
 
-         foreach ($lists as $k=>$v){
 
-             if(!in_array($v['id'],$userIds)){
 
-                 $nlists[] = $v;
 
-             }
 
-         }
 
-         $slist = $slist2 = [];
 
-         foreach ($nlists as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('to_user_id',$v['id'])
 
-                 ->whereIn('todo_mode',[1,2,3])
 
-                 ->where('del',0)
 
-                 ->where('create_yyyymmdd',$curday)
 
-                 ->count();
 
-             $addr = Db::name('convey_plan_record')
 
-                 ->alias('cpr')
 
-                 ->join('address a','a.id = cpr.addr_id')
 
-                 ->where('cpr.user_id',$v['id'])
 
-                 ->where('cpr.create_yyyymmdd',$curday)
 
-                 ->order('cpr.id desc')
 
-                 ->value('a.title');
 
-             if(!$addr){
 
-                 $addr = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->join('orders o','o.id=t.order_id')
 
-                     ->join('order_convey oc','oc.order_id=o.id')
 
-                     ->join('address a','a.id=oc.start')
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->where('t.org_id',$this->orgId)
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.create_yyyymmdd',$curday)
 
-                     ->order('t.id desc')
 
-                     ->value('a.title');
 
-             }
 
-             $slist[$k][] = '<text style="color:'.$dmColor.'">'.$v['real_name'].'</text>';
 
-             $slist[$k][] = '<text style="color: '.$dmColor.'">'.$count.'</text>';
 
-             $slist[$k][] = '<text style="color: '.$dmColor.'">'.$addr.'</text>';
 
-         }
 
-         foreach ($lists as $k=>$v){
 
-             if(in_array($v['id'],$userIds)){
 
-                 $nlists2[] = $v;
 
-             }
 
-         }
 
-         foreach ($nlists2 as $k=>$v){
 
-             $count = Db::name('todo')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('to_user_id',$v['id'])
 
-                 ->whereIn('todo_mode',[1,2,3])
 
-                 ->where('del',0)
 
-                 ->where('create_yyyymmdd',$curday)
 
-                 ->count();
 
-             $addr = Db::name('convey_plan_record')
 
-                 ->alias('cpr')
 
-                 ->join('address a','a.id = cpr.addr_id')
 
-                 ->where('cpr.create_yyyymmdd',$curday)
 
-                 ->where('cpr.user_id',$v['id'])
 
-                 ->order('cpr.id desc')
 
-                 ->value('a.title');
 
-             if(!$addr){
 
-                 $addr = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->join('orders o','o.id=t.order_id')
 
-                     ->join('order_convey oc','oc.order_id=o.id')
 
-                     ->join('address a','a.id=oc.start')
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->where('t.org_id',$this->orgId)
 
-                     ->where('t.to_user_id',$v['id'])
 
-                     ->whereIn('t.todo_mode',[1,2,3])
 
-                     ->where('t.del',0)
 
-                     ->where('t.create_yyyymmdd',$curday)
 
-                     ->order('t.id desc')
 
-                     ->value('a.title');
 
-             }
 
-             $slist2[$k][] = '<text style="color: #11E799!important;">'.$v['real_name'].'</text>';
 
-             $slist2[$k][] = '<text style="color: #11E799!important;">'.$count.'</text>';
 
-             $slist2[$k][] = '<text style="color: #11E799!important;">'.$addr.'</text>';
 
-         }
 
-         $data = [
 
-             'count'=>count($slist2),
 
-             'count1'=>count($slist),
 
-             'list'=>array_merge($slist2,$slist),
 
-         ];
 
-         HelpHander::success($data);
 
-     }
 
- }
 
 
  |