Преглед изворни кода

修复分组仲裁包含小题选做题问题

yin пре 6 месеци
родитељ
комит
09c0dd832a

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

@@ -773,11 +773,11 @@ public class MarkServiceImpl implements MarkService {
 
     private List<Integer> getArbitrateIndex(MarkLibrary other, MarkResult result, MarkGroup group) {
         List<Integer> arbitrateIndex = null;
+        List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
+                other.getExamId(), other.getSubjectCode(), false, other.getGroupNumber());
+        List<ScoreItem> list1 = other.getMarkerScoreItem();
+        Double[] list2 = result.getMarkerScoreList();
         if (ArbitrateType.QUESTION.equals(group.getArbitrateType())) {
-            List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
-                    other.getExamId(), other.getSubjectCode(), false, other.getGroupNumber());
-            List<ScoreItem> list1 = other.getMarkerScoreItem();
-            Double[] list2 = result.getMarkerScoreList();
             if (questionList.size() == list1.size() && list1.size() == list2.length) {
                 for (int i = 0; i < questionList.size(); i++) {
                     Double arbitrateThreshold = questionList.get(i).getArbitrateThreshold();
@@ -795,6 +795,14 @@ public class MarkServiceImpl implements MarkService {
                 return new ArrayList<>();
             }
         } else {
+            if (questionList.size() == list1.size() && list1.size() == list2.length) {
+                for (int i = 0; i < questionList.size(); i++) {
+                    if ((list1.get(i).getScore() == UN_SELECTIVE_SCORE && list2[i] != UN_SELECTIVE_SCORE)
+                            || (list1.get(i).getScore() != UN_SELECTIVE_SCORE && list2[i] == UN_SELECTIVE_SCORE)) {
+                        return new ArrayList<>();
+                    }
+                }
+            }
             if (Math.abs(other.getMarkerScore() - result.getMarkerScore()) > group.getArbitrateThreshold()) {
                 return new ArrayList<>();
             }