1, 'name' => '报修', 'finish' => 0, 'total' => 0, 'bl' => 0], ['id' => 2, 'name' => '保洁', 'finish' => 0, 'total' => 0, 'bl' => 0], ['id' => 3, 'name' => '运送', 'finish' => 0, 'total' => 0, 'bl' => 0], ['id' => 4, 'name' => '应急', 'finish' => 0, 'total' => 0, 'bl' => 0] ]; $curTime = date('Ymd'); $total = 0; $finish = 0; foreach ($lists as $k=>$v){ $t = Db::name('orders') ->where('del',0) ->where('work_type_mode',$v['id']) ->where('create_yyyymmdd',$curTime) ->where('org_id',$this->orgId) ->count(); $f = Db::name('orders') ->where('del',0) ->where('work_type_mode',$v['id']) ->where('order_mode','in',[5,6]) ->where('create_yyyymmdd',$curTime) ->where('org_id',$this->orgId) ->count(); $total += $t; $finish += $f; $lists[$k]['finish'] = $f; $lists[$k]['total'] = $t; $lists[$k]['bl'] = $t>0?round($f/$t,2)*100:0; } $bl = $total > 0?(round($finish/$total,3)*100):0; $data = [ 'bl' => $bl.'%', 'list' => $lists ]; HelpHander::success($data); } // 任务数据统计 public function orderCount(){ $mode = input('mode/d',1); $type = input('type/d',1); if(!in_array($type,[1,2,3])||!in_array($mode,[1,2,3,4])){ HelpHander::error('参数错误'); } $date = []; $curDay = date('Y-m-d'); if($type == 1){ // 日统计 $date[] = '03'; $date[] = '06'; $date[] = '09'; $date[] = '12'; $date[] = '15'; $date[] = '18'; $date[] = '21'; $date[] = '24'; }else if($type == 2){ // 周统计 $ms = Time::week(); $start = $ms[0]; $end = $ms[1] + 1; $date[] = date('Y-m-d',$start); $i = 1; while (($start + $i*24*60*60) < $end){ $date[] = date('Y-m-d',$start + $i*24*60*60); $i++; } }else{ // 月统计 $ms = Time::month(); $start = $ms[0]; $end = $ms[1] + 1; $i = 1; while (($start + $i*24*60*60) < $end){ $date[] = date('Y-m-d',$start + $i*24*60*60); $i++; } } $d1 = []; $d2 = []; $d = []; foreach ($date as $k=>$v){ $map = []; $map[] = ['org_id','=',$this->orgId]; $map[] = ['work_type_mode','=',$mode]; $map[] = ['del','=',0]; if($type == 1){ // 日统计 if($k == 0){ $s = $curDay.' 00:00:00'; }else{ $s = $curDay.' '.$date[$k-1].':00:00'; } $e = $curDay.' '.$v.':00:00'; $map[] = ['create_time','egt',$s]; $map[] = ['create_time','lt',$e]; $d[] = (int)$v; }else{ $map[] = ['create_yyyymmdd','=',date('Ymd',strtotime($v))]; $d[] = date('m-d',strtotime($v)); } $order = Db::name('orders')->where($map)->count(); $todo = Db::name('todo')->where($map)->count(); $d1[] = $todo; $d2[] = $order; } HelpHander::success(['d'=>$d,'d1'=>$d1,'d2'=>$d2]); } // 热点科室排名 public function hotDep(){ $type = input('type/d',1); if(!in_array($type,[1,2])){ HelpHander::error('参数错误'); } if($type == 1){ // 运送 $map[] = ['work_type_mode','=',3]; $map[] = ['org_id','=',$this->orgId]; $map[] = ['del','=',0]; $lists = Db::name('orders') ->where($map) ->field('count(*) as count,dep_id') ->group('dep_id') ->distinct(true) ->order('count desc') ->limit(10) ->select(); }else{ // 陪护 $map[] = ['org_id','=',$this->orgId]; $lists = Db::name('ph_orders') ->where($map) ->field('count(*) as count,dep_id') ->group('dep_id') ->distinct(true) ->order('count desc') ->limit(10) ->select(); } $data = []; $host = config("app.app_host"); foreach ($lists as $k=>$v){ if($k == 0){ $top = ''; }else if($k == 1){ $top = ''; }else if($k == 2){ $top = ''; }else{ $top = 'TOP'.($k+1); } $depName = Db::name('dep')->where('id',$v['dep_id'])->value('title'); $data[] = [$top,$depName?$depName:'']; } HelpHander::success($data); } // 耗材使用排名 public function hotMate(){ $map[] = ['tm.org_id','=',$this->orgId]; $lists = Db::name('todo_mate_item') ->alias('tmi') ->join('todo_mate tm','tm.id = tmi.todo_mate_id') ->where($map) ->field('sum(total) as total,items_id') ->group('items_id') ->distinct(true) ->order('total desc') ->limit(10) ->select(); $data = []; $host = config("app.app_host"); foreach ($lists as $k=>$v){ if($k == 0){ $top = ''; }else if($k == 1){ $top = ''; }else if($k == 2){ $top = ''; }else{ $top = 'TOP'.($k+1); } $name = Db::name('mate_goods')->where('id',$v['items_id'])->value('title'); $data[] = [$top,$name?$name:'']; } HelpHander::success($data); } //任务数据总览 public function taskList(){ $mode = input('mode/d',1); if(!in_array($mode,[1,2,3,4,5])){ HelpHander::error('参数错误'); } $data = []; // $header = ['状态', '类型', '始发地', '目的地', '需求时间', '执行人', '派工时间', '接收时间']; $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[] = [$v['create_time'],$dep,$type?$type:'',$v['content'],$status]; }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[] = [$convey['cate_title'],$start,$end,$xq,$send,$confirm,$status,$un]; }else{ // 保洁,应急 $data[] = [$v['create_time'],$dep,$v['content'],$status]; } } } HelpHander::success(['data'=>$data,'header'=>$header]); } // 任务数据统计 public function orderCountDate(){ $type = input('type/d',1); if(!in_array($type,[1,2,3])){ HelpHander::error('参数错误'); } $y = []; $curDay = date('Y-m-d'); $month = []; if($type == 1){ // 年统计 $date = []; for ($i=11;$i>=0;$i--){ $month[11-$i] = date('Ym',strtotime('-'.$i.'month')); $y[] = date('m',strtotime('-'.$i.'month')); } }else if($type == 2){ // 月统计 $ms = Time::month(); $start = $ms[0]; $end = $ms[1] + 1; $i = 1; while (($start + $i*24*60*60) < $end){ $date[] = date('Y-m-d',$start + $i*24*60*60); $i++; } }else{ // 日统计 $date[] = '03'; $date[] = '06'; $date[] = '09'; $date[] = '12'; $date[] = '15'; $date[] = '18'; $date[] = '21'; $date[] = '24'; } $d1 = []; $d2 = []; $d = []; if($type != 1 ){ foreach ($date as $k=>$v){ $map = []; $map[] = ['org_id','=',$this->orgId]; $map[] = ['del','=',0]; if($type == 3){ // 日统计 if($k == 0){ $s = $curDay.' 00:00:00'; }else{ $s = $curDay.' '.$date[$k-1].':00:00'; } $e = $curDay.' '.$v.':00:00'; $map[] = ['create_time','egt',$s]; $map[] = ['create_time','lt',$e]; $d[] = (int)$v; }else if($type == 2){ $map[] = ['create_yyyymmdd','=',date('Ymd',strtotime($v))]; $d[] = date('m-d',strtotime($v)); } $order = Db::name('orders')->where($map)->count(); $todo = Db::name('todo')->where($map)->count(); $d1[] = $todo; $d2[] = $order; } }else{ foreach ($month as $k=>$v){ $map = []; $map[] = ['org_id','=',$this->orgId]; $map[] = ['del','=',0]; $map[] = ['create_yyyymm','=',$v]; $order = Db::name('orders')->where($map)->count(); $todo = Db::name('todo')->where($map)->count(); $d1[] = $todo; $d2[] = $order; } foreach ($y as $k=>$v){ if($v < 10){ $n = substr($v,1,1); }else{ $n = $v; } $y[$k] = $n; } $d = $y; } HelpHander::success(['d'=>$d,'d1'=>$d1,'d2'=>$d2]); } //任务数据总览 public function taskList2(){ $mode = input('mode/d',1); if(!in_array($mode,[1,2,3,4,5])){ HelpHander::error('参数错误'); } $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(30) ->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):''; // } $unames = Db::name('ph_todo') ->alias('t') ->join('worker w','t.worker_id = w.id') ->join('user u','u.id = w.user_id') ->where('t.order_id',$v['id']) // ->where('t.status',1) ->column('real_name'); $users = $unames?implode(',',$unames):''; $data[$k]['status'] = $v['status']; $data[$k]['sn'] = $v['sn']; $data[$k]['cate'] = $cate; $data[$k]['users'] = $users; $data[$k]['create_time'] = $v['create_time']; // $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(30) ->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'); 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[$k]['order_mode'] = $v['order_mode']; $data[$k]['dep'] = $dep; $data[$k]['type'] = $type?$type:''; $data[$k]['content'] = $v['content']; $data[$k]['create_time'] = $v['create_time']; // $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[$k]['order_mode'] = $v['order_mode']; $data[$k]['cate_title'] = $convey['cate_title']; $data[$k]['start'] = $start; $data[$k]['end'] = $end; $data[$k]['xq'] = $xq; $data[$k]['un'] = $un; $data[$k]['send'] = $send; $data[$k]['confirm'] = $confirm; // $data[] = [$status,$convey['cate_title'],$start,$end,$xq,$un,$send,$confirm]; }else{ // 保洁,应急 // $data[] = [$status,$dep,$v['content'],$v['create_time']]; $data[$k]['order_mode'] = $v['order_mode']; $data[$k]['dep'] = $dep; $data[$k]['content'] = $v['content']; $data[$k]['create_time'] = $v['create_time']; } } } $slist = []; if($mode == 5){ foreach ($data as $k=>$v){ if($v['status'] == 0){ $slist[$k][] = '新订单'; $slist[$k][] = ''.$v['sn'].''; $slist[$k][] = ''.$v['cate'].''; $slist[$k][] = ''.$v['users'].''; $slist[$k][] = ''.$v['create_time'].''; }else if($v['status'] == 1){ $slist[$k][] = '进行中'; $slist[$k][] = ''.$v['sn'].''; $slist[$k][] = ''.$v['cate'].''; $slist[$k][] = ''.$v['users'].''; $slist[$k][] = ''.$v['create_time'].''; }else{ $status = ''; if($v['status'] == 2){ $status = '已完成'; }elseif($v['status'] == 3){ $status = '已作废'; }elseif($v['status'] == 4){ $status = '已结算'; } $slist[$k][] = $status; $slist[$k][] = $v['sn']; $slist[$k][] = $v['cate']; $slist[$k][] = $v['users']; $slist[$k][] = $v['create_time']; } } }elseif ($mode == 1){ foreach ($data as $k=>$v){ $status = Db::name('order_mode')->where('id',$v['order_mode'])->value('out_content'); if($v['order_mode'] == 1){ $slist[$k][] = '新订单'; $slist[$k][] = ''.$v['dep'].''; $slist[$k][] = ''.$v['type'].''; $slist[$k][] = ''.$v['content'].''; $slist[$k][] = ''.$v['create_time'].''; }else if($v['order_mode'] == 4){ $slist[$k][] = '进行中'; $slist[$k][] = ''.$v['dep'].''; $slist[$k][] = ''.$v['type'].''; $slist[$k][] = ''.$v['content'].''; $slist[$k][] = ''.$v['create_time'].''; }else{ $slist[$k][] = $status; $slist[$k][] = $v['dep']; $slist[$k][] = $v['type']; $slist[$k][] = $v['content']; $slist[$k][] = $v['create_time']; } } }elseif ($mode == 2 || $mode == 4){ foreach ($data as $k=>$v){ $status = Db::name('order_mode')->where('id',$v['order_mode'])->value('out_content'); if($v['order_mode'] == 1){ $slist[$k][] = '新订单'; $slist[$k][] = ''.$v['dep'].''; $slist[$k][] = ''.$v['content'].''; $slist[$k][] = ''.$v['create_time'].''; }else if($v['order_mode'] == 4){ $slist[$k][] = '进行中'; $slist[$k][] = ''.$v['dep'].''; $slist[$k][] = ''.$v['content'].''; $slist[$k][] = ''.$v['create_time'].''; }else{ $slist[$k][] = $status; $slist[$k][] = $v['dep']; $slist[$k][] = $v['content']; $slist[$k][] = $v['create_time']; } } }elseif ($mode == 3){ foreach ($data as $k=>$v){ $status = Db::name('order_mode')->where('id',$v['order_mode'])->value('out_content'); if($v['order_mode'] == 1){ $slist[$k][] = '新订单'; $slist[$k][] = ''.$v['cate_title'].''; $slist[$k][] = ''.$v['start'].''; $slist[$k][] = ''.$v['end'].''; $slist[$k][] = ''.$v['xq'].''; $slist[$k][] = ''.$v['un'].''; $slist[$k][] = ''.$v['send'].''; $slist[$k][] = ''.$v['confirm'].''; }else if($v['order_mode'] == 4){ $slist[$k][] = '进行中'; $slist[$k][] = ''.$v['cate_title'].''; $slist[$k][] = ''.$v['start'].''; $slist[$k][] = ''.$v['end'].''; $slist[$k][] = ''.$v['xq'].''; $slist[$k][] = ''.$v['un'].''; $slist[$k][] = ''.$v['send'].''; $slist[$k][] = ''.$v['confirm'].''; }else{ $slist[$k][] = $status; $slist[$k][] = $v['cate_title']; $slist[$k][] = $v['start']; $slist[$k][] = $v['end']; $slist[$k][] = $v['xq']; $slist[$k][] = $v['un']; $slist[$k][] = $v['send']; $slist[$k][] = $v['confirm']; } } } HelpHander::success(['data'=>$slist,'header'=>$header]); } }