123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- <?php
- namespace app\api\controller\screen;
- use app\api\controller\screen\Index;
- use app\hander\HelpHander;
- use think\Db;
- use think\helper\Time;
- class Todo extends Index
- {
- //各类型当天工单总数
- public function cateTodoCount(){
- //保洁
- $bjCount = Db::name('todo')
- ->where('del',0)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',2)
- ->count();
- $bjCount2 = Db::name('todo')
- ->where('del',0)
- ->where('todo_mode',3)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',2)
- ->count();
- //报修
- $bxCount = Db::name('todo')
- ->where('del',0)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',1)
- ->count();
- $bxCount2 = Db::name('todo')
- ->where('del',0)
- ->where('todo_mode',3)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',1)
- ->count();
- //隐患
- $yhCount = Db::name('todo')
- ->where('del',0)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',4)
- ->count();
- $yhCount2 = Db::name('todo')
- ->where('del',0)
- ->where('todo_mode',3)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',4)
- ->count();
- //运送
- $ysCount = Db::name('todo')
- ->where('del',0)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',3)
- ->count();
- $ysCount2 = Db::name('todo')
- ->where('del',0)
- ->where('todo_mode',3)
- ->where('create_yyyymmdd',date('Ymd'))
- ->where('work_type_mode',3)
- ->count();
- //陪护
- $phCount = Db::name('ph_todo')
- ->where('create_time','>=',date('Y-m-d').' 00:00:00')
- ->where('create_time','<=',date('Y-m-d').' 23:59:59')
- ->count();
- $phCount2 = Db::name('ph_todo')
- ->where('create_time','>=',date('Y-m-d').' 00:00:00')
- ->where('create_time','<=',date('Y-m-d').' 23:59:59')
- ->where('status',2)
- ->count();
- $data = [
- 'bj'=>$bjCount.'/'.$bjCount2,
- 'bx'=>$bxCount.'/'.$bxCount2,
- 'yh'=>$yhCount.'/'.$yhCount2,
- 'ys'=>$ysCount.'/'.$ysCount2,
- 'ph'=>$phCount.'/'.$phCount2,
- ];
- HelpHander::success($data);
- }
- //任务数据总览
- public function taskList(){
- $mode = input('mode/d',1);
- if(!in_array($mode,[1,2,3,4,5])){
- HelpHander::error('参数错误');
- }
- $data = [];
- $header = ['状态', '任务类型', '始发地', '目的地', '需求时间', '执行人', '接单时间', '完成时间'];
- if($mode == 5){
- $header = ['状态', '开始时间', '结束时间', '工作天数', '创建时间'];
- $todo = Db::name('ph_todo')
- ->where('org_id',$this->orgId)
- // ->where('status','in',[1,2])
- ->order('id desc')
- ->limit(30)
- ->select();
- foreach ($todo as $k=>$v){
- $data[$k]['status'] = $v['status'];
- $data[$k]['start'] = date('H:i',strtotime($v['start']));
- $data[$k]['end'] = date('H:i',strtotime($v['end']));
- $data[$k]['day'] = $v['day'];
- $data[$k]['create_time'] = date('H:i',strtotime($v['create_time']));
- }
- }else{
- if($mode == 1){
- $header = ['状态', '执行人', '报修事项', '内容', '接单时间','完成时间'];
- }else if($mode == 2||$mode == 4){
- $header = ['状态', '执行人', '内容', '接单时间','完成时间'];
- }
- $todo = Db::name('todo')
- ->where('org_id',$this->orgId)
- ->where('work_type_mode',$mode)
- ->where('del',0)
- ->order('id desc')
- ->limit(30)
- ->field('id,order_id,to_user_id,todo_mode,create_time,confirm_time,todo_content,done_time')
- ->select();
- foreach ($todo as $k=>$v){
- $userName = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
- if($mode == 1){ // 报修
- $type = Db::name('order_repair')
- ->alias('or')
- ->leftJoin('order_type ot','ot.id = or.type_id')
- ->where('or.order_id',$v['order_id'])
- ->value('title');
- $data[$k]['todo_mode'] = $v['todo_mode'];
- $data[$k]['user_name'] = $userName?$userName:'';
- $data[$k]['type'] = $type?$type:'';
- $data[$k]['content'] = $v['todo_content'];
- $data[$k]['confirm_time'] = $v['confirm_time']?date('H:i',strtotime($v['confirm_time'])):'';
- $data[$k]['done_time'] = $v['done_time']?date('H:i',strtotime($v['done_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['order_id'])
- ->field('oc.*,cc.title as cate_title')
- ->find();
- $userName = Db::name('user')->where('id',$v['to_user_id'])->value('real_name');
- $start = Db::name('address')->where('id',$convey['start'])->value('title');
- $end = Db::name('address')->where('id',$convey['end'])->value('title');
- $data[$k]['todo_mode'] = $v['todo_mode'];
- $data[$k]['type'] = $convey?$convey['cate_title']:'';
- $data[$k]['start'] = $start?$start:'';
- $data[$k]['end'] = $end?$end:'';
- $data[$k]['xq_time'] = $convey?date('H:i',strtotime($convey['xq_time'])):'';
- $data[$k]['user_name'] = $userName?$userName:'';
- $data[$k]['confirm_time'] = $v['confirm_time']?date('H:i',strtotime($v['confirm_time'])):'';
- $data[$k]['done_time'] = $v['done_time']?date('H:i',strtotime($v['done_time'])):'';
- }else{ // 保洁,应急
- $data[$k]['todo_mode'] = $v['todo_mode'];
- $data[$k]['user_name'] = $userName?$userName:'';
- $data[$k]['content'] = $v['todo_content'];
- $data[$k]['confirm_time'] = $v['confirm_time']?date('H:i',strtotime($v['confirm_time'])):'';
- $data[$k]['done_time'] = $v['done_time']?date('H:i',strtotime($v['done_time'])):'';
- }
- }
- }
- $lists = [];
- if($mode == 1){
- foreach ($data as $k=>$v){
- $status = Db::name('todo_mode')->where('id',$v['todo_mode'])->value('out_content');
- if($v['todo_mode'] == 1){
- $lists[$k][] = '<span style="color:#FFDA0A;">新订单</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['type'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['content'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['done_time'].'</span>';
- }else if($v['todo_mode'] == 2){
- $lists[$k][] = '<span style="color:#0FC2DD;">进行中</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['type'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['content'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['done_time'].'</span>';
- }else{
- $lists[$k][] = $status;
- $lists[$k][] = $v['user_name'];
- $lists[$k][] = $v['type'];
- $lists[$k][] = $v['content'];
- $lists[$k][] = $v['confirm_time'];
- $lists[$k][] = $v['done_time'];
- }
- }
- }else if($mode == 2 || $mode == 4){
- foreach ($data as $k=>$v){
- $status = Db::name('todo_mode')->where('id',$v['todo_mode'])->value('out_content');
- if($v['todo_mode'] == 1){
- $lists[$k][] = '<span style="color:#FFDA0A;">新订单</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['content'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['done_time'].'</span>';
- }else if($v['todo_mode'] == 2){
- $lists[$k][] = '<span style="color:#0FC2DD;">进行中</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['content'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['done_time'].'</span>';
- }else{
- $lists[$k][] = $status;
- $lists[$k][] = $v['user_name'];
- $lists[$k][] = $v['content'];
- $lists[$k][] = $v['confirm_time'];
- $lists[$k][] = $v['done_time'];
- }
- }
- }else if($mode == 3){
- foreach ($data as $k=>$v){
- $status = Db::name('todo_mode')->where('id',$v['todo_mode'])->value('out_content');
- if($v['todo_mode'] == 1){
- $lists[$k][] = '<span style="color:#FFDA0A;">新订单</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['type'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['start'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['end'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['xq_time'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#FFDA0A;">'.$v['done_time'].'</span>';
- }elseif($v['todo_mode'] == 2){
- $lists[$k][] = '<span style="color:#0FC2DD;">进行中</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['type'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['start'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['end'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['xq_time'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['user_name'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['confirm_time'].'</span>';
- $lists[$k][] = '<span style="color:#0FC2DD;">'.$v['done_time'].'</span>';
- }else{
- $lists[$k][] = $status;
- $lists[$k][] = $v['type'];
- $lists[$k][] = $v['start'];
- $lists[$k][] = $v['end'];
- $lists[$k][] = $v['xq_time'];
- $lists[$k][] = $v['user_name'];
- $lists[$k][] = $v['confirm_time'];
- $lists[$k][] = $v['done_time'];
- }
- }
- }else if($mode == 5){
- foreach ($data as $k=>$v){
- $status = '';
- if($v['status'] == 0){
- $status = '作废';
- }else if($v['status'] == 1){
- $status = '服务中';
- }else if($v['status'] == 2){
- $status = '已结束';
- }
- $lists[$k][] = $status;
- $lists[$k][] = $v['start'];
- $lists[$k][] = $v['end'];
- $lists[$k][] = $v['day'];
- $lists[$k][] = $v['create_time'];
- }
- }
- HelpHander::success(['data'=>$lists,'header'=>$header]);
- }
- //今日工单总数 //项目工单总数 //项目订单总数 //项目任务总数
- public function todoCountData(){
- $todayCount = Db::name('todo')
- ->where('del',0)
- ->where('org_id',$this->orgId)
- ->where('create_yyyymmdd',date('Ymd'))
- ->count();
- $todoCount = Db::name('todo')
- ->where('del',0)
- ->where('org_id',$this->orgId)
- ->count();
- $orderCount = Db::name('orders')
- ->where('del',0)
- ->where('org_id',$this->orgId)
- ->count();
- $task1 = Db::name('device_task')
- ->where('del',0)
- ->where('org_id',$this->orgId)
- ->count();
- $task2 = Db::name('patrol_task')
- ->where('del',0)
- ->where('org_id',$this->orgId)
- ->count();
- $taskCount = $task1+$task2;
- $data = [
- 'todayCount'=>$todayCount,
- 'todoCount'=>$todoCount,
- 'orderCount'=>$orderCount,
- 'taskCount'=>$taskCount,
- ];
- HelpHander::success($data);
- }
- public function todayTodoData(){
- $date = date('Ymd');
- $count = Db::name('todo')
- ->where('create_yyyymmdd',$date)
- ->where('del',0)
- ->count();
- $count2 = Db::name('todo')
- ->where('create_yyyymmdd',$date)
- ->where('del',0)
- ->where('todo_mode',3)
- ->count();
- $map[] = ['del','=',0];
- $map[] = ['create_yyyymmdd','=',$date];
- $bjCount = Db::name('todo')->where('work_type_mode',2)->where($map)->count();
- $bj = Db::name('todo')->where('work_type_mode',2)->where('todo_mode',3)->where($map)->count();
- $ysCount = Db::name('todo')->where('work_type_mode',3)->where($map)->count();
- $ys = Db::name('todo')->where('work_type_mode',3)->where('todo_mode',3)->where($map)->count();
- $bxCount = Db::name('todo')->where('work_type_mode',1)->where($map)->count();
- $bx = Db::name('todo')->where('work_type_mode',1)->where('todo_mode',3)->where($map)->count();
- $yhCount = Db::name('todo')->where('work_type_mode',4)->where($map)->count();
- $yh = Db::name('todo')->where('work_type_mode',4)->where('todo_mode',3)->where($map)->count();
- $bl = $bjBl = $ysBl = $bxBl = $yhBl = 0;
- if($count > 0){
- $bl = round($count2/$count*100,0);
- }
- if($bjCount >0){
- $bjBl = round($bj/$bjCount*100,0);
- }
- if($ysCount >0){
- $ysBl = round($ys/$ysCount*100,0);
- }
- if($bxCount >0){
- $bxBl = round($bx/$bxCount*100,0);
- }
- if($yhCount >0){
- $yhBl = round($yh/$yhCount*100,0);
- }
- $count3 = 0;
- if($count == 0){
- $count3 = 100;
- }else{
- $count3 = $count - $count2;
- }
- $data = [
- 'count'=>$count,
- 'bl'=>$bl,
- 'bjBl'=>$bjBl,
- 'bj'=>$bj,
- 'ysBl'=>$ysBl,
- 'ys'=>$ys,
- 'bxBl'=>$bxBl,
- 'bx'=>$bx,
- 'yhBl'=>$yhBl,
- 'yh'=>$yh,
- 'list'=>[
- ['value'=>$count2],
- ['value'=>$count3],
- ]
- ];
- HelpHander::success($data);
- }
- }
|