|
@@ -177,12 +177,24 @@ public class PaperController extends BaseExamController {
|
|
|
list.addAll(objectiveList);
|
|
|
}
|
|
|
if (objective == null || !objective) {
|
|
|
+ List<MarkGroup> groups = groupService.findByExamAndSubject(examId, subjectCode);
|
|
|
+ Map<Integer, MarkGroup> maps = new HashMap<Integer, MarkGroup>();
|
|
|
+ for (MarkGroup markGroup : groups) {
|
|
|
+ maps.put(markGroup.getNumber(), markGroup);
|
|
|
+ }
|
|
|
List<ExamQuestion> subjectiveList = mainNumber == null ? questionService
|
|
|
.findByExamAndSubjectAndObjective(examId, subjectCode, false) : questionService
|
|
|
.findByExamAndSubjectAndObjectiveAndMainNumber(examId, subjectCode, false, mainNumber);
|
|
|
+ for (ExamQuestion examQuestion : subjectiveList) {
|
|
|
+ if (examQuestion.getGroupNumber() != null
|
|
|
+ && maps.get(examQuestion.getGroupNumber()).getMarkedCount() > 0) {
|
|
|
+ examQuestion.setEnableUpdate(false);
|
|
|
+ } else {
|
|
|
+ examQuestion.setEnableUpdate(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
list.addAll(subjectiveList);
|
|
|
}
|
|
|
-
|
|
|
List<ExamQuestion> mainList = new LinkedList<ExamQuestion>();
|
|
|
mainList.addAll(questionService.findMainByExamAndSubjectAndObjective(examId, subjectCode, true));
|
|
|
mainList.addAll(questionService.findMainByExamAndSubjectAndObjective(examId, subjectCode, false));
|
|
@@ -478,10 +490,60 @@ public class PaperController extends BaseExamController {
|
|
|
@Logging(menu = "编辑题目", type = LogType.UPDATE)
|
|
|
@RequestMapping(value = "/question-edit", method = RequestMethod.POST)
|
|
|
@RoleRequire(Role.SCHOOL_ADMIN)
|
|
|
- public String update(@RequestParam Integer id, @RequestParam ExamQuestion question, ExamSubjectSearchQuery query,
|
|
|
- @RequestParam(required = false) Boolean upload) {
|
|
|
+ public String update(HttpServletRequest request, RedirectAttributes redirectAttributes, @RequestParam Integer id,
|
|
|
+ ExamQuestion question, ExamSubjectSearchQuery query, @RequestParam(required = false) Boolean upload) {
|
|
|
+ int examId = getSessionExamId(request);
|
|
|
+ ExamQuestion old = questionService.findById(id);
|
|
|
String u = upload == null ? "" : upload.toString();
|
|
|
String t = query.getTotalScoreNotEqual() == null ? "" : query.getTotalScoreNotEqual().toString();
|
|
|
+ ExamQuestion newQ = questionService.findByExamAndSubjectAndObjectiveAndMainNumberAndSubNumber(examId,
|
|
|
+ question.getSubjectCode(), question.isObjective(), question.getMainNumber(), question.getSubNumber());
|
|
|
+ if (old == null
|
|
|
+ || ((old.getMainNumber() != question.getMainNumber() || old.getSubNumber() != question.getSubNumber()) && newQ != null)) {
|
|
|
+ addMessage(redirectAttributes, "编辑失败,编辑题目不存在或编辑后的题号已存在");
|
|
|
+ return "redirect:/admin/exam/paper/detail?subjectCode=" + question.getSubjectCode() + "&pageNumber="
|
|
|
+ + query.getPageNumber() + "&code=" + query.getCode() + "&category=" + query.getCategory()
|
|
|
+ + "&level=" + query.getLevel() + "&upload=" + u + "&totalScoreNotEqual=" + t;
|
|
|
+ }
|
|
|
+ if (!old.isObjective() && old.getGroupNumber() != null) {
|
|
|
+ MarkGroup group = groupService.findOne(examId, old.getSubjectCode(), old.getGroupNumber());
|
|
|
+ if (group.getMarkedCount() > 0) {
|
|
|
+ addMessage(redirectAttributes, "编辑失败,已经开始评卷");
|
|
|
+ return "redirect:/admin/exam/paper/detail?subjectCode=" + question.getSubjectCode() + "&pageNumber="
|
|
|
+ + query.getPageNumber() + "&code=" + query.getCode() + "&category=" + query.getCategory()
|
|
|
+ + "&level=" + query.getLevel() + "&upload=" + u + "&totalScoreNotEqual=" + t;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<String> error = new LinkedList<String>();
|
|
|
+ if (validate(question, error, new HashMap<Integer, String>())) {
|
|
|
+ old.setMainNumber(question.getMainNumber());
|
|
|
+ old.setSubNumber(question.getSubNumber());
|
|
|
+ old.setMainTitle(question.getMainTitle());
|
|
|
+ old.setTotalScore(question.getTotalScore());
|
|
|
+ old.setIntervalScore(question.getIntervalScore());
|
|
|
+ old.setScorePolicy(question.getScorePolicy());
|
|
|
+ old.setAnswer(question.getAnswer().toUpperCase());
|
|
|
+ questionService.saveAndFlush(old);
|
|
|
+ questionService.updateMainTitle(examId, question.getSubjectCode(), question.isObjective(),
|
|
|
+ question.getMainNumber(), question.getMainTitle());
|
|
|
+ subjectService.updateScore(examId, question.getSubjectCode(), question.isObjective(),
|
|
|
+ question.getTotalScore());
|
|
|
+ // 更新分组总分
|
|
|
+ if (!old.isObjective() && old.getGroupNumber() != null) {
|
|
|
+ MarkGroup group = groupService.findOne(examId, old.getSubjectCode(), old.getGroupNumber());
|
|
|
+ List<ExamQuestion> questionGroup = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
|
|
|
+ examId, question.getSubjectCode(), false, question.getGroupNumber());
|
|
|
+ BigDecimal totalScore = BigDecimal.ZERO;
|
|
|
+ for (ExamQuestion q : questionGroup) {
|
|
|
+ totalScore = totalScore.add(BigDecimal.valueOf(q.getTotalScore()));
|
|
|
+ }
|
|
|
+ group.setTotalScore(totalScore.doubleValue());
|
|
|
+ groupService.save(group);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (error.size() > 0) {
|
|
|
+ addMessage(redirectAttributes, StringUtils.join(error, "<br\\>"));
|
|
|
+ }
|
|
|
return "redirect:/admin/exam/paper/detail?subjectCode=" + question.getSubjectCode() + "&pageNumber="
|
|
|
+ query.getPageNumber() + "&code=" + query.getCode() + "&category=" + query.getCategory() + "&level="
|
|
|
+ query.getLevel() + "&upload=" + u + "&totalScoreNotEqual=" + t;
|
|
@@ -602,17 +664,17 @@ public class PaperController extends BaseExamController {
|
|
|
@RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
|
|
|
public String delete(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
|
|
|
@RequestParam Integer[] ids, ExamSubjectSearchQuery query, @RequestParam(required = false) Boolean upload) {
|
|
|
- String subjectCode = "";
|
|
|
for (Integer id : ids) {
|
|
|
ExamQuestion question = questionService.findById(id);
|
|
|
- subjectCode = question.getSubjectCode();
|
|
|
- markService.deleteByQuestion(question);
|
|
|
+ if (question != null) {
|
|
|
+ markService.deleteByQuestion(question);
|
|
|
+ }
|
|
|
}
|
|
|
String u = upload == null ? "" : upload.toString();
|
|
|
String t = query.getTotalScoreNotEqual() == null ? "" : query.getTotalScoreNotEqual().toString();
|
|
|
- return "redirect:/admin/exam/paper/detail?subjectCode=" + subjectCode + "&pageNumber=" + query.getPageNumber()
|
|
|
- + "&code=" + query.getCode() + "&category=" + query.getCategory() + "&level=" + query.getLevel()
|
|
|
- + "&upload=" + u + "&totalScoreNotEqual=" + t;
|
|
|
+ return "redirect:/admin/exam/paper/detail?subjectCode=" + query.getCode() + "&pageNumber="
|
|
|
+ + query.getPageNumber() + "&code=" + query.getCode() + "&category=" + query.getCategory() + "&level="
|
|
|
+ + query.getLevel() + "&upload=" + u + "&totalScoreNotEqual=" + t;
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/question/add", method = RequestMethod.GET)
|