/** * 学生成绩列表 * * @param int $exam_id * @return void */ public function index($exam_pid = 0) { if (!$this->check_power('exam_list,exam_manage')) { return; } $page = intval($this->input->get('page')); $per_page = intval($this->input->get('per_page')); $exam_pid = intval($this->input->get('exam_pid')); $flag = $this->input->get('flag'); $place_id = intval($this->input->get('place_id')); $school_id = intval($this->input->get('school_id')); $ticket = trim($this->input->get('ticket')); $score_start = trim($this->input->get('score_start')); $score_end = trim($this->input->get('score_end')); $subject_id = intval($this->input->get('subject_id')); $keyword = trim($this->input->get('keyword')); //var_dump($place_id);die; // 查询条件 $query = array(); $param = array(); $search = array('exam_pid' => '', 'place_id' => '', 'flag' => '-2', 'keyword' => '', 'subject_id' => '', 'school_id' => '', 'school_name' => '', 'ticket' => '', 'score_start' => '', 'score_end' => ''); $flags = array('-1' => '结果作废', '0' => '未生成分数(考试中)', '1' => '已交卷(未统计结果)', '2' => '已生成分数'); //考试期次 $exam_pid = !$exam_pid ? 0 : $exam_pid; if ($exam_pid) { $query['exam_pid'] = $exam_pid; $param[] = "exam_pid={$exam_pid}"; $search['exam_pid'] = $exam_pid; } //状态 if ($flag === false) { } else { if ($flag > -2) { $query['etp_flag'] = $flag; $param[] = "flag={$flag}"; $search['flag'] = $flag; } } /* if (isset($query['etp_flag']) && $query['etp_flag'] == '2') { $query['etp_flag'] = array('2', '-1'); } */ //考场 if ($place_id) { $query['place_id'] = $place_id; $param[] = "place_id={$place_id}"; $search['place_id'] = $place_id; } //学科 if ($subject_id) { $query['subject_id'] = $subject_id; $param[] = "subject_id={$subject_id}"; $search['subject_id'] = $subject_id; } //学科 if ($keyword) { $escape_keyword = $this->db->escape_like_str($keyword); $where = "fullname LIKE '%" . $escape_keyword . "%'"; $sql = "SELECT group_concat(uid) as uid FROM v_rd_student s WHERE {$where} "; $res = $this->db->query($sql)->row_array(); $uids = explode(',', $res['uid']); $query['uid'] = $uids; $search['keyword'] = $keyword; $param[] = "keyword=" . urlencode($search['keyword']); } //得分查询 if ($score_start != '') { $query['test_score']['>='] = $score_start; $param[] = "score_start={$score_start}"; $search['score_start'] = $score_start; } if ($score_end != '') { $query['test_score']['<='] = $score_end; $param[] = "score_end={$score_end}"; $search['score_end'] = $score_end; } //获取该学校下所有的学生 if ($school_id) { $param[] = "school_id={$school_id}"; $search['school_id'] = $school_id; $row = SchoolModel::schoolInfo($school_id, 'school_name'); if ($row) { $school_name = trim($row['school_name']); } else { $school_name = ''; } if (!count($school_name)) { $query = null; $search['school_name'] = $school_id; } else { $students = StudentModel::get_student_list(array('school_id' => $school_id), false, false, null, 'uid'); if (count($students)) { $uids = array(); foreach ($students as $student) { $uids[] = $student['uid']; } $query['uid'] = $uids; } else { $query = null; } $search['school_name'] = $school_name; } } //准考证号 if ($ticket) { if (stripos($ticket, '@') === false) { $uid = StudentModel::get_student_by_exam_ticket($ticket, 'uid'); } else { $uid = StudentModel::get_student_by_email($ticket, 'uid'); } if (count($uid)) { $query['uid'] = $uid; } else { $query = null; } $param[] = "ticket={$ticket}"; $search['ticket'] = $ticket; } $select_what = '*'; $page = $page <= 0 ? 1 : $page; $per_page = $per_page <= 0 ? 10 : $per_page; $list = array(); if (!is_null($query)) { $list = ExamTestPaperModel::get_test_paper_list($query, $page, $per_page, 'subject_id ASC,etp_id ASC', $select_what); } //获取学生信息 $grades = C('grades'); $subjects = C('subject'); $data['subjects'] = $subjects; $tmp_list = array(); foreach ($list as $k => $item) { $student = StudentModel::get_student($item['uid'], 'first_name, last_name, school_id, exam_ticket, grade_id'); if (!count($student)) { $tmp_list[$k] = array_merge($item, array('truename' => '--', 'school_name' => '--', 'grade_name' => '--', 'subject_name' => '--')); continue; } $student['truename'] = $student['last_name'] . $student['first_name']; //获取学生学校信息 $row = SchoolModel::schoolInfo($student['school_id'], 'school_name'); if ($row) { $school_name = trim($row['school_name']); } else { $school_name = ''; } $student['school_name'] = count($school_name) ? $school_name : '--'; //获取该学生所在的年级 $student['grade_name'] = isset($grades[$student['grade_id']]) ? $grades[$student['grade_id']] : '--'; //获取科目 $subject_name = SubjectModel::get_subject($item['subject_id'], 'subject_name'); $student['subject_name'] = count($subject_name) ? $subject_name : '--'; //获取考试试卷信息 $paper_name = ExamPaperModel::get_paper($item['paper_id'], 'paper_name'); $item['paper_name'] = count($paper_name) ? $paper_name : '--'; //获取作废记录 $etp_invalid_record = ExamTestPaperModel::get_etp_invalid_record($item['etp_id']); if (!$etp_invalid_record) { $item['invalid_record'] = false; $item['invalid_record_note'] = ''; } else { $item['invalid_record'] = true; $item['invalid_record_note'] = $etp_invalid_record['note']; } $tmp_list[$k] = array_merge($item, $student); } $data['list'] =& $tmp_list; $data['search'] =& $search; $data['flags'] =& $flags; // 分页 $purl = site_url('admin/exam_student_result/index/') . (count($param) ? '?' . implode('&', $param) : ''); $total = ExamTestPaperModel::count_list($query); $data['pagination'] = multipage($total, $per_page, $page, $purl); $data['priv_manage'] = $this->check_power('exam_manage', FALSE); $this->load->view('exam_student_result/index', $data); }