Sfoglia il codice sorgente

修复统分时发生的各种空指针及除数为0的情况;修复客观题导入问题;

ting.yin 6 anni fa
parent
commit
6655035ab4

+ 6 - 6
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectGroupServiceImpl.java

@@ -154,9 +154,9 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                 totalScore = DoubleUtil.sum(totalScore, score);
             }
             // 最大分
-            Double maxScore = Collections.max(Arrays.asList(totalScoreArray));
+            Double maxScore = totalScoreArray.length==0?0:Collections.max(Arrays.asList(totalScoreArray));
             // 最小分
-            Double minScore = Collections.min(Arrays.asList(totalScoreArray));
+            Double minScore = totalScoreArray.length==0?0:Collections.min(Arrays.asList(totalScoreArray));
             // 平均分
             Double avgScore = DoubleUtil.div(totalScore, studentCount, 2);
             // 计算方差
@@ -178,7 +178,7 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                         DoubleUtil.mul(DoubleUtil.sub(score, avgScore), DoubleUtil.sub(score, avgScore)));
             }
             // 标准差
-            Double sd = DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00");
+            Double sd = studentCount==0?0:DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00");
             // 差异系数
             Double cv = 0d;
             if (avgScore.doubleValue() > 0) {
@@ -277,9 +277,9 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                 totalScore = DoubleUtil.sum(totalScore, score);
             }
             // 最大分
-            Double maxScore = Collections.max(Arrays.asList(totalScoreArray));
+            Double maxScore = totalScoreArray.length==0?0:Collections.max(Arrays.asList(totalScoreArray));
             // 最小分
-            Double minScore = Collections.min(Arrays.asList(totalScoreArray));
+            Double minScore = totalScoreArray.length==0?0:Collections.min(Arrays.asList(totalScoreArray));
             // 平均分
             Double avgScore = DoubleUtil.div(totalScore, studentCount, 2);
             // 计算方差
@@ -301,7 +301,7 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                         DoubleUtil.mul(DoubleUtil.sub(score, avgScore), DoubleUtil.sub(score, avgScore)));
             }
             // 标准差
-            Double sd = DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00");
+            Double sd = studentCount==0?0:DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00");
             // 差异系数
             Double cv = 0d;
             if (avgScore.doubleValue() > 0) {

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectQuestionServiceImpl.java

@@ -161,7 +161,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                 reportSubjectQuestion.setTotalScore(question.getTotalScore());
                 reportSubjectQuestion.setAvgScore(avgScore);
                 reportSubjectQuestion.setScoreRate(DoubleUtil.div(avgScore, question.getTotalScore(), 2));
-                reportSubjectQuestion.setSd(DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00"));
+                reportSubjectQuestion.setSd(studentCount==0?0:DoubleUtil.format(Math.sqrt(variance / studentCount), "0.00"));
                 reportSubjectQuestion.setFullScoreRate(DoubleUtil.div(fullScoreCount, studentCount, 2));
                 reportSubjectQuestionDao.save(reportSubjectQuestion);
             }

+ 11 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/SubjectQuestionDTO.java

@@ -184,15 +184,17 @@ public class SubjectQuestionDTO {
         Map<Integer,Double> mainScoreMap = new HashMap<Integer, Double>();
         int maniCount = 0;
         for (ExamQuestion question : questions) {
-            Integer subCount = subCountMap.get(question.getMainNumber());
-            if (subCount != null ) {
-                subCountMap.put(question.getMainNumber(), subCount+1);
-                Double mainScore = mainScoreMap.get(question.getMainNumber());
-                mainScoreMap.put(question.getMainNumber(), mainScore+question.getTotalScore());
-            } else {
-                subCountMap.put(question.getMainNumber(), 1);
-                mainScoreMap.put(question.getMainNumber(), question.getTotalScore());
-                maniCount++;
+            if(question.getTotalScore()!=0){
+                Integer subCount = subCountMap.get(question.getMainNumber());
+                if (subCount != null ) {
+                    subCountMap.put(question.getMainNumber(), subCount+1);
+                    Double mainScore = mainScoreMap.get(question.getMainNumber());
+                    mainScoreMap.put(question.getMainNumber(), mainScore+question.getTotalScore());
+                } else {
+                    subCountMap.put(question.getMainNumber(), 1);
+                    mainScoreMap.put(question.getMainNumber(), question.getTotalScore());
+                    maniCount++;
+                }
             }
         }
         

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectTeacher.jsp

@@ -61,7 +61,7 @@
         <th>最低分</th>
         <th>及格率</th>
         <th>优秀率</th>
-        <th>平均</th>
+        <th>平均</th>
         <th>平均相对分</th>
     </tr>
     </thead>