Explorar o código

fix Export paper word.

deason %!s(int64=6) %!d(string=hai) anos
pai
achega
1c4b397499

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

@@ -62,22 +62,34 @@ public class CqdxExportPaperService extends ExportPaperAbstractService {
      * 设置大题标题
      */
     @Override
-    public void setExportQuestionTitle(List<PaperDetailExp> details) {
+    public void setExportQuestionTitle(List<PaperDetailExp> details, boolean isWord) {
         if (CollectionUtils.isEmpty(details)) {
             return;
         }
 
+        final String style = "<em class=\"e_num\">%s</em>";
+
         for (PaperDetailExp detail : details) {
             String perQuesScore = checkPaperDetailUnitScore(detail);
             if (perQuesScore != null) {
-                perQuesScore = String.format("每小题<em class=\"e_num\">%s</em>分,", CommonUtils.clearZeroPoint(perQuesScore));
+                perQuesScore = CommonUtils.clearZeroPoint(perQuesScore);
+                if (!isWord) {
+                    perQuesScore = String.format(style, perQuesScore);
+                }
+                perQuesScore = String.format("每小题%s分,", perQuesScore);
             } else {
                 perQuesScore = "";//每题分数不一致则不注明
             }
 
-            String detailScore = CommonUtils.formatValue(detail.getScore());
-            String title = String.format("(本大题共<em class=\"e_num\">%s</em>小题,%s共<em class=\"e_num\">%s</em>分)", detail.getUnitCount(), perQuesScore, detailScore);
             QuesStructType type = detail.getPaperDetailUnits().get(0).getQuestionType();
+            String detailScore = CommonUtils.formatValue(detail.getScore());
+            String unitCount = String.valueOf(detail.getUnitCount());
+
+            if (!isWord) {
+                detailScore = String.format(style, detailScore);
+                unitCount = String.format(style, unitCount);
+            }
+            String title = String.format("(本大题共%s小题,%s共%s分)", unitCount, perQuesScore, detailScore);
 
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
                 detail.setTitleDetail("在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分");

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

@@ -107,24 +107,35 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
      * 设置大题标题,并将大题分类 主观题 客观题
      */
     @Override
-    public void setExportQuestionTitle(List<PaperDetailExp> details) {
+    public void setExportQuestionTitle(List<PaperDetailExp> details, boolean isWord) {
         if (CollectionUtils.isEmpty(details)) {
             return;
         }
 
         int firstBlank = 0, lastBlank = 0;
-        for (PaperDetailExp detail : details) {
-            String detailScore = CommonUtils.formatValue(detail.getScore());
+        final String style = "<em class=\"e_num\">%s</em>";
 
+        for (PaperDetailExp detail : details) {
             String perQuesScore = checkPaperDetailUnitScore(detail);
             if (perQuesScore != null) {
-                perQuesScore = String.format("每小题<em class=\"e_num\">%s</em>分,", CommonUtils.clearZeroPoint(perQuesScore));
+                perQuesScore = CommonUtils.clearZeroPoint(perQuesScore);
+                if (!isWord) {
+                    perQuesScore = String.format(style, perQuesScore);
+                }
+                perQuesScore = String.format("每小题%s分,", perQuesScore);
             } else {
                 perQuesScore = "";//每题分数不一致则不注明
             }
 
             QuesStructType type = detail.getPaperDetailUnits().get(0).getQuestionType();
-            String title = String.format("(本大题共<em class=\"e_num\">%s</em>小题,%s共<em class=\"e_num\">%s</em>分)", detail.getUnitCount(), perQuesScore, detailScore);
+            String detailScore = CommonUtils.formatValue(detail.getScore());
+            String unitCount = String.valueOf(detail.getUnitCount());
+
+            if (!isWord) {
+                detailScore = String.format(style, detailScore);
+                unitCount = String.format(style, unitCount);
+            }
+            String title = String.format("(本大题共%s小题,%s共%s分)", unitCount, perQuesScore, detailScore);
 
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
                 detail.setTitleDetail("在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分");
@@ -139,16 +150,18 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
                 //设置填空题题干中 开始空格 和 结束空格
                 lastBlank = firstBlank + blanksNumbers;
 
-                perQuesScore = checkPaperDetailUnitblanksScore(detail);
-                if (perQuesScore != null) {
-                    perQuesScore = String.format("每空<em class=\"e_num\">%s</em>分,", CommonUtils.clearZeroPoint(perQuesScore));
+                String perFillScore = checkPaperDetailUnitblanksScore(detail);
+                if (perFillScore != null) {
+                    perFillScore = CommonUtils.clearZeroPoint(perFillScore);
+                    if (!isWord) {
+                        perFillScore = String.format(style, perFillScore);
+                    }
+                    perFillScore = String.format("每空%s分,", perFillScore);
                 } else {
-                    perQuesScore = "";//每题分数不一致则不注明
+                    perFillScore = "";//每空分数不一致则不注明
                 }
 
-                title = String.format("(本大题共<em class=\"e_num\">%s</em>个空格,将每空答在答题卡“%s-%s”相应的序号上。%s共<em class=\"e_num\">%s</em>分)",
-                        blanksNumbers, (firstBlank + 1), lastBlank, perQuesScore, detailScore);
-
+                title = String.format("(本大题共%s个空格,将每空答在答题卡“%s-%s”相应的序号上,%s共%s分)", blanksNumbers, (firstBlank + 1), lastBlank, perFillScore, detailScore);
                 firstBlank = lastBlank;
             }
 

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

@@ -836,22 +836,34 @@ public abstract class ExportPaperAbstractService {
     /**
      * 设置大题标题
      */
-    public void setExportQuestionTitle(List<PaperDetailExp> details) {
+    public void setExportQuestionTitle(List<PaperDetailExp> details, boolean isWord) {
         if (CollectionUtils.isEmpty(details)) {
             return;
         }
 
+        final String style = "<em class=\"e_num\">%s</em>";
+
         for (PaperDetailExp detail : details) {
             String perQuesScore = checkPaperDetailUnitScore(detail);
             if (perQuesScore != null) {
-                perQuesScore = String.format("每小题<em class=\"e_num\">%s</em>分,", CommonUtils.clearZeroPoint(perQuesScore));
+                perQuesScore = CommonUtils.clearZeroPoint(perQuesScore);
+                if (!isWord) {
+                    perQuesScore = String.format(style, perQuesScore);
+                }
+                perQuesScore = String.format("每小题%s分,", perQuesScore);
             } else {
                 perQuesScore = "";//每题分数不一致则不注明
             }
 
             QuesStructType type = detail.getPaperDetailUnits().get(0).getQuestionType();
             String detailScore = CommonUtils.formatValue(detail.getScore());
-            String title = String.format("(本大题共<em class=\"e_num\">%s</em>小题,%s共<em class=\"e_num\">%s</em>分)", detail.getUnitCount(), perQuesScore, detailScore);
+            String unitCount = String.valueOf(detail.getUnitCount());
+
+            if (!isWord) {
+                detailScore = String.format(style, detailScore);
+                unitCount = String.format(style, unitCount);
+            }
+            String title = String.format("(本大题共%s小题,%s共%s分)", unitCount, perQuesScore, detailScore);
 
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
                 detail.setTitleDetail("在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分");
@@ -1457,7 +1469,7 @@ public abstract class ExportPaperAbstractService {
         setQuestionNumberForWord(exportPaper.getPaperDetails());
 
         //设置大题标题
-        setExportQuestionTitle(exportPaper.getPaperDetails());
+        setExportQuestionTitle(exportPaper.getPaperDetails(), true);
         return exportPaper;
     }
 
@@ -1477,7 +1489,7 @@ public abstract class ExportPaperAbstractService {
         setQuestionNumberForHtml(previewPaper.getPaperDetails());
 
         //设置大题标题
-        setExportQuestionTitle(previewPaper.getPaperDetails());
+        setExportQuestionTitle(previewPaper.getPaperDetails(), false);
         return previewPaper;
     }
 

+ 17 - 5
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/HzkjExportPaperService.java

@@ -30,7 +30,7 @@ public class HzkjExportPaperService extends ExportPaperAbstractService {
     @Override
     public void downloadPaper(String paperId, String zipFileName, String examTpye) throws Exception {
         PaperExp paperExp = initPaperExp(paperId);
-        setExportQuestionTitle(paperExp.getPaperDetails());
+        setExportQuestionTitle(paperExp.getPaperDetails(), true);
         if (paperExp != null) {
             String paperfileName = paperExp.getName() + "_" + paperExp.getCourseNo() + "_" + ExamFileType.PAPER.getName() + DOCX_SUFFIX;
             File file = new File(TEMP_FILE_EXP + File.separator + zipFileName + File.separator + paperfileName);
@@ -79,22 +79,34 @@ public class HzkjExportPaperService extends ExportPaperAbstractService {
     }
 
     @Override
-    public void setExportQuestionTitle(List<PaperDetailExp> details) {
+    public void setExportQuestionTitle(List<PaperDetailExp> details, boolean isWord) {
         if (CollectionUtils.isEmpty(details)) {
             return;
         }
 
+        final String style = "<em class=\"e_num\">%s</em>";
+
         for (PaperDetailExp detail : details) {
             String perQuesScore = checkPaperDetailUnitScore(detail);
             if (perQuesScore != null) {
-                perQuesScore = String.format("每小题<em class=\"e_num\">%s</em>分,", CommonUtils.clearZeroPoint(perQuesScore));
+                perQuesScore = CommonUtils.clearZeroPoint(perQuesScore);
+                if (!isWord) {
+                    perQuesScore = String.format(style, perQuesScore);
+                }
+                perQuesScore = String.format("每小题%s分,", perQuesScore);
             } else {
                 perQuesScore = "";//每题分数不一致则不注明
             }
 
-            String detailScore = CommonUtils.formatValue(detail.getScore());
             QuesStructType type = detail.getPaperDetailUnits().get(0).getQuestionType();
-            String title = String.format("(本大题共<em class=\"e_num\">%s</em>小题,%s共<em class=\"e_num\">%s</em>分)", detail.getUnitCount(), perQuesScore, detailScore);
+            String detailScore = CommonUtils.formatValue(detail.getScore());
+            String unitCount = String.valueOf(detail.getUnitCount());
+
+            if (!isWord) {
+                detailScore = String.format(style, detailScore);
+                unitCount = String.format(style, unitCount);
+            }
+            String title = String.format("(本大题共%s小题,%s共%s分)", unitCount, perQuesScore, detailScore);
 
             if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
                 detail.setTitleDetail("在每小题列出的备选项中只有一个符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分");