deason 6 éve
szülő
commit
6c080a0032

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

@@ -499,67 +499,74 @@ public abstract class ExportPaperAbstractService {
      * 3.设置选项号
      * 4.替换题干中的##为____
      */
-    public void setQuestionNumberForWord(List<PaperDetailExp> paperDetails) throws Exception {
-        if (CollectionUtils.isEmpty(paperDetails)) {
+    public void setQuestionNumberForWord(List<PaperDetailExp> details) throws Exception {
+        if (CollectionUtils.isEmpty(details)) {
             return;
         }
 
-        for (PaperDetailExp paperDetail : paperDetails) {
-            List<PaperDetailUnitExp> paperDetailUnitExpList = paperDetail.getPaperDetailUnits();
-            for (PaperDetailUnitExp paperDetailUnit : paperDetailUnitExpList) {
+        for (PaperDetailExp detail : details) {
+            List<PaperDetailUnitExp> units = detail.getPaperDetailUnits();
+            for (PaperDetailUnitExp unit : units) {
+                Question question = unit.getQuestion();
+
                 //定义一个字段,用来判断是否为选择题
                 boolean isOption = false;
-                List<QuesOption> optionList = paperDetailUnit.getQuestion().getQuesOptions();
-                if (optionList != null && optionList.size() > 0) {
+                List<QuesOption> options = question.getQuesOptions();
+                if (CollectionUtils.isNotEmpty(options)) {
                     isOption = true;
                     int index = 0;
-                    for (QuesOption quesOption : optionList) {
-                        quesOption.setOptionBodyWord(setOptionNum(quesOption.getOptionBodyWord(), getOptionNum(index)));
+                    for (QuesOption option : options) {
+                        option.setOptionBodyWord(setOptionNum(option.getOptionBodyWord(), getOptionNum(index)));
                         index++;
                     }
                 }
+
                 if (isOption) {
                     //检测选项是否换行
-                    int i = optionLine(optionList);
+                    int i = optionLine(options);
                     if (i == 4) {
-                        optionListFourline(optionList);
+                        optionListFourline(options);
                     }
                     if (i == 2) {
-                        optionListTwoline(optionList);
+                        optionListTwoline(options);
                     }
                 }
-                List<Question> subQuesList = paperDetailUnit.getQuestion().getSubQuestions();
-                Question question = paperDetailUnit.getQuestion();
-                if (subQuesList != null && subQuesList.size() > 0) {
+
+                List<Question> subQuestions = question.getSubQuestions();
+                if (CollectionUtils.isNotEmpty(subQuestions)) {
                     //套题主题干
-                    question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(), subQuesList.get(0).getNumber()));
-                    for (Question subQues : subQuesList) {
+                    question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(), subQuestions.get(0).getNumber()));
+
+                    for (Question subQues : subQuestions) {
                         //处理子题题干,答案
                         subQues.setQuesBodyWord(setSubQuesNum(subQues.getQuesBodyWord(), subQues.getNumber()));
                         subQues.setQuesAnswerWord(setSubQuesNum(subQues.getQuesAnswerWord(), subQues.getNumber()));
                         subQues.setQuesBodyWord(replaceQuesBlank(subQues.getQuesBodyWord(), subQues.getNumber()));
-                        List<QuesOption> subOptionList = subQues.getQuesOptions();
-                        if (subOptionList != null && subOptionList.size() > 0) {
-                            int sub_index = 0;
-                            for (QuesOption quesOption : subOptionList) {
-                                quesOption.setOptionBodyWord(setOptionNum(quesOption.getOptionBodyWord(), getOptionNum(sub_index)));
-                                sub_index++;
+
+                        List<QuesOption> subOptions = subQues.getQuesOptions();
+                        if (CollectionUtils.isNotEmpty(subOptions)) {
+                            int subIndex = 0;
+                            for (QuesOption subOption : subOptions) {
+                                subOption.setOptionBodyWord(setOptionNum(subOption.getOptionBodyWord(), getOptionNum(subIndex)));
+                                subIndex++;
                             }
+
                             //检测选项是否换行
-                            int i = optionLine(subOptionList);
+                            int i = optionLine(subOptions);
                             if (i == 4) {
-                                optionListFourline(subOptionList);
+                                optionListFourline(subOptions);
                             }
                             if (i == 2) {
-                                optionListTwoline(subOptionList);
+                                optionListTwoline(subOptions);
                             }
                         }
                     }
                 } else {
                     //处理非套题题干、答案
-                    question.setQuesBodyWord(setSubQuesNum(question.getQuesBodyWord(), paperDetailUnit.getNumber()));
-                    question.setQuesAnswerWord(setSubQuesNum(question.getQuesAnswerWord(), paperDetailUnit.getNumber()));
-                    question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(), paperDetailUnit.getNumber()));
+                    question.setQuesBodyWord(setSubQuesNum(question.getQuesBodyWord(), unit.getNumber()));
+                    question.setQuesAnswerWord(setSubQuesNum(question.getQuesAnswerWord(), unit.getNumber()));
+
+                    question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(), unit.getNumber()));
                 }
             }
         }
@@ -1634,13 +1641,14 @@ public abstract class ExportPaperAbstractService {
                 List<QuesOption> options = question.getQuesOptions();
                 if (CollectionUtils.isNotEmpty(options)) {
                     for (QuesOption option : options) {
-                        option.setOptionBody(CommonUtils.relaceQuestionIdx(option.getOptionBody().replace("###", "____"), 0));
+                        option.setOptionBody(replaceHashSign(option.getOptionBody()));
                         option.setOptionBodyWord(null);
                     }
                 }
 
                 List<Question> subQuestions = question.getSubQuestions();
                 question.setQuesBodyWord(null);
+                question.setQuesAnswerWord(null);
 
                 if (CollectionUtils.isNotEmpty(subQuestions)) {
                     for (Question subQues : subQuestions) {
@@ -1649,23 +1657,32 @@ public abstract class ExportPaperAbstractService {
                         subQues.setQuesParams(params);
                         subQues.setQuesBodyWord(null);
                         subQues.setQuesAnswerWord(null);
-                        subQues.setQuesBodyWord(null);
 
                         List<QuesOption> subOptions = subQues.getQuesOptions();
-                        if (subOptions != null && subOptions.size() > 0) {
+                        if (CollectionUtils.isNotEmpty(subOptions)) {
                             for (QuesOption subOption : subOptions) {
+                                subOption.setOptionBody(replaceHashSign(subOption.getOptionBody()));
                                 subOption.setOptionBodyWord(null);
-                                subOption.setOptionBody(CommonUtils.relaceQuestionIdx(subOption.getOptionBody().replace("###", "____"), 0));
                             }
                         }
                     }
                 } else {
-                    question.setQuesAnswerWord(null);
-                    question.setQuesBody(CommonUtils.relaceQuestionIdx(question.getQuesBody().replace("###", "____"), 0));
-                    question.setQuesAnswer(CommonUtils.relaceQuestionIdx(question.getQuesAnswer().replace("###", "____"), 0));
+                    question.setQuesBody(replaceHashSign(question.getQuesBody()));
+                    question.setQuesAnswer(replaceHashSign(question.getQuesAnswer()));
                 }
             }
         }
     }
 
+    /**
+     * 替换#号
+     */
+    private String replaceHashSign(String str) {
+        if (StringUtils.isEmpty(str)) {
+            return "";
+        }
+        str = str.replace("###", "____");
+        return CommonUtils.relaceQuestionIdx(str, 0);
+    }
+
 }