Bladeren bron

导入逻辑修改

weiwenhai 7 jaren geleden
bovenliggende
commit
cc5a774102

+ 3 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/AudioTimeConfigRepo.java

@@ -6,6 +6,7 @@ import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
 
 import cn.com.qmth.examcloud.core.questions.dao.entity.AudioTimeConfig;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailUnit;
 
 /**
  * @author  	chenken
@@ -23,5 +24,7 @@ public interface AudioTimeConfigRepo  extends MongoRepository<AudioTimeConfig,St
 	
 	List<AudioTimeConfig> findByExamIdAndCourseCodeOrderByGroupCode(String examId,String courseCode);
 	
+	List<AudioTimeConfig> findByPaperDetailUnit(PaperDetailUnit paperDetailUnit);
+	
 }
 

+ 41 - 38
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ImportPaperService.java

@@ -290,6 +290,8 @@ public class ImportPaperService {
         // 小题号
         int subQuesNum = 0;
         for (int i = 0; i < pList.size(); i++) {
+        	//大题下的小题序号
+        	int errorQuesNum = 0;
             P p = (P) pList.get(i);
             String pText = DocxProcessUtil.getPText(p);
             if (StringUtils.isEmpty(pText)) {
@@ -318,6 +320,7 @@ public class ImportPaperService {
                 if(paperDetail == null){
                     throw new PaperException("导入文件格式有误,必须有大题头信息,且以 [ 开头!");
                 }
+                ++errorQuesNum;
                 ++subQuesNum;
                 // 处理试题
                 // 创建小题类和试题类
@@ -328,13 +331,13 @@ public class ImportPaperService {
                 // 处理客观题
                 if (importPaperCheck.quesType.equals(ImportPaperMsg.singleSelection) || importPaperCheck.quesType.equals(ImportPaperMsg.multipleSelection)) {
                     // 处理题干
-                    processQuesBody(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck, tmpWordMlPackage);
+                    processQuesBody(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,tmpWordMlPackage,errorQuesNum);
                     // 处理选项
                     processQuesOption(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,
-                            tmpWordMlPackage);
+                            tmpWordMlPackage,errorQuesNum);
                     // 处理尾信息
                     processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,
-                            importPaperCheck, tmpWordMlPackage, false,paper);
+                            importPaperCheck, tmpWordMlPackage, false,paper,errorQuesNum);
                     // 处理选择题的option--chenken 20170425
                     processSelectOption(question);
                 } else if (importPaperCheck.quesType.equals(ImportPaperMsg.nestedQuestion_word)) {
@@ -342,12 +345,12 @@ public class ImportPaperService {
                     processNestedQues(pList, importPaperCheck.index,question, paperDetailUnit, importPaperCheck,tmpWordMlPackage,paper);
                 } else {
                     // 处理其他题型
-                    processQuesBody(pList, importPaperCheck.index, subQuesNum,question, importPaperCheck, tmpWordMlPackage);
-                    processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false,paper);
+                    processQuesBody(pList, importPaperCheck.index, subQuesNum,question, importPaperCheck, tmpWordMlPackage,errorQuesNum);
+                    processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false,paper,errorQuesNum);
                     //填空题空格校验
                     if(question.getQuestionType().getName() == QuesStructType.FILL_BLANK_QUESTION.getName()){
                     	if(!StringUtils.isBlank(question.getQuesAnswer())){
-                    		processFill(question,paperDetailUnit,importPaperCheck,subQuesNum);
+                    		processFill(question,paperDetailUnit,importPaperCheck,subQuesNum,errorQuesNum);
                     	}
                     }
                 }
@@ -699,7 +702,7 @@ public class ImportPaperService {
      * @throws Exception
      */
     public void processQuesBody(List<Object> pList, int index, int subQuesNum,Question question, ImportPaperCheck importPaperCheck,
-            WordprocessingMLPackage wordMLPackage) throws Exception {
+            WordprocessingMLPackage wordMLPackage, int errorQuesNum) throws Exception {
         // 定义题干wordml和html
         StringBuilder quesBodyWordMl = new StringBuilder();
         StringBuilder quesBodyHtml = new StringBuilder();
@@ -739,13 +742,13 @@ public class ImportPaperService {
             	if(importPaperCheck.nestedHeadNumber!= 0){
         			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+ImportPaperMsg.errMsg_01);
         		}else {
-        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_01);
+        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_01);
     			}
             }else{
             	if(importPaperCheck.nestedHeadNumber!= 0){
-        			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+ImportPaperMsg.errMsg_01);
+        			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+ImportPaperMsg.errMsg_01);
         		}else {
-        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_01);
+        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_01);
     			}
             }
             throw new PaperException(importPaperCheck.errorInfo);
@@ -768,7 +771,7 @@ public class ImportPaperService {
      * @throws Exception
      */
     public String processQuesOption(List<Object> pList, int index, int subQuesNum, Question question,
-            ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage) throws Exception {
+            ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage, int errorQuesNum) throws Exception {
 
         // 定义选项集合
         List<QuesOption> quesOptions = new ArrayList<QuesOption>();
@@ -787,9 +790,9 @@ public class ImportPaperService {
             } else if (DocxProcessUtil.isNumPr(pOption)) {
             	// 检测到序列
             	if(importPaperCheck.nestedHeadNumber!= 0){
-        			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+ImportPaperMsg.errMsg_11);
+        			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+ImportPaperMsg.errMsg_11);
         		}else {
-        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_11);
+        			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_11);
     			}
                 throw new PaperException(importPaperCheck.errorInfo);
             } else if (tmpText.matches("^[a-zA-Z]\\.[\\s\\S]*")) {
@@ -801,9 +804,9 @@ public class ImportPaperService {
                 if(optionNumber != number || "abcdefghijklmnopqrstuvwxyz".indexOf(tmpText.substring(0,1))>-1){
                 	String errorMsg = tmpText.length()>10?tmpText.substring(0, 10):tmpText;
                 	if(importPaperCheck.nestedHeadNumber!= 0){
-            			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
+            			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
             		}else {
-            			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
+            			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
         			}
                     throw new PaperException(importPaperCheck.errorInfo);
                 }
@@ -832,9 +835,9 @@ public class ImportPaperService {
         importPaperCheck.setIndex(i);
         if (optionCount < 2) {
         	if(importPaperCheck.nestedHeadNumber!= 0){
-    			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+"中选项格式不正确或有缺失\n");
+    			importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+"中选项格式不正确或有缺失\n");
     		}else {
-    			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+"中选项格式不正确或有缺失\n");
+    			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+"中选项格式不正确或有缺失\n");
 			}
             throw new PaperException(importPaperCheck.errorInfo);
         } else {
@@ -855,7 +858,7 @@ public class ImportPaperService {
      */
     public void processQuesTail(List<Object> pList, int index, int subQuesNum, Question question,
             PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage,
-            boolean isNested,Paper paper) throws Exception {
+            boolean isNested,Paper paper, int errorQuesNum) throws Exception {
 
         StringBuilder answerWordML = new StringBuilder("");
         StringBuilder answerHTML = new StringBuilder("");
@@ -889,13 +892,13 @@ public class ImportPaperService {
                 if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
                         || question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
                 	//校验单选多选答案
-                	checkSelectAnswer(question,pList.get(i).toString(),importPaperCheck,subQuesNum);
+                	checkSelectAnswer(question,pList.get(i).toString(),importPaperCheck,errorQuesNum);
                     answerWordML.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
                     answerHTML.append(getContent(tmpText, ImportPaperMsg.answer_word));
                 }else if(question.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION){
                     //校验判断题答案
                     String answerText = getContent(tmpText, ImportPaperMsg.answer_word);
-                    checkBoolAnswer(answerText,importPaperCheck,subQuesNum);
+                    checkBoolAnswer(answerText,importPaperCheck,errorQuesNum);
                 	answerWordML.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
                     answerHTML.append(answerText);
                 }else{
@@ -911,9 +914,9 @@ public class ImportPaperService {
                 quesScore = getContent(tmpText, ImportPaperMsg.subQuesScore_word);
                 if(!CommonUtils.isInteger(quesScore)){
                 	if(importPaperCheck.nestedHeadNumber == 0){
-                		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+subQuesNum+"题中[小题分数]格式不对或没有值");
+                		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+errorQuesNum+"题中[小题分数]格式不对或没有值");
                 	}else {
-                		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+subQuesNum+"题中[小题分数]格式不对或没有值");
+                		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+errorQuesNum+"题中[小题分数]格式不对或没有值");
 					}
                 	throw new PaperException(importPaperCheck.errorInfo);
                 }
@@ -939,14 +942,14 @@ public class ImportPaperService {
             else if (tmpText.startsWith(ImportPaperMsg.difficulty)) {
             	// 检测到难度开始段落  difficultyDegree
             	String dif = getContent(tmpText, ImportPaperMsg.difficulty);
-            	difficulty = checkDiffculty(difficulty,dif,importPaperCheck,subQuesNum,question);
+            	difficulty = checkDiffculty(difficulty,dif,importPaperCheck,errorQuesNum,question);
             	question.setDifficultyDegree(difficulty);
             	answerStart = false;
 			}
             else if (tmpText.startsWith(ImportPaperMsg.publicity)) {
             	// 检测到公安度开始段落
             	String pub = getContent(tmpText, ImportPaperMsg.publicity);
-            	publicity = checkPublicity(publicity,pub,importPaperCheck,subQuesNum);
+            	publicity = checkPublicity(publicity,pub,importPaperCheck,errorQuesNum);
             	question.setPublicity(publicity);
             	answerStart = false;
 			}
@@ -966,9 +969,9 @@ public class ImportPaperService {
         //如果没有答案字段,抛出异常
         if(!hasAnswer){
         	if(paperDetailUnit.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
-        		importPaperCheck.setErrorInfo(paperDetailUnit.getPaperDetail().getName()+"中,第"+paperDetailUnit.getNumber()+"个套题的" +subQuesNum+"小题中,缺失“[答案]”");
+        		importPaperCheck.setErrorInfo(paperDetailUnit.getPaperDetail().getName()+"中,第"+paperDetailUnit.getNumber()+"个套题的" +errorQuesNum+"小题中,缺失“[答案]”");
         	}else {
-        		importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+"中,缺失“[答案]”");
+        		importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+"中,缺失“[答案]”");
 			}
         	throw new PaperException(importPaperCheck.errorInfo);
         }
@@ -994,9 +997,9 @@ public class ImportPaperService {
             paperDetailUnit.setScore(Double.parseDouble(quesScore));
         }
     	//校验小题尾信息是否含有"一节属性","二级属性","难度","公开"
-        checkAttributeIsFull(firstProperty,secondProperty,difficulty,publicity,importPaperCheck,subQuesNum);
+        checkAttributeIsFull(firstProperty,secondProperty,difficulty,publicity,importPaperCheck,errorQuesNum);
         //试题一级属性与二级属性校验
-        checkProperty(firstProperty,secondProperty,importPaperCheck,subQuesNum,paper,quesProperties);
+        checkProperty(firstProperty,secondProperty,importPaperCheck,errorQuesNum,paper,quesProperties);
         question.setQuesProperties(quesProperties);
     }
 
@@ -1218,7 +1221,7 @@ public class ImportPaperService {
         //处理套题的头信息
         processNestedQuestionHead(pList,index,0,question,importPaperCheck,paperDetailUnit);
         // 设置套题题干
-        processQuesBody(pList, importPaperCheck.index, 0,question, importPaperCheck, wordMLPackage);
+        processQuesBody(pList, importPaperCheck.index, 0,question, importPaperCheck, wordMLPackage,0);
         // 创建小题集合
         List<Question> subQuesList = new ArrayList<Question>();
         Question subQues = null;
@@ -1260,20 +1263,20 @@ public class ImportPaperService {
                 // 处理客观题
                 if (nestedQuesType.equals(ImportPaperMsg.singleSelection) || nestedQuesType.equals(ImportPaperMsg.multipleSelection)) {
                     // 处理题干
-                    processQuesBody(pList, importPaperCheck.index, subQuesNum,subQues, importPaperCheck, wordMLPackage);
+                    processQuesBody(pList, importPaperCheck.index, subQuesNum,subQues, importPaperCheck, wordMLPackage,subQuesNum);
                     // 处理选项
-                    processQuesOption(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck,wordMLPackage);
+                    processQuesOption(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck,wordMLPackage,subQuesNum);
                     // 处理尾信息
-                    processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper);
+                    processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper,subQuesNum);
                     // 处理选择题的option--chenken 20170426
                     processSelectOption(subQues);
                 } else {
                     // 处理其他题型
-                    processQuesBody(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck, wordMLPackage);
-                    processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper);
+                    processQuesBody(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck, wordMLPackage,subQuesNum);
+                    processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper,subQuesNum);
                     //填空题空格校验
                     if(subQues.getQuestionType().getName() == QuesStructType.FILL_BLANK_QUESTION.getName()){
-                    	processFill(question,paperDetailUnit,importPaperCheck,subQuesNum);
+                    	processFill(question,paperDetailUnit,importPaperCheck,subQuesNum,subQuesNum);
                     }
                 }
                 subQuesList.add(subQues);
@@ -1925,7 +1928,7 @@ public class ImportPaperService {
 	 * 判断填空题题干和答案空格数量是否一致
 	 * @throws PaperException 
 	 */
-	public void processFill(Question question, PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck,int subQuesNum) throws PaperException{
+	public void processFill(Question question, PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck,int subQuesNum,int errorQuesNum) throws PaperException{
 		//按3个#号截取题干
 		String[] quesBody = question.getQuesBody().split("###");
 		String[] quesAnwser = question.getQuesAnswer().split("##");
@@ -1936,9 +1939,9 @@ public class ImportPaperService {
 				//判断题干空格和答案空格是否相等
 				if((quesBody.length -1) != quesAnwser.length){
 					if(importPaperCheck.nestedHeadNumber == 0){
-	            		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+subQuesNum+"题中,题干与答案的空格数量不一样");
+	            		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+errorQuesNum+"题中,题干与答案的空格数量不一样");
 	            	}else {
-	            		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+subQuesNum+"题中,题干与答案的空格数量不一样");
+	            		importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+errorQuesNum+"题中,题干与答案的空格数量不一样");
 					}
 	            	throw new PaperException(importPaperCheck.errorInfo);
 				}

+ 23 - 10
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/BuildComputerTestJsonService.java

@@ -11,6 +11,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import cn.com.qmth.examcloud.core.questions.dao.AudioTimeConfigRepo;
+import cn.com.qmth.examcloud.core.questions.dao.entity.AudioTimeConfig;
 import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
 import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
@@ -44,7 +46,8 @@ public class BuildComputerTestJsonService {
 	@Autowired
 	private PaperDetailService paperDetailService;
 	
-	
+	@Autowired
+	private AudioTimeConfigRepo audioTimeConfigRepo;
     /**
      * 根据调卷规则构建机考数据包实体类
      * @param extractConfig
@@ -74,9 +77,9 @@ public class BuildComputerTestJsonService {
     				//设置小题题号
     				computerTestQuestion.setNumber(i+1);
     				//得到小题题干
-    				computerTestQuestion.setBody(getBody(paperDetailUnit.getQuestion()));
+    				computerTestQuestion.setBody(getBody(paperDetailUnit.getQuestion(),paperDetailUnit));
     				//得到小题所有选项
-    				computerTestQuestion.setOptions(getOption(paperDetailUnit.getQuestion()));
+    				computerTestQuestion.setOptions(getOption(paperDetailUnit.getQuestion(),paperDetailUnit));
     				//查询小题中的 套题
     				List<Question> subQuestionsList = paperDetailUnit.getQuestion().getSubQuestions();
     				//判断这个小题中是否有套题
@@ -88,8 +91,8 @@ public class BuildComputerTestJsonService {
         					ComputerTestQuestion subcomputerTestQuestion = new ComputerTestQuestion(subQuestion);
         					//设置套题中小题题号
         					subcomputerTestQuestion.setNumber(j+1);
-        					subcomputerTestQuestion.setBody(getBody(subQuestion));
-        					subcomputerTestQuestion.setOptions(getOption(subQuestion));
+        					subcomputerTestQuestion.setBody(getBody(subQuestion,null));
+        					subcomputerTestQuestion.setOptions(getOption(subQuestion,null));
         					subQuestions.add(subcomputerTestQuestion);
     					}
         				computerTestQuestion.setSubQuestions(subQuestions);
@@ -107,7 +110,7 @@ public class BuildComputerTestJsonService {
     	return computerTestPapers;
     }
 
-	private Sections getBody(Question question){
+	private Sections getBody(Question question,PaperDetailUnit paperDetailUnit){
     	Sections body = new Sections();
 		List<Section> sections = new ArrayList<Section>(); 
 		//得到小题题干
@@ -117,14 +120,14 @@ public class BuildComputerTestJsonService {
 		for(int i = 0;i<questionRowStrings.length;i++){
 			Section section = new Section();
 			//将小题题干拆分为Block集合
-			section.setBlocks(disposeQuestionBodyOrOption(questionRowStrings[i]));
+			section.setBlocks(disposeQuestionBodyOrOption(questionRowStrings[i],paperDetailUnit));
 			sections.add(section);
 		}
 		body.setSections(sections);
 		return body;
     }
     
-    private List<ComputerTestOption> getOption(Question question){
+    private List<ComputerTestOption> getOption(Question question,PaperDetailUnit paperDetailUnit){
     	//得到小题选项
 		List<QuesOption> quesOptions = question.getQuesOptions();
 		List<ComputerTestOption> options = new ArrayList<ComputerTestOption>();
@@ -142,7 +145,7 @@ public class BuildComputerTestJsonService {
 				String[] optionStrings = optionString.split("</p>");
 				for(int i = 0;i<optionStrings.length;i++){
 					Section section = new Section();
-					section.setBlocks(disposeQuestionBodyOrOption(optionStrings[i]));
+					section.setBlocks(disposeQuestionBodyOrOption(optionStrings[i],paperDetailUnit));
 					sections.add(section);
 				}
 				body.setSections(sections);
@@ -153,7 +156,7 @@ public class BuildComputerTestJsonService {
 		return options;
     }
       
-    private List<Block> disposeQuestionBodyOrOption(String questionRow) {
+    private List<Block> disposeQuestionBodyOrOption(String questionRow,PaperDetailUnit paperDetailUnit) {
     	List<Block> blocks = new ArrayList<Block>();
     	//去掉每行里面的<p>,<span>,</span>标签
     	questionRow = questionRow.replaceAll("<p>", "")
@@ -194,6 +197,16 @@ public class BuildComputerTestJsonService {
 					&&questionRowStrings[i].contains("id")
 					&&questionRowStrings[i].contains("name")){	//处理音频
 				questionRowStrings[i] = "<"+questionRowStrings[i]+">";
+				if(paperDetailUnit == null){
+					block.setPlayTime(null);
+				}else {
+					List<AudioTimeConfig> audioTimeConfigs = audioTimeConfigRepo.findByPaperDetailUnit(paperDetailUnit);
+					if(audioTimeConfigs != null && audioTimeConfigs.size()>0){
+						block.setPlayTime(audioTimeConfigs.get(0).getPlayTime());
+					}else {
+						block.setPlayTime(null);
+					}
+				}
 				block.setType("audio");
 				block.setValue(CommonUtils.getAttrValue(questionRowStrings[i],"id"));
 				blocks.add(block);

+ 2 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExportPaperServiceImpl.java

@@ -109,7 +109,7 @@ public class ExportPaperServiceImpl implements ExportPaperService{
 
 	@Override
 	public void exportPaperFile(String paperId,String serviceName,String exportContentList,HttpServletResponse response,String loginName, String examType) throws Exception {
-		ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById("tjdxExportPaperService");
+		ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById("cqdxExportPaperService");
 		//根据试卷id查询试卷 
 		Paper paper = paperRepo.findOne(paperId);
 		List<Paper> papers = new ArrayList<Paper>();
@@ -401,6 +401,7 @@ public class ExportPaperServiceImpl implements ExportPaperService{
 					&&questionRowStrings[i].contains("id")
 					&&questionRowStrings[i].contains("name")){	//处理音频
 				questionRowStrings[i] = "<"+questionRowStrings[i]+">";
+				block.setPlayTime(1);
 				block.setType("audio");
 				block.setValue(CommonUtils.getAttrValue(questionRowStrings[i],"id"));
 				blocks.add(block);