|
@@ -17,7 +17,6 @@ import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
import cn.com.qmth.stmms.common.annotation.Logging;
|
|
|
import cn.com.qmth.stmms.common.annotation.RoleRequire;
|
|
|
import cn.com.qmth.stmms.common.domain.WebUser;
|
|
|
-import cn.com.qmth.stmms.common.enums.ExamStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.LogType;
|
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
|
import cn.com.qmth.stmms.common.utils.ExportExcel;
|
|
@@ -79,138 +78,135 @@ public class StudentController extends BaseExamController {
|
|
|
|
|
|
@Logging(menu = "查询考生", type = LogType.QUERY)
|
|
|
@RequestMapping
|
|
|
- public String query(Model model, HttpServletRequest request, ExamStudentSearchQuery query) {
|
|
|
+ public String list(Model model, HttpServletRequest request, ExamStudentSearchQuery query) {
|
|
|
WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- List<Exam> examList = getExamList(wu);
|
|
|
- if (query.getExamId() == null) {
|
|
|
- query.setExamId(getQueryExamId(request, examList));
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ query.setExamId(examId);
|
|
|
+ if (query.getBatchCode() != null) {
|
|
|
+ query.setBatchCode(StringUtils.upperCase(query.getBatchCode()));
|
|
|
}
|
|
|
- if (query.getExamId() != null) {
|
|
|
- setSessionExamId(request, query.getExamId());
|
|
|
-
|
|
|
- if (query.getBatchCode() != null) {
|
|
|
- query.setBatchCode(StringUtils.upperCase(query.getBatchCode()));
|
|
|
- }
|
|
|
- query = studentService.findByQuery(query);
|
|
|
- if (query.getCurrentCount() > 0) {
|
|
|
- for (ExamStudent student : query.getResult()) {
|
|
|
- student.setSubject(subjectService.find(student.getExamId(), student.getSubjectCode()));
|
|
|
- buildSheetUrl(student);
|
|
|
- buildPackageUrl(student);
|
|
|
- }
|
|
|
- model.addAttribute("studentList", query.getResult());
|
|
|
+ query = studentService.findByQuery(query);
|
|
|
+ if (query.getCurrentCount() > 0) {
|
|
|
+ for (ExamStudent student : query.getResult()) {
|
|
|
+ student.setSubject(subjectService.find(student.getExamId(), student.getSubjectCode()));
|
|
|
+ buildSheetUrl(student);
|
|
|
+ buildPackageUrl(student);
|
|
|
}
|
|
|
- model.addAttribute("campusList", studentService.findDistinctCampusName(query.getExamId()));
|
|
|
- model.addAttribute("subjectList", getExamSubject(query.getExamId(), wu));
|
|
|
- model.addAttribute("levelList", subjectService.listLevel(query.getExamId()));
|
|
|
- model.addAttribute("categoryList", subjectService.listCategory(query.getExamId()));
|
|
|
- Exam exam = examService.findById(query.getExamId());
|
|
|
- model.addAttribute("examType", exam.getType());
|
|
|
+ model.addAttribute("studentList", query.getResult());
|
|
|
}
|
|
|
model.addAttribute("query", query);
|
|
|
- model.addAttribute("examList", examList);
|
|
|
+ model.addAttribute("campusList", studentService.findDistinctCampusName(examId));
|
|
|
+ model.addAttribute("subjectList", getExamSubject(examId, wu));
|
|
|
+ model.addAttribute("levelList", subjectService.listLevel(examId));
|
|
|
+ model.addAttribute("categoryList", subjectService.listCategory(examId));
|
|
|
model.addAttribute("imageServer", imageServer);
|
|
|
model.addAttribute("packageServer", packageServer);
|
|
|
+ Exam exam = examService.findById(examId);
|
|
|
+ model.addAttribute("examType", exam.getType());
|
|
|
return "modules/exam/studentList";
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/add")
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
- public String add(HttpServletRequest request, ExamStudent student, Model model) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ public String form(HttpServletRequest request, ExamStudent student, Model model) {
|
|
|
+ Exam exam = examService.findById(getSessionExamId(request));
|
|
|
model.addAttribute("student", student);
|
|
|
- model.addAttribute("examList", getExamList(wu));
|
|
|
- return "modules/exam/studentAdd";
|
|
|
- }
|
|
|
-
|
|
|
- @Logging(menu = "新增考生", type = LogType.ADD)
|
|
|
- @RequestMapping(value = "/insert")
|
|
|
- @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
- public String insert(ExamStudent student, RedirectAttributes redirectAttributes, HttpServletRequest request) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- Exam exam = student.getExamId() != null ? examService.findById(student.getExamId()) : null;
|
|
|
- ExamSubject subject = exam != null ? subjectService.find(exam.getId(), student.getSubjectCode()) : null;
|
|
|
- if (exam == null) {
|
|
|
- addMessage(redirectAttributes, "考试不存在");
|
|
|
- } else if (exam.getStatus() != ExamStatus.START || !exam.getSchoolId().equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不可操作");
|
|
|
- } else if (subject == null) {
|
|
|
- addMessage(redirectAttributes, "科目不存在");
|
|
|
- } else {
|
|
|
- student.setSchoolId(exam.getSchoolId());
|
|
|
- student.setSubjectName(subject.getName());
|
|
|
- student.setAbsent(false);
|
|
|
- student.setUpload(false);
|
|
|
- student.setException(false);
|
|
|
- student.setSliceCount(0);
|
|
|
- student.setSheetCount(0);
|
|
|
- student.setObjectiveScore(0d);
|
|
|
- student.setSubjectiveScore(0d);
|
|
|
- if (studentService.findByExamIdAndExamNumber(student.getExamId(), student.getExamNumber()) != null) {
|
|
|
- redirectAttributes.addAttribute("student", student);
|
|
|
- addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
|
|
|
- return "redirect:/admin/exam/student/add";
|
|
|
- } else {
|
|
|
- studentService.save(student);
|
|
|
- addMessage(redirectAttributes, "考生" + student.getExamNumber() + "添加成功");
|
|
|
- }
|
|
|
- }
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
+ model.addAttribute("subjectList", getExamSubject(exam.getId(), RequestUtils.getWebUser(request)));
|
|
|
+ model.addAttribute("campusList", studentService.findDistinctCampusName(exam.getId()));
|
|
|
+ return "modules/exam/studentForm";
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/update")
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
public String update(HttpServletRequest request, Integer id, Model model) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ Exam exam = examService.findById(getSessionExamId(request));
|
|
|
ExamStudent student = studentService.findById(id);
|
|
|
- Exam exam = student != null ? examService.findById(student.getExamId()) : null;
|
|
|
- if (exam != null && exam.getStatus() == ExamStatus.START) {
|
|
|
- model.addAttribute("student", student);
|
|
|
- model.addAttribute("subjectList", getExamSubject(exam.getId(), wu));
|
|
|
- return "modules/exam/studentEdit";
|
|
|
- } else {
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
- }
|
|
|
+ model.addAttribute("student", student);
|
|
|
+ model.addAttribute("subjectList", getExamSubject(exam.getId(), RequestUtils.getWebUser(request)));
|
|
|
+ model.addAttribute("campusList", studentService.findDistinctCampusName(exam.getId()));
|
|
|
+ return "modules/exam/studentForm";
|
|
|
}
|
|
|
|
|
|
- @Logging(menu = "修改考生", type = LogType.UPDATE)
|
|
|
+ @Logging(menu = "新增(修改)考生", type = LogType.UPDATE)
|
|
|
@RequestMapping(value = "/save")
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
public String save(ExamStudent student, Model model, RedirectAttributes redirectAttributes,
|
|
|
HttpServletRequest request, HttpServletResponse response) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- Exam exam = student.getExamId() != null ? examService.findById(student.getExamId()) : null;
|
|
|
- ExamSubject subject = exam != null ? subjectService.find(exam.getId(), student.getSubjectCode()) : null;
|
|
|
- if (exam == null) {
|
|
|
- addMessage(redirectAttributes, "考试不存在");
|
|
|
- } else if (exam.getStatus() != ExamStatus.START || !exam.getSchoolId().equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不可操作");
|
|
|
- } else if (subject == null) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ Exam exam = examService.findById(examId);
|
|
|
+ ExamSubject subject = subjectService.find(examId, student.getSubjectCode());
|
|
|
+ Campus campus = campusService.findBySchoolAndName(exam.getSchoolId(), student.getCampusName());
|
|
|
+ if (subject == null) {
|
|
|
addMessage(redirectAttributes, "科目不存在");
|
|
|
+ } else if (campus == null) {
|
|
|
+ addMessage(redirectAttributes, "学习中心不存在");
|
|
|
} else {
|
|
|
- ExamStudent previous = studentService.findById(student.getId());
|
|
|
- if (previous != null) {
|
|
|
- if (studentService.findByExamIdAndExamNumber(exam.getId(), student.getExamNumber()) != null) {
|
|
|
- addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
|
|
|
- return "redirect:/admin/exam/student/update?id=" + student.getId();
|
|
|
- }
|
|
|
- if (!previous.isUpload()) {
|
|
|
- // 还未扫描上传的考生,才能修改准考证号、学习中心、科目
|
|
|
- previous.setSubjectCode(subject.getCode());
|
|
|
- previous.setSubjectName(subject.getName());
|
|
|
- previous.setExamNumber(student.getExamNumber());
|
|
|
- previous.setCampusName(student.getCampusName());
|
|
|
+ if (student.getId() != null) {
|
|
|
+ ExamStudent previous = studentService.findById(student.getId());
|
|
|
+ if (previous != null) {
|
|
|
+ // String previousSubjectCode = previous.getSubjectCode();
|
|
|
+ student.setExamId(examId);
|
|
|
+ ExamStudent old = checkExamNumber(student, new HashMap<String, ExamStudent>(),
|
|
|
+ new HashMap<String, ExamStudent>());
|
|
|
+ if (old != null && !old.getExamNumber().equals(previous.getExamNumber())) {
|
|
|
+ addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
|
|
|
+ return "redirect:/admin/exam/student";
|
|
|
+ }
|
|
|
+ if (!previous.isUpload()) {
|
|
|
+ // 还未扫描上传的考生,才能修改准考证号、学习中心、科目
|
|
|
+ previous.setCampusName(student.getCampusName());
|
|
|
+ previous.setSubjectCode(subject.getCode());
|
|
|
+ previous.setSubjectName(subject.getName());
|
|
|
+ previous.setExamNumber(student.getExamNumber());
|
|
|
+ }
|
|
|
+ previous.setStudentCode(student.getStudentCode());
|
|
|
+ previous.setName(student.getName());
|
|
|
+ previous.setPackageCode(student.getPackageCode());
|
|
|
+ previous.setCollege(student.getCollege());
|
|
|
+ previous.setClassName(student.getClassName());
|
|
|
+ previous.setTeacher(student.getTeacher());
|
|
|
+ previous = studentService.save(previous);
|
|
|
+ // if
|
|
|
+ // (!previousSubjectCode.equals(previous.getSubjectCode()))
|
|
|
+ // {
|
|
|
+ // // 更新科目上传考生数量
|
|
|
+ // subjectService.updateUploadCount(examId,
|
|
|
+ // previousSubjectCode);
|
|
|
+ // subjectService.updateUploadCount(examId,
|
|
|
+ // previous.getSubjectCode());
|
|
|
+ // // 删除已生成的评卷任务
|
|
|
+ // libraryService.deleteByStudent(previous.getId());
|
|
|
+ // // 更新科目大题任务数量
|
|
|
+ // groupService.updateLibraryCount(examId,
|
|
|
+ // previousSubjectCode);
|
|
|
+ // // 重置科目所有大题构造评卷任务时间
|
|
|
+ // groupService.resetBuildTime(examId,
|
|
|
+ // previous.getSubjectCode());
|
|
|
+ // }
|
|
|
+ addMessage(redirectAttributes, "考生" + previous.getName() + "保存成功");
|
|
|
+ } else {
|
|
|
+ addMessage(redirectAttributes, "考生不存在");
|
|
|
}
|
|
|
- previous.setStudentCode(student.getStudentCode());
|
|
|
- previous.setName(student.getName());
|
|
|
- previous.setPackageCode(student.getPackageCode());
|
|
|
- previous.setCollege(student.getCollege());
|
|
|
- previous.setClassName(student.getClassName());
|
|
|
- previous.setTeacher(student.getTeacher());
|
|
|
- previous = studentService.save(previous);
|
|
|
- addMessage(redirectAttributes, "考生" + previous.getExamNumber() + "保存成功");
|
|
|
} else {
|
|
|
- addMessage(redirectAttributes, "考生不存在");
|
|
|
+ student.setExamId(examId);
|
|
|
+ student.setSchoolId(exam.getSchoolId());
|
|
|
+ student.setSubjectName(subject.getName());
|
|
|
+ student.setAbsent(false);
|
|
|
+ student.setUpload(false);
|
|
|
+ student.setException(false);
|
|
|
+ student.setSliceCount(0);
|
|
|
+ student.setSheetCount(0);
|
|
|
+ student.setObjectiveScore(0d);
|
|
|
+ student.setSubjectiveScore(0d);
|
|
|
+ ExamStudent old = checkExamNumber(student, new HashMap<String, ExamStudent>(),
|
|
|
+ new HashMap<String, ExamStudent>());
|
|
|
+ if (old != null) {
|
|
|
+ addMessage(redirectAttributes, "准考证号" + student.getExamNumber() + "已经存在");
|
|
|
+ return "redirect:/admin/exam/student";
|
|
|
+ } else {
|
|
|
+ studentService.save(student);
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "考生" + student.getName() + "保存成功");
|
|
|
}
|
|
|
}
|
|
|
return "redirect:/admin/exam/student";
|
|
@@ -251,15 +247,9 @@ public class StudentController extends BaseExamController {
|
|
|
@Logging(menu = "导入考生", type = LogType.IMPORT_FILE)
|
|
|
@RequestMapping(value = "/import", method = RequestMethod.POST)
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
- public String importFile(HttpServletRequest request, @RequestParam Integer examId, MultipartFile file,
|
|
|
- RedirectAttributes redirectAttributes) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ public String importFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
Exam exam = examService.findById(examId);
|
|
|
- if (exam == null || exam.getStatus() != ExamStatus.START || !exam.getSchoolId()
|
|
|
- .equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不存在或不可操作");
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
- }
|
|
|
try {
|
|
|
int successNum = 0;
|
|
|
int failureNum = 0;
|
|
@@ -286,6 +276,7 @@ public class StudentController extends BaseExamController {
|
|
|
|| StringUtils.isBlank(student.getTeacher()) || StringUtils.isBlank(student.getStudentCode())) {
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
student.setExamId(examId);
|
|
|
student.setSchoolId(exam.getSchoolId());
|
|
|
student.setAbsent(false);
|
|
@@ -322,9 +313,12 @@ public class StudentController extends BaseExamController {
|
|
|
@RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
|
public String exportFile(ExamStudentSearchQuery query, HttpServletRequest request, HttpServletResponse response,
|
|
|
RedirectAttributes redirectAttributes) {
|
|
|
+ WebUser wu = RequestUtils.getWebUser(request);
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
try {
|
|
|
query.setPageNumber(1);
|
|
|
query.setPageSize(Integer.MAX_VALUE);
|
|
|
+ query.setExamId(examId);
|
|
|
query.orderByExamNumber();
|
|
|
query = studentService.findByQuery(query);
|
|
|
for (ExamStudent student : query.getResult()) {
|
|
@@ -371,15 +365,9 @@ public class StudentController extends BaseExamController {
|
|
|
|
|
|
@Logging(menu = "导入缺考名单", type = LogType.IMPORT_FILE)
|
|
|
@RequestMapping(value = "/absentImport", method = RequestMethod.POST)
|
|
|
- public String absentImportFile(HttpServletRequest request, @RequestParam Integer examId, MultipartFile file,
|
|
|
+ public String absentImportFile(HttpServletRequest request, MultipartFile file,
|
|
|
RedirectAttributes redirectAttributes) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- Exam exam = examService.findById(examId);
|
|
|
- if (exam == null || exam.getStatus() != ExamStatus.START || !exam.getSchoolId()
|
|
|
- .equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不存在或不可操作");
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
- }
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
try {
|
|
|
int successNum = 0;
|
|
|
int failureNum = 0;
|
|
@@ -430,15 +418,10 @@ public class StudentController extends BaseExamController {
|
|
|
|
|
|
@Logging(menu = "导入违纪名单", type = LogType.IMPORT_FILE)
|
|
|
@RequestMapping(value = "/breachImport", method = RequestMethod.POST)
|
|
|
- public String breachImportFile(HttpServletRequest request, @RequestParam Integer examId, MultipartFile file,
|
|
|
+ public String breachImportFile(HttpServletRequest request, MultipartFile file,
|
|
|
RedirectAttributes redirectAttributes) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- Exam exam = examService.findById(examId);
|
|
|
- if (exam == null || exam.getStatus() != ExamStatus.START || !exam.getSchoolId()
|
|
|
- .equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不存在或不可操作");
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
- }
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ // Exam exam = examService.findById(examId);
|
|
|
try {
|
|
|
int successNum = 0;
|
|
|
int failureNum = 0;
|
|
@@ -478,16 +461,18 @@ public class StudentController extends BaseExamController {
|
|
|
}
|
|
|
|
|
|
@Logging(menu = "违纪重置", type = LogType.UPDATE)
|
|
|
- @RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
@RequestMapping(value = "/updateBreach", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public JSONObject updateBreach(HttpServletRequest request, Integer id) {
|
|
|
JSONObject result = new JSONObject();
|
|
|
- if (studentService.updateBreach(id, false)) {
|
|
|
+ ExamStudent student = studentService.findById(id);
|
|
|
+ student.setBreach(false);
|
|
|
+ student = studentService.save(student);
|
|
|
+ if (student != null) {
|
|
|
result.accumulate("message", "重置成功!");
|
|
|
result.accumulate("success", true);
|
|
|
} else {
|
|
|
- result.accumulate("message", "重置失败!");
|
|
|
+ result.accumulate("message", "将违纪考生信息重置为正常时出错!");
|
|
|
result.accumulate("success", false);
|
|
|
}
|
|
|
return result;
|
|
@@ -508,15 +493,10 @@ public class StudentController extends BaseExamController {
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/uploadImport", method = RequestMethod.POST)
|
|
|
- public String uploadImportFile(HttpServletRequest request, @RequestParam Integer examId, MultipartFile file,
|
|
|
+ public String uploadImportFile(HttpServletRequest request, MultipartFile file,
|
|
|
RedirectAttributes redirectAttributes) {
|
|
|
- WebUser wu = RequestUtils.getWebUser(request);
|
|
|
- Exam exam = examService.findById(examId);
|
|
|
- if (exam == null || exam.getStatus() != ExamStatus.START || !exam.getSchoolId()
|
|
|
- .equals(wu.getUser().getSchoolId())) {
|
|
|
- addMessage(redirectAttributes, "考试不存在或不可操作");
|
|
|
- return "redirect:/admin/exam/student";
|
|
|
- }
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ // Exam exam = examService.findById(examId);
|
|
|
try {
|
|
|
int successNum = 0;
|
|
|
int failureNum = 0;
|