Explorar el Código

Extract common method "clearZeroPoint"

deason hace 6 años
padre
commit
99cd301e9f

+ 22 - 0
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/CommonUtils.java

@@ -15,6 +15,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -528,6 +529,27 @@ public final class CommonUtils {
         return formatNumber.setScale(2, RoundingMode.HALF_UP).doubleValue();
     }
 
+    /**
+     * 保留一位小数点
+     */
+    public static String formatValue(Double score) {
+        if (score == null) {
+            return "";
+        }
+        DecimalFormat decimalFormat = new DecimalFormat("#.#");
+        return decimalFormat.format(score);
+    }
+
+    /**
+     * 去掉包含“.0”的小数点
+     */
+    public static String clearZeroPoint(String scoreStr) {
+        if (scoreStr != null && scoreStr.indexOf(".0") > -1) {
+            return scoreStr.replace(".0", "");
+        }
+        return scoreStr;
+    }
+
     /**
      * 向下取整,可以取0.5
      *

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/CqdxExportPaperService.java

@@ -70,7 +70,7 @@ public class CqdxExportPaperService extends ExportPaperAbstractService {
             QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
             String questionScore = checkPaperDetailUnitScore(paperDetailExp);
             if (questionScore != null) {
-                questionScore = deletePoint(questionScore);
+                questionScore = CommonUtils.clearZeroPoint(questionScore);
             }
             String scoreString = questionScore == null ? "" : "每小题" + questionScore + "分,";
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {

+ 1 - 4
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/DzkdExportPaperService.java

@@ -117,7 +117,7 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
             QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
             String questionScore = checkPaperDetailUnitScore(paperDetailExp);
             if (questionScore != null) {
-                questionScore = deletePoint(questionScore);
+                questionScore = CommonUtils.clearZeroPoint(questionScore);
             }
             String scoreString = questionScore == null ? "" : "每小题" + questionScore + "分,";
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
@@ -174,9 +174,6 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
 
     /**
      * 计算每个小题所有填空题空格数量
-     *
-     * @param paperDetailExp
-     * @return
      */
     private int blanksNumbers(PaperDetailUnitExp unitExp) {
         int blanksNumbers = 0;

+ 27 - 31
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/ExportPaperAbstractService.java

@@ -38,7 +38,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.text.DecimalFormat;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.regex.Matcher;
@@ -807,7 +806,7 @@ public abstract class ExportPaperAbstractService {
      */
     public String appendScoreToWordQuestionBody(String quesBodyWordMl, double score) throws Exception {
         String totalScore = BigDecimal.valueOf(score).stripTrailingZeros().toPlainString();
-        String scores = deletePoint(totalScore);
+        String scores = CommonUtils.clearZeroPoint(totalScore);
         String tmpStr = DocxProcessUtil.BODY_HEADER + quesBodyWordMl + DocxProcessUtil.BODY_TAIL;
         Body body = (Body) XmlUtils.unmarshalString(tmpStr, Context.jc, Body.class);
         List<Object> pList = body.getContent();
@@ -835,47 +834,44 @@ public abstract class ExportPaperAbstractService {
     }
 
     /**
-     * 去掉分数后面的小数点
+     * 设置大题标题
      */
-    protected String deletePoint(String str) {
-        if (str.indexOf(".0") > -1) {
-            return str.replace(".0", "");
+    public void setExportQuestionTitle(List<PaperDetailExp> details) {
+        if (CollectionUtils.isEmpty(details)) {
+            return;
         }
-        return str;
-    }
 
-    /**
-     * 设置大题标题
-     */
-    public void setExportQuestionTitle(List<PaperDetailExp> paperDetailExps) {
-        for (PaperDetailExp paperDetailExp : paperDetailExps) {
-            String title = "";
-            String titleDetail = null;
-            DecimalFormat decimalFormat = new DecimalFormat("#.#");
-            String totalScore = decimalFormat.format(paperDetailExp.getScore());
-            QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
-            String questionScore = checkPaperDetailUnitScore(paperDetailExp);
+        for (PaperDetailExp detail : details) {
+            String detailTitle = "";
+            String detailDesc = null;
+            String detailScore = CommonUtils.formatValue(detail.getScore());
+
+            String questionScore = checkPaperDetailUnitScore(detail);
             if (questionScore != null) {
-                questionScore = deletePoint(questionScore);
+                questionScore = CommonUtils.clearZeroPoint(questionScore);
             }
+
+            QuesStructType type = detail.getPaperDetailUnits().get(0).getQuestionType();
             String scoreString = questionScore == null ? "" : "每小题" + questionScore + "分,";
+
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
-                title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-                        + scoreString + "共" + totalScore + "分)";
-                titleDetail = "在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分";
+                detailTitle = "(本大题共" + detail.getUnitCount() + "小题,"
+                        + scoreString + "共" + detailScore + "分)";
+                detailDesc = "在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分";
             } else if (type == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
-                title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-                        + scoreString + "共" + totalScore + "分)";
-                titleDetail = "在每小题列出的备选项中有一个或多个符合题目要求的,请将符合项选出并将“答题卡”的相应代码涂黑";
+                detailTitle = "(本大题共" + detail.getUnitCount() + "小题,"
+                        + scoreString + "共" + detailScore + "分)";
+                detailDesc = "在每小题列出的备选项中有一个或多个符合题目要求的,请将符合项选出并将“答题卡”的相应代码涂黑";
             } else if (type == QuesStructType.BOOL_ANSWER_QUESTION) {
-                title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-                        + scoreString + "共" + totalScore + "分。"
+                detailTitle = "(本大题共" + detail.getUnitCount() + "小题,"
+                        + scoreString + "共" + detailScore + "分。"
                         + "正确的填涂√、错误填涂×。错涂、多涂或未涂均无分)";
             } else {
-                title = "(本大题共" + paperDetailExp.getUnitCount() + "小题," + scoreString + "共" + totalScore + "分)";
+                detailTitle = "(本大题共" + detail.getUnitCount() + "小题," + scoreString + "共" + detailScore + "分)";
             }
-            paperDetailExp.setTitle(title);
-            paperDetailExp.setTitleDetail(titleDetail);
+
+            detail.setTitle(detailTitle);
+            detail.setTitleDetail(detailDesc);
         }
     }