orgId = input('orgid')?input('orgid'):0; } /** * 获取用户数 * @param $orgid 组织id * @param $roles 角色id * @return mixed */ private function get_user_count($orgid,$roles){ $count = $this->db ->join('user_roles','user.USER_ID = user_roles.USER_ID') ->join('user_org','user.USER_ID = user_org.USER_ID') ->where_in('user_roles.ROLES_ID',$roles) ->where('user.DEL_REF',0) ->where('user.ENABLE',1) ->where('user_org.ORG_TYPE',0) ->where('user_org.ORG_ID',$orgid) ->from('user') ->count_all_results(); return $count; } // 各类人员占比接口 public function user(){ $this->load->model(array('OrgModel','RolesModel')); $info = $this->OrgModel->show_one(array('ORG_ID'=>$this->orgId,'TYPE'=>'2')); if(!$info||$info->ENABLE != 1||$info->DEL_REF != 0){ $this->error('项目不存在'); } // 1=客户人员 2=综合人员 3=运送人员 4=维修人员 5=保洁人员 6=保安人员 7=调度人员 8=监管人员 $arr = array( array('type' => 5), array('type' => 3), array('type' => 4), array('type' => 6), ); $allcount = 0; foreach ($arr as $k=>$v){ $roles = $this->RolesModel->get_roles_type($this->orgId,$v['type']); $arr[$k]['name'] = $roles['name']; $arr[$k]['value'] = $this->get_user_count($this->orgId,$roles['roles']); $allcount += $arr[$k]['value']; } $data = array( array('value'=>$arr[0]['value'],'name'=>'保洁人员','name2'=>'保洁','bl'=>$allcount>0?round($arr[0]['value']*100/$allcount):0), array('value'=>$arr[1]['value'],'name'=>'运送人员','name2'=>'运送','bl'=>$allcount>0?round($arr[1]['value']*100/$allcount):0), array('value'=>$arr[2]['value'],'name'=>'维修人员','name2'=>'维修','bl'=>$allcount>0?round($arr[2]['value']*100/$allcount):0), array('value'=>$arr[3]['value'],'name'=>'保安人员','name2'=>'保安','bl'=>$allcount>0?round($arr[3]['value']*100/$allcount):0), ); $this->success('成功',['count' => $allcount,'list' => $data]); } public function todostis(){ $count1 = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('work_type_mode',3) ->where('create_yyyymmdd',date('Ymd')) ->where('order_mode','in',[5,6]) ->count(); $count2 = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('work_type_mode',1) ->where('create_yyyymmdd',date('Ymd')) ->where('order_mode','in',[5,6]) ->count(); $count3 = Db::name('daily_record') ->where('org_id',$this->orgId) ->where('create_yyyymmdd',date('Ymd')) ->count(); $arr = [ [ 'name' => '运送任务', 'count' => $count1 ], [ 'name' => '维修任务', 'count' => $count2 ], [ 'name' => '日常任务', 'count' => $count3 ] ]; HelpHander::success($arr,'成功'); } public function ysuser(){ $lists = model('User')->getYsUser($this->orgId,1); $nlists = []; if(count($lists) > 4){ $arr = array_rand($lists,4); foreach ($arr as $k=>$v){ $nlists[] = $lists[$v]; } }else{ $nlists = $lists; } foreach ($nlists as $k=>$v){ $count = Db::name('todo') ->alias('a') ->join('orders b','a.order_id=b.id') ->where('a.create_yyyymmdd',date('Ymd')) ->where('a.to_user_id',$v['id']) ->where('a.todo_mode',3) ->where('a.del',0) ->where('a.org_id',$this->orgId) ->count(); $nlists[$k]['count'] = $count; // $addr = Db::name('user_convey_addr') // ->alias('uca') // ->join('convey_addr ca','ca.id = uca.ADDR_ID') // ->where('uca.USER_ID',$v['USER_ID']) // ->order_by('uca.CREATE_TIME DESC') // ->select('ca.TITLE') // ->get('user_convey_addr as uca') // ->row_array(); $addr = []; $nlists[$k]['addr_title'] = $addr?$addr['TITLE']:''; } HelpHander::success($nlists,'成功'); } // 热点区域 public function hotaddr(){ //SELECT count(a.START) as COUNT,a.START FROM order_convey as a JOIN orders as o ON o.ORDER_ID = a.ORDER_ID GROUP BY a.`START` LIMIT 10 $curDay = date('Ymd'); $oldDay = date('Ymd',time() - 29*24*60*60); $lists = Db::name('order_convey') ->alias('oc') ->join('orders o','o.id = oc.order_id') ->where('o.org_id',$this->orgId) ->where('o.create_yyyymmdd',$curDay) ->where('o.work_type_mode',3) ->where('o.del',0) ->where('o.order_mode','in',[5,6]) ->field('COUNT(oc.start) as count,oc.start') ->group('oc.start') ->order('count','desc') ->limit(10) ->select(); $x = []; $y1 = []; $y2 = []; foreach ($lists as $k=>$v){ $addr = Db::name('address') ->where('id',$v['start']) ->find(); $x[] = $addr?$addr['title']:''; $y1[] = $v['count']; $count = Db::name('order_convey') ->alias('oc') ->join('orders o','o.id = oc.order_id') ->where('o.org_id',$this->orgId) ->where('o.work_type_mode',3) ->where('o.create_yyyymmdd','<=',$curDay) ->where('o.create_yyyymmdd','>=',$oldDay) ->where('o.order_mode','in',[5,6]) ->where('oc.start',$v['start']) ->where('o.del',0) ->count(); $y2[] = round($count/30,2); } $data = [ 'x' => $x, 'y1' => $y1, 'y2' => $y2 ]; HelpHander::success($data,'成功'); } public function yscount(){ $curDay = date('Ymd'); $tcount = Db::name('orders') ->where('org_id',$this->orgId) ->where('work_type_mode',3) ->where('create_yyyymmdd',$curDay) ->where('order_mode','in',[5,6]) ->where('del',0) ->count(); $fcount = Db::name('order_convey') ->alias('oc') ->join('orders o','o.id = oc.order_id') ->where('o.org_id',$this->orgId) ->where('o.work_type_mode',3) ->where('o.create_yyyymmdd',$curDay) ->whereRaw("TIMESTAMPDIFF(second,o.finish_time,oc.ywc_time) >=0") ->where('o.order_mode','in',[5,6]) ->where('o.del',0) ->count(); $bl1 = $tcount>0?round($fcount/$tcount,3)*100:0; $wcount = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('work_type_mode',3) ->where('create_yyyymmdd',$curDay) ->where('order_mode','in',[1]) ->count(); $jxcount = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('work_type_mode',3) ->where('create_yyyymmdd',$curDay) ->where('order_mode','in',[5]) ->count(); $bhcount = Db::name('todo') ->alias('a') ->join('todo b','a.order_id=b.id') ->where('a.org_id',$this->orgId) ->where('b.del',0) ->where('a.work_type_mode',3) ->where('a.create_yyyymmdd',$curDay) ->where('a.todo_mode','in',[4]) ->count(); $flist = Db::name('orders') ->field('(TIMESTAMPDIFF(minute,create_time,send_time)) as minute') ->where('org_id',$this->orgId) ->where('work_type_mode',3) ->where('create_yyyymmdd',$curDay) ->where('del',0) ->where('order_mode','in',[4,5,6]) ->select(); $flist = $flist?$flist:[]; $c = count($flist); $minu = 0; foreach ($flist as $k=>$v){ if($v['minute']){ $minu += $v['minute']; } } $avg = $c > 0?round($minu/$c,1):0; $data = [ 'count1' => $bl1."%", 'count2' => $avg, 'count3' => $wcount, 'count4' => $jxcount, 'count5' => $tcount, 'count6' => $bhcount ]; HelpHander::success($data,'成功'); } // 隐患预警数据统计 public function yinhuan(){ $list = [ ['标题', '隐患数量', '转任务量'], // ['报修', $bxwc, $bxxy], // ['保洁', $bjwc, $bjxy], // ['运送', $yswc, $ysxy], // ['隐患预警', $yhwc, $yhxy], ]; $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'), ]; foreach ($dlist as $v){ $tt = date('Ymd',strtotime($v)); $count = Db::name('orders') ->where('org_id',$this->orgId) ->where('create_yyyymmdd',$tt) ->where('del',0) ->where('work_type_mode',4) ->count(); $count1 = Db::name('todo') ->alias('a') ->join('orders b','a.order_id=b.id') ->where('a.org_id',$this->orgId) ->where('a.create_yyyymmdd',$tt) ->where('a.del',0) ->where('a.work_type_mode',4) ->where('b.del',0) ->group('a.order_id') ->count(); $list[] = [date('m-d',strtotime($v)),$count,$count1]; } $data = [ 'list' => $list ]; HelpHander::success($data,'成功'); } // 运送数据统计 public function yusong(){ $list = [ ['标题', '工单总量', '完成工单量'], ]; $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'), ]; foreach ($dlist as $v){ $tt = date('Ymd',strtotime($v)); $count = $this->db ->where('ORG_ID',$this->orgId) ->where('CREATE_YYYYMMDD',$tt) ->where('DEL_REF',0) ->where('WORK_TYPE_MODE',3) ->from('orders') ->count_all_results(); $count1 = $this->db ->where('ORG_ID',$this->orgId) ->where('CREATE_YYYYMMDD',$tt) ->where('DEL_REF',0) ->where('WORK_TYPE_MODE',3) ->where_in('CURR_ORDER_MODE',[9,11]) ->from('orders') ->count_all_results(); $list[] = [date('m-d',strtotime($v)),$count,$count1]; } $data = [ 'list' => $list ]; $this->success('成功',$data); } // 今日运送完成工单总量 public function yscounttoday(){ $curDay = date('Ymd'); $tcount = $this->db ->where('ORG_ID',$this->orgId) ->where('WORK_TYPE_MODE',3) ->where('CREATE_YYYYMMDD',$curDay) ->where_in('CURR_ORDER_MODE',[9,11]) ->from('orders') ->count_all_results(); $data = [ 'count' => $tcount ]; $this->success('成功',$data); } // 医废 public function waste(){ $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'), ]; $xdata = []; $ydata = []; foreach ($dlist as $v){ $tt = date('Ymd',strtotime($v)); // $count = $this->db //// ->where('ORG_ID',$this->orgId) //// ->where('CREATE_YYYYMMDD',$tt) //// ->where('DEL_REF',0) //// ->from('waste_record') //// ->count_all_results(); /// $ret = Db::name('waste_record') ->where('org_id',$this->orgId) ->where('create_yyyymmdd',$tt) ->where('del',0) ->select(); $total = 0; foreach ($ret as $kk=>$vv){ $total += $vv['weight']; } $ydata[] = $total/1000; $xdata[] = date('m-d',strtotime($v)); } $data = [ 'xdata' => $xdata, 'ydata' => $ydata ]; HelpHander::success($data,'成功'); } public function ystask(){ $size = input('size')?input('size'):20; $data = model('Orders')->get_cur_day_lists($this->orgId,$size); foreach ($data as $k=>$v){ $data[$k]['create_time'] = date('H:i',strtotime($v['create_time'])); $data[$k]['send_time'] = $v['send_time']?date('H:i',strtotime($v['send_time'])):''; $data[$k]['confirm_time'] = $v['confirm_time']?date('H:i',strtotime($v['confirm_time'])):''; } HelpHander::success($data,'成功'); } public function ystask_bak(){ $size = input('size')?input('size'):5; $data = model('Orders')->get_cur_day_lists($this->orgId,$size); foreach ($data as $k=>$v){ $data[$k]['xq_time'] = date('H:i',strtotime($v['xq_time'])); $data[$k]['send_time'] = $v['send_time']?date('H:i',strtotime($v['send_time'])):''; $data[$k]['confirm_time'] = $v['confirm_time']?date('H:i',strtotime($v['confirm_time'])):''; } HelpHander::success($data,'成功'); } public function ystaskcount(){ $this->load->model('OrdersModel'); $data = $this->OrdersModel->get_cur_day_count($this->orgId); $this->success('成功',['count' => $data]); } public function daily(){ $lists = Db::name('daily_record') ->alias('dr') ->join('daily d','d.id = dr.daily_id') ->where('dr.org_id',$this->orgId) ->where('dr.create_yyyymmdd',date('Ymd')) ->limit(9) ->field('d.title,d.content,dr.user_id,dr.create_time') ->order('dr.id','desc') ->select(); foreach ($lists as $k=>$v){ $user = Db::name('user') ->where('id',$v['user_id']) ->find(); $lists[$k]['real_name'] = $user?$user['real_name']:''; $lists[$k]['create_time'] = date('m-d H:i',strtotime($v['create_time'])); } HelpHander::success($lists,'成功'); } public function patrolList(){ $lists = Db::name('patrol_record') ->alias('pr') ->join('address pa','pa.id = pr.patrol_addr_id') ->join('patrol_task pt','pt.id = pr.patrol_task_id') ->join('user u','u.id = pr.user_id') ->where('pr.org_id',$this->orgId) ->where('pr.create_yyyymmdd',date('Ymd')) ->limit(4) ->field('pa.title,pt.title as task_title,u.real_name,pr.create_time') ->order('pr.id','DESC') ->select(); foreach ($lists as $k=>$v){ $lists[$k]['create_time'] = date('m-d H:i',strtotime($v['create_time'])); } HelpHander::success($lists,'成功'); } public function patrolImg(){ $lists = Db::name('patrol_record') ->alias('pr') ->join('patrol_task pt','pt.id = pr.patrol_task_id') ->where('pr.org_id',$this->orgId) ->where('pr.images','<>','null') ->where('pr.create_yyyymmdd',date('Ymd')) ->limit(9) ->field('pt.title as task_title,pr.images') ->order('pr.id','DESC') ->select(); foreach ($lists as $k=>$v){ $imgs = explode(',',$v['images']); $lists[$k]['images'] = $imgs[0]; } HelpHander::success($lists?$lists:[],'成功'); } // 评论,满意度 public function comment(){ $scores = [ ['score'=>1,'name'=>'一星','value'=>0], ['score'=>2,'name'=>'二星','value'=>0], ['score'=>3,'name'=>'三星','value'=>0], ['score'=>4,'name'=>'四星','value'=>0], ['score'=>5,'name'=>'五星','value'=>0], ]; foreach ($scores as $k=>$v){ $count = $this->db ->where('ORG_ID',$this->orgId) ->where('SCORE',$v['score']) ->from('comment') ->count_all_results(); $scores[$k]['value'] = $count?$count:0; unset($scores[$k]['score']); } $user = $this->db ->select('sum(SCORE) as SCORE,TO_USER_ID') ->where('ORG_ID',$this->orgId) ->group_by('TO_USER_ID') ->distinct() ->get('comment_reply') ->result_array(); foreach ($user as $k=>$v){ $count = $this->db ->where('ORG_ID',$this->orgId) ->where('TO_USER_ID',$v['TO_USER_ID']) ->from('comment_reply') ->count_all_results(); $score = round($v['SCORE']/$count,1); $user[$k]['SCORE'] = $score; $info = $this->db ->join('user_org uo','uo.USER_ID = u.USER_ID') ->join('org o','uo.ORG_ID = o.ORG_ID') ->where('uo.ORG_TYPE',1) ->where('u.USER_ID',$v['TO_USER_ID']) ->select('u.REAL_NAME,o.NAME as DEP_NAME') ->get('user u') ->row_array(); $user[$k]['REAL_NAME'] = $info['REAL_NAME']; $user[$k]['DEP_NAME'] = $info['DEP_NAME']; } // 获取排名前5的人 $user = list_sort_by($user,'SCORE', 'desc'); $lists = []; foreach ($user as $k=>$v){ if($k >= 5){ continue; } $lists[] = $v; } $this->success('成功',['count'=>$scores,'list' => $lists]); } // 工单统计 public function todo(){ $start = date('Y-m-d').' 00:00:00'; $end = date('Y-m-d').' 23:59:59'; $fininsh = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('DONE_TIME >=',$start) ->where('DONE_TIME <=',$end) ->from('todo') ->count_all_results(); $unfininsh = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where_in('TODO_MODE',[1,2]) ->where('DONE_TIME >=',$start) ->where('DONE_TIME <=',$end) ->from('todo') ->count_all_results(); $undeal = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where_in('CURR_ORDER_MODE',1) ->where('CREATTE_TIME >=',$start) ->where('CREATTE_TIME <=',$end) ->from('orders') ->count_all_results(); $total = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where_in('TODO_MODE',[1,2,3,4,5]) ->from('todo') ->count_all_results(); $today = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where_in('TODO_MODE',[1,2,3,4,5]) ->where('CREATE_TIME >=',$start) ->where('CREATE_TIME <=',$end) ->from('todo') ->count_all_results(); $commentcount = $this->db ->where('ORG_ID',$this->orgId) ->from('comment') ->count_all_results(); $comment = $this->db ->where('ORG_ID',$this->orgId) ->select_sum('SCORE') ->get('comment') ->row_array(); $data = [ 'total' => $total, 'today' => $today, 'finish' => $fininsh, 'unfinish' => $unfininsh, 'undeal' => $undeal, 'comment' => $commentcount&&$comment?round($comment['SCORE']/$commentcount,1):0 ]; $this->success('成功',$data); } // 获取今日最新5条中的随机一条 public function patrol(){ $lists = $this->db ->select('u.REAL_NAME,pa.TITLE,pr.IMAGES,pt.TITLE as CONTENT,pr.CREATE_TIME') ->join('user u','u.USER_ID = pr.USER_ID') ->join('patrol_addr pa','pa.PATROL_ADDR_ID = pr.PATROL_ADDR_ID') ->join('patrol_task pt','pt.PATROL_TASK_ID = pr.PATROL_TASK_ID') ->where('pr.ORG_ID',$this->orgId) ->where('pr.CREATE_YYYYMMDD',date('Ymd')) ->limit(5) ->order_by('pr.PATROL_RECORD_ID DESC') ->get('patrol_record pr') ->result_array(); $info = null; if($lists){ $info = $lists[array_rand($lists,1)]; } if($info){ $imgs = $info['IMAGES']?explode(',',$info['IMAGES']):[]; $info['IMAGES'] = $imgs?$imgs[0]:''; $info['CREATE_TIME'] = date('Y-m-d',strtotime($info['CREATE_TIME'])); $this->success('成功',$info); }else{ $this->error('失败'); } } // 工单指数数据统计 public function todotime(){ $bxcount = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',1) ->from('todo') ->count_all_results(); $bjcount = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',2) ->from('todo') ->count_all_results(); $yscount = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',3) ->from('todo') ->count_all_results(); $yhcount = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',4) ->from('todo') ->count_all_results(); $bxinfo = $this->db ->select_sum('XY_TIME') ->select_sum('WC_TIME') ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',1) ->get('todo') ->row_array(); $bxinfo = $bxinfo?$bxinfo:['XY_TIME'=>0,'WC_TIME'=>0]; $bjinfo = $this->db ->select_sum('XY_TIME') ->select_sum('WC_TIME') ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',2) ->get('todo') ->row_array(); $bjinfo = $bjinfo?$bjinfo:['XY_TIME'=>0,'WC_TIME'=>0]; $ysinfo = $this->db ->select_sum('XY_TIME') ->select_sum('WC_TIME') ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',3) ->get('todo') ->row_array(); $ysinfo = $ysinfo?$ysinfo:['XY_TIME'=>0,'WC_TIME'=>0]; $yhinfo = $this->db ->select_sum('XY_TIME') ->select_sum('WC_TIME') ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('TODO_MODE',3) ->where('WORK_TYPE_MODE',4) ->get('todo') ->row_array(); $yhinfo = $yhinfo?$yhinfo:['XY_TIME'=>0,'WC_TIME'=>0]; $bxwc = $bxcount?round($bxinfo['WC_TIME']/$bxcount/60,1):0; $bxxy = $bxcount?round($bxinfo['XY_TIME']/$bxcount/60,1):0; $bjwc = $bjcount?round($bjinfo['WC_TIME']/$bjcount/60,1):0; $bjxy = $bjcount?round($bjinfo['XY_TIME']/$bjcount/60,1):0; $yswc = $yscount?round($ysinfo['WC_TIME']/$yscount/60,1):0; $ysxy = $yscount?round($ysinfo['XY_TIME']/$yscount/60,1):0; $yhwc = $yhcount?round($yhinfo['WC_TIME']/$yhcount/60,1):0; $yhxy = $yhcount?round($yhinfo['XY_TIME']/$yhcount/60,1):0; $list = [ ['标题', '平均完成时', '响应时长'], ['报修', $bxwc, $bxxy], ['保洁', $bjwc, $bjxy], ['运送', $yswc, $ysxy], ['隐患预警', $yhwc, $yhxy], ]; $data = [ 'bx' => $bxcount, 'bj' => $bjcount, 'ys' => $yscount, 'yh' => $yhcount, 'list' => $list ]; $this->success('成功',$data); } // 设备维检 public function device(){ $dcount = $this->db ->where('ORG_ID',$this->orgId) ->where('DEL_REF',0) ->where('ENABLE',1) ->from('device') ->count_all_results(); $rcount = $this->db ->where('ORG_ID',$this->orgId) ->from('device_record') ->count_all_results(); $cur = date('Y-m'); $curTime = strtotime($cur.'-01'); $month = []; for ($i=5;$i>0;$i--){ $date = strtotime("-".$i." month",$curTime); $month[] = date('Y-m',$date); } $month[] = $cur; $list = []; foreach ($month as $k=>$v){ $list[] = $this->db ->where('ORG_ID',$this->orgId) ->where('CREATE_YYYYMM',str_ireplace('-','',$v)) ->from('device_record') ->count_all_results(); } $data = [ 'dcount' => $dcount, 'rcount' => $rcount, 'list' => $list, 'month' => $month ]; $this->success('成功',$data); } // 24小时内记录 public function patrolRecord(){ $day = date('Ymd'); $time = strtotime(date('Y-m-d')); $hours = []; $plist1 = $plist2 = $plist3 = $plist4 = []; for ($i=0;$i<24;$i++){ $hours[] = $i; $stime = date('Y-m-d H:i:s',$time + $i*60*60); $etime = date('Y-m-d H:i:s',$time + ($i+1)*60*60); $plist1[] = $this->db ->where('ORG_ID',$this->orgId) ->where('PATROL_MODE',1) ->where('CREATE_TIME >=',$stime) ->where('CREATE_TIME <',$etime) ->where('CREATE_YYYYMMDD',$day) ->from('patrol_record') ->count_all_results(); $plist2[] = $this->db ->where('ORG_ID',$this->orgId) ->where('PATROL_MODE',2) ->where('CREATE_TIME >=',$stime) ->where('CREATE_TIME <',$etime) ->where('CREATE_YYYYMMDD',$day) ->from('patrol_record') ->count_all_results(); $plist3[] = $this->db ->where('ORG_ID',$this->orgId) ->where('PATROL_MODE',3) ->where('CREATE_TIME >=',$stime) ->where('CREATE_TIME <',$etime) ->where('CREATE_YYYYMMDD',$day) ->from('patrol_record') ->count_all_results(); $plist4[] = $this->db ->where('ORG_ID',$this->orgId) ->where('PATROL_MODE',4) ->where('CREATE_TIME >=',$stime) ->where('CREATE_TIME <',$etime) ->where('CREATE_YYYYMMDD',$day) ->from('patrol_record') ->count_all_results(); } $data = [ 'hour' => $hours, 'plist1' => $plist1, 'plist2' => $plist2, 'plist3' => $plist3, 'plist4' => $plist4 ]; $this->success('成功',$data); } // 报修工单 public function repair(){ $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'), ]; $names = []; $counts = []; foreach ($dlist as $v){ $names[] = date('m-d',strtotime($v)); $tt = date('Ymd',strtotime($v)); $count = Db::name('todo') ->alias('a') ->join('orders b','a.order_id=b.id') ->where('a.del',0) ->where('a.org_id',$this->orgId) ->where('a.todo_mode',3) ->where('a.work_type_mode',1) ->where('a.create_yyyymmdd',$tt) ->group('a.order_id') ->count(); $counts[] = $count; } HelpHander::success(['names'=>$names,'counts' => $counts],'成功'); } public function ystypeuser(){ $this->load->model('UserModel'); $lists = $this->UserModel->getYsUser($this->orgId,1); $lists = $lists?$lists:[]; $curday = date('Ymd'); $users = $this->db ->where('ORG_ID',$this->orgId) ->where_in('TODO_MODE',[1,2]) ->where('DEL_REF',0) ->where('CREATE_YYYYMMDD',$curday) ->select('TO_USER_ID') ->group_by('TO_USER_ID') ->get('todo') ->result_array(); $users = $users?$users:[]; $userIds = []; foreach ($users as $k=>$v){ $userIds[] = $v['TO_USER_ID']; } $data = [ 'list1' => [], 'list2' => [] ]; $nlists = []; foreach ($lists as $k=>$v){ if(!in_array($v['USER_ID'],$userIds)){ $nlists[] = $v; } } $slist = []; if(count($nlists) > 10){ $keys = array_rand($nlists,10); foreach ($nlists as $k=>$v){ if(in_array($k,$keys)){ $slist[] = $v; } } }else{ $slist = $nlists; } foreach ($slist as $k=>$v){ $count = $this->db ->where('ORG_ID',$this->orgId) ->where('TO_USER_ID',$v['USER_ID']) ->where_in('TODO_MODE',[1,2,3]) ->where('DEL_REF',0) ->where('CREATE_YYYYMMDD',$curday) ->from('todo') ->count_all_results(); $slist[$k]['COUNT'] = $count; $addr = $this->db ->join('convey_addr ca','ca.CONVEY_ADDR_ID = cpr.ADDR_ID') ->select('ca.TITLE,cpr.CREATE_TIME') ->where('USER_ID',$v['USER_ID']) ->order_by('cpr.ID desc') ->get('convey_plan_record cpr') ->row_array(); $slist[$k]['TITLE'] = $addr?$addr['TITLE']:'';; } $nlists2 = []; foreach ($lists as $k=>$v){ if(in_array($v['USER_ID'],$userIds)){ $nlists2[] = $v; } } $slist2 = []; if(count($nlists2) > 9){ $keys2 = array_rand($nlists2,9); foreach ($nlists2 as $k=>$v){ if(in_array($k,$keys2)){ $slist2[] = $v; } } }else{ $slist2 = $nlists2; } foreach ($slist2 as $k=>$v){ $count = $this->db ->where('ORG_ID',$this->orgId) ->where('TO_USER_ID',$v['USER_ID']) ->where_in('TODO_MODE',[1,2,3]) ->where('DEL_REF',0) ->where('CREATE_YYYYMMDD',$curday) ->from('todo') ->count_all_results(); $slist2[$k]['COUNT'] = $count; $addr = $this->db ->join('convey_addr ca','ca.CONVEY_ADDR_ID = cpr.ADDR_ID') ->select('ca.TITLE,cpr.CREATE_TIME') ->where('USER_ID',$v['USER_ID']) ->order_by('cpr.ID desc') ->get('convey_plan_record cpr') ->row_array(); $slist2[$k]['TITLE'] = $addr?$addr['TITLE']:''; } $data['list1'] = $slist; // 待命人员 $data['list2'] = $slist2; // 行动人员 $this->success('成功',$data); } }