|
@@ -8,6 +8,8 @@ import java.util.Map;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
|
|
+import cn.com.qmth.stmms.admin.vo.ExamStudentVO;
|
|
|
import cn.com.qmth.stmms.biz.campus.model.Campus;
|
|
|
import cn.com.qmth.stmms.biz.campus.service.CampusService;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
@@ -64,13 +67,13 @@ public class StudentController extends BaseExamController {
|
|
|
|
|
|
@Autowired
|
|
|
private MarkService markService;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private ExamPackageService packageService;
|
|
|
|
|
|
@Value("${sheet.image.server}")
|
|
|
private String imageServer;
|
|
|
-
|
|
|
+
|
|
|
@Value("${package.image.server}")
|
|
|
private String packageServer;
|
|
|
|
|
@@ -139,45 +142,46 @@ public class StudentController extends BaseExamController {
|
|
|
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()) {
|
|
|
+ // 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.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() + "保存成功");
|
|
|
+ // 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, "考生不存在");
|
|
|
}
|
|
@@ -192,12 +196,13 @@ public class StudentController extends BaseExamController {
|
|
|
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);
|
|
|
+ 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() + "保存成功");
|
|
|
}
|
|
@@ -212,8 +217,11 @@ public class StudentController extends BaseExamController {
|
|
|
if (student != null) {
|
|
|
studentService.deleteById(id);
|
|
|
markService.deleteByStudent(student);
|
|
|
- subjectService.updateUploadCount(student.getExamId(), student.getSubjectCode(), (int) studentService
|
|
|
- .countUploadedByExamIdAndSubjectCode(student.getExamId(), student.getSubjectCode()));
|
|
|
+ subjectService.updateUploadCount(
|
|
|
+ student.getExamId(),
|
|
|
+ student.getSubjectCode(),
|
|
|
+ (int) studentService.countUploadedByExamIdAndSubjectCode(student.getExamId(),
|
|
|
+ student.getSubjectCode()));
|
|
|
addMessage(redirectAttributes, "删除考生成功");
|
|
|
} else {
|
|
|
addMessage(redirectAttributes, "找不到对应的考生");
|
|
@@ -262,11 +270,9 @@ public class StudentController extends BaseExamController {
|
|
|
if (StringUtils.isBlank(student.getExamNumber()) || StringUtils.isBlank(student.getName())
|
|
|
|| StringUtils.isBlank(student.getSubjectCode())
|
|
|
|| StringUtils.isBlank(student.getSubjectName())
|
|
|
- || StringUtils.isBlank(student.getCampusName())
|
|
|
- || StringUtils.isBlank(student.getCollege())
|
|
|
- || StringUtils.isBlank(student.getClassName())
|
|
|
- || StringUtils.isBlank(student.getTeacher())
|
|
|
- || StringUtils.isBlank(student.getStudentCode()) ) {
|
|
|
+ || StringUtils.isBlank(student.getCampusName()) || StringUtils.isBlank(student.getCollege())
|
|
|
+ || StringUtils.isBlank(student.getClassName()) || StringUtils.isBlank(student.getTeacher())
|
|
|
+ || StringUtils.isBlank(student.getStudentCode())) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -280,8 +286,8 @@ public class StudentController extends BaseExamController {
|
|
|
student.setObjectiveScore(0d);
|
|
|
student.setSubjectiveScore(0d);
|
|
|
ExamStudent previous = checkExamNumber(student, current, saveMap);
|
|
|
- if(previous!=null){
|
|
|
- student = updatePrevious(student, previous);
|
|
|
+ if (previous != null) {
|
|
|
+ student = updatePrevious(student, previous);
|
|
|
}
|
|
|
saveList.add(student);
|
|
|
saveMap.put(student.getExamNumber(), student);
|
|
@@ -340,12 +346,127 @@ public class StudentController extends BaseExamController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping(value = "/absentTemplate")
|
|
|
+ public String absentTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
|
|
+ try {
|
|
|
+ String fileName = "缺考考生导入模板.xlsx";
|
|
|
+ List<ExamStudentVO> list = Lists.newArrayList();
|
|
|
+ list.add(new ExamStudentVO());
|
|
|
+ new ExportExcel("缺考考生", ExamStudentVO.class, 2).setDataList(list).write(response, fileName).dispose();
|
|
|
+ return null;
|
|
|
+ } catch (Exception e) {
|
|
|
+ addMessage(redirectAttributes, "导入模板下载失败!失败信息:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return "redirect:" + "/admin/exam-param/student";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/absentImport", method = RequestMethod.POST)
|
|
|
+ public String absentImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ try {
|
|
|
+ int successNum = 0;
|
|
|
+ int failureNum = 0;
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
+ ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
+ List<ExamStudentVO> list = ei.getDataList(ExamStudentVO.class);
|
|
|
+ studentService.clearManualAbsent(examId);
|
|
|
+ for (ExamStudentVO studentVO : list) {
|
|
|
+ if (StringUtils.isBlank(studentVO.getExamNumber())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ExamStudent student = studentService.findByExamIdAndExamNumber(examId, studentVO.getExamNumber());
|
|
|
+ if (student != null) {
|
|
|
+ student.setManualAbsent(true);
|
|
|
+ successNum++;
|
|
|
+ } else {
|
|
|
+ failureMsg.append("<br/>准考证号 " + studentVO.getExamNumber() + " 不存在; ");
|
|
|
+ failureNum++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (failureNum > 0) {
|
|
|
+ failureMsg.insert(0, ",失败 " + failureNum + " 条用户");
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "已成功导入 " + successNum + " 条用户" + failureMsg);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("Batch import absentStudent error!", e);
|
|
|
+ addMessage(redirectAttributes, "导入缺考考生失败!失败信息:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return "redirect:" + "/admin/exam-param/student";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/breachTemplate")
|
|
|
+ public String breachTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
|
|
+ try {
|
|
|
+ String fileName = "违纪考生导入模板.xlsx";
|
|
|
+ List<ExamStudentVO> list = Lists.newArrayList();
|
|
|
+ list.add(new ExamStudentVO());
|
|
|
+ new ExportExcel("违纪考生", ExamStudentVO.class, 2).setDataList(list).write(response, fileName).dispose();
|
|
|
+ return null;
|
|
|
+ } catch (Exception e) {
|
|
|
+ addMessage(redirectAttributes, "导入模板下载失败!失败信息:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return "redirect:" + "/admin/exam-param/student";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/breachImport", method = RequestMethod.POST)
|
|
|
+ public String breachImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ // Exam exam = examService.findById(examId);
|
|
|
+ try {
|
|
|
+ int successNum = 0;
|
|
|
+ int failureNum = 0;
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
+ ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
+ List<ExamStudentVO> list = ei.getDataList(ExamStudentVO.class);
|
|
|
+ for (ExamStudentVO studentVO : list) {
|
|
|
+ if (StringUtils.isBlank(studentVO.getExamNumber())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ExamStudent student = studentService.findByExamIdAndExamNumber(examId, studentVO.getExamNumber());
|
|
|
+ if (student != null) {
|
|
|
+ student.setBreach(true);
|
|
|
+ successNum++;
|
|
|
+ } else {
|
|
|
+ failureMsg.append("<br/>准考证号 " + studentVO.getExamNumber() + " 不存在; ");
|
|
|
+ failureNum++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (failureNum > 0) {
|
|
|
+ failureMsg.insert(0, ",失败 " + failureNum + " 条用户");
|
|
|
+ }
|
|
|
+ addMessage(redirectAttributes, "已成功导入 " + successNum + " 条用户" + failureMsg);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("Batch import BreachStudent error!", e);
|
|
|
+ addMessage(redirectAttributes, "导入违纪考生失败!失败信息:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return "redirect:" + "/admin/exam-param/student";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/updateBreach", method = RequestMethod.POST)
|
|
|
+ @ResponseBody
|
|
|
+ public JSONObject updateBreach(HttpServletRequest request, Integer id) {
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+ 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("success", false);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
private ExamStudent checkExamNumber(ExamStudent student, Map<String, ExamStudent> current,
|
|
|
Map<String, ExamStudent> saveMap) {
|
|
|
ExamStudent previous = saveMap.get(student.getExamNumber());
|
|
|
|
|
|
if (previous != null) {
|
|
|
- return previous;
|
|
|
+ return previous;
|
|
|
}
|
|
|
if (current != null && !current.isEmpty()) {
|
|
|
previous = current.get(student.getExamNumber());
|
|
@@ -353,30 +474,30 @@ public class StudentController extends BaseExamController {
|
|
|
previous = studentService.findByExamIdAndExamNumber(student.getExamId(), student.getExamNumber());
|
|
|
}
|
|
|
if (previous != null) {
|
|
|
- return previous;
|
|
|
+ return previous;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- private ExamStudent updatePrevious(ExamStudent student, ExamStudent previous) {
|
|
|
- previous.setCollege(student.getCollege());
|
|
|
- previous.setClassName(student.getClassName());
|
|
|
- previous.setTeacher(student.getTeacher());
|
|
|
- previous.setExamRoom(student.getExamRoom());
|
|
|
- previous.setExamSite(student.getExamSite());
|
|
|
- previous.setRemark(student.getRemark());
|
|
|
- previous.setSubjectLevel(student.getSubjectLevel());
|
|
|
- previous.setSubjectCategory(student.getSubjectCategory());
|
|
|
- previous.setSubjectRemark(student.getSubjectRemark());
|
|
|
- return previous;
|
|
|
- }
|
|
|
+ private ExamStudent updatePrevious(ExamStudent student, ExamStudent previous) {
|
|
|
+ previous.setCollege(student.getCollege());
|
|
|
+ previous.setClassName(student.getClassName());
|
|
|
+ previous.setTeacher(student.getTeacher());
|
|
|
+ previous.setExamRoom(student.getExamRoom());
|
|
|
+ previous.setExamSite(student.getExamSite());
|
|
|
+ previous.setRemark(student.getRemark());
|
|
|
+ previous.setSubjectLevel(student.getSubjectLevel());
|
|
|
+ previous.setSubjectCategory(student.getSubjectCategory());
|
|
|
+ previous.setSubjectRemark(student.getSubjectRemark());
|
|
|
+ return previous;
|
|
|
+ }
|
|
|
|
|
|
private void buildSheetUrl(ExamStudent student) {
|
|
|
Campus campus = campusService.findBySchoolAndName(student.getSchoolId(), student.getCampusName());
|
|
|
student.setSheetUrls(PictureUrlBuilder.getSheetUrls(student.getExamId(), campus.getId(),
|
|
|
student.getSubjectCode(), student.getExamNumber(), student.getSheetCount()));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void buildPackageUrl(ExamStudent student) {
|
|
|
if (StringUtils.isNotBlank(student.getPackageCode())) {
|
|
|
ExamPackage ep = packageService.find(student.getExamId(), student.getPackageCode());
|