|
@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.api.controller;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
@@ -26,17 +27,20 @@ import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
|
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.model.MarkGroup;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
|
|
|
import cn.com.qmth.stmms.biz.file.enums.FormatType;
|
|
|
import cn.com.qmth.stmms.biz.file.service.FileService;
|
|
|
import cn.com.qmth.stmms.common.annotation.RoleRequire;
|
|
|
import cn.com.qmth.stmms.common.domain.ApiUser;
|
|
|
import cn.com.qmth.stmms.common.enums.ExamStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.ExamType;
|
|
|
+import cn.com.qmth.stmms.common.enums.ObjectiveStatus;
|
|
|
import cn.com.qmth.stmms.common.enums.Role;
|
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
|
|
|
@@ -71,6 +75,9 @@ public class FileController extends BaseApiController {
|
|
|
@Autowired
|
|
|
private ExamQuestionService questionService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private MarkGroupService groupService;
|
|
|
+
|
|
|
private Exam validateExam(ApiUser au, Integer examId, ExamType... types) {
|
|
|
Exam exam = examService.findById(examId);
|
|
|
if (exam == null || !exam.getSchoolId().equals(au.getSchoolId()) || exam.getStatus() != ExamStatus.START) {
|
|
@@ -221,14 +228,30 @@ public class FileController extends BaseApiController {
|
|
|
}
|
|
|
try {
|
|
|
if (exam.getType() == ExamType.MULTI_MEDIA) {
|
|
|
- questionService.deleteByExamAndSubject(examId, subjectCode);
|
|
|
- String text = new String(ByteStreams.toByteArray(file.getInputStream()));
|
|
|
- List<ExamQuestion> questionList = PaperJsonUtils.toSubject(subject, text);
|
|
|
- questionService.save(questionList);
|
|
|
+ String text = new String(ByteStreams.toByteArray(file.getInputStream()), "UTF-8");
|
|
|
+ Map<Boolean, List<ExamQuestion>> map = PaperJsonUtils.toSubject(subject, text);
|
|
|
+ // 客观题全体更新
|
|
|
+ if (0 != questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId, subjectCode,
|
|
|
+ true)) {
|
|
|
+ questionService.deleteByExamAndSubjectAndObjective(examId, subjectCode, true);
|
|
|
+ }
|
|
|
+ List<ExamQuestion> oList = map.get(Boolean.TRUE);
|
|
|
+ questionService.save(oList);
|
|
|
subjectService.updateScore(examId, subjectCode, true,
|
|
|
questionService.sumTotalScore(examId, subjectCode, true));
|
|
|
- subjectService.updateScore(examId, subjectCode, false,
|
|
|
- questionService.sumTotalScore(examId, subjectCode, false));
|
|
|
+ examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
|
|
|
+ // 主观题有分组不更新
|
|
|
+ List<MarkGroup> groups = groupService.findByExamAndSubject(examId, subject.getCode());
|
|
|
+ if (groups == null || groups.size() == 0) {
|
|
|
+ if (0 != questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId,
|
|
|
+ subjectCode, false)) {
|
|
|
+ questionService.deleteByExamAndSubjectAndObjective(examId, subjectCode, false);
|
|
|
+ }
|
|
|
+ List<ExamQuestion> sList = map.get(Boolean.FALSE);
|
|
|
+ questionService.save(sList);
|
|
|
+ subjectService.updateScore(examId, subjectCode, false,
|
|
|
+ questionService.sumTotalScore(examId, subjectCode, false));
|
|
|
+ }
|
|
|
}
|
|
|
fileService.uploadPaper(file.getInputStream(), md5, examId, subjectCode, format);
|
|
|
subject.setPaperFileType(format);
|