ソースを参照

根据试卷id获取答案的html,提供给阅卷端的接口

weiwenhai 7 年 前
コミット
f3673ab00a

+ 7 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigService.java

@@ -103,4 +103,11 @@ public interface ExtractConfigService {
 
 	public PaperDto getPaperDtoByPaperNew(String basePaperId);
 	
+	/**
+	 * 根据考试id获取答案html
+	 * @param paperId
+	 * @return
+	 */
+	public String getAnswerHtml(String paperId);
+	
 }

+ 45 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -10,8 +10,8 @@ import com.qmth.cqb.paper.assemble.PaperDetailDtoAssembler;
 import com.qmth.cqb.paper.assemble.PaperDetailUnitDtoAssembler;
 import com.qmth.cqb.paper.assemble.PaperDtoAssembler;
 import com.qmth.cqb.paper.assemble.SubQuestionDtoAssembler;
-
 import com.qmth.cqb.paper.dao.nativedriver.PaperDetailUnitNativeRepo;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.SystemUtils;
 import org.bson.types.ObjectId;
@@ -963,5 +963,48 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		returnMap.put("paperDto",paperDto);
 		return returnMap;
 	}
-	
+
+	@Override
+	public String getAnswerHtml(String paperId) {
+		//1.根据id查询试卷
+		Paper paper = paperRepo.findOne(paperId);
+		//2.定义html字符串
+		StringBuffer answerHtml = new StringBuffer("<p style=\"text-align:center;font-size:20px;font-weight:bold\">"+paper.getCourse().getName()+"("+paper.getCourse().getCode()+")"+"</p>");
+		//3.通过试卷获取考试端试卷结构
+		PaperDto paperDto = getPaperDtoByPaper(paper,paper.getId());
+		//4.获取试卷所有大题,并且循环
+		List<PaperDetailDto> paperDetailDtos = paperDto.getPaperDetails();
+		for(PaperDetailDto paperDetailDto:paperDetailDtos){
+			String title = "<p>"+paperDetailDto.getCnNum()+"、"+paperDetailDto.getName()+"(共"+paperDetailDto.getScore()+"分)"+"</p>";
+			answerHtml.append(title);
+			//5.获取大题下面的小题,并循环
+			List<PaperDetailUnitDto> paperDetailUnitDtos = paperDetailDto.getPaperDetailUnits();
+			for(PaperDetailUnitDto paperDetailUnitDto:paperDetailUnitDtos){
+				//6.判断是否非套题
+				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>";
+						}
+						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>";
+					}
+					answerHtml.append(answer);
+				}
+			}
+		}
+		return answerHtml.toString();
+	}
+
 }

+ 7 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -255,4 +255,11 @@ public class ExtractConfigController {
 		}
 	}
 	
+	@ApiOperation(value="通过试卷id得到答案", notes="通过试卷id得到答案")
+	@GetMapping(value="/extract/getAnswerHtml/{paperId}")
+	public ResponseEntity<Object> getAnswerHtml(@PathVariable String paperId){
+		String answerHtml = extractConfigService.getAnswerHtml(paperId);
+		return new ResponseEntity<Object>(answerHtml,HttpStatus.OK);
+	}
+	
 }