Explorar o código

Merge remote-tracking branch 'origin/dev_1.5.3' into dev_1.5.2

# Conflicts:
#	stmms-common/src/main/java/cn/com/qmth/stmms/common/utils/VersionInfo.java
yin hai 6 meses
pai
achega
f2848c7c7b

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

@@ -911,11 +911,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();
@@ -933,6 +933,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<>();
             }
@@ -948,12 +956,12 @@ public class MarkServiceImpl implements MarkService {
             }
         }
         List<Integer> arbitrateIndex = new ArrayList<>();
+        List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
+                group.getExamId(), group.getSubjectCode(), false, group.getNumber());
+        List<ScoreItem> scoreItemList = list.get(0).getMarkerScoreItem();
+        List<ScoreItem> scoreItemList1 = list.get(1).getMarkerScoreItem();
+        List<ScoreItem> scoreItemList2 = list.get(2).getMarkerScoreItem();
         if (ArbitrateType.QUESTION.equals(group.getArbitrateType())) {
-            List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
-                    group.getExamId(), group.getSubjectCode(), false, group.getNumber());
-            List<ScoreItem> scoreItemList = list.get(0).getMarkerScoreItem();
-            List<ScoreItem> scoreItemList1 = list.get(1).getMarkerScoreItem();
-            List<ScoreItem> scoreItemList2 = list.get(2).getMarkerScoreItem();
             for (int j = 0; j < questionList.size(); j++) {
                 Double arbitrateThreshold = questionList.get(j).getArbitrateThreshold();
                 if (scoreItemList.get(j).getScore() == UN_SELECTIVE_SCORE
@@ -977,6 +985,17 @@ public class MarkServiceImpl implements MarkService {
                 return buildArbitrateHistory(list.get(0), now, arbitrateIndex);
             }
         } else {
+            for (int j = 0; j < questionList.size(); j++) {
+                if (scoreItemList.get(j).getScore() == UN_SELECTIVE_SCORE
+                        && scoreItemList1.get(j).getScore() == UN_SELECTIVE_SCORE
+                        && scoreItemList2.get(j).getScore() == UN_SELECTIVE_SCORE) {
+                    continue;
+                } else if (scoreItemList.get(j).getScore() == UN_SELECTIVE_SCORE
+                        || scoreItemList1.get(j).getScore() == UN_SELECTIVE_SCORE
+                        || scoreItemList2.get(j).getScore() == UN_SELECTIVE_SCORE) {
+                    return buildArbitrateHistory(list.get(0), now, arbitrateIndex);
+                }
+            }
             int count = 0;
             for (int i = 0; i < list.size(); i++) {
                 int next = i + 1;