where('org_id',$this->orgId) ->where('work_type_mode',1) ->where('create_yyyymmdd',date('Ymd')) ->where('del',0) ->count(); $count2 = Db::name('todo') ->where('org_id',$this->orgId) ->where('work_type_mode',1) ->where('create_yyyymmdd',date('Ymd')) ->where('del',0) ->where('todo_mode',3) ->count(); $bl = 100; if($count > 0 ){ $bl = round($count2/$count*100,1); } $user = model('WorkTypeMode')->getRolesUserApp(1,$this->orgId); $count3 = count($user); $count4 = Db::name('todo') ->where('org_id',$this->orgId) ->where('work_type_mode',1) ->where('create_yyyymmdd',date('Ymd')) ->where('del',0) ->where('todo_mode',3) ->avg('xy_time'); $count5 = Db::name('todo') ->where('org_id',$this->orgId) ->where('work_type_mode',1) ->where('create_yyyymmdd',date('Ymd')) ->where('del',0) ->where('todo_mode',3) ->avg('wc_time'); $data = [ 'count'=>$count, 'count2'=>$count3, 'count3'=>round($count4/3600,1), 'count4'=>round($count5/3600,1), 'bl'=>$bl, ]; HelpHander::success($data); } //维修订单数据状态分析、 public function wxOrderStatus(){ $orderMode = [ ['name'=>'待派工','value'=>1], ['name'=>'已取消','value'=>[2,3]], ['name'=>'进行中','value'=>4], ['name'=>'已完成','value'=>5], ['name'=>'已评价','value'=>6], ]; $list = []; foreach ($orderMode as $k=>$v){ $list[$k]['name'] = $v['name']; $list[$k]['value'] = Db::name('orders') ->where('work_type_mode',1) ->where('org_id',$this->orgId) ->where('del',0) // ->where('create_yyyymmdd',date('Ymd')) ->whereIn('order_mode',$v['value']) ->count(); } HelpHander::success($list); } //维修工单周分析 public function wxWeekTodo(){ $dlist = [ date('Ymd',strtotime('-6 days')), date('Ymd',strtotime('-5 days')), date('Ymd',strtotime('-4 days')), date('Ymd',strtotime('-3 days')), date('Ymd',strtotime('-2 days')), date('Ymd',strtotime('-1 days')), date('Ymd'), ]; $title = $list = $list2 = []; foreach ($dlist as $k=>$v){ $title[] = date('m-d',strtotime($v)); $list[] = Db::name('todo') ->where('work_type_mode',1) ->where('org_id',$this->orgId) ->where('del',0) ->where('create_yyyymmdd',$v) ->count(); $list2[] = Db::name('todo') ->where('work_type_mode',1) ->where('org_id',$this->orgId) ->where('del',0) ->where('create_yyyymmdd',$v) ->where('todo_mode',3) ->count(); } $data = [ 'title'=>$title, 'list'=>$list, 'list2'=>$list2, ]; HelpHander::success($data); } public function wxUserStatus(){ $lists = model('WorkTypeMode')->getRolesUserApp(1,$this->orgId); $curday = date('Ymd'); $users = Db::name('todo') ->field('to_user_id') ->where('org_id',$this->orgId) ->whereIn('todo_mode',[1,2]) ->where('work_type_mode',1) ->where('del',0) ->where('create_yyyymmdd',$curday) ->group('to_user_id') ->order('id desc') ->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) ->where('work_type_mode',1) ->count(); $addr = Db::name('todo') ->alias('t') ->join('order_repair or','t.order_id=or.order_id') ->join('address a','a.id=or.address_id') ->where('t.to_user_id',$v['id']) ->whereIn('t.todo_mode',[1,2,3]) ->where('t.del',0) ->where('t.create_yyyymmdd',$curday) ->where('t.work_type_mode',1) ->order('t.id desc') ->value('a.title'); $slist[$k][] = ''.$v['real_name'].''; $slist[$k][] = ''.$count.''; $slist[$k][] = ''.$addr.''; } 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('todo') ->alias('t') ->join('order_repair or','t.order_id=or.order_id') ->join('address a','a.id=or.address_id') ->where('t.to_user_id',$v['id']) ->whereIn('t.todo_mode',[1,2,3]) ->where('t.del',0) ->where('t.create_yyyymmdd',$curday) ->where('t.work_type_mode',1) ->order('t.id desc') ->value('a.title'); $slist2[$k][] = ''.$v['real_name'].''; $slist2[$k][] = ''.$count.''; $slist2[$k][] = ''.$addr.''; } $data = [ 'list'=>[ 'list'=>$slist, 'count'=>count($slist), ], 'list2'=>[ 'list'=>$slist2, 'count'=>count($slist2), ], ]; HelpHander::success($data); } public function wxTodoData(){ $list = Db::name('todo') ->field('id,order_id,todo_mode,create_time,to_user_id') ->where('org_id',$this->orgId) ->whereIn('todo_mode',[1,2,3]) ->where('del',0) // ->where('create_yyyymmdd',date('Ymd')) ->where('work_type_mode',1) ->limit(20) ->order('id desc') ->select(); foreach ($list as $k=>$v){ if($v['todo_mode'] == 1){ $list[$k]['status'] = '新任务'; }elseif ($v['todo_mode'] == 2){ $list[$k]['status'] = '进行中'; }elseif ($v['todo_mode'] == 3){ $list[$k]['status'] = '已完成'; } $repair = Db::name('order_type') ->alias('ot') ->field('ot.id,ot.title,ot.parent_id') ->join('order_repair or','or.type_id=ot.id') ->where('or.order_id',$v['order_id']) ->find(); $list[$k]['cate_title'] = Db::name('order_type')->where('id',$repair['parent_id'])->value('title'); $list[$k]['address'] = Db::name('address') ->alias('a') ->join('order_repair or','or.address_id=a.id') ->where('or.order_id',$v['order_id']) ->where('a.org_id',$this->orgId) ->value('a.title'); $list[$k]['create_time'] = date('H:i',strtotime($v['create_time'])); $list[$k]['user_name'] = Db::name('user')->where('id',$v['to_user_id'])->value('real_name'); } $data = []; foreach ($list as $k=>$v){ if($v['todo_mode'] == 1){ $data[$k][] = $v['status']; $data[$k][] = $v['cate_title']; $data[$k][] = $v['address']; $data[$k][] = $v['create_time']; $data[$k][] = $v['user_name']; }elseif ($v['todo_mode'] == 2){ $data[$k][] = ''.$v['status'].''; $data[$k][] = ''.$v['cate_title'].''; $data[$k][] = ''.$v['address'].''; $data[$k][] = ''.$v['create_time'].''; $data[$k][] = ''.$v['user_name'].''; }elseif ($v['todo_mode'] == 3){ $data[$k][] = ''.$v['status'].''; $data[$k][] = ''.$v['cate_title'].''; $data[$k][] = ''.$v['address'].''; $data[$k][] = ''.$v['create_time'].''; $data[$k][] = ''.$v['user_name'].''; } } HelpHander::success($data); } public function wxCateData(){ $type = Db::name('order_type') ->field('id,title as name') ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->where('parent_id',0) ->select(); foreach ($type as $k=>$v){ //获取类型下的报修事项 $cc = Db::name('order_type') ->where('parent_id',$v['id']) ->where('del',0) ->where('enable',1) ->column('id'); $type[$k]['value'] = Db::name('todo') ->alias('t') ->join('order_repair or','or.order_id=t.order_id') ->whereIn('or.type_id',$cc) ->where('t.del',0) ->where('t.org_id',$this->orgId) ->where('t.todo_mode',3) ->where('t.work_type_mode',1) ->where('t.create_yyyymmdd',date('Ymd')) ->count(); unset($type[$k]['id']); } $list = array_slice(list_sort_by($type,'value','desc'),0,6); HelpHander::success($list); } public function wxMateItemData(){ $type = input('type',1); // 1=月 if($type == 1){ $where[] = ['create_time','>=',date('Y-m').'-01 00:00:00']; $where[] = ['create_time','<=',date('Y-m').'-31 00:00:00']; }else{ $where[] = ['create_time','>=',date('Y').'-01-01 00:00:00']; $where[] = ['create_time','<=',date('Y').'-12-31 00:00:00']; } $list = Db::name('mate_goods') ->field('id,title') ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->limit(6) ->select(); $title = $count = []; foreach ($list as $k=>$v){ $title[]= $v['title']; $nums = Db::name('todo_mate_item') ->where('items_id',$v['id']) ->where($where) ->sum('total'); $count[] = $nums; } $data = [ 'list'=>$count, 'title'=>$title, ]; HelpHander::success($data); } public function wxDepData(){ $date = date('Ymd'); $edate = date('Ymd',strtotime("-1 months",strtotime($date))); $dep = Db::name('dep') ->field('id,title') ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->limit(6) ->select(); $title = $count = $count2 = []; foreach ($dep as $k=>$v){ $title[] =$v['title']; $count[] = Db::name('orders') ->alias('o') ->join('todo t','t.order_id=o.id') ->where('o.dep_id',$v['id']) ->where('t.work_type_mode',1) ->where('t.create_yyyymmdd',$date) ->where('t.del',0) ->where('t.org_id',$this->orgId) ->count(); $nums= Db::name('orders') ->alias('o') ->join('todo t','t.order_id=o.id') ->where('o.dep_id',$v['id']) ->where('t.work_type_mode',1) ->where('t.create_yyyymmdd','<=',$date) ->where('t.create_yyyymmdd','>=',$edate) ->where('t.del',0) ->where('t.org_id',$this->orgId) ->count(); $count2[] = round($nums/30,1); } $data =[ 'title' =>$title, 'list' =>$count, 'list2' =>$count2, ]; HelpHander::success($data); } }