|
@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.admin.exam;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
+import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -19,13 +20,17 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import cn.com.qmth.stmms.biz.exam.model.CheckStudent;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.CheckStudentSearchQuery;
|
|
|
+import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
import cn.com.qmth.stmms.biz.file.service.FileService;
|
|
|
import cn.com.qmth.stmms.common.annotation.Logging;
|
|
|
+import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
import cn.com.qmth.stmms.common.enums.CheckType;
|
|
|
import cn.com.qmth.stmms.common.enums.LogType;
|
|
|
+import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
|
@Controller
|
|
|
@RequestMapping("/admin/exam/check/student")
|
|
@@ -44,34 +49,79 @@ public class CheckStudentController extends BaseExamController {
|
|
|
@RequestMapping
|
|
|
public String index(Model model, HttpServletRequest request, CheckStudentSearchQuery query) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
- List<ExamStudent> studentList = new ArrayList<ExamStudent>();
|
|
|
- query.setExamId(examId);
|
|
|
- query.setChecked(false);
|
|
|
- if (query.getType() == null) {
|
|
|
- query.setType(CheckType.MANUAL);
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ List<CheckStudent> list = null;
|
|
|
+ if (StringUtils.isNotBlank(query.getSubjectCode())) {
|
|
|
+ list = checkStudentService.findByExamIdAndSubjectCodeAndCheckedAndType(examId, query.getSubjectCode(),
|
|
|
+ false, CheckType.MANUAL);
|
|
|
+ } else {
|
|
|
+ list = checkStudentService.findByExamIdAndCheckedAndType(examId, false, CheckType.MANUAL);
|
|
|
}
|
|
|
- query = checkStudentService.findByQuery(query);
|
|
|
- for (CheckStudent c : query.getResult()) {
|
|
|
- studentList.add(studentService.findById(c.getStudentId()));
|
|
|
+ List<Integer> studentIds = new ArrayList<Integer>();
|
|
|
+ for (CheckStudent c : list) {
|
|
|
+ studentIds.add(c.getStudentId());
|
|
|
}
|
|
|
+ ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();
|
|
|
+ sQuery.setExamId(examId);
|
|
|
+ sQuery.setPageNumber(query.getPageNumber());
|
|
|
+ sQuery.setPageSize(query.getPageSize());
|
|
|
+ sQuery.setSubjectCode(query.getSubjectCode());
|
|
|
+ sQuery.setExamSite(query.getExamSite());
|
|
|
+ sQuery.setStudentIds(studentIds);
|
|
|
+ List<ExamStudent> studentList = studentService.findByQuery(sQuery).getResult();
|
|
|
model.addAttribute("typeList", CheckType.values());
|
|
|
model.addAttribute("studentList", studentList);
|
|
|
+ model.addAttribute("subjectList", getCheckSubject(examId, wu));
|
|
|
+ query.setTotalCount(sQuery.getTotalCount());
|
|
|
+ query.setTotalPage(sQuery.getTotalPage());
|
|
|
model.addAttribute("query", query);
|
|
|
return "modules/exam/checkStudent";
|
|
|
}
|
|
|
|
|
|
+ private List<ExamSubject> getCheckSubject(int examId, WebUser wu) {
|
|
|
+ List<ExamSubject> list = new LinkedList<ExamSubject>();
|
|
|
+ List<String> codes = checkStudentService.findCheckSubjectCode(examId);
|
|
|
+ List<ExamSubject> subjects = getExamSubject(examId, wu);
|
|
|
+ for (ExamSubject examSubject : subjects) {
|
|
|
+ if (codes.contains(examSubject.getCode())) {
|
|
|
+ list.add(examSubject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping("/getSetting")
|
|
|
@ResponseBody
|
|
|
- public JSONObject getSetting(HttpServletRequest request, @RequestParam CheckType checkType) {
|
|
|
+ public JSONObject getSetting(HttpServletRequest request, @RequestParam CheckType checkType,
|
|
|
+ @RequestParam(required = false) String subjectCode, @RequestParam(required = false) String examSite) {
|
|
|
int examId = getSessionExamId(request);
|
|
|
JSONObject setting = new JSONObject();
|
|
|
setting.accumulate("fileServer", fileService.getFileServer());
|
|
|
- List<Integer> ids = new ArrayList<Integer>();
|
|
|
- List<CheckStudent> list = checkStudentService.findByExamIdAndIsCheckedAndType(examId, false, checkType);
|
|
|
- for (CheckStudent student : list) {
|
|
|
- ids.add(student.getStudentId());
|
|
|
+ List<CheckStudent> list = null;
|
|
|
+ if (StringUtils.isNotBlank(subjectCode)) {
|
|
|
+ list = checkStudentService.findByExamIdAndSubjectCodeAndCheckedAndType(examId, subjectCode, false,
|
|
|
+ CheckType.MANUAL);
|
|
|
+ } else {
|
|
|
+ list = checkStudentService.findByExamIdAndCheckedAndType(examId, false, CheckType.MANUAL);
|
|
|
+ }
|
|
|
+ List<Integer> studentIds = new ArrayList<Integer>();
|
|
|
+ for (CheckStudent c : list) {
|
|
|
+ studentIds.add(c.getStudentId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(examSite)) {
|
|
|
+ ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();
|
|
|
+ sQuery.setExamId(examId);
|
|
|
+ sQuery.setPageSize(Integer.MAX_VALUE);
|
|
|
+ sQuery.setSubjectCode(subjectCode);
|
|
|
+ sQuery.setExamSite(examSite);
|
|
|
+ sQuery.setStudentIds(studentIds);
|
|
|
+ List<ExamStudent> studentList = studentService.findByQuery(sQuery).getResult();
|
|
|
+ studentIds = new ArrayList<Integer>();
|
|
|
+ for (ExamStudent examStudent : studentList) {
|
|
|
+ studentIds.add(examStudent.getId());
|
|
|
+ }
|
|
|
}
|
|
|
- setting.accumulate("studentIds", ids);
|
|
|
+ setting.accumulate("studentIds", studentIds);
|
|
|
return setting;
|
|
|
}
|
|
|
|