Ver código fonte

提交通用题库代码

chenken 7 anos atrás
pai
commit
811b19331f

+ 0 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/DzkdExportPaperService.java

@@ -226,9 +226,6 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
 		}
 	}
 	
-
-
-	
 	@Override
     public void uploadFile(ExtractConfig extractConfig,String paperId,ExportStructure exportStructure,AccessUser accessUser) throws Exception{
     	PaperExp paperExp = initPaperExpService.initPaperExp(paperId);

+ 74 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/ExportPaperAbstractService.java

@@ -4,6 +4,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -231,7 +232,80 @@ public abstract class ExportPaperAbstractService {
 	 * @throws Exception
 	 */
     public abstract void uploadFile(ExtractConfig extractConfig,String paperId,ExportStructure exportStructure,AccessUser accessUser)  throws Exception;
+    
+    public PaperExp initPaperExp(String paperId) throws Exception{
+    	PaperExp paperExp = initPaperExpService.initPaperExp(paperId);
+    	setExpDtoTitle(paperExp.getPaperDetails());
+    	return paperExp;
+    }
+    
+    /**
+   	 * 设置大题标题
+   	 * @param paperDetailExps
+   	 */
+   	public void setExpDtoTitle(List<PaperDetailExp> paperDetailExps) {
+   		for(PaperDetailExp paperDetailExp:paperDetailExps){
+   			String title = "";
+   			String titleDetail = null;
+   			String totalScore = BigDecimal.valueOf(paperDetailExp.getScore()).stripTrailingZeros().toPlainString();
+   			QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
+   			String questionScore = checkPaperDetailUnitScore(paperDetailExp);
+   			String scoreString = questionScore==null?"":"每小题"+questionScore+"分,";
+   			if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
+   				paperDetailExp.setName("单项选择题");
+   				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
+   						+ scoreString + "共" + totalScore + "分)";
+   				titleDetail = "在每小题列出的备选项中只有一个符号合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分";
+   			} else if (type == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
+   				paperDetailExp.setName("多项选择题");
+   				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
+   						+ scoreString + "共" + totalScore+ "分)";
+   				titleDetail = "在每小题列出的备选项中有一个或多个符号合题目要求的,请将符合项选出并将“答题卡”的相应代码涂黑";
+   			} else if (type == QuesStructType.BOOL_ANSWER_QUESTION) {
+   				paperDetailExp.setName("判断题");
+   				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
+   						+ scoreString + "共" + totalScore+ "分。"
+   						+ "正确的填涂√、错误填涂×。错涂、多涂或未涂均无分)";
+   			} else {
+   				paperDetailExp.setName(type.getName());
+   				title = "(本大题共"+paperDetailExp.getUnitCount()+"小题,"+scoreString+"共"+totalScore+"分)";
+   			}
+   			paperDetailExp.setTitle(title);
+   			paperDetailExp.setTitleDetail(titleDetail);
+   		}
+   	}
+
+   	/**
+	 * 校验大题下的小题分数是不是一样
+	 * @param paperDetailExp
+	 * @return  如果分数一样,返回分数
+	 * 			如果分数不一样,返回 null
+	 */
+	public String checkPaperDetailUnitScore(PaperDetailExp paperDetailExp) {
+		List<PaperDetailUnitExp> paperDetailUnitExps = paperDetailExp.getPaperDetailUnits();
+		Set<Double> scoreSet = new HashSet<Double>();
+		for (PaperDetailUnitExp unitExp : paperDetailUnitExps) {
+			//判断套路
+			if(unitExp.getQuestionType()==QuesStructType.NESTED_ANSWER_QUESTION){
+				List<Question> subQuestions = unitExp.getQuestion().getSubQuestions();
+				for(Question subQuestion:subQuestions){
+					scoreSet.add(subQuestion.getScore());
+				}
+				/*List<Double> subScoreList =  unitExp.getSubScoreList();
+				for(Double score:subScoreList){
+					scoreSet.add(score);
+				}*/
+			}else{
+				scoreSet.add(unitExp.getScore());
+			}
+		}
+		if(scoreSet.size() == 1){
+			return scoreSet.iterator().next()+"";
+		}
+		return null;
+	}
 
+   	
     /**
      * 创建机考文件,并打包上传至又拍云
      * @param paperId

+ 1 - 37
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/InitPaperExpService.java

@@ -146,8 +146,6 @@ public  class InitPaperExpService {
     	scorePaperDetailExps(paperDetailExps);
     	//给新的大题下所有小题排序
     	sortPaperDetailUnitExps(paperDetailExps);
-    	//给新的大题设置标题
-    	setExpDtoTitle(paperDetailExps);
     	//如果每个小题分数不一样,题干后面添加分数
     	appendScoreToQuestionBody(paperDetailExps);
     	//给每个小题选项排序
@@ -316,41 +314,7 @@ public  class InitPaperExpService {
     	}
 	}
 
-    /**
-	 * 设置大题标题
-	 * @param paperDetailExps
-	 */
-	public void setExpDtoTitle(List<PaperDetailExp> paperDetailExps) {
-		for(PaperDetailExp paperDetailExp:paperDetailExps){
-			String title = "";
-			String titleDetail = null;
-			String totalScore = BigDecimal.valueOf(paperDetailExp.getScore()).stripTrailingZeros().toPlainString();
-			QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
-			String questionScore = checkPaperDetailUnitScore(paperDetailExp);
-			String scoreString = questionScore==null?"":"每小题"+questionScore+"分,";
-			if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
-				paperDetailExp.setName("单项选择题");
-				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-						+ scoreString + "共" + totalScore + "分)";
-				titleDetail = "在每小题列出的备选项中只有一个符号合题目要求的,请将其选出并将“答题卡”的相应代码涂黑,错涂、多涂或未涂均无分";
-			} else if (type == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
-				paperDetailExp.setName("多项选择题");
-				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-						+ scoreString + "共" + totalScore+ "分)";
-				titleDetail = "在每小题列出的备选项中有一个或多个符号合题目要求的,请将符合项选出并将“答题卡”的相应代码涂黑";
-			} else if (type == QuesStructType.BOOL_ANSWER_QUESTION) {
-				paperDetailExp.setName("判断题");
-				title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
-						+ scoreString + "共" + totalScore+ "分。"
-						+ "正确的填涂√、错误填涂×。错涂、多涂或未涂均无分)";
-			} else {
-				paperDetailExp.setName(type.getName());
-				title = "(本大题共"+paperDetailExp.getUnitCount()+"小题,"+scoreString+"共"+totalScore+"分)";
-			}
-			paperDetailExp.setTitle(title);
-			paperDetailExp.setTitleDetail(titleDetail);
-		}
-	}
+   
 	
  	/**
 	 * 校验大题下的小题分数是不是一样

+ 3 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/SxsfExportPaperService.java

@@ -28,7 +28,7 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 	
 	@Override
     public void downloadPaper(String paperId,String zipFileName) throws Exception {
-		PaperExp paperExp = initPaperExpService.initPaperExp(paperId);
+		PaperExp paperExp = initPaperExp(paperId);
 		if(paperExp!=null){
 			String paperfileName = paperExp.getCourseNo()+"_"+ExamFileType.PAPER.getName()+DOCX_SUFFIX;
 			File file = new File(TEMP_FILE_EXP+File.separator+zipFileName+File.separator+paperfileName);
@@ -39,7 +39,7 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 	
 	@Override
 	public void downloadPaperAnswer(String paperId, String zipFileName)throws Exception {
-		PaperExp paperExp = initPaperExpService.initPaperExp(paperId);
+		PaperExp paperExp = initPaperExp(paperId);
 		if(paperExp!=null){
 			String answerFileName = paperExp.getCourseNo()+"_"+ExamFileType.ANSWER.getName()+DOCX_SUFFIX;
 			File file = new File(TEMP_FILE_EXP+File.separator+zipFileName+File.separator+answerFileName);
@@ -50,7 +50,7 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 
 	@Override
     public void uploadFile(ExtractConfig extractConfig,String paperId,ExportStructure exportStructure,AccessUser accessUser) throws Exception{
-		PaperExp paperExp = initPaperExpService.initPaperExp(paperId);
+		PaperExp paperExp = initPaperExp(paperId);
         if (paperExp!=null) {
         	String currNum = CommonUtils.getCurNum();
         	//删除原有试卷文件