浏览代码

提交试卷文件导出代码

chenken 8 年之前
父节点
当前提交
2831d2f845

+ 28 - 0
cqb-comm-utils/src/main/java/com/qmth/cqb/utils/enums/ExportWay.java

@@ -0,0 +1,28 @@
+package com.qmth.cqb.utils.enums;
+
+/**
+ * @author  	chenken
+ * @date    	2017年7月20日 上午8:59:58
+ * @company 	QMTH
+ * @description ExportWay.java
+ */
+public enum ExportWay {
+	/**
+	 * 批量导出
+	 */
+	BATCH,
+	/**
+	 * 单独导出
+	 */
+	SINGLE;
+	
+	public static ExportWay strToEnum(String str){
+    	for(ExportWay exportWay:ExportWay.values()){
+    		if(exportWay.name().equals(str)){
+    			return exportWay;
+    		}
+    	}
+    	return null;
+    }
+}
+

+ 26 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/dto/ExportPaperInfoModel.java

@@ -3,6 +3,8 @@ package com.qmth.cqb.paper.dto;
 import java.io.Serializable;
 import java.util.List;
 
+import com.qmth.cqb.utils.enums.ExportWay;
+
 import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
 
 /**
@@ -30,6 +32,21 @@ public class ExportPaperInfoModel implements Serializable{
 	 */
 	private ExamType examType;
 	
+	/**
+	 * BATCH:批量导出
+	 * SINGLE:单个课程导出
+	 */
+	private ExportWay exportWay;
+	
+	/**
+	 * 详见枚举类:ExamFileType
+	 * PAPER
+	 * ANSWER
+	 * PAPER_STRUCTURE_SUBJECTIVE
+	 * PAPER_STRUCTURE_OBJECTIVE
+	 * AUDIO
+	 * ENCRYPT_PACKAGE
+	 */
 	private List<String> exportContentList;
 
 	public String getExamId() {
@@ -63,6 +80,14 @@ public class ExportPaperInfoModel implements Serializable{
 	public void setCourseId(String courseId) {
 		this.courseId = courseId;
 	}
-	
+
+	public ExportWay getExportWay() {
+		return exportWay;
+	}
+
+	public void setExportWay(ExportWay exportWay) {
+		this.exportWay = exportWay;
+	}
+
 }
 

+ 5 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/rpc/ExamCourseClient.java

@@ -7,15 +7,17 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import cn.com.qmth.examcloud.common.dto.core.ExamCourseDto;
+
 /**
  * @author  	chenken
  * @date    	2017年7月18日 上午9:39:46
  * @company 	QMTH
  * @description ExamCourseClient.java
  */
-@FeignClient(value = "ExamCloud-service-core")
+@FeignClient(value = "ExamCloud-service-exam-work")
 public interface ExamCourseClient {
-	@RequestMapping(method = RequestMethod.GET, value = "${app.api.core}/user/disposeCreaterName")
-	List findExamCourseByExamId(@RequestParam("examId") String examId);
+	@RequestMapping(method = RequestMethod.GET, value = "${app.api.exam}/exam_course/marking")
+	List<ExamCourseDto> findExamCourseByExamId(@RequestParam("exam_id") String examId);
 }
 

+ 2 - 8
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigService.java

@@ -87,15 +87,9 @@ public interface ExtractConfigService {
 	 * 导出考试下的试卷信息
 	 * @param exportModel
 	 */
-	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response);
+	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response)  throws Exception ;
 	/**
-	 * 检查是否所有课程都制定了调卷规则
-	 * @param examId
-	 * @return
-	 */
-	public boolean checkAllCourseByExamId(String examId);
-	/**
-	 * 
+	 * 检查该考试下该课程是否生成试卷文件
 	 * @param examId
 	 * @param courseId
 	 */

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

@@ -55,7 +55,7 @@ public class DzkdExportPaperService extends ExportPaperAbstractService{
 	 * @return
 	 */
     @Override
-	protected Map<String,Object> initExportPaper(String paperId) throws Exception {
+    public Map<String,Object> initExportPaper(String paperId) throws Exception {
 		// 创建返回Map
 		Map<String,Object> returnMap = new HashMap<String,Object>();
 		// 获取paper

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

@@ -180,7 +180,7 @@ public abstract class ExportPaperAbstractService {
 	 * @param id
 	 * @return
 	 */
-	protected Map<String,Object> initExportPaper(String paperId) throws Exception {
+	public Map<String,Object> initExportPaper(String paperId) throws Exception {
 		// 创建返回Map
 		Map<String,Object> returnMap = new HashMap<String,Object>();
 		// 获取paper

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

@@ -65,11 +65,15 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
         if (dataMap.get("fileName") != null) {
         	String currNum = CommonUtils.getCurNum();
     		ExportStructure exportStructure = (ExportStructure) exportStructureMap.get("exportStructure");
-    		List<QuestionTypeNum> questionTypeNums = exportStructure.getQuestionTypeNums();
+    		
+    		List<QuestionTypeNum> questionTypeNums = new ArrayList<QuestionTypeNum>();
+    		if(exportStructure!=null){
+    			questionTypeNums = exportStructure.getQuestionTypeNums();
+    		}
     		PaperExp paperExp = (PaperExp) dataMap.get("paper");
         	List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
         	//检查客观题的数量是否大于试卷导出设置中的客观题数量
-        	if(exportStructure!=null){
+        	if(questionTypeNums.size()>0){
         		checkObjectiveDetailsNum(paperExp,objectiveDetails,questionTypeNums);
         	}
     		//上传试卷
@@ -77,7 +81,7 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
         	//上传答案
         	uploadAnswerWord(dataMap,extractConfig,paperId,accessUser,currNum);
         	//上传试卷结构
-        	if(exportStructure!=null){
+        	if(questionTypeNums.size()>0){
         		uploadPaperStructure(dataMap,extractConfig,paperId,accessUser,currNum,questionTypeNums);
         	}
         }
@@ -183,7 +187,7 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param objectiveDetails
      * @param questionTypeNums
      */
-    private void fillObjectiveDetails(List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
+    public void fillObjectiveDetails(List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
     	for(PaperDetailExp paperDetailExp:objectiveDetails){
     		List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
     		//1.将大题中的小题排序

+ 13 - 4
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExamFileServiceImpl.java

@@ -21,6 +21,8 @@ import com.qmth.cqb.paper.dao.ExamFileRepo;
 import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
 import com.qmth.cqb.paper.model.ExamFile;
 import com.qmth.cqb.paper.service.ExamFileService;
+import com.qmth.cqb.utils.enums.ExamFileType;
+import com.qmth.cqb.utils.enums.ExportWay;
 
 /**
  * @author  	chenken
@@ -87,13 +89,20 @@ public class ExamFileServiceImpl implements ExamFileService{
 		if(StringUtils.isNotBlank(exportPaperInfoModel.getCourseId())){
 			query.addCriteria(Criteria.where("courseId").is(exportPaperInfoModel.getCourseId()));
 		}
-		
-		if(exportPaperInfoModel.getExportContentList().size()>0){
+		List<String> exportContentList = exportPaperInfoModel.getExportContentList();
+		//批量导出时,不直接导出试卷结构
+		if(exportPaperInfoModel.getExportWay()==ExportWay.BATCH){
+			exportContentList.remove(ExamFileType.PAPER_STRUCTURE_OBJECTIVE.name());
+			exportContentList.remove(ExamFileType.PAPER_STRUCTURE_SUBJECTIVE.name());
+		}
+		if(exportContentList.size()>0){
 			List<String> examFileTypes = new ArrayList<String>();
-			for(int i = 0;i<exportPaperInfoModel.getExportContentList().size();i++){
-				examFileTypes.add(exportPaperInfoModel.getExportContentList().get(i));
+			for(int i = 0;i<exportContentList.size();i++){
+				examFileTypes.add(exportContentList.get(i));
 			}
 			query.addCriteria(Criteria.where("examFileType").in(examFileTypes));
+		}else{
+			return null;
 		}
 		return this.MongoTemplate.find(query, ExamFile.class);
 	}

+ 118 - 40
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.cqb.paper.service.impl;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -27,6 +28,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import cn.com.qmth.examcloud.common.dto.core.ExamCourseDto;
 import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
 import cn.com.qmth.examcloud.common.dto.question.PaperDetailDto;
 import cn.com.qmth.examcloud.common.dto.question.PaperDetailUnitDto;
@@ -36,6 +38,7 @@ import cn.com.qmth.examcloud.common.dto.question.QuestionDto;
 import cn.com.qmth.examcloud.common.dto.question.SubQuestionDto;
 import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+import cn.com.qmth.examcloud.common.util.excel.ExcelWriter;
 
 import com.qmth.cqb.paper.dao.ExportServiceManageRepo;
 import com.qmth.cqb.paper.dao.ExtractConfigRepo;
@@ -43,6 +46,11 @@ import com.qmth.cqb.paper.dao.PaperDetailRepo;
 import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
 import com.qmth.cqb.paper.dao.PaperRepo;
 import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
+import com.qmth.cqb.paper.dto.ObjectiveQuestionStructure;
+import com.qmth.cqb.paper.dto.PaperDetailExp;
+import com.qmth.cqb.paper.dto.PaperDetailUnitExp;
+import com.qmth.cqb.paper.dto.PaperExp;
+import com.qmth.cqb.paper.dto.SubjectiveQuestionStructure;
 import com.qmth.cqb.paper.model.ExamFile;
 import com.qmth.cqb.paper.model.ExamPaper;
 import com.qmth.cqb.paper.model.ExportServiceManage;
@@ -52,12 +60,14 @@ import com.qmth.cqb.paper.model.Paper;
 import com.qmth.cqb.paper.model.PaperDetail;
 import com.qmth.cqb.paper.model.PaperDetailUnit;
 import com.qmth.cqb.paper.model.QuestionTypeNum;
+import com.qmth.cqb.paper.rpc.ExamCourseClient;
 import com.qmth.cqb.paper.service.ExamFileService;
 import com.qmth.cqb.paper.service.ExportStructureService;
 import com.qmth.cqb.paper.service.ExtractConfigService;
 import com.qmth.cqb.paper.service.PaperDetailUnitService;
 import com.qmth.cqb.paper.service.PaperService;
 import com.qmth.cqb.paper.service.export.ExportPaperAbstractService;
+import com.qmth.cqb.paper.service.export.SxsfExportPaperService;
 import com.qmth.cqb.question.dao.QuesRepo;
 import com.qmth.cqb.question.model.QuesOption;
 import com.qmth.cqb.question.model.Question;
@@ -65,7 +75,7 @@ import com.qmth.cqb.utils.BeanCopierUtil;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.FileDisposeUtil;
 import com.qmth.cqb.utils.SpringContextUtils;
-import com.qmth.cqb.utils.enums.ExportType;
+import com.qmth.cqb.utils.enums.ExportWay;
 import com.qmth.cqb.utils.enums.PaperType;
 
 /**
@@ -113,6 +123,12 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     @Autowired
     private ExportStructureService exportStructureService;
     
+    @Autowired
+    private ExamCourseClient examCourseClient;
+    
+    @Autowired
+    private SxsfExportPaperService sxsfExportPaperService;
+    
     @Value("${upyun.bucketName}")
 	private String bucketName;
 	
@@ -661,58 +677,70 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     }
 
 	@Override
-	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response) {
+	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response) throws Exception {
+		//如果是批量导出,首先检查该考试下的所有课程是否都制定了调卷规则
+		List<String> paperIds = new ArrayList<String>();
+		if(exportModel.getExportWay()==ExportWay.BATCH&&
+				exportModel.getExportContentList().contains("PAPER_STRUCTURE_OBJECTIVE")){
+			paperIds = checkAllCourseByExamId(exportModel.getExamId());
+		}
 		List<ExamFile> examFiles = examFileService.findExamFileListByExportPaperInfoModel(exportModel);
-		if(examFiles.size()>0){
-			//创建试卷和压缩文件 文件夹
-			createDirectory(downloadDirectory);
-			createDirectory(zipDirectory);
-			//下载文件到服务器
+		//创建试卷和压缩文件 文件夹
+		createDirectory(downloadDirectory);
+		createDirectory(zipDirectory);
+		//下载文件到服务器
+		if(examFiles!=null&&examFiles.size()>0){
 			for(ExamFile examFile:examFiles){
 				FileDisposeUtil.saveUrlAs(downloadUrl+examFile.getFilePath(),downloadDirectory+"\\"+examFile.getFileName());
 			}
-			//创建压缩文件名称
-			String zipFileName = examFiles.get(0).getExamName()+"_"+
-								 examFiles.get(0).getExamType().name()+"_"+
-										CommonUtils.getCurNum();
-			//将文件夹压缩成zip文件
-			FileDisposeUtil.fileToZip(downloadDirectory,zipDirectory,zipFileName);
-			//下载zip文件到客户端
-			FileDisposeUtil.downloadFile(zipFileName+".zip",zipDirectory+"\\"+zipFileName+".zip",response);
 		}
+		//生成试卷结构到downloadDirectory目录
+		Map<String, Object> exportStructureMap = exportStructureService.findStructureByExamIdAndExamType(exportModel.getExamId()+"",exportModel.getExamType());
+		ExportStructure exportStructure = (ExportStructure) exportStructureMap.get("exportStructure");
+		if(exportStructure==null){
+			throw new RuntimeException("该考试下的试卷结构导出设置未制定,不能导出");
+		}
+		if(paperIds.size()>0){
+			//创建试卷结构Excel文件
+			makePaperStructure(exportStructure.getExamName(),paperIds,exportStructure);
+		}
+		//创建压缩文件名称
+		String zipFileName = exportStructure.getExamName()+"_"+
+							 exportStructure.getExamType().name()+"_"+
+							 CommonUtils.getCurNum();
+		//将downloadDirectory文件夹压缩成zip文件,存放到zipDirectory文件夹中
+		FileDisposeUtil.fileToZip(downloadDirectory,zipDirectory,zipFileName);
+		//下载zip文件到客户端
+		FileDisposeUtil.downloadFile(zipFileName+".zip",zipDirectory+"\\"+zipFileName+".zip",response);
 	}
 	
-	/**
-	 * 导出加密数据包
-	 */
-	private void exportEncryptPackage(HttpServletResponse response) {
-		
-	}
-
 	/**
 	 * 查询该考试下是否所有课程都制定了调卷规则
 	 * @param examId
 	 */
-	@Override
-	public boolean checkAllCourseByExamId(String examId) {
-		
-		
-		
-		return true;
-	}
-
-	/**
-	 * 创建文件夹
-	 * 如果已经存在,删除再新建
-	 * @param directoryName
-	 */
-	private static void createDirectory(String directoryName){
-		File directory = new File(directoryName);
-		if(directory.exists()){
-			FileUtils.deleteQuietly(directory);
+	private List<String> checkAllCourseByExamId(String examId) {
+		List<String> paperIdList = new ArrayList<String>();
+		List<ExamCourseDto> examCourseDtoList = examCourseClient.findExamCourseByExamId(examId);
+		for(ExamCourseDto examCourseDto:examCourseDtoList){
+			ExtractConfig extractConfig = new ExtractConfig();
+			extractConfig.setExamId(examCourseDto.getExamId());
+			extractConfig.setExamType(examCourseDto.getExamType().name());
+			extractConfig.setCourseCode(examCourseDto.getCourseCode());
+			extractConfig = findConfig(extractConfig);
+			Map<String,String> finishedPaperIdMap = extractConfig.getFinishedPaperIdMap();
+			if(extractConfig==null||finishedPaperIdMap==null){
+				throw new RuntimeException("该考试下的课程没有全部制定调卷规则或考试文件没有生成,不能批量导出");
+			}
+			Set<Entry<String,String>> entry = finishedPaperIdMap.entrySet();
+			Iterator<Entry<String,String>> iterator = entry.iterator();
+			while(iterator.hasNext()){
+				String paperId = iterator.next().getValue();
+				paperIdList.add(paperId);
+			}
 		}
-		directory.mkdirs();
+		return paperIdList;
 	}
+	
 
 	@Override
 	public List<ExamFile> findPaperStructure(String examId, String courseId) {
@@ -721,4 +749,54 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		examFile.setCourseId(courseId);
 		return examFileService.findExamFileListByExamFile(examFile);
 	}
+	
+	
+	private void makePaperStructure(String examName,List<String> paperIds,ExportStructure exportStructure) throws Exception{
+		List<QuestionTypeNum> questionTypeNums = exportStructure.getQuestionTypeNums();
+		
+		List<ObjectiveQuestionStructure> objectiveQuestionStructureList = new ArrayList<ObjectiveQuestionStructure>();
+		
+		List<SubjectiveQuestionStructure> subjectiveQuestionStructureList = new ArrayList<SubjectiveQuestionStructure>();
+		
+		for(String paperId:paperIds){
+			Map<String,Object> dataMap = sxsfExportPaperService.initExportPaper(paperId);
+			PaperExp paperExp = (PaperExp) dataMap.get("paper");
+			List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
+			//根据设置补齐客观题
+			sxsfExportPaperService.fillObjectiveDetails(objectiveDetails, questionTypeNums);
+			List<ObjectiveQuestionStructure> objectiveList = new ArrayList<ObjectiveQuestionStructure>();
+	    	for(PaperDetailExp paperDetailExp:objectiveDetails){
+	    		for(PaperDetailUnitExp unit:paperDetailExp.getPaperDetailUnits()){
+	    			objectiveList.add(new ObjectiveQuestionStructure(paperExp,paperDetailExp,unit));
+	    		}
+	    	}
+	    	objectiveQuestionStructureList.addAll(objectiveList);
+			
+	    	List<PaperDetailExp> subjectiveDetails = paperExp.getSubjectiveDetails();
+	    	List<SubjectiveQuestionStructure> subjectiveList = new ArrayList<SubjectiveQuestionStructure>();
+	    	for(PaperDetailExp paperDetailExp:subjectiveDetails){
+	    		for(PaperDetailUnitExp unit:paperDetailExp.getPaperDetailUnits()){
+	    			subjectiveList.add(new SubjectiveQuestionStructure(paperExp,paperDetailExp,unit));
+	    		}
+	    	}
+	    	subjectiveQuestionStructureList.addAll(subjectiveList);
+		}
+		
+		ExcelWriter objectiveExcelExporter = new ExcelWriter(ObjectiveQuestionStructure.class); 
+    	FileOutputStream out1 = new FileOutputStream(downloadDirectory+"\\"+examName+"_客观题.xlsx");
+    	objectiveExcelExporter.write(examName+"_客观题.xlsx",objectiveQuestionStructureList,out1);
+    	
+    	ExcelWriter subjectiveExcelExporter = new ExcelWriter(SubjectiveQuestionStructure.class); 
+    	FileOutputStream out2 = new FileOutputStream(downloadDirectory+"\\"+examName+"_主观题.xlsx");
+    	subjectiveExcelExporter.write(examName+"_主观题.xlsx",subjectiveQuestionStructureList,out2);
+	}
+	
+	private void createDirectory(String downloadDirectory) {
+		File directory = new File(downloadDirectory);
+		if(directory.exists()){
+			FileUtils.deleteQuietly(directory);
+		}
+		directory.mkdir();
+	}
+	
 }

+ 30 - 12
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -32,6 +32,7 @@ import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
 import com.qmth.cqb.paper.model.ExamFile;
 import com.qmth.cqb.paper.model.ExtractConfig;
 import com.qmth.cqb.paper.service.ExtractConfigService;
+import com.qmth.cqb.utils.enums.ExportWay;
 
 
 /**
@@ -144,12 +145,14 @@ public class ExtractConfigController {
 	}
 	
 	@ApiOperation(value = "导出单张考试试卷、答案、试卷结构", notes = "导出单张考试试卷、答案、试卷结构")
-	@GetMapping(value = "/exportExamPaperInfo/{examId}/{courseId}/{exportContentList}")
+	@GetMapping(value = "/exportSingleExamPaperInfo/{exportWay}/{examId}/{courseId}/{exportContentList}")
 	public void exportExamPaperInfo(HttpServletResponse response,
+											@PathVariable String exportWay,
 											@PathVariable String examId,
 											@PathVariable String courseId,
 											@PathVariable String exportContentList){
 		ExportPaperInfoModel exportModel = new ExportPaperInfoModel();
+		exportModel.setExportWay(ExportWay.strToEnum(exportWay));
 		exportModel.setExamId(examId);
 		exportModel.setCourseId(courseId);
 		String[] exportContentArray = exportContentList.split(",");
@@ -158,21 +161,36 @@ public class ExtractConfigController {
 			list.add(exportContentArray[i]);
 		}
 		exportModel.setExportContentList(list);
-		extractConfigService.exportExamPaperInfo(exportModel,response);
+		try {
+			extractConfigService.exportExamPaperInfo(exportModel,response);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 	}
 	
-	
-	@ApiOperation(value = "检查该考试下是否所有课程都制定了调卷规则", notes = "检查该考试下是否所有课程都制定了调卷规则")
-	@GetMapping(value = "/checkAllCourseByExamId/{examId}")
-	public ResponseEntity<Map<String, Object>> checkAllCourseByExamId(@PathVariable String examId){
-		Map<String, Object> returnMap = new HashMap<String, Object>();
-		boolean result = extractConfigService.checkAllCourseByExamId(examId);
-		returnMap.put("result", result);
-		returnMap.put("resultMsg", result?"是":"否");
-		return new ResponseEntity(returnMap,HttpStatus.OK);
+	@ApiOperation(value = "导出整个考试下所有 课程的试卷、答案、试卷结构", notes = "导出整个考试下所有 课程的试卷、答案、试卷结构")
+	@GetMapping(value = "/exportBatchExamPaperInfo/{exportWay}/{examId}/{exportContentList}")
+	public void exportExamPaperInfo(HttpServletResponse response,
+											@PathVariable String exportWay,
+											@PathVariable String examId,
+											@PathVariable String exportContentList){
+		ExportPaperInfoModel exportModel = new ExportPaperInfoModel();
+		exportModel.setExportWay(ExportWay.strToEnum(exportWay));
+		exportModel.setExamId(examId);
+		String[] exportContentArray = exportContentList.split(",");
+		List<String> list = new ArrayList<String>();
+		for(int i = 0;i<exportContentArray.length;i++){
+			list.add(exportContentArray[i]);
+		}
+		exportModel.setExportContentList(list);
+		try {
+			extractConfigService.exportExamPaperInfo(exportModel,response);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 	}
 	
-	@ApiOperation(value = "检查该课程是否生成试卷结构", notes = "检查该课程是否生成试卷结构")
+	@ApiOperation(value = "检查该考试下该课程是否生成试卷文件", notes = "检查该考试下该课程是否生成试卷文件")
 	@GetMapping(value = "/findPaperStructure/{examId}/{courseId}")
 	public ResponseEntity findPaperStructure(@PathVariable String examId,@PathVariable String courseId){
 		List<ExamFile> examFiles = extractConfigService.findPaperStructure(examId,courseId);

+ 2 - 0
cqb-starter/src/main/resources/application.properties

@@ -4,4 +4,6 @@ logging.config=classpath:log4j2.xml
 spring.application.name=ExamCloud-service-question
 hystrix.command.default.execution.timeout.enabled=false
 api_cqb=/api/ecs_ques
+app.api.core=/api/ecs_core
+app.api.exam=/api/ecs_exam_work
 question.reduplicate.similarity=0.95