yin 10 ماه پیش
والد
کامیت
94695ef2fc
1فایلهای تغییر یافته به همراه24 افزوده شده و 11 حذف شده
  1. 24 11
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

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

@@ -818,7 +818,15 @@ public class MarkServiceImpl implements MarkService {
             List<ScoreItem> scoreItemList2 = list.get(2).getMarkerScoreItem();
             for (int j = 0; j < questionList.size(); j++) {
                 Double arbitrateThreshold = questionList.get(j).getArbitrateThreshold();
-                if (Math.abs(scoreItemList.get(j).getScore() - scoreItemList1.get(j).getScore()) > arbitrateThreshold
+                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){
+                    arbitrateIndex.add(j + 1);
+                }else if (Math.abs(scoreItemList.get(j).getScore() - scoreItemList1.get(j).getScore()) > arbitrateThreshold
                         && Math.abs(scoreItemList1.get(j).getScore()
                                 - scoreItemList2.get(j).getScore()) > arbitrateThreshold
                         && Math.abs(scoreItemList2.get(j).getScore()
@@ -1109,14 +1117,27 @@ public class MarkServiceImpl implements MarkService {
                     partScoreMap.put(part, partScore.doubleValue());
                 }
             }
+//            判断少选做、多选做、未选做
+            if (partScoreList.size() > 0 && partScoreList.size() < selectiveCount) {
+                lessSelective = true;
+            }
+            if (partScoreList.size() > 0 && partScoreList.size() > selectiveCount) {
+                mutiSelective = true;
+            }
+            if (partScoreList.size() == 0) {
+                notSelective = true;
+            }
+//        从小到大排序
             Collections.sort(partScoreList);
+
             if (policy == null || ScorePolicy.MAX.equals(policy)) {
+                //        最高分从大到小排序
                 Collections.reverse(partScoreList);
             }  if (ScorePolicy.MIN_WITHOUT_ZERO.equals(policy)) {
+                //剔除0分,当part分数多余,从第一个0分开始剔除,直至满足数量
                 while(partScoreList.size()>selectiveCount && partScoreList.get(0)==0){
                     partScoreList.remove(0);
                 }
-//                partScoreList = partScoreList.stream().filter(s -> s.doubleValue() > 0).collect(Collectors.toList());
             }
             // 计算一个选做题分组得分
             for (int i = 0; i < partScoreList.size(); i++) {
@@ -1134,6 +1155,7 @@ public class MarkServiceImpl implements MarkService {
                     }
                 }
             }
+            //剩余未合分的part
             for (Integer part : partScoreMap.keySet()) {
                 List<SelectiveGroup> selectiveGroups = partMap.get(part);
                 for (SelectiveGroup group : selectiveGroups) {
@@ -1143,15 +1165,6 @@ public class MarkServiceImpl implements MarkService {
                     }
                 }
             }
-            if (partScoreList.size() > 0 && partScoreList.size() < selectiveCount) {
-                lessSelective = true;
-            }
-            if (partScoreList.size() > 0 && partScoreList.size() > selectiveCount) {
-                mutiSelective = true;
-            }
-            if (partScoreList.size() == 0) {
-                notSelective = true;
-            }
         }
         // 统一更新得分详情
         for (List<SubjectiveScore> mainScoreList : mainScoreMap.values()) {