employee; $require = Recruit::where([['root_id','=',$token['root_id']]])->column('name','id'); $w[] = ['root_id','=',$token['root_id']]; $w[] = ['recruit','in',array_keys($require)]; $sql = "recruit is not null AND recruit <> '' AND state<>'待审核'"; $eids = Employee::where($w)->where($sql)->column('id');//通过我的码邀请的人员 $data['count'] = count($eids);//累计招聘 //加入新兵训练营的所有人 $w1[] = ['employee_id','in',$eids]; $em = CampEmployee::where($w1)->group('employee_id')->field('id,employee_id,state')->select()->toArray(); $data['pass'] = $data['no_pass'] = 0;//累计通过,不通过 foreach ($em as $k => $v) { $v['state'] == '转正' ? $data['pass']+=1 : $data['no_pass']+=1; } $data['grawth'] = $data['pass']==0 ? '0%' : round($data['pass']/$data['count']*100,2).'%';//通过率 //人事招聘人数 $many = Employee::where($w)->where($sql)->field("count(*) count,recruit")->group('recruit')->order('count desc')->select()->toArray(); //招聘最多 $data['many'] = empty($many) ? '暂无' : (Recruit::where('id',$many[0]['recruit'])->value('name') ?: '暂无'); //通过新兵训练营的所有人 $emp = CampEmployee::where($w1)->group('employee_id')->field('id,employee_id,state')->select()->toArray(); $row = []; foreach ($emp as $k1 => $v1) { if($v1['state']=='转正') $row[] = $v1['employee_id']; } $field = "recruit,id,IF(id in ('".implode('\',\'', $row)."'),1,0) as pass"; $emp = Employee::where($sql)->field($field)->select()->toArray(); $row = []; foreach ($emp as $k4 => $v4) { isset($row[$v4['recruit']]['all_count']) ? $row[$v4['recruit']]['all_count']+=1 : $row[$v4['recruit']]['all_count']=1; if($v4['pass']==1) (isset($row[$v4['recruit']]['pass']) ? $row[$v4['recruit']]['pass']+=1 : $row[$v4['recruit']]['pass']=1); } $max_grawth = 0;//最高通过率 $max_recruit = 0;//最高通过率人事 foreach ($row as $k5 => $v5) { if (isset($v5['all_count']) && isset($v5['pass'])) { $grawth = round($v5['pass']/$v5['all_count'],4); if($grawth>$max_grawth){ $max_grawth = $grawth; $max_recruit = $k5; } } } $data['high'] = $max_recruit ? (Recruit::where('id',$max_recruit)->value('name') ?: '暂无') : '暂无'; View::assign('data',$data); return View::fetch(); } /** * 人事招聘 */ public function list() { $token = request()->employee; $param = Request::only(['page'=>1, 'limit'=>10, 'start_date'=>'','end_date'=>'','keyword'=>'']); $w[] = ['root_id','=',$token['root_id']]; if ($param['start_date']) { $w[] = ['addtime','>=',$param['start_date']]; } if ($param['end_date']) { $w[] = ['addtime','<=',$param['end_date']]; } if ($param['keyword']) { $w[] = ['name','like','%'.$param['keyword'].'%']; } $root_id = $token['root_id']; $list = Recruit::with(['employee'=>function($query) use ($root_id){ $query->where("recruit is not null AND recruit <> '' AND state <> '待审核' AND root_id=".$root_id)->visible(['id']); }])->where($w)->page($param['page'],$param['limit'])->select()->toArray(); foreach ($list as $k => &$v) { $list[$k]['pass'] = $list[$k]['no_pass'] = $list[$k]['count'] = 0; if (!empty($v['employee'])) { $w1 = []; $w1[] = ['employee_id','in',array_column($v['employee'],'id')]; $w1[] = ['root_id','=',$root_id]; $employees = CampEmployee::where($w1)->field('state,approve')->group('employee_id')->select(); // echo $employees;die; foreach ($employees as $k2 => &$v2) { $v2['state'] == '转正' ? $list[$k]['pass']+=1 : $list[$k]['no_pass']+=1; } } $list[$k]['count']= count($v['employee']); $list[$k]['growth'] = $list[$k]['pass']==0 ? '0%' : round($list[$k]['pass']/$list[$k]['count']*100,2).'%'; } $count = Recruit::where($w)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /** * 邀请码 */ public function add() { $token = request()->employee; $name = input('value',''); $w[] = ['root_id','=',$token['root_id']]; $w[] = ['name','=',trim($name)]; $count = Recruit::where($w)->count(); if ($count) return json(['code' =>1, 'data' => '人事已存在' ,'msg' => '人事已存在']); $save['name'] = trim($name); $save['root_id'] = $token['root_id']; $id = Recruit::insertGetId($save); $accessToken = ''; // 二维码生成到企业小程序设置中 $defaultAccesstoken = Miniprogram::where([['root_id', '=',$token['root_id']]])->find(); $miniQr = new Qrcode(); // 1)管理员二维码 $qr = $miniQr->getUnlimited($defaultAccesstoken->accesstoken, [ 'scene' => 'cgi='.$defaultAccesstoken->notify.'&manager=' . $token['root_id'].'&r='.$id, 'page' => 'mycustomer/pages/invite/invite', 'width' => '280px', 'check_path' => false ]); $rs = json_decode($qr, true); if (!is_null($rs)) { trace($rs, 'error'); return json(['code' => 1, 'msg' => '配置失败,appid,secret不正确或小程序业务域名未配置']); } $managerQr = 'invite' . DIRECTORY_SEPARATOR . uniqid() . '.jpeg'; ossContentUpload($managerQr, $qr); $save['manager_qr'] = $managerQr; // 2)员工二维码 $qr = $miniQr->getUnlimited($defaultAccesstoken->accesstoken, [ 'scene' => 'cgi='.$defaultAccesstoken->notify.'&employee=' . $token['root_id'].'&r='.$id, 'page' => 'mycustomer/pages/invite/invite', 'width' => '280px', 'check_path' => false ]); $rs = json_decode($qr, true); if (!is_null($rs)) { return json(['code' => 1, 'msg' => '配置失败,appid,secret不正确或小程序业务域名未配置']); } $employeeQr = 'invite' . DIRECTORY_SEPARATOR . uniqid() . '.jpeg'; ossContentUpload($employeeQr, $qr); $save['employee_qr'] = $employeeQr; Recruit::where('id',$id)->update(['employee_qr'=>$employeeQr,'manager_qr'=>$managerQr]); return json(['code' => 0, 'data' => '添加成功', 'msg' => '添加成功']); } /** * 邀请码 */ public function recruitment_qr() { $token = request()->employee; $id = input('name',''); $info = Recruit::where('id',$id)->find(); $data['managerQr'] = $info->manager_qr; $data['employeeQr'] = $info->employee_qr; View::assign('data',$data); return View::fetch(); } /** * 招聘人员 */ public function personal() { $token = request()->employee; $name = input('name',''); View::assign('name',$name); return View::fetch(); } /** * 招聘人员liebiao */ public function personal_list() { $token = request()->employee; $name = input('name',''); $param = Request::only(['page'=>1, 'limit'=>10, 'start_date'=>'','end_date'=>'','keyword'=>'']); $w[] = ['root_id','=',$token['root_id']]; $w[] = ['recruit','=',trim($name)]; if ($param['keyword']) { $w[] = ['name','like','%'.$param['keyword'].'%']; } if ($param['start_date']) { $w[] = ['addtime','>=',$param['start_date']]; } if ($param['end_date']) { $w[] = ['addtime','<=',$param['end_date']]; } $list = Employee::with(['org'=>function($query){ $query->visible(['name'])->bind(['org_name'=>'name']); }])->where($w)->field('id,name,org_id,addtime,opt_name')->page($param['page'],$param['limit'])->select()->toArray(); $counts = Employee::where($w)->count(); foreach ($list as $k => $v) { $list[$k]['name'] = $v['name'] ?: $v['opt_name']; $w1 = []; $w1[] = ['employee_id','=',$v['id']]; $w1[] = ['root_id','=',$token['root_id']]; // $w1[] = ['now','=',1]; $camp = CampEmployee::where($w1)->order('id asc')->field('camp_id,state')->findOrEmpty(); if (!$camp->isEmpty()) { $camp_id = $camp->camp_id; $list[$k]['state'] = $camp->state=='转正' ? '转正' : '未通过'; $pw = []; $pw[] = ['root_id','=',$token['root_id']]; $pw[] = ['camp_id','=',$camp_id]; $pw[] = ['con_id','>',0]; $pw[] = ['plan_id','>',0]; $pw[] = ['del','=',0]; $plan = CampPlan::where($pw)->order('id asc')->select()->toArray(); $count = count($plan);//总节数 $w0 = $w1 = [];//0课程,1试卷 foreach ($plan as $k3 => $v3) { $v3['type']==0 ? $w0[]=$v3['con_id'] : $w1[]=$v3['con_id']; } $tw = []; $tw[] = ['class_id','in',$w0]; $tw[] = ['root_id','=',$token['root_id']]; $tw[] = ['from','=',1]; $tw[] = ['employee_id','=',$v['id']]; $tw[] = ['done_percent','=',100]; $train = TrainDoneLog::where($tw)->count(); $ew = []; $ew[] = ['paper_id','in',$w1]; $ew[] = ['root_id','=',$token['root_id']]; $ew[] = ['from','=',1]; $ew[] = ['employee_id','=',$v['id']]; // $paper = ExamEmpResult::where($ew)->count(); $paper = ExamEmpResult::with('paper')->where($ew)->select()->toArray(); $i = 0; foreach ($paper as $k6 => $v6) { if ($v6['base_score'] <= $v6['final_score']) { $i+=1; } } $passed_count = $train+$i; $list[$k]['speed'] = $count ? round(($passed_count/$count)*100,2).'%' : '0%'; }else{ $list[$k]['speed'] = ''; $list[$k]['state'] = '未训练'; } } return json(['code' => 0, 'data' =>$list, 'count'=>$counts,'msg' => '添加成功']); } /** * 通过人员 */ public function pass_personal() { $token = request()->employee; $name = input('name',''); View::assign('name',$name); return View::fetch(); } /** * 通过人员列表 */ public function pass_personal_list() { $token = request()->employee; $param = Request::only(['page'=>1, 'limit'=>10, 'start_date'=>'','end_date'=>'','keyword'=>'']); $w[] = ['root_id','=',$token['root_id']]; $name = input('name',''); // $w[] = ['state','=','转正']; if ($param['start_date']) { $w[] = ['approve_time','>=',$param['start_date']]; } if ($param['end_date']) { $w[] = ['approve_time','<=',$param['end_date']]; } $camp = CampEmployee::where($w)->group('employee_id')->field('employee_id,state,approve_time')->select()->toArray(); $ids = []; $row = []; foreach ($camp as $k => $v) { if ($v['state']=='转正') { $ids[] = $v['employee_id']; $row[$v['employee_id']] = $v['approve_time']; } } if ($param['keyword']) { $w1[] = ['name','like','%'.$param['keyword'].'%']; } $w1[] = ['id','in',$ids]; $w1[] = ['recruit','=',$name]; $list = Employee::where($w1)->field('name,id')->page($param['page'],$param['limit'])->select()->toArray(); foreach ($list as $k => $v) { $list[$k]['approve_time'] = $row[$v['id']]; } $count = Employee::where($w1)->count(); return json(['code' => 0, 'data' =>$list, 'count'=>$count,'msg' => '添加成功']); } /** * 未通过人员 */ public function no_pass_personal() { $token = request()->employee; $name = input('name',''); View::assign('name',$name); return View::fetch(); } /** * 未通过人员 */ public function no_pass_personal_list() { $token = request()->employee; $param = Request::only(['page'=>1, 'limit'=>10, 'start_date'=>'','end_date'=>'','keyword'=>'']); $w[] = ['root_id','=',$token['root_id']]; $name = input('name',''); $camp = CampEmployee::where($w)->group('employee_id')->field('employee_id,state,approve_time')->select()->toArray(); $ids = []; $row = []; foreach ($camp as $k => $v) { if ($v['state']!='转正') { $ids[] = $v['employee_id']; $row[$v['employee_id']] = $v['approve_time']; } } if ($param['keyword']) { $w1[] = ['name','like','%'.$param['keyword'].'%']; } if ($param['start_date']) { $w1[] = ['addtime','>=',$param['start_date']]; } if ($param['end_date']) { $w1[] = ['addtime','<=',$param['end_date']]; } $w1[] = ['id','in',$ids]; $w1[] = ['recruit','=',$name]; $list = Employee::with(['org'=>function($query){ $query->visible(['name'])->bind(['org_name'=>'name']); }])->where($w1)->field('name,id,addtime,org_id')->page($param['page'],$param['limit'])->select()->toArray(); $count = Employee::where($w1)->count(); return json(['code' => 0, 'data' =>$list, 'count'=>$count,'msg' => '添加成功']); } }