Explorar el Código

修改调卷答案问题

宋悦 hace 8 años
padre
commit
b8342c98b4

+ 3 - 0
cqb-comm-utils/src/main/java/com/qmth/cqb/utils/word/DocxProcessUtil.java

@@ -401,6 +401,9 @@ public final class DocxProcessUtil {
      * @return
      */
     public static String getTextInHtml(String htmlStr){
+        if(!htmlStr.startsWith("<p>")){
+            return htmlStr;
+        }
         try {
             org.jsoup.nodes.Document doc = Jsoup.parse(htmlStr);
             String textStr = "";

+ 40 - 29
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -362,11 +362,10 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
             for (int j = 0; j < paperDetailUnitDtos.size(); j++) {
                 PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
                 unitDto.setQuesId(paperDetailUnits.get(j).getQuestion().getId());
-                if (StringUtils.isNotEmpty(paperDetailUnits.get(j).getQuestion().getQuesAnswer())) {
-                    String answer = DocxProcessUtil
-                            .getTextInHtml(paperDetailUnits.get(j).getQuestion().getQuesAnswer());
-                    unitDto.setAnswer(answer);
-                }
+				String answer = paperDetailUnits.get(j).getQuestion().getQuesAnswer();
+				if (StringUtils.isNotEmpty(answer)) {
+					unitDto.setAnswer(answer);
+				}
                 if (unitDto.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {// 假如是套题
                     List<Question> subQuesList = paperDetailUnits.get(j).getQuestion().getSubQuestions();
                     List<SubQuestionDto> subQuesDtos = BeanCopierUtil.copyPropertiesOfList(subQuesList,
@@ -375,8 +374,9 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
                         List<QuesOptionDto> quesOptionDtos = BeanCopierUtil
                                 .copyPropertiesOfList(subQuesList.get(m).getQuesOptions(), QuesOptionDto.class);
                         subQuesDtos.get(m).setQuesOptions(quesOptionDtos);
-                        subQuesDtos.get(m)
-                                .setQuesAnswer(DocxProcessUtil.getTextInHtml(subQuesList.get(m).getQuesAnswer()));
+						if(StringUtils.isNotEmpty(subQuesList.get(m).getQuesAnswer())){
+							subQuesDtos.get(m).setQuesAnswer(subQuesList.get(m).getQuesAnswer());
+						}
                         subQuesDtos.get(m).setNumber(m + 1);
                     }
                     unitDto.setSubQuestions(subQuesDtos);
@@ -388,33 +388,34 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		return paperDto;
 	}
 
-	private void setAnswer(List<PaperDetailUnit> paperDetailUnits){
+	private void setAnswer(List<PaperDetailUnit> paperDetailUnits) {
 
-		for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
+		for (PaperDetailUnit paperDetailUnit : paperDetailUnits) {
 
 			String optionOrder = paperDetailUnit.getOptionOrder();
 
-			if (StringUtil.isNotBlank(optionOrder)) {
 
-				Question question = paperDetailUnit.getQuestion();
+			Question question = paperDetailUnit.getQuestion();
 
-				if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
-						|| question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
+			if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
+					|| question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
 
-					setAnswerUnit(question,optionOrder);
+				setAnswerUnit(question, optionOrder);
 
-				}else if (question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
+			} else if (question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
 
-					List<Question> subQuestions = question.getSubQuestions();
-					int index = 0;
-					for (int k = 0; k < subQuestions.size(); k++) {
+				List<Question> subQuestions = question.getSubQuestions();
+				int index = 0;
+				for (int k = 0; k < subQuestions.size(); k++) {
 
-						Question subQuestion = subQuestions.get(k);
-						if (subQuestion.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
-								|| subQuestion.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
-							setAnswerUnit(subQuestion,optionOrder.split(";")[index]);
-							index++;
-						}
+					Question subQuestion = subQuestions.get(k);
+					if (subQuestion.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
+							|| subQuestion.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
+						if(StringUtils.isNotEmpty(optionOrder) && optionOrder.contains(";")){
+							setAnswerUnit(subQuestion, optionOrder.split(";")[index]);
+						}else{
+							setAnswerUnit(subQuestion, "");								}
+						index++;
 					}
 				}
 			}
@@ -423,14 +424,24 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 
 	private void setAnswerUnit(Question question,String optionOrder){
 		List<QuesOption> quesOptions = question.getQuesOptions();
-		if(StringUtils.isEmpty(optionOrder) || quesOptions == null || quesOptions.size() == 0){
+		if(quesOptions == null || quesOptions.size() == 0){
 			return;
 		}
-		String [] order = optionOrder.split(",");
-		for(int i = 0;i < order.length;i++){
+		if(StringUtils.isEmpty(optionOrder)){
+			int j = 0;
 			for(QuesOption quesOption : quesOptions){
-				if(order[i].equals(quesOption.getNumber()) && quesOption.getIsCorrect() == 1){
-					question.setQuesAnswer("<p>"+CommonUtils.getOptionNum(i)+"</p>");
+				if(quesOption.getIsCorrect() == 1){
+					question.setQuesAnswer(CommonUtils.getOptionNum(j));
+				}
+				j++;
+			}
+		}else{
+			String [] order = optionOrder.split(",");
+			for(int i = 0;i < order.length;i++){
+				for(QuesOption quesOption : quesOptions){
+					if(order[i].equals(quesOption.getNumber()) && quesOption.getIsCorrect() == 1){
+						question.setQuesAnswer(CommonUtils.getOptionNum(i));
+					}
 				}
 			}
 		}