|
@@ -502,17 +502,23 @@ public class MarkGroupController extends BaseExamController {
|
|
|
}
|
|
|
|
|
|
private boolean checkSelective(Integer examId, String subjectCode, Integer[] questionIds) {
|
|
|
+ Set<Integer> selectiveMainNumbers = new HashSet<Integer>();
|
|
|
Set<Integer> mainNumbers = new HashSet<Integer>();
|
|
|
List<SelectiveGroup> list = selectiveGroupService.findByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
for (SelectiveGroup selectiveGroup : list) {
|
|
|
- mainNumbers.add(selectiveGroup.getMainNumber());
|
|
|
+ selectiveMainNumbers.add(selectiveGroup.getMainNumber());
|
|
|
}
|
|
|
List<ExamQuestion> selectives = new ArrayList<ExamQuestion>();
|
|
|
for (Integer questionId : questionIds) {
|
|
|
ExamQuestion question = questionService.findById(questionId);
|
|
|
- if (mainNumbers.contains(question.getMainNumber())) {
|
|
|
+ if (selectiveMainNumbers.contains(question.getMainNumber())) {
|
|
|
selectives.add(question);
|
|
|
}
|
|
|
+ mainNumbers.add(question.getMainNumber());
|
|
|
+ }
|
|
|
+ // 一个分组内只能有一个选做题大题
|
|
|
+ if (mainNumbers.size() > 1) {
|
|
|
+ return false;
|
|
|
}
|
|
|
if (questionIds.length == selectives.size()) {
|
|
|
return true;
|
|
@@ -548,7 +554,7 @@ public class MarkGroupController extends BaseExamController {
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group/add";
|
|
|
} else if (!checkSelective(examId, subjectCode, questionIds)) {
|
|
|
- addMessage(redirectAttributes, "选做题和非选做题不能在一组");
|
|
|
+ addMessage(redirectAttributes, "选做题和非选做题不能在一组,并且选做题大题必须单独一组");
|
|
|
redirectAttributes.addAttribute("subjectCode", subjectCode);
|
|
|
return "redirect:/admin/exam/group/add";
|
|
|
} else {
|