123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182 |
- <?php
- namespace app\sys\controller;
- use think\facade\View;
- use think\facade\Request;
- use think\facade\Db;
- use app\model\Employee;
- use app\model\Customer;
- use app\model\Org;
- use app\model\Permission;
- use app\model\Camp as CampModel;
- use app\model\ExamEmpResult;
- use app\model\TrainDoneLog;
- use app\model\CampPlan;
- use app\model\CampEmployee;
- use app\model\TrainClass;
- use app\model\ExamPaper;
- class Camp
- {
- /**
- * 新增训练计划列表
- */
- public function index()
- {
- $token = request()->employee;
- $w[] = ['del','=',0];
- $w[] = ['root_id','=',$token['root_id']];
- // var_dump($res);die;
- $data['plan_count'] = $data['person_time'] = $data['passed_count'] = $data['no_passed_count'] = $data['reviewed'] = 0;
- $data['plan_count'] = CampModel::where($w)->count();
- $wp[] = ['root_id','=',$token['root_id']];
- // $wp[] = ['now','=',1];
- $data['person_time'] = CampEmployee::where($wp)->count();
- $pw[] = ['root_id','=',$token['root_id']];
- $pw[] = ['state','in',['转正']];
- // $pw[] = ['now','=',1];
- $data['passed_count'] = CampEmployee::where($pw)->count();
- // $pcw[] = ['root_id','=',$token['root_id']];
- // $pcw[] = ['state','in',['考核未通过']];
- // $pcw[] = ['now','=',1];
- // $data['no_passed_count'] = CampEmployee::where($pcw)->count();
- $data['no_passed_count'] = $data['person_time']-$data['passed_count'];
- $pcww[] = ['root_id','=',$token['root_id']];
- $pcww[] = ['approve','=',1];
- $pcww[] = ['now','=',1];
- $data['reviewed'] = CampEmployee::where($pcww)->count();
- view::assign('data',$data);
- return View::fetch();
- }
- /**
- * 列表
- * 训练中,已通过,未通过,待审核,转正/离职
- */
- public function list()
- {
- $token = request()->employee;
- $param = Request::only(['page', 'limit', 'keyword','pattern','camp_id'=>0,'type'=>0]);
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['del','=',0];
- if (isset($param['pattern']) && $param['pattern']!=='') {
- $w[] = ['pattern','=',$param['pattern']];
- }
- $w[] = ['id','<>',$param['camp_id']];
- if(!empty($param['keyword'])) $w[] = ['title','like','%'.$param['keyword'].'%'];
- //排除没有计划的训练营
- if ($param['type']==1) {
- $tw = [];
- $tw[] = ['root_id','=',$token['root_id']];
- $tw[] = ['del','=',0];
- $camp_id = CampPlan::where($tw)->group('camp_id')->column('camp_id');
- $w[] = ['id','in',$camp_id];
- }
- $list = CampModel::with(['campEmployee'=>function($query){
- $query->where('now',1)->visible(['state']);
- },'campPlan'=>function($query){
- $query->where([['del','=',0]]);
- }])->where($w)->page($param['page'],$param['limit'])->order('id desc')->select();
- $count = CampModel::where($w)->count();
- foreach ($list as $k => $v) {
- $arr = array_column($v['campEmployee']->toArray(),'state');
- $list[$k]['employee_count'] = count($arr);
- // $arr = (array)$v['campEmployee'];
- $arr = array_count_values($arr);
- // //训练中人数
- $x = isset($arr['训练中']) ? $arr['训练中'] : 0;
- $list[$k]['complete_count'] = $list[$k]['employee_count']-$x;
- $list[$k]['fail_count'] = isset($arr['未通过']) ? $arr['未通过'] : 0;
- }
- return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']);
- }
- /**
- * 判断训练营是否能完成
- * 1能完成 0完不成
- */
- public function check($id = 0)
- {
- $token = request()->employee;
- $info = CampModel::where([['root_id','=',$token['root_id']],['id','=',$id],['pattern','=',0]])->findOrEmpty();
- if($info->isEmpty()) return json(['code' => 0, 'data' => 1, 'msg' => '']);
- $day = (strtotime($info->end_date) - strtotime($info->start_date))/86400;
- $day = $day+1;
- $count = CampPlan::where([['camp_id','=',$id],['root_id','=',$token['root_id']],['plan_id','=',0],['del','=',0]])->count();
- $days = $info->day==1 ? ($info->day * $count) : ($info->day * $count-1);
- $res = $days<=$day ? 1 : 0;
- return json(['code' => 0, 'data' => $res, 'msg' => '']);
- }
- /**
- * 训练营人员列表
- */
- public function personnel()
- {
- $token = request()->employee;
- $orgs = Org::where([['path', 'like', $token['root_id'] . '-%']])->column('name,id');
- view::assign('org',$orgs);
- $w[] = ['del','=',0];
- $w[] = ['root_id','=',$token['root_id']];
- // var_dump($res);die;
- $data['plan_count'] = $data['person_time'] = $data['passed_count'] = $data['no_passed_count'] = $data['reviewed'] = 0;
- $data['plan_count'] = CampModel::where($w)->count();
- $wp[] = ['root_id','=',$token['root_id']];
- // $wp[] = ['now','=',1];
- $data['person_time'] = CampEmployee::where($wp)->count();
- $pw[] = ['root_id','=',$token['root_id']];
- $pw[] = ['state','in',['转正']];
- // $pw[] = ['now','=',1];
- $data['passed_count'] = CampEmployee::where($pw)->count();
- // $pcw[] = ['root_id','=',$token['root_id']];
- // $pcw[] = ['state','in',['考核未通过']];
- // $pcw[] = ['now','=',1];
- // $data['no_passed_count'] = CampEmployee::where($pcw)->count();
- $data['no_passed_count'] = $data['person_time']-$data['passed_count'];
- $pcww[] = ['root_id','=',$token['root_id']];
- $pcww[] = ['approve','=',1];
- $pcww[] = ['now','=',1];
- $data['reviewed'] = CampEmployee::where($pcww)->count();
- view::assign('data',$data);
- return View::fetch();
- }
- /**
- * 转正审核列表
- */
- public function verify()
- {
- $token = request()->employee;
- $w[] = ['del','=',0];
- $w[] = ['root_id','=',$token['root_id']];
- // var_dump($res);die;
- $data['plan_count'] = $data['person_time'] = $data['passed_count'] = $data['no_passed_count'] = $data['reviewed'] = 0;
- $data['plan_count'] = CampModel::where($w)->count();
- $wp[] = ['root_id','=',$token['root_id']];
- // $wp[] = ['now','=',1];
- $data['person_time'] = CampEmployee::where($wp)->count();
- $pw[] = ['root_id','=',$token['root_id']];
- $pw[] = ['state','in',['转正']];
- // $pw[] = ['now','=',1];
- $data['passed_count'] = CampEmployee::where($pw)->count();
- // $pcw[] = ['root_id','=',$token['root_id']];
- // $pcw[] = ['state','in',['考核未通过']];
- // $pcw[] = ['now','=',1];
- // $data['no_passed_count'] = CampEmployee::where($pcw)->count();
- $data['no_passed_count'] = $data['person_time']-$data['passed_count'];
- $pcww[] = ['root_id','=',$token['root_id']];
- $pcww[] = ['approve','=',1];
- $pcww[] = ['now','=',1];
- $data['reviewed'] = CampEmployee::where($pcww)->count();
- view::assign('data',$data);
- $orgs = Org::where([['path', 'like', $token['root_id'] . '-%']])->column('name,id');
- view::assign('org',$orgs);
- return View::fetch();
- }
- /**
- * 已完成人员
- */
- public function complete()
- {
- return View::fetch();
- }
- /**
- * 未通过人员
- */
- public function nopass()
- {
- return View::fetch();
- }
- /**
- * 数据统计
- */
- public function datastatistics()
- {
- $camp_id = input('id',0);
- $token = request()->employee;
- $w[] = ['camp_id','=',$camp_id];
- // $w[] = ['now','=',1];
- $employees = CampEmployee::where($w)->column('*');
- $eids = $employees ? array_column($employees,'employee_id') : [];
- $data['count'] = $data['passed_count'] = $data['zhuanzheng_count'] = 0;
- $data['count'] = count($employees);
- foreach ($employees as $v) {
- if ($v['state']=='转正') {
- $data['zhuanzheng_count']+=1;
- }
- }
- $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();
- $w0 = $w1 = [];//0课程,1试卷
- foreach ($plan as $k2 => $v2) {
- $v2['type']==0 ? $w0[]=$v2['con_id'] : $w1[]=$v2['con_id'];
- }
- $tw[] = ['class_id','in',$w0];
- $tw[] = ['root_id','=',$token['root_id']];
- $tw[] = ['from','=',1];
- $tw[] = ['employee_id','in',$eids];
- $train = TrainDoneLog::where($tw)->count();
- $ew[] = ['paper_id','in',$w1];
- $ew[] = ['root_id','=',$token['root_id']];
- $ew[] = ['from','=',1];
- $ew[] = ['employee_id','in',$eids];
- $paper = ExamEmpResult::where($ew)->count();
- $data['passed_count'] = $train+$paper;
- $data['gathw'] = $data['count']==0 ? '0%' : round($data['zhuanzheng_count']/$data['count']*100,2).'%';
- view::assign('data',$data);
- view::assign('camp_id',$camp_id);
- $where = [
- ['path', 'like', $token['root_id'] . '-%'],
- ['status', '=', 1]
- ];
- //已经指派的部门
- $eids = CampEmployee::where([['camp_id','=',$camp_id]])->group('employee_id')->column('employee_id');
- $org_ids = Employee::where([['id','in',$eids]])->column('org_id');
- $org = Org::where($where)->where([['id','in',$org_ids]])->order('level asc, id asc')->column("id,name");
- view::assign('org',$org);
- return View::fetch();
- }
- /**
- * 数据统计页面列表
- */
- public function datastatistics_list()
- {
- $camp_id = input('id',0);
- $param = Request()->only(['page', 'limit','org_id'=>0,'keyword'=>'']);
- $token = request()->employee;
- $w[] = ['camp_id','=',$camp_id];
- // $w[] = ['now','=',1];
- if ($param['org_id'] || $param['keyword']) {
- if($param['org_id']) $ws[] = ['org_id','=',$param['org_id']];
- if($param['keyword']) $ws[] = ['name','like','%'.$param['keyword'].'%'];
- $eids = Employee::where($ws)->column('id');
- $w[] = ['employee_id','in',$eids];
- }
- $employees = CampEmployee::with(['employee'=>function($query){
- $query->bind(['name','org_id']);
- }])->where($w)->page($param['page'],$param['limit'])->field('id,employee_id,addtime')->select()->toArray();
- $count = CampEmployee::where($w)->count();
- $orgs = Org::where([['id','in',array_column($employees,'org_id')]])->column('name','id');
- foreach ($employees as $k => $v) {
- unset($employees[$k]['employee']);
- $employees[$k]['org_name'] = isset($orgs[$v['org_id']]) ? $orgs[$v['org_id']] : '';
- $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();
- $w0 = $w1 = [];//0课程,1试卷
- foreach ($plan as $k2 => $v2) {
- $v2['type']==0 ? $w0[]=$v2['con_id'] : $w1[]=$v2['con_id'];
- }
- $tw[] = ['class_id','in',$w0];
- $tw[] = ['root_id','=',$token['root_id']];
- $tw[] = ['from','=',1];
- $tw[] = ['employee_id','=',$v['employee_id']];
- $train = TrainDoneLog::where($tw)->count();
- $ew[] = ['paper_id','in',$w1];
- $ew[] = ['root_id','=',$token['root_id']];
- $ew[] = ['from','=',1];
- $ew[] = ['employee_id','=',$v['employee_id']];
- $paper = ExamEmpResult::where($ew)->count();
- $passed_count = $train+$paper;
- $employees[$k]['speed'] = count($plan)==0 ? '0%' : round($passed_count/count($plan)*100,2).'%';
- }
- return json(['code' => 0,'data'=>$employees,'count'=>$count,'msg' => '']);
- }
- /**
- * 创建训练营
- */
- public function createtrainingcamp()
- {
- return View::fetch();
- }
- /**
- * 创建训练营
- */
- public function createtrainingcamp_add()
- {
- $token = request()->employee;
- $param = Request()->only(['title', 'start_date','end_date','day','time','pattern']);
- $param['root_id'] = $token['root_id'];
- CampModel::insertGetId($param);
- return json(['code' => 0,'data'=>'添加成功','msg' => '添加成功']);
- }
- /**
- * 编辑训练营
- */
- public function edittrainingcamp()
- {
- $param = Request()->only(['id']);
- $token = request()->employee;
- $w[] = ['id','=',$param['id']];
- $w[] = ['root_id','=',$token['root_id']];
- $info = CampModel::where($w)->find()->toArray();
- view::assign('data',$info);
- return View::fetch();
- }
- /**
- * 编辑训练营
- */
- public function edittrainingcamp_edit()
- {
- $id = input('id',0);
- $param = Request()->only(['title', 'start_date','end_date','day','time','pattern']);
- $token = request()->employee;
- $w[] = ['id','=',$id];
- $w[] = ['root_id','=',$token['root_id']];
- $info = CampModel::where($w)->update($param);
- return json(['code' => 0,'data'=>'修改成功','msg' => '修改成功']);
- }
- /**
- * 设置训练营
- */
- public function settrainingcamp()
- {
- $id = input('id');
- view::assign('id',$id);
- return View::fetch();
- }
- /**
- * 选择课件列表
- */
- public function class_choice_course()
- {
- $id = input('camp_id',0);
- view::assign('camp_id',$id);
- $taskIds = input('taskIds','');
- view::assign('taskIds',$taskIds);
- return View::fetch();
- }
- /**
- * 选择试卷列表
- */
- public function choice_test_paper()
- {
- $id = input('camp_id',0);
- view::assign('camp_id',$id);
- $taskIds = input('taskIds','');
- view::assign('taskIds',$taskIds);
- return View::fetch();
- }
- /**
- * 训练对象
- */
- public function training_object()
- {
- if (!Request::isAjax()) {
- $id = Request::param('id');
- View::assign('id',$id);
- return View::fetch();
- }
- $id = Request::param('id');//计划id
- $pid = Request::param('pid');//多选框选中id
- $type = Request::param('type');//选中类型,人/部门
- $res = Request::param('res',1);//选择结果 1选中,0取消
- $data = [];
- $dw[] = ['root_id','=',request()->employee->root_id];
- $dw[] = ['now','=',1];//最新状态
- $info = CampEmployee::where($dw)->column('employee_id');
- $a = 0;
- if ($type=='per' && $pid) {
- $ids = explode(',',$pid);
- foreach($ids as $i){
- $data[] = 'per_'.$i;
- }
- $pid = $ids;
- //$data[] = 'per_'.$pid;
- //$pid = [$pid];
- $a = 1;
- }elseif ($type=='org' && $pid) {
- $data[] = 'org_'.$pid;
- $org = Org::where([['id','=',$pid]])->value('path');
- $orgs = Org::where([['path','like',$org.'%']])->column('id');
- $pid = Employee::where(['root_id'=>request()->employee->root_id,'org_id'=>$orgs,'state'=>'在职'])->order('is_manager desc,id desc')->column('id');
- $a = 1;
- foreach ($pid as $v) {
- $data[] = 'per_'.$v;
- }
- foreach ($orgs as $v2) {
- $data[] = 'org_'.$v2;
- }
- }
- if ($a && $pid) {
- if($res){
- $cw[] = ['root_id','=',request()->employee->root_id];
- $cw[] = ['employee_id','in',$pid];
- CampEmployee::where($cw)->update(['now'=>0]);
- foreach ($pid as $v) {
- $save = [];
- $save['root_id'] = request()->employee->root_id;
- $save['camp_id'] = $id;
- $save['employee_id'] = $v;
- $save['now'] = 1;
- $check = CampEmployee::where($save)->find();
- $save['state'] = '训练中';
- if ($check) {
- CampEmployee::where('id',$check->id)->update($save);
- }else{
- CampEmployee::insert($save);
- }
- }
- }else{
- CampEmployee::where([['camp_id','=',$id],['root_id','=',request()->employee->root_id],['employee_id','in',$pid],['approve','=',0]])->delete();
- }
- // //指派后历史答卷作废
- // //历史学习的课程和考试修改
- // $token = request()->employee;
- // $info = CampModel::with('campPlan')->where('id',$id)->find();
- // $w0 = $w1 = [];//0课程,1试卷
- // foreach ($info->campPlan->toArray() as $k4 => $v4) {
- // $v4['type']==0 ? $w0[]=$v4['con_id'] : $w1[]=$v4['con_id'];
- // }
- // $tw = $ew = [];
- // // $tw[] = ['class_id','in',$w0];
- // $tw[] = ['root_id','=',$token['root_id']];
- // $tw[] = ['from','=',1];
- // $tw[] = ['employee_id','in',$pid];
- // $train = TrainDoneLog::where($tw)->update(['from'=>2]);
- // // $ew[] = ['paper_id','in',$w1];
- // $ew[] = ['root_id','=',$token['root_id']];
- // $ew[] = ['from','=',1];
- // $ew[] = ['employee_id','in',$pid];
- // $paper = ExamEmpResult::where($ew)->update(['from'=>2]);
- }
- return json(['code' => 0, 'data' => $data]);
- }
- /**
- * 确认指派人员
- */
- public function confirm_assigns()
- {
- $id = Request::param('id');//计划id
- $empids = Request::param('empids');//多选框选中id
- $root_id = request()->employee->root_id;
- $dw[] = ['root_id','=',$root_id];
- $dw[] = ['id','=',$id];//最新状态
- $info = CampModel::where($dw)->count();
- if(empty($info)) return json(['code'=>1,'msg'=>'数据不存在']);
- if(!empty($empids)){
- $empids = explode(',',$empids);
- $check = CampEmployee::where([['camp_id','=',$id],['root_id','=',request()->employee->root_id],['employee_id','in',$empids],['state','<>','转正']])->count();
- if($check != count($empids)) return json(['code'=>1,'msg'=>'确认人员失败']);
- $tw[] = ['root_id','=',$root_id];
- $tw[] = ['from','=',1];
- $tw[] = ['employee_id','in',$empids];
- TrainDoneLog::where($tw)->update(['from'=>2]);
- ExamEmpResult::where($tw)->update(['from'=>2]);
- }
- return json(['code' => 0, 'msg' => '确认训练对象成功']);
- }
- /*
- * 课程指派展示列表
- */
- public function class_assigns_list()
- {
- $id = Request::param('id');
- $page = Request::param('page') ?: 1;
- $limit = Request::param('limit') ?: 10;
- $keyword = Request::param('keyword') ?: '';
- if ($keyword) {
- $w[] = ['name','like','%'.$keyword.'%'];
- }
- $arr = CampEmployee::where(['root_id'=>request()->employee->root_id , 'camp_id'=>$id,'now'=>1])->column('employee_id');
- $w[] = ['id','in',$arr];
- $data = Employee::with('orgName')->where($w)->visible(['name','org_name','id','is_manager'])->select()->toArray();
- $count = count($arr);
- $arr = array_flip($arr);
- foreach ($data as $k => $v) {
- $data[$k]['order'] = $arr[$v['id']];
- }
- array_multisort(array_column($data, 'order'), SORT_ASC, $data);
- foreach ($data as $k => $v) {
- $data[$k]['xh'] = $k+1;
- }
- $data = array_slice($data,($page-1)*$limit,$limit);
- return json(['code' => 0, 'data' => $data, 'count' => $count]);
- }
- //部门人员树
- public function tree($data,$pid = 0, $persons)
- {
- $new_arr = [];
- foreach($data as $k => $v){
- if($v['pid'] == $pid) {
- $persions = isset($persons[$v['id']])?$persons[$v['id']]:[];
- $children = $this->tree($data, $v['id'], $persons);
- $v['children'] = array_merge_recursive($children,$persions);
- if (empty($v['children'])) $v['disabled']=true;
- $new_arr[] =$v;
- }
- }
- return $new_arr;
- }
- /*
- * 培训人员
- */
- public function get_person($id)
- {
- $root_id = request()->employee->root_id;
- $keyword = input('keyword','');
- //所有员工
- $w1[] = ['root_id','=',$root_id];
- $w1[] = ['state','=','在职'];
- $w1[] = ['org_id','>',0];
- if ($keyword) {
- $w1[] = ['name','like','%'.$keyword.'%'];
- }
- $e = Employee::with(['org'=>function($query){
- $query->bind(['pid','level']);
- }])->where($w1)->field("id,name title,org_id,is_manager,concat('org_',org_id) org_class,concat('per_',id) per_class,concat('per') type")->order('is_manager desc,id desc')->select()->toArray();
- $count = $person = [];
- foreach ($e as $k3 => &$v3) {
- $v3['title'] = $v3['is_manager'] ? $v3['title'].'(负责人)' : $v3['title'];
- $count[$v3['org_id']] = isset($count[$v3['org_id']]) ? $count[$v3['org_id']]+=1 : 1;
- $v3['children'] = [];
- unset($e[$k3]['org']);
- $v3['count'] = 0;
- $person[$v3['org_id']][] = $e[$k3];
- }
- $where = [
- ['path', 'like', $root_id . '-%'],
- ['status', '=', 1]
- ];
- $org = Org::where($where)->field("id,pid,name title,level,org_type,info,path,concat('org_',id) org_class,concat('per_org_',id) per_class,concat('org') type,id org_id,concat(2) is_manager")->order('level asc, id asc')->select()->toArray();
- foreach ($org as $k => $v) {
- $org[$k]['count'] = isset($count[$v['id']]) ? $count[$v['id']] : 0;//本部门人数
- $org[$k]['all_count'] = 0;//包含子部门总数
- foreach ($org as $k2 => $v2) {
- if (strpos($v2['path'],$v['path']) !== false) {
- $org[$k]['all_count'] = isset($count[$v2['id']]) ? $count[$v2['id']]+$org[$k]['all_count'] : $org[$k]['all_count'];
- }
- }
- $org[$k]['title'] = $org[$k]['title'].' ('.$org[$k]['all_count'].')';
- }
- // $data = array_merge($e,$org);
- $data = $this->tree($org,0,$person);
- $cew[] = ['root_id','=',request()->employee->root_id];
- // $cew[] = ['camp_id','=',$id];
- $cew[] = ['now','=',1];
- $cew[] = ['state','<>','转正'];
- $camps = CampModel::where([['root_id','=',$root_id],['del','=',0]])->column('id');
- $cew[] = ['camp_id','in',$camps];
- $eids = CampEmployee::where($cew)->column('employee_id');
- $ow = $eids;
- $ew[] = ['id','in',$ow];
- $ew[] = ['root_id','=',request()->employee->root_id];
- $orgs = Employee::where($ew)->group('org_id')->column('count(*) count','org_id');
- return json(['code' => 0, 'data' => $data, 'checkOrg' =>implode(',',$eids),'orgs'=>$orgs]);
- }
- /*
- * 课程指派展示列表
- */
- public function del_assign()
- {
- $id = Request::param('id');
- $eid = Request::param('eid');
- if ($id && $eid) {
- if ($eid == -1) {
- CampModel::where(['root_id'=>request()->employee->root_id , 'id'=>$id])->update(['employee_ids'=>'']);
- }else{
- $arr = CampModel::where(['root_id'=>request()->employee->root_id , 'id'=>$id])->value('employee_ids');
- $arr = array_filter(array_diff(explode(',',$arr),[$eid]));
- CampModel::where(['root_id'=>request()->employee->root_id , 'id'=>$id])->update(['employee_ids'=>implode(',',$arr)]);
- }
- }
- return json(['code' => 0, 'data' => '取消成功', 'msg' => '取消成功']);
- }
- /**
- * 删除
- */
- public function camp_del()
- {
- $id = input('id',0);
- $root_id = request()->employee->root_id;
- $w[]= ['id','=',$id];
- $w[] = ['root_id','=',$root_id];
- CampModel::where($w)->update(['del'=>1]);
- $w = [];
- $w[] = ['camp_id','=',$id];
- CampEmployee::where($w)->update(['now'=>0]);
- return json(['code' => 0, 'data' => '删除成功', 'msg' => '删除成功']);
- }
- /**
- * 重选训练对象
- */
- public function reselect_train_plan()
- {
- $camp_id = input('camp_id',0);
- view::assign('camp_id',$camp_id);
- return View::fetch();
- }
- /**
- * 详情
- */
- public function read()
- {
- $id = input('id');
- $root_id = request()->employee->root_id;
- $w[]= ['camp_id','=',$id];
- $w[] = ['root_id','=',$root_id];
- $w[] = ['del','=',0];
- $info = CampPlan::where($w)->order('id asc')->select()->toArray();
- $data = [];
- foreach ($info as $k => $v) {
- if ($v['plan_id']==0) {
- $row = $v;
- $row['plan'] = [];
- foreach ($info as $k2 => $v2) {
- if ($v2['plan_id']==$v['id']) {
- $row['plan'][] = $v2;
- }
- }
- $data[] = $row;
- }
- }
-
- return json(['code' => 0, 'data' =>$data, 'msg' => '']);
- }
- /**
- * 新增计划
- */
- public function add()
- {
- $param = Request()->only(['camp_id', 'plan_name']);
- $token = request()->employee;
- $w[] = ['title','=',$param['plan_name']];
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['camp_id','=',$param['camp_id']];
- $w[] = ['del','=',0];
- $info = CampPlan::where($w)->find();
- if ($info) {
- return json(['code' => 1, 'data' =>'计划已存在', 'msg' => '计划已存在']);
- }
- $save['title'] = $param['plan_name'];
- $save['root_id'] = $token['root_id'];
- $save['camp_id'] = $param['camp_id'];
- $info = CampPlan::insertGetId($save);
- return json(['code' => 0, 'data' =>'添加成功', 'msg' => '添加成功']);
- }
- /**
- * 编辑计划
- */
- public function edit()
- {
- $param = Request()->only(['camp_id', 'plan_name','id']);
- $token = request()->employee;
- $w[] = ['id','=',$param['id']];
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['camp_id','=',$param['camp_id']];
- $w[] = ['plan_id','=',0];
- $w[] = ['del','=',0];
- $info = campPlan::where($w)->find();
- if (!$info) {
- return json(['code' => 1, 'data' =>'计划不存在', 'msg' => '计划不存在']);
- }
- $s = $w;
- $w = [];
- $w[] = ['id','<>',$param['id']];
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['camp_id','=',$param['camp_id']];
- $w[] = ['plan_id','=',0];
- $w[] = ['del','=',0];
- $w[] = ['title','=',$param['plan_name']];
- $info = campPlan::where($w)->find();
- if ($info) {
- return json(['code' => 1, 'data' =>'名称重复', 'msg' => '名称重复']);
- }
- CampPlan::where($s)->update(['title'=>$param['plan_name']]);
- return json(['code' => 0, 'data' =>'编辑成功', 'msg' => '编辑成功']);
- }
- /**
- * 获取课程
- */
- public function train_class()
- {
- $param = Request()->only(['category','type','keyword','page','limit','camp_id','taskIds'=>'']);
- $token = request()->employee;
- $where[] = ['root_id','=',$token['root_id']];
- $where[] = ['publish','=',1];
- if (!empty($param['keyword'])) {
- $where[] = ['title','like','%'.$param['keyword'].'%'];
- }
- if (!empty($param['category'])) {
- $where[] = ['category','=',$param['category']];
- }
- if (!empty($param['type'])) {
- $where[] = ['type','=',$param['type']];
- }
- //
- $t[] = ['camp_id','=',$param['camp_id']];
- $t[] = ['root_id','=',$token['root_id']];
- $t[] = ['type','=',0];
- $t[] = ['del','=',0];
- $ids = CampPlan::where($t)->column('con_id');
- $ids = $param['taskIds'] ? array_merge($ids,explode(',',$param['taskIds'])) : $ids;
- $where[] = ['id','not in',$ids];
- $data = trainClass::where($where)->field('id,title,des')->page($param['page'],$param['limit'])->select()->toArray();
- $count = trainClass::where($where)->count();
- return json(['code' => 0, 'data' =>$data,'count'=>$count, 'msg' => '']);
- }
- /**
- * 获取试卷
- */
- public function exam_list()
- {
- $param = Request()->only(['checkway','page','limit','camp_id','taskIds'=>'']);
- $token = request()->employee;
- $where[] = ['root_id','=',$token['root_id']];
- $where[] = ['state','=',1];
- if (!empty($param['keyword'])) {
- $where[] = ['name','like','%'.$param['keyword'].'%'];
- }
- if (!empty($param['checkway'])) {
- $where[] = ['checkway','=',$param['checkway']];
- }
- $t[] = ['camp_id','=',$param['camp_id']];
- $t[] = ['root_id','=',$token['root_id']];
- $t[] = ['type','=',1];
- $t[] = ['del','=',0];
- $ids = CampPlan::where($t)->column('con_id');
- $ids = $param['taskIds'] ? array_merge($ids,explode(',',$param['taskIds'])) : $ids;
- $where[] = ['id','not in',$ids];
- $data = examPaper::where($where)->field('id,name,desc,duringtime,total_score,base_score')->page($param['page'],$param['limit'])->select()->toArray();
- $count = examPaper::where($where)->count();
- return json(['code' => 0, 'data' =>$data,'count'=>$count, 'msg' => '']);
- }
- /**
- * 增加计划内容
- */
- public function add_plan()
- {
- $param = Request()->only(['camp_id','type','plan_id','con_name','con_id']);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['camp_id','=',$param['camp_id']];
- $w[] = ['type','=',$param['type']];
- $w[] = ['plan_id','=',$param['plan_id']];
- $w[] = ['con_id','=',$param['con_id']];
- $w[] = ['del','=',0];
- $info = CampPlan::where($w)->find();
- if ($info) {
- return json(['code' => 1, 'data' =>'培训已存在', 'msg' => '培训已存在']);
- }
- $save['root_id'] = $token['root_id'];
- $save['camp_id'] = $param['camp_id'];
- $save['type'] = $param['type'];
- $save['plan_id'] = $param['plan_id'];
- $save['title'] = $param['con_name'];
- $save['con_id'] = $param['con_id'];
- CampPlan::insertGetId($save);
- return json(['code' => 0, 'data' =>'保存成功', 'msg' => '保存成功']);
- }
- /**
- * 增加计划内容
- */
- public function edit_plan()
- {
- $param = Request()->only(['id','plan_id','type','con_name','con_id']);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['id','=',$param['id']];
- $w[] = ['plan_id','=',$param['plan_id']];
- $w[] = ['del','=',0];
- $info = CampPlan::where($w)->find();
- $id = $info->id;
- if (!$info) {
- return json(['code' => 1, 'data' =>'数据不存在', 'msg' => '数据不存在']);
- }
- $w = [];
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['id','<>',$param['id']];
- // $w[] = ['plan_id','=',$param['plan_id']];
- $w[] = ['camp_id','=',$info->camp_id];
- $w[] = ['del','=',0];
- $w[] = ['con_id','=',$param['con_id']];
- $w[] = ['type','=',$param['type']];
- $info = CampPlan::where($w)->find();
- if ($info) {
- return json(['code' => 1, 'data' =>'重复选择', 'msg' => '重复选择']);
- }
- $u['title'] = $param['con_name'];
- $u['con_id'] = $param['con_id'];
- $u['type'] = $param['type'];
- CampPlan::where('id',$id)->update($u);
- return json(['code' => 0, 'data' =>'保存成功', 'msg' => '保存成功']);
- }
- /**
- * 训练营人员列表
- */
- public function employee()
- {
- $param = Request()->only(['id','page','limit','org_id'=>0,'approve'=>0]);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['now','=',1];
- if ($param['org_id']) {
- $eids = Employee::where('org_id',$param['org_id'])->column('id');
- $w[] = ['employee_id','in',$eids];
- }
- if ($param['approve']) {
- $w[] = ['approve','=',1];
- }
- $w[] = ['state','<>','转正'];
- $camps = CampModel::where([['root_id','=',$token['root_id']],['del','=',0]])->column('id');
- $w[] = ['camp_id','in',$camps];
- $res = CampEmployee::with(['employee'=>function($query){
- $query->bind(['name','org_id']);
- },'camp'=>function($query){
- $query->bind(['title']);
- }])
- ->where($w)
- ->field('id,camp_id,approve,state,employee_id,addtime,speed,approve_time')
- // ->fetchsql()
- ->select()->toArray();
- $orgs = Org::where([['path', 'like', $token['root_id'] . '-%']])->column('name','id');
- foreach ($res as $k => $v) {
- $res[$k]['org_name'] = isset($orgs[$v['org_id']]) ? $orgs[$v['org_id']] : '';
- unset($res[$k]['employee']);unset($res[$k]['camp']);
- }
- $countc = count($res);
- $data = array_slice($res,($param['page']-1)*$param['limit'],$param['limit']);
- foreach ($data as $k2 => $v2) {
- $pw = [];
- $pw[] = ['root_id','=',$token['root_id']];
- $pw[] = ['camp_id','=',$v2['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','=',$v2['employee_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','=',$v2['employee_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;
- $data[$k2]['speed'] = $count ? round(($passed_count/$count)*100,2).'%' : '0%';
- }
- return json(['code' => 0, 'data' =>$data,'count'=>$countc, 'msg' => '保存成功']);
- }
- /**
- * 重新指派
- */
- public function assign()
- {
- $param = Request()->only(['id','camp_id']);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['id','=',$param['id']];
- $check = CampEmployee::where($w)->order('now desc')->findOrEmpty();
- if ($check->isEmpty()) {
- return json(['code' => 1, 'data' =>'数据不存在','msg' => '数据不存在']);
- }
- $check->now = 0;
- $check->save();
- //历史学习的课程和考试修改
- $info = CampModel::with('campPlan')->where('id',$check->camp_id)->find();
- $w0 = $w1 = [];//0课程,1试卷
- foreach ($info->campPlan->toArray() as $k4 => $v4) {
- $v4['type']==0 ? $w0[]=$v4['con_id'] : $w1[]=$v4['con_id'];
- }
- $tw = $ew = [];
- // $tw[] = ['class_id','in',$w0];
- $tw[] = ['root_id','=',$token['root_id']];
- $tw[] = ['from','=',1];
- $tw[] = ['employee_id','=',$check->employee_id];
- $train = TrainDoneLog::where($tw)->update(['from'=>2]);
- // $ew[] = ['paper_id','in',$w1];
- $ew[] = ['root_id','=',$token['root_id']];
- $ew[] = ['from','=',1];
- $ew[] = ['employee_id','=',$check->employee_id];
- // var_dump($ew);die;
- $paper = ExamEmpResult::where($ew)->update(['from'=>2]);
- $u['state'] = '训练中';
- $u['now'] = 1;
- $u['speed'] = '';
- $u['camp_id'] = $param['camp_id'];
- $u['employee_id'] = $check->employee_id;
- $u['root_id'] = $check->root_id;
- CampEmployee::insertGetId($u);
- return json(['code' => 0, 'data' =>'指派成功','msg' => '保存成功']);
- }
- /**
- * 转正 0转正 ,1通过 ,3重新考核
- */
- public function worker()
- {
- $param = Request()->only(['id','type'=>0]);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['id','=',$param['id']];
- $w[] = ['now','=',1];
- $check = CampEmployee::where($w)->order('now desc')->find();
- if (!$check) {
- return json(['code' => 1, 'data' =>'数据不存在','msg' => '数据不存在']);
- }
- $u['state'] = '转正';
- $u['now'] = 1;
- // $u['speed'] = '100%';
- // $u['camp_id'] = $param['camp_id'];
- $u['approve'] = $param['type']==0 ? 4 : 2;
- $u['approve_time'] = date('Y-m-d H:i:s');
- if ($param['type']==3) {
- $u['state'] = '训练中';
- $u['speed'] = '';
- $u['approve'] = 0;
- $tw = $ew = [];
- // $tw[] = ['class_id','in',$w0];
- $tw[] = ['root_id','=',$token['root_id']];
- $tw[] = ['from','=',1];
- $tw[] = ['employee_id','=',$check->employee_id];
- $train = TrainDoneLog::where($tw)->update(['from'=>2]);
- // $ew[] = ['paper_id','in',$w1];
- $ew[] = ['root_id','=',$token['root_id']];
- $ew[] = ['from','=',1];
- $ew[] = ['employee_id','=',$check->employee_id];
- // var_dump($ew);die;
- $paper = ExamEmpResult::where($ew)->update(['from'=>2]);
- }else{
- $u['now'] = 0;
- }
-
- CampEmployee::where($w)->update($u);
- return json(['code' => 0, 'data' =>'操作成功','msg' => '操作成功']);
- }
- /**
- * 删除计划
- */
- public function del_plan()
- {
- $param = Request()->only(['id']);
- $token = request()->employee;
- $w[] = ['root_id','=',$token['root_id']];
- $w[] = ['id|plan_id','=',$param['id']];
- CampPlan::where($w)->update(['del'=>1]);
- return json(['code' => 0, 'data' =>'操作成功','msg' => '操作成功']);
- }
- /**
- * 保存内容
- */
- public function save()
- {
- $token = request()->employee;
- $arr = input('arr/a',[]);
- $camp_id = input('camp_id',0);
- // $camp_id = 23;
- // $a['planName'] = 12;
- // $b['type'] = 0;
- // $b['id'] = 1;
- // $b['title'] = 233;
- // $a['plan'][] = $b;
- // $c[] = $a;
- // $arr = $c;
- // $token['root_id'] = 33;
- foreach ($arr as $v) {
- $w1 = [];
- $w1[] = ['title','=',$v['title']];
- $w1[] = ['root_id','=',$token['root_id']];
- $w1[] = ['del','=',0];
- $w1[] = ['plan_id','=',0];
- $w1[] = ['con_id','=',0];
- $w1[] = ['camp_id','=',$camp_id];
- $info = CampPlan::where($w1)->find();
- if (!$info) {
- $save = [];
- $save['title'] = $v['title'];
- $save['root_id'] = $token['root_id'];
- $save['plan_id'] = 0;
- $save['con_id'] = 0;
- $save['del'] = 0;
- $save['camp_id'] = $camp_id;
- $plan_id = CampPlan::insertGetId($save);
- } else {
- $plan_id = $info->id;
- }
- foreach ($v['plan'] as $v2) {
- $w1 = [];
- $w1[] = ['root_id','=',$token['root_id']];
- $w1[] = ['type','=',$v2['type']];
- $w1[] = ['con_id','=',$v2['id']];
- $w1[] = ['del','=',0];
- $w1[] = ['plan_id','=',$plan_id];
- $w1[] = ['camp_id','=',$camp_id];
- $info = CampPlan::where($w1)->find();
- if (!$info) {
- $save = [];
- $save['root_id'] = $token['root_id'];
- $save['type'] = $v2['type'];
- $save['plan_id'] = $plan_id;
- $save['title'] = $v2['title'];
- $save['con_id'] = $v2['id'];
- $save['camp_id'] = $camp_id;
- CampPlan::insertGetId($save);
- }
- }
- }
- return json(['code' => 0, 'data' =>'保存成功','msg' => '保存成功']);
- }
- }
|