companyService = $companyService; $this->jobsService = $jobsService; } public function getCompanyDate($start_time, $end_time, $subsite_id) { //企业数量(过滤审核未通过的企业) $where = array(array('utype','=',1),array('audit','<>',3)); if ($subsite_id !='-1') { $where[] = array('subsite_id','=',$subsite_id); } $all_company_num = $this->companyService->getCompanyNums($where); $map = $where; $map[] = array('created_at','>=',$start_time); $map[] = array('created_at','<=',$end_time); $current_company_num = $this->companyService->getCompanyNums($map); //职位数量(前台可以看的职位 - 过滤审核失败的企业) $job_where = array( array('valid','=','1'), //array('display','=',1) ); if ($subsite_id != -1) { $job_where[] = array('subsite_id','=',$subsite_id); } if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } $job_map = $job_where; $job_map[] = array('created_at','>=',$start_time); $job_map[] = array('created_at','<=',$end_time); $all_jobs_num = $this->jobsService->getJobNum($job_where, $where); $current_jobs_num = $this->jobsService->getJobNum($job_map, $where); //招聘人数 $all_job_amount = $this->jobsService->getJobNumsByGroup($job_where, $where, 'sum(amount) as job_amount', ''); $current_job_amount = $this->jobsService->getJobNumsByGroup($job_map, $where, 'sum(amount) as job_amount', ''); return array( 'all_company_num' => $all_company_num, 'current_company_num'=> $current_company_num, 'all_jobs_num' => $all_jobs_num, 'current_jobs_num' => $current_jobs_num, 'all_job_amount' => $all_job_amount[0]['job_amount']?$all_job_amount[0]['job_amount']:0, 'current_job_amount' => $current_job_amount[0]['job_amount']?$current_job_amount[0]['job_amount']:0, ); } public function basicAnalysis(Request $request) { $subsite_id = session('caiqing_susbite_id'); if ($subsite_id === null) { $subsite_id = -1; } //时间过滤 $date_aprams = $this->getDateDetail($request->all()); $start_time = date('Y-m-d H:i:s', strtotime($date_aprams['start_date'])); $end_time = date('Y-m-d H:i:s', strtotime($date_aprams['end_date'].' +1 day')-1); $company_data = $this->getCompanyDate($start_time, $end_time, $subsite_id); //企业过滤条件 - 过滤审核失败的企业 $where = [ ['utype','=',1], //['user_status','=',1], ['audit','<>',3], ['created_at','>=',$start_time], ['created_at','<=',$end_time] ]; if ($subsite_id !='-1') { $where[] = ['subsite_id','=',$subsite_id]; } //分类信息(企业性质、企业规模) $cate_filter = ['AIX_company_type' => 100, 'AIX_scale'=>100, 'AIX_trade'=>100]; $cates = $this->companyService->getCategories($cate_filter); //按公司性质统计企业数量 $nature_fields = 'count(id) as num, nature'; $nature_group = 'nature'; $nature_rst = $this->companyService->getCompanyNumsGroup($where, $nature_fields, $nature_group); $nature_data = []; $nature_names = []; if ($nature_rst) { foreach ($nature_rst as $k => $v) { $nature_data[] = $v['num']; if ($v['nature'] == 0) { $nature_names[] = '没有填写'; } else { if (array_has($cates['AIX_company_type'], $v['nature'])) { $nature_names[] = $cates['AIX_company_type'][$v['nature']]['demand']; } else { $nature_names[] = ''; } } } } //按公司规模统计企业数量 $scale_fields = 'count(id) as num, scale'; $scale_group = 'scale'; $scale_rst = $this->companyService->getCompanyNumsGroup($where, $scale_fields, $scale_group); $scale_data = []; $scale_names = []; if ($scale_rst) { foreach ($scale_rst as $k => $v) { $scale_data[] = $v['num']; if ($v['scale'] == 0) { $scale_names[] = '没有填写'; } else { if (array_has($cates['AIX_scale'], $v['scale'])) { $scale_names[] = $cates['AIX_scale'][$v['scale']]['demand']; } else { $scale_names[] = ''; } } } } //按行业分布统计企业数量 $trade_fields = 'count(id) as num, trade'; $trade_group = 'trade'; $trade_rst = $this->companyService->getCompanyNumsGroup($where, $trade_fields, $trade_group); $trade_data = []; $trade_names = []; if ($trade_rst) { foreach ($trade_rst as $k => $v) { $trade_data[] = $v['num']; if ($v['trade'] == 0) { $trade_names[] = '没有填写'; } else { if (array_has($cates['AIX_trade'], $v['trade'])) { $trade_names[] = $cates['AIX_trade'][$v['trade']]['demand']; } else { $trade_names[] = ''; } } } } $return_data = [ 'all_company_num'=>$company_data['all_company_num'], 'current_company_num'=>$company_data['current_company_num'], 'all_jobs_num'=>$company_data['all_jobs_num'], 'current_jobs_num'=>$company_data['current_jobs_num'], 'all_job_amount' => $company_data['all_job_amount'], 'current_job_amount' => $company_data['current_job_amount'], 'date_aprams' => $date_aprams, 'action_name' => app('request')->route()->getName(), 'nature_data' => $nature_data, 'nature_names' => $nature_names, 'scale_data' => $scale_data, 'scale_names' => $scale_names, 'trade_data' => $trade_data, 'trade_names' => $trade_names, ]; return view('statistics.app.company.basic_analysis', $return_data); } public function jobAnalysis(Request $request) { $subsite_id = session('caiqing_susbite_id'); if ($subsite_id === null) { $subsite_id = -1; } //时间过滤 $date_aprams = $this->getDateDetail($request->all()); $start_time = date('Y-m-d H:i:s', strtotime($date_aprams['start_date'])); $end_time = date('Y-m-d H:i:s', strtotime($date_aprams['end_date'].' +1 day')-1); $company_data = $this->getCompanyDate($start_time, $end_time, $subsite_id); $cate_filter = ['AIX_trade' => 100,'AIX_experience' => 100, 'AIX_education'=>100]; $cates = $this->companyService->getCategories($cate_filter); //职位过滤条件 $job_where = array( array('valid','=','1'), //array('display','=',1), array('created_at','>=',$start_time), array('created_at','<=',$end_time) ); $trade_where = array( array('j.valid','=','1'), //array('j.display','=',1), array('j.created_at','>=',$start_time), array('j.created_at','<=',$end_time) ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); $trade_where[] = array('j.audit','=',1); } else { $job_where[] = array('audit','<>',3); $trade_where[] = array('j.audit','<>',3); } $company_where = [['utype','=',1],['audit','<>',3]/*'user_status'=>1*/]; if ($subsite_id != -1) { $job_where[] = ['subsite_id','=',$subsite_id]; $trade_where[] = ['c.subsite_id','=',$subsite_id]; $company_where[] = ['subsite_id','=',$subsite_id]; } //行业需求(行业数量靠前的职位数量) $trade_where[] = ['c.utype','=',1]; $trade_where[] = ['c.user_status','=',1]; $trade_fields = 'count(j.id) as num, c.trade'; $trade_group = 'c.trade'; $trade_order = 'count(j.id) desc'; $trade_rst = $this->jobsService->getJobNumByTradeGroup($trade_where, $trade_fields, $trade_group, $trade_order, '10'); $trade_data = []; if ($trade_rst) { foreach ($trade_rst as $k => $v) { $trade_name_s = ''; if ($v->trade == 0) { $trade_name_s = '没有填写'; } else { if (array_has($cates['AIX_trade'], $v->trade)) { $trade_name_s = $cates['AIX_trade'][$v->trade]['demand']; } else { $trade_name_s = ''; } } $trade_data[] = array( 'num'=> $v->num, 'trade'=> $v->trade, 'name'=> $trade_name_s, ); } } //职位大类(数量靠前职位大类的薪资平均值) $topclass_fields = 'count(id) as num, sum(amount) as job_amount,topclass, sum((if(wage_min=0 && wage_max>0, wage_max, wage_min)+if(wage_max=0 && wage_min>0, wage_min, wage_max))/2) as total_wage'; $topclass_group = 'topclass'; $topclass_order = 'count(id) desc'; $topclass_rst = $this->jobsService->getAvgWageByGroup($job_where, $company_where, $topclass_fields, $topclass_group, $topclass_order, 10); $topclass_data = []; $topclass_amount = []; $topclass_wage = []; $topclass_name = []; if ($topclass_rst) { foreach ($topclass_rst as $k => $v) { $topclass_wage[] = round(($v['total_wage']/$v['num']), 2); $topclass_data[] = $v['num']; $topclass_amount[] = $v['job_amount']; $topclass_name[] = $v['name']?$v['name']:'无要求'; } } //职位小类(数量靠前职位小类的薪资平均值) $subclass_fields = 'count(id) as num, sum(amount) as job_amount, category, sum((if(wage_min=0 && wage_max>0, wage_max, wage_min)+if(wage_max=0 && wage_min>0, wage_min, wage_max))/2) as total_wage'; $subclass_group = 'category'; $subclass_order = 'count(id) desc'; $subclass_rst = $this->jobsService->getAvgWageByGroup($job_where, $company_where, $subclass_fields, $subclass_group, $subclass_order, 10); $subclass_data = []; $subclass_amount = []; $subclass_wage = []; $subclass_name = []; if ($subclass_rst) { foreach ($subclass_rst as $k => $v) { $subclass_wage[] = round(($v['total_wage']/$v['num']), 2); $subclass_data[] = $v['num']; $subclass_amount[] = $v['job_amount']; $subclass_name[] = $v['name']; } } //学历分布(按职位学历要求分组统计职位数量) $edu_fields = 'count(id) as num, education'; $edu_group = 'education'; $edu_order = 'education asc'; $edu_rst = $this->jobsService->getJobNumsByGroup($job_where, $company_where, $edu_fields, $edu_group, $edu_order); $edu_data = []; $edu_names = []; if ($edu_rst) { foreach ($edu_rst as $k => $v) { $edu_data[] = $v['num']; if ($v['education'] == 0) { $edu_names[] = '无要求'; } else { if (array_has($cates['AIX_education'], $v['education'])) { $edu_names[] = $cates['AIX_education'][$v['education']]['demand']; } else { $edu_names[] = '无要求'; } } } } //工作经验(按职位工作经验要求分组统计职位数量) $exp_fields = 'count(id) as num, experience'; $exp_group = 'experience'; $exp_rst = $this->jobsService->getJobNumsByGroup($job_where, $company_where, $exp_fields, $exp_group, 'experience asc'); $exp_data = []; $exp_names = []; if ($exp_rst) { foreach ($exp_rst as $k => $v) { $exp_data[] = $v['num']; if ($v['experience'] == 0) { $exp_names[] = '无要求'; } else { if (array_has($cates['AIX_experience'], $v['experience'])) { $exp_names[] = $cates['AIX_experience'][$v['experience']]['demand']; } else { $exp_names[] = '无要求'; } } } } $return_data = [ 'date_aprams' => $date_aprams, 'all_company_num'=>$company_data['all_company_num'], 'current_company_num'=>$company_data['current_company_num'], 'all_jobs_num'=>$company_data['all_jobs_num'], 'current_jobs_num'=>$company_data['current_jobs_num'], 'all_job_amount' => $company_data['all_job_amount'], 'current_job_amount' => $company_data['current_job_amount'], 'action_name' => app('request')->route()->getName(), 'trade_data' => $trade_data, 'topclass_data'=> $topclass_data, 'topclass_amount' => $topclass_amount, 'topclass_name'=> $topclass_name, 'topclass_wage'=> $topclass_wage, 'subclass_data'=> $subclass_data, 'subclass_name'=> $subclass_name, 'subclass_wage'=> $subclass_wage, 'subclass_amount' => $subclass_amount, 'edu_data' => $edu_data, 'edu_names' => $edu_names, 'exp_data' => $exp_data, 'exp_names' => $exp_names, ]; return view('statistics.app.company.job_analysis', $return_data); } }