yin 1 yıl önce
ebeveyn
işleme
8338b63410

+ 16 - 15
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -1301,25 +1301,26 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     private void fillScoreRange(ScoreReportVo ret, List<ArchiveStudentVo> list) {
         List<ScoreRangeVo> scoreRange = new ArrayList<>();
         ret.setScoreRange(scoreRange);
-        scoreRange.add(getScoreRangeVo(list, 1.0, 9.5));
-        scoreRange.add(getScoreRangeVo(list, 10.0, 19.5));
-        scoreRange.add(getScoreRangeVo(list, 20.0, 29.5));
-        scoreRange.add(getScoreRangeVo(list, 30.0, 39.5));
-        scoreRange.add(getScoreRangeVo(list, 40.0, 49.5));
-        scoreRange.add(getScoreRangeVo(list, 50.0, 59.5));
-        scoreRange.add(getScoreRangeVo(list, 60.0, 69.5));
-        scoreRange.add(getScoreRangeVo(list, 70.0, 79.5));
-        scoreRange.add(getScoreRangeVo(list, 80.0, 89.5));
-        scoreRange.add(getScoreRangeVo(list, 90.0, 100.0));
-    }
-
-    private ScoreRangeVo getScoreRangeVo(List<ArchiveStudentVo> list, Double start, Double end) {
+        int total = ret.getOverview().getStudentCount() - ret.getOverview().getAbsentCount();
+        scoreRange.add(getScoreRangeVo(total,list, 1.0, 9.5));
+        scoreRange.add(getScoreRangeVo(total,list, 10.0, 19.5));
+        scoreRange.add(getScoreRangeVo(total,list, 20.0, 29.5));
+        scoreRange.add(getScoreRangeVo(total,list, 30.0, 39.5));
+        scoreRange.add(getScoreRangeVo(total,list, 40.0, 49.5));
+        scoreRange.add(getScoreRangeVo(total,list, 50.0, 59.5));
+        scoreRange.add(getScoreRangeVo(total,list, 60.0, 69.5));
+        scoreRange.add(getScoreRangeVo(total,list, 70.0, 79.5));
+        scoreRange.add(getScoreRangeVo(total,list, 80.0, 89.5));
+        scoreRange.add(getScoreRangeVo(total,list, 90.0, 100.0));
+    }
+
+    private ScoreRangeVo getScoreRangeVo(int totalCount,List<ArchiveStudentVo> list, Double start, Double end) {
         int count = (int) list.stream().filter(s -> s.getTotalScore() >= start && s.getTotalScore() <= end).count();
         Double rate = null;
         if (list.size() != 0) {
-            rate = Calculator.divide(count, list.size(), 2);
+            rate = Calculator.divide(count, totalCount, 2);
         }
-        ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate);
+        ScoreRangeVo vo = new ScoreRangeVo(count, start, end, rate*100);
         return vo;
     }