Bläddra i källkod

fix division by zero

deason 5 år sedan
förälder
incheckning
59964bfc3e

+ 7 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperDetailUnitServiceImpl.java

@@ -125,7 +125,13 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
                             totalDou = subScoreList.get(i) + totalDou;
                         }
 
-                        BigDecimal b = new BigDecimal(totalSum / totalDou);
+                        BigDecimal b;
+                        if (totalDou != 0d) {
+                            b = new BigDecimal(totalSum / totalDou);
+                        } else {
+                            b = new BigDecimal(0d);
+                        }
+
                         Double difficulty = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                         baseQuestion.setDifficultyDegree(difficulty);
                         baseQuestion.setPublicity(publicity);

+ 21 - 25
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperProviderServiceImpl.java

@@ -1,38 +1,27 @@
 package cn.com.qmth.examcloud.core.questions.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import cn.com.qmth.examcloud.core.questions.base.Model;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
 import cn.com.qmth.examcloud.core.questions.api.bean.PaperK12Bean;
 import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
+import cn.com.qmth.examcloud.core.questions.base.Model;
 import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
-import cn.com.qmth.examcloud.core.questions.dao.ExtractConfigRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
-import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
-import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Course;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetail;
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailUnit;
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
+import cn.com.qmth.examcloud.core.questions.dao.*;
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
 import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
 import cn.com.qmth.examcloud.core.questions.service.PaperProviderService;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @author weiwenhai
@@ -170,7 +159,14 @@ public class PaperProviderServiceImpl implements PaperProviderService {
         }
         paperDetail.setUnitCount(j);
         paperDetail.setScore(score);
-        BigDecimal b = new BigDecimal(sum / score);
+
+        BigDecimal b;
+        if (score != 0d) {
+            b = new BigDecimal(sum / score);
+        } else {
+            b = new BigDecimal(0d);
+        }
+
         Double difficulty = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
         paper.setTotalScore(score);
         paper.setDifficultyDegree(difficulty);

+ 8 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java

@@ -688,7 +688,14 @@ public class PaperServiceImpl implements PaperService {
                                 totalSum = subQuestion.getDifficultyDegree() * paperDetailUnit.getSubScoreList().get(i) + totalSum;
                                 totalDou = paperDetailUnit.getSubScoreList().get(i) + totalDou;
                             }
-                            BigDecimal b = new BigDecimal(totalSum / totalDou);
+
+                            BigDecimal b;
+                            if (totalDou != 0d) {
+                                b = new BigDecimal(totalSum / totalDou);
+                            } else {
+                                b = new BigDecimal(0d);
+                            }
+
                             Double difficulty = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                             paperDetailUnit.getQuestion().setDifficultyDegree(difficulty);
                             paperDetailUnit.setScore(totalDou);