1
0
Quellcode durchsuchen

更新统分问题,新增选做题一大题一组验证,任务查询未选做问题

ting.yin vor 3 Jahren
Ursprung
Commit
a4e9f5c688

+ 3 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkLibraryServiceImpl.java

@@ -145,7 +145,9 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
                     predicates.add(cb.and(predicate1, predicate2));
                 }
                 if (query.isUnselective()) {
-                    predicates.add(cb.equal(root.get("markerScore"), -1));
+                    Predicate predicate1 = cb.equal(root.get("markerScore"), -1);
+                    Predicate predicate2 = cb.equal(root.get("headerScore"), -1);
+                    predicates.add(cb.or(predicate1, predicate2));
                 }
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -945,7 +945,7 @@ public class MarkServiceImpl implements MarkService {
             totalScore = BigDecimalUtils.add(totalScore, scoreMap.get(mainNumber));
         }
         for (int i = 0; i < selectiveList.size(); i++) {
-            if (i < selectiveCount) {
+            if (i < selectiveCount && selectiveList.get(i) != UN_SELECTIVE_SCORE) {
                 totalScore = BigDecimalUtils.add(totalScore, selectiveList.get(i));
             }
         }

+ 9 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -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 {