Browse Source

修改两个大bug

weiwenhai 7 năm trước cách đây
mục cha
commit
72f0b93416

+ 6 - 4
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/ExtractConfigController.java

@@ -163,9 +163,10 @@ public class ExtractConfigController extends ControllerSupport {
 	}
 	
 	@ApiOperation(value = "导出单张考试试卷、答案、试卷结构", notes = "导出单张考试试卷、答案、试卷结构")
-	@GetMapping(value = "/exportSingleExamPaperInfo/{exportWay}/{examId}/{courseId}/{exportContentList}/{loginName}")
+	@GetMapping(value = "/exportSingleExamPaperInfo/{orgName}/{exportWay}/{examId}/{courseId}/{exportContentList}/{loginName}")
 	public void exportSingleExamPaperInfo(HttpServletResponse response,
 											@PathVariable String exportWay,
+											@PathVariable String orgName,
 											@PathVariable String examId,
 											@PathVariable String courseId,
 											@PathVariable String exportContentList,
@@ -181,7 +182,7 @@ public class ExtractConfigController extends ControllerSupport {
 		}
 		exportModel.setExportContentList(list);
 		try {
-			extractConfigFileService.exportExamPaperInfo(exportModel,response,loginName);
+			extractConfigFileService.exportExamPaperInfo(exportModel,response,loginName,orgName);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -206,9 +207,10 @@ public class ExtractConfigController extends ControllerSupport {
 	
 	
 	@ApiOperation(value = "导出整个考试下所有 课程的试卷、答案、试卷结构", notes = "导出整个考试下所有 课程的试卷、答案、试卷结构")
-	@GetMapping(value = "/exportBatchExamPaperInfo/{exportWay}/{examId}/{exportContentList}/{loginName}")
+	@GetMapping(value = "/exportBatchExamPaperInfo/{orgName}/{exportWay}/{examId}/{exportContentList}/{loginName}")
 	public void exportBatchExamPaperInfo(HttpServletResponse response,
 											@PathVariable String exportWay,
+											@PathVariable String orgName,
 											@PathVariable String examId,
 											@PathVariable String exportContentList,
 											@PathVariable String loginName){
@@ -222,7 +224,7 @@ public class ExtractConfigController extends ControllerSupport {
 		}
 		exportModel.setExportContentList(list);
 		try {
-			extractConfigFileService.exportExamPaperInfo(exportModel,response,loginName);
+			extractConfigFileService.exportExamPaperInfo(exportModel,response,loginName,orgName);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigFileService.java

@@ -35,6 +35,6 @@ public interface ExtractConfigFileService {
 	 * 导出考试下的试卷信息
 	 * @param exportModel
 	 */
-	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response,String loginName)  throws Exception ;
+	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response,String loginName,String orgName)  throws Exception ;
 }
 

+ 1 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/export/ExportPaperAbstractService.java

@@ -1448,7 +1448,7 @@ public abstract class ExportPaperAbstractService {
 	 * @param unit
 	 * @return
 	 */
-	private String getAudioFileName(QuestionAudio audio,PaperDetailUnitExp unit,PaperDetailExp paperDetailExp){
+	public String getAudioFileName(QuestionAudio audio,PaperDetailUnitExp unit,PaperDetailExp paperDetailExp){
 		String questionAudioId = audio.getId();
 		StringBuffer audioFileName = new StringBuffer(paperDetailExp.getNumber()+"_"+unit.getNumber()+"_");
 		Question question = unit.getQuestion();

+ 39 - 25
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigFileServiceImpl.java

@@ -188,7 +188,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 	}
 
 	@Override
-	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response,String loginName) throws Exception {
+	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response,String loginName,String orgName) throws Exception {
 		String tempDir = loginName + System.currentTimeMillis();
 		String downloadDir = downloadDirectory +"/"+ tempDir;
 		String downZipDir = zipDirectory +"/"+ tempDir;
@@ -230,7 +230,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 						String groupCode = entry.getKey();
 						String paperId = entry.getValue();
 						if(groupCode.equals(examFile.getGroupCode())){
-							downloadAudio(paperId,examFile,downloadDir);
+							downloadAudio(paperId,examFile,downloadDir,orgName);
 						}
 					}
 				}
@@ -251,25 +251,39 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 	 * 下载试卷音频文件
 	 * @throws Exception 
 	 */
-	private void downloadAudio(String paperId,ExamFile examFile,String downloadDir) throws Exception{
-		Paper paper = paperRepo.findOne(paperId);
+	private void downloadAudio(String paperId,ExamFile examFile,String downloadDir,String orgName) throws Exception{
+		//Paper paper = paperRepo.findOne(paperId);
+		ExportServiceManage esm = exportServiceManageRepo.findByOrgName(orgName);
+		if(esm == null){
+			esm = exportServiceManageRepo.findByOrgName("陕西师范大学");
+		}
+    	ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById(esm.getExportServiceName());
+		PaperExp paperExp = exportPaperAbstractService.initPaperExp(paperId);
 		//下载考试说明
-		if(StringUtils.isNotBlank(paper.getExamRemark())){
-			downExamRemark(paper,downloadDir);
+		if(StringUtils.isNotBlank(paperExp.getExamRemark())){
+			downExamRemark(paperExp,downloadDir,examFile);
 		}
-		List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
-		for(PaperDetailUnit unit:paperDetailUnits){
-			if(unit.getQuestion().getHasAudio()!=null&&unit.getQuestion().getHasAudio()){
-				List<QuestionAudio> questionAudios = questionAudioService.findQuestionAudiosByQuestionId(unit.getQuestion().getId());
-				for(QuestionAudio audio:questionAudios){
-					String audioFileName = examFile.getCourseName()
-											+"_"+examFile.getCourseId()
-											+"_试卷_"+examFile.getGroupCode()
-											+"_"+getAudioFileName(audio,unit);
-					UpYun upyun = new UpYun(bucketName,userName,password);
-					File file = new File(downloadDir+File.separator+audioFileName);
-					upyun.readFile(audio.getFileUrl(), file);
-					logger.info(audioFileName+"音频下载完成后返回");
+		//取到所有大题
+		List<PaperDetailExp> paperDetailExps = paperExp.getPaperDetails();
+		if(paperDetailExps != null && paperDetailExps.size()>0){
+			for(PaperDetailExp paperDetailExp:paperDetailExps){
+				//取到所有小题
+				List<PaperDetailUnitExp> paperDetailUnitExps = paperDetailExp.getPaperDetailUnits();
+				if(paperDetailUnitExps != null && paperDetailUnitExps.size()>0){
+					for(PaperDetailUnitExp unit:paperDetailUnitExps){
+						if(unit.getQuestion().getHasAudio()!=null&&unit.getQuestion().getHasAudio()){
+							List<QuestionAudio> questionAudios = questionAudioService.findQuestionAudiosByQuestionId(unit.getQuestion().getId());
+							for(QuestionAudio audio:questionAudios){
+								String audioFileName = examFile.getCourseName()
+														+"_"+examFile.getCourseId()
+														+"_试卷_"+examFile.getGroupCode()
+														+"_"+exportPaperAbstractService.getAudioFileName(audio,unit,paperDetailExp);
+								UpYun upyun = new UpYun(bucketName,userName,password);
+								File file = new File(downloadDir+File.separator+audioFileName);
+								upyun.readFile(audio.getFileUrl(), file);
+							}
+						}
+					}
 				}
 			}
 		}
@@ -281,14 +295,14 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 	 * @param zipFileName
 	 * @throws Exception
 	 */
-	public void downExamRemark(Paper paper,String zipFileName) throws Exception {
+	public void downExamRemark(PaperExp paperExp,String zipFileName,ExamFile examFile) throws Exception {
 		//1.考试说明html转成word
 		String title = "<p style=\"text-align:center\"><span style=\"font-size:26px\"><span style=\"font-family:宋体\">考&nbsp;试&nbsp;说&nbsp;明</span></span></p>";
 		WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
-		String html = title + ImageUtils.reSizeImg(paper.getExamRemark());
+		String html = title + ImageUtils.reSizeImg(paperExp.getExamRemark());
 		DocxProcessUtil.html2Docx(wordMLPackage, CommonUtils.formatHtml(html));
 		//2.导出考试说明word	
-		File file = new File(zipFileName+File.separator+paper.getCourse().getCode()+TEMP_FILE_NAME);
+		File file = new File(zipFileName+File.separator+paperExp.getName()+"_"+paperExp.getCourse().getName()+"_"+paperExp.getCourse().getCode()+"_"+examFile.getGroupCode()+TEMP_FILE_NAME);
 		Docx4J.save(wordMLPackage, file);
 	}
 	
@@ -300,9 +314,9 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 	 */
 	private String getAudioFileName(QuestionAudio audio,PaperDetailUnit unit){
 		String questionAudioId = audio.getId();
-		StringBuffer audioFileName = new StringBuffer(unit.getNumber()+"_");
+		StringBuffer audioFileName = new StringBuffer(unit.getPaperDetail().getNumber()+"_"+unit.getNumber()+"_");
 		Question question = unit.getQuestion();
-		List<String> idvaluesBody = CommonUtils.getAttrValueFromString(question.getQuesBody(),"a","id");
+		List<String> idvaluesBody = CommonUtils.getTagANames(question.getQuesBody());
 		if(idvaluesBody.contains(questionAudioId)){
 			audioFileName.append("1");//题干
 			audioFileName.append("_");
@@ -312,7 +326,7 @@ public class ExtractConfigFileServiceImpl implements ExtractConfigFileService {
 			List<QuesOption> options = question.getQuesOptions();
 			if(options!=null&&options.size()>0){
 				for(QuesOption option:options){
-					List<String> idvaluesOption = CommonUtils.getAttrValueFromString(option.getOptionBody(),"a","id");
+					List<String> idvaluesOption = CommonUtils.getTagANames(option.getOptionBody());
 					if(idvaluesOption.contains(questionAudioId)){
 						audioFileName.append("2");//选项
 						audioFileName.append("_");