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' => '保存成功']); } }