Przeglądaj źródła

评卷分组新增与修改时,增加大题名称校验

luoshi 4 lat temu
rodzic
commit
63054a98b4

+ 26 - 5
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -376,8 +376,10 @@ public class MarkGroupController extends BaseExamController {
                     List<ExamQuestion> others = questionService
                             .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
                     Set<String> numbers = new HashSet<>();
-                    for (ExamQuestion examQuestion : others) {
-                        numbers.add(examQuestion.getQuestionNumber());
+                    Map<Integer, String> titles = new HashMap<>();
+                    for (ExamQuestion question : others) {
+                        numbers.add(question.getQuestionNumber());
+                        titles.put(question.getMainNumber(), question.getMainTitle());
                     }
                     for (ExamQuestion question : questionList) {
                         if (numbers.contains(question.getQuestionNumber())) {
@@ -386,6 +388,13 @@ public class MarkGroupController extends BaseExamController {
                             redirectAttributes.addAttribute("number", number);
                             return "redirect:/admin/exam/group/edit-full";
                         }
+                        if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
+                                .equals(question.getMainTitle())) {
+                            addMessage(redirectAttributes, "大题名称不一致");
+                            redirectAttributes.addAttribute("subjectCode", subjectCode);
+                            redirectAttributes.addAttribute("number", number);
+                            return "redirect:/admin/exam/group/add";
+                        }
                     }
                     if (!questionList.isEmpty()) {
                         ScorePolicy policy = scorePolicy != null ? ScorePolicy.findByValue(scorePolicy) : null;
@@ -505,19 +514,31 @@ public class MarkGroupController extends BaseExamController {
                     }
                     dto.setScoreList(scoreList);
                 }
+                List<ExamQuestion> current = questionService
+                        .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
+                Set<String> numbers = new HashSet<>();
+                Map<Integer, String> titles = new HashMap<>();
+                for (ExamQuestion question : current) {
+                    numbers.add(question.getQuestionNumber());
+                    titles.put(question.getMainNumber(), question.getMainTitle());
+                }
                 if (detailList != null && detailList.size() > 0) {
                     group = new MarkGroup(examId, subjectCode, number, picConfigList, 0d, doubleRate,
                             arbitrateThreshold, scorePolicy, markMode, trialCount, sheetView, enableAllZero,
                             thirdPolicy);
                     List<ExamQuestion> list = buildQuestionList(group, detailList);
                     for (ExamQuestion question : list) {
-                        if (questionService
-                                .countByExamAndSubjectAndObjectiveAndMainNumberAndSubNumber(examId, subjectCode, false,
-                                        question.getMainNumber(), question.getSubNumber()) > 0) {
+                        if (numbers.contains(question.getQuestionNumber())) {
                             addMessage(redirectAttributes, "题号不能重复");
                             redirectAttributes.addAttribute("subjectCode", subjectCode);
                             return "redirect:/admin/exam/group/add";
                         }
+                        if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
+                                .equals(question.getMainTitle())) {
+                            addMessage(redirectAttributes, "大题名称不一致");
+                            redirectAttributes.addAttribute("subjectCode", subjectCode);
+                            return "redirect:/admin/exam/group/add";
+                        }
                     }
                     // clear and replace exam_question
                     questionService