Преглед изворни кода

阅卷端接口添加题干和答案

weiwenhai пре 7 година
родитељ
комит
ddeec96265

+ 15 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/assemble/PaperDetailUnitDtoAssembler.java

@@ -1,7 +1,11 @@
 package com.qmth.cqb.paper.assemble;
 
 import cn.com.qmth.examcloud.common.dto.question.PaperDetailUnitDto;
+import cn.com.qmth.examcloud.common.dto.question.QuesOptionDto;
+
 import com.qmth.cqb.paper.model.PaperDetailUnit;
+import com.qmth.cqb.question.model.QuesOption;
+
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -22,6 +26,17 @@ public class PaperDetailUnitDtoAssembler {
         paperDetailUnitDto.setOptionOrder(paperDetailUnit.getOptionOrder());
         paperDetailUnitDto.setQuestionType(paperDetailUnit.getQuestionType());
         paperDetailUnitDto.setSubScoreList(paperDetailUnit.getSubScoreList());
+        paperDetailUnitDto.setQuesBody(paperDetailUnit.getQuestion().getQuesBody());
+        if(paperDetailUnit.getQuestion().getQuesOptions() != null && paperDetailUnit.getQuestion().getQuesOptions().size()>0){
+        	List<QuesOptionDto> quesOptionDtos = new ArrayList<QuesOptionDto>();
+        	for(QuesOption quesOption:paperDetailUnit.getQuestion().getQuesOptions()){
+        		QuesOptionDto quesOptionDto = new QuesOptionDto();
+        		quesOptionDto.setNumber(quesOption.getNumber());
+        		quesOptionDto.setOptionBody(quesOption.getOptionBody());
+        		quesOptionDtos.add(quesOptionDto);
+        	}
+        	paperDetailUnitDto.setQuesOptions(quesOptionDtos);
+        }
         return paperDetailUnitDto;
     }
 

+ 65 - 14
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -980,31 +980,82 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			//5.获取大题下面的小题,并循环
 			List<PaperDetailUnitDto> paperDetailUnitDtos = paperDetailDto.getPaperDetailUnits();
 			for(PaperDetailUnitDto paperDetailUnitDto:paperDetailUnitDtos){
-				//6.判断是否非套题
+				//定义题干
+				String body = "";
+				//定义选项
+				String option = "";
+				//定义答案
+				String answer = "";
+				//6.如果为单选和多选
+				if(paperDetailUnitDto.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || paperDetailUnitDto.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION){
+					//获取选项
+					List<QuesOptionDto> quesOptionDtos = paperDetailUnitDto.getQuesOptions();
+					//添加题干
+					body = startWithP(paperDetailUnitDto.getQuesBody(), paperDetailUnitDto.getNumber());
+					answerHtml.append(body);
+					//添加选项
+					for(QuesOptionDto quesOptionDto:quesOptionDtos){
+						option = startWithP(quesOptionDto.getOptionBody(),Integer.parseInt(quesOptionDto.getNumber()));
+						answerHtml.append(option);
+					}
+					answer = startWithP(paperDetailUnitDto.getAnswer(), -1);
+					answerHtml.append(answer);
+				}
+				//7.如果为套题
 				if(paperDetailUnitDto.getSubQuestions()!=null && paperDetailUnitDto.getSubQuestions().size()>0){
 					List<SubQuestionDto> subQuestionDtos = paperDetailUnitDto.getSubQuestions();
 					for(SubQuestionDto subQuestionDto:subQuestionDtos){
-						String answer = "";
-						//判断答案是否以P标签开头
-						if(subQuestionDto.getQuesAnswer().startsWith("<p>")){
-							answer = subQuestionDto.getQuesAnswer().replaceAll("<p>","<p style=\"margin-left:40px;\">").replaceFirst("<p style=\"margin-left:40px;\">", "<p style=\"margin-left:20px;\">" + subQuestionDto.getNumber() + ".");
-						}else{
-							answer = "<p style=\"margin-left:20px;\">" + subQuestionDto.getNumber() + "." + subQuestionDto.getQuesAnswer() + "</p>";
+						//如果子题为单选或者多选
+						if(subQuestionDto.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || subQuestionDto.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION){
+							//获取选项
+							List<QuesOptionDto> quesOptionDtos = subQuestionDto.getQuesOptions();
+							//添加题干
+							body = startWithP(subQuestionDto.getQuesBody(), subQuestionDto.getNumber());
+							answerHtml.append(body);
+							//添加选项
+							for(QuesOptionDto quesOptionDto:quesOptionDtos){
+								option = startWithP(quesOptionDto.getOptionBody(),Integer.parseInt(quesOptionDto.getNumber()));
+								answerHtml.append(option);
+							}
+							answer = startWithP(subQuestionDto.getQuesAnswer(), -1);
+							answerHtml.append(answer);
+						}else {
+							//添加题干
+							body = startWithP(subQuestionDto.getQuesBody(), subQuestionDto.getNumber());
+							answerHtml.append(body);
+							//添加答案
+							answer = startWithP(subQuestionDto.getQuesAnswer(), -1);
+							answerHtml.append(answer);
 						}
-						answerHtml.append(answer);
 					}
 				}else{
-					String answer = "";
-					if(paperDetailUnitDto.getAnswer().startsWith("<p>")){
-						answer = paperDetailUnitDto.getAnswer().replaceAll("<p>","<p style=\"margin-left:40px;\">").replaceFirst("<p style=\"margin-left:40px;\">", "<p style=\"margin-left:20px;\">" + paperDetailUnitDto.getNumber() + ".");
-					}else{
-						answer = "<p style=\"margin-left:20px;\">" + paperDetailUnitDto.getNumber() + "." + paperDetailUnitDto.getAnswer() + "</p>";
-					}
+					//添加题干
+					body = startWithP(paperDetailUnitDto.getQuesBody(), paperDetailUnitDto.getNumber());
+					answerHtml.append(body);
+					//添加答案
+					answer = startWithP(paperDetailUnitDto.getAnswer(), -1);
 					answerHtml.append(answer);
 				}
 			}
 		}
 		return answerHtml.toString();
 	}
+	
+	public String startWithP(String s,Integer number){
+		if(number == -1){
+			if(s.startsWith("<p>")){
+				s = s.replaceAll("<p>","<p style=\"margin-left:40px;\">").replaceFirst("<p style=\"margin-left:40px;\">", "<p style=\"margin-left:20px;\">" + "答案:");
+			}else{
+				s = "<p style=\"margin-left:20px;\">" +  "答案:" + s + "</p>";
+			}
+		}else {
+			if(s.startsWith("<p>")){
+				s = s.replaceAll("<p>","<p style=\"margin-left:40px;\">").replaceFirst("<p style=\"margin-left:40px;\">", "<p style=\"margin-left:20px;\">" + number + ".");
+			}else{
+				s = "<p style=\"margin-left:20px;\">" + number + "." + s + "</p>";
+			}
+		}
+		return s;
+	}
 
 }