wangliang 4 年之前
父節點
當前提交
d307b1726d

+ 11 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEOpenServiceImpl.java

@@ -276,6 +276,7 @@ public class TEOpenServiceImpl implements TEOpenService {
         }
         double highestObjectiveScore = 0.0;
         long maxFinishTime = 0L;
+        boolean subjective = false;
         for (OpenRecordNeedMarkBean bean : list) {
             //获取对应的试卷信息
             ExamPaperCacheBean paper = paperMap.get(bean.getPaperId());
@@ -290,6 +291,8 @@ public class TEOpenServiceImpl implements TEOpenService {
             }
             //根据试卷结构过滤没有主观题的情况
             if (paper.getTotalSubjectiveScore() == 0) {
+                subjective = true;
+                maxFinishTime = Math.max(maxFinishTime, bean.getFinishTime());
                 continue;
             }
             highestObjectiveScore = Math.max(highestObjectiveScore, bean.getObjectiveScore());
@@ -301,9 +304,14 @@ public class TEOpenServiceImpl implements TEOpenService {
         }
         switch (strategy) {
             case HIGHEST_OBJECTIVE_SCORE:
-                //客观分最高,客观分相同则全部提交阅卷
-                final double score = highestObjectiveScore;
-                return result.stream().filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList());
+                if (subjective) {
+                    final long time = maxFinishTime;
+                    return result.stream().filter(bean -> bean.getFinishTime() == time).collect(Collectors.toList());
+                } else {
+                    //客观分最高,客观分相同则全部提交阅卷
+                    final double score = highestObjectiveScore;
+                    return result.stream().filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList());
+                }
             case LATEST:
                 //最后一次提交
                 final long time = maxFinishTime;