Przeglądaj źródła

提交试卷导出代码

chenken 8 lat temu
rodzic
commit
4a17ef83f7

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

@@ -12,7 +12,6 @@ import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
  * @description ExportPaperInfoModel.java
  */
 public class ExportPaperInfoModel implements Serializable{
-	
 	/**
 	 * 
 	 */
@@ -22,6 +21,10 @@ public class ExportPaperInfoModel implements Serializable{
 	 * 考试ID
 	 */
 	private String examId;
+	/**
+	 * 课程ID
+	 */
+	private String courseId;
 	/**
 	 * 考试类型
 	 */
@@ -52,6 +55,14 @@ public class ExportPaperInfoModel implements Serializable{
 	public void setExportContentList(List<String> exportContentList) {
 		this.exportContentList = exportContentList;
 	}
+
+	public String getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(String courseId) {
+		this.courseId = courseId;
+	}
 	
 }
 

+ 21 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/dto/PaperDetailUnitExp.java

@@ -10,7 +10,7 @@ import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
 /**
  * 试卷小题导出dto Created by songyue on 17/3/15.
  */
-public class PaperDetailUnitExp implements Serializable {
+public class PaperDetailUnitExp implements Serializable,Comparable<PaperDetailUnitExp>{
 
     private static final long serialVersionUID = 6507445685386413261L;
 
@@ -97,5 +97,24 @@ public class PaperDetailUnitExp implements Serializable {
 	public void setOptionOrder(String optionOrder) {
 		this.optionOrder = optionOrder;
 	}
-    
+	/**
+	 * 按照number排序
+	 * @param paperDetailUnitExp
+	 * @return
+	 */
+	@Override
+    public int compareTo(PaperDetailUnitExp paperDetailUnitExp) {
+        if (paperDetailUnitExp != null) {
+            if(this.getNumber() == null)return -1;
+            if(paperDetailUnitExp.getNumber() == null)return 1;
+            if (this.getNumber() > paperDetailUnitExp.getNumber()) {
+                return 1;
+            } else if (this.getNumber() < paperDetailUnitExp.getNumber()) {
+                return -1;
+            }else{
+                return 0;
+            }
+        }
+        return -1;
+    }
 }

+ 2 - 4
cqb-paper/src/main/java/com/qmth/cqb/paper/model/ExamFile.java

@@ -2,11 +2,13 @@ package com.qmth.cqb.paper.model;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 import org.springframework.data.annotation.Id;
 
 import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
 
+import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
 import com.qmth.cqb.utils.enums.ExamFileType;
 
 /**
@@ -93,10 +95,6 @@ public class ExamFile implements Serializable{
     	this.examFileType = examFileType;
     }
     
-    public ExamFile(String examId){
-    	this.examId = examId;
-    }
-    
 	public String getId() {
 		return id;
 	}

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

@@ -4,6 +4,7 @@ import java.util.List;
 
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
+import com.qmth.cqb.paper.dto.ExportPaperInfoModel;
 import com.qmth.cqb.paper.model.ExamFile;
 
 /**
@@ -31,5 +32,11 @@ public interface ExamFileService {
 	 * @return
 	 */
 	public List<ExamFile> findExamFileListByExamFile(ExamFile examFile);
+	/**
+	 * 根据导出试卷模型查询ExamFile集合
+	 * @param exportPaperInfoModel
+	 * @return
+	 */
+	public List<ExamFile> findExamFileListByExportPaperInfoModel(ExportPaperInfoModel exportPaperInfoModel);
 }
 

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

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
 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.model.Paper;
 
@@ -93,4 +94,10 @@ public interface ExtractConfigService {
 	 * @return
 	 */
 	public boolean checkAllCourseByExamId(String examId);
+	/**
+	 * 
+	 * @param examId
+	 * @param courseId
+	 */
+	public List<ExamFile> findPaperStructure(String examId, String courseId);
 }

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

@@ -134,7 +134,7 @@ public class DzkdExportPaperService extends ExportPaperAbstractService{
 	}
 
 	@Override
-	public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception {
+	public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception {
 		// TODO Auto-generated method stub
 		
 	}

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

@@ -2,6 +2,7 @@ package com.qmth.cqb.paper.service.export;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -171,7 +172,7 @@ public abstract class ExportPaperAbstractService {
 	 * @param paperId
 	 * @throws Exception
 	 */
-    public abstract void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception;
+    public abstract void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception;
 	
 	/**
 	 * 初始化导出试卷DTO
@@ -305,7 +306,12 @@ public abstract class ExportPaperAbstractService {
 	protected void setUnitExpNumber(List<PaperDetailExp> paperDetails,int startIndxt) throws Exception {
 		int subNum = startIndxt;
 		for (PaperDetailExp paperDetail : paperDetails) {
-			for (PaperDetailUnitExp paperDetailUnit : paperDetail.getPaperDetailUnits()) {
+			
+			List<PaperDetailUnitExp> paperDetailUnitExpList = paperDetail.getPaperDetailUnits();
+			
+			Collections.sort(paperDetailUnitExpList);
+			
+			for (PaperDetailUnitExp paperDetailUnit:paperDetailUnitExpList) {
 				List<QuesOption> optionList = paperDetailUnit.getQuestion().getQuesOptions();
 				if (optionList != null && optionList.size() > 0) {
 					int index = 0;

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

@@ -49,7 +49,7 @@ public class HzkjExportPaperService extends ExportPaperAbstractService {
     }
 
     @Override
-    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception{
+    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception{
     	
     }
     

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

@@ -49,7 +49,7 @@ public class SddxExportPaperService extends ExportPaperAbstractService {
     }
 
     @Override
-    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception{
+    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception{
     	
     }
     

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

@@ -5,6 +5,7 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -14,6 +15,7 @@ import main.java.com.UpYun;
 
 import org.springframework.stereotype.Service;
 
+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;
 
@@ -23,8 +25,10 @@ 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.ExportStructure;
 import com.qmth.cqb.paper.model.ExtractConfig;
-import com.qmth.cqb.paper.model.PaperDetailUnit;
+import com.qmth.cqb.paper.model.QuestionTypeNum;
+import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.ExamFileType;
 import com.qmth.cqb.utils.word.DocxProcessUtil;
@@ -56,13 +60,26 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
     }
 
     @Override
-    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception{
+    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception{
     	Map<String,Object> dataMap = initExportPaper(paperId);
         if (dataMap.get("fileName") != null) {
         	String currNum = CommonUtils.getCurNum();
+    		ExportStructure exportStructure = (ExportStructure) exportStructureMap.get("exportStructure");
+    		List<QuestionTypeNum> questionTypeNums = exportStructure.getQuestionTypeNums();
+    		PaperExp paperExp = (PaperExp) dataMap.get("paper");
+        	List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
+        	//检查客观题的数量是否大于试卷导出设置中的客观题数量
+        	if(exportStructure!=null){
+        		checkObjectiveDetailsNum(paperExp,objectiveDetails,questionTypeNums);
+        	}
+    		//上传试卷
         	uploadPaperWord(dataMap,extractConfig,paperId,accessUser,currNum);
+        	//上传答案
         	uploadAnswerWord(dataMap,extractConfig,paperId,accessUser,currNum);
-        	uploadPaperStructure(dataMap,extractConfig,paperId,accessUser,currNum);
+        	//上传试卷结构
+        	if(exportStructure!=null){
+        		uploadPaperStructure(dataMap,extractConfig,paperId,accessUser,currNum,questionTypeNums);
+        	}
         }
     }
     
@@ -119,8 +136,8 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
     /**
      * 生成试卷结构,上传至又拍云
      */
-    private void uploadPaperStructure(Map<String,Object> dataMap,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum) {
-    	exportObjectiveQuestionStructures(dataMap,extractConfig,accessUser,currNum);
+    private void uploadPaperStructure(Map<String,Object> dataMap,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum,List<QuestionTypeNum> questionTypeNums) {
+    	exportObjectiveQuestionStructures(dataMap,extractConfig,accessUser,currNum,questionTypeNums);
     	exportSubjectiveQuestionStructures(dataMap,extractConfig,accessUser,currNum);
 	}
     
@@ -129,9 +146,11 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param paperExp
      * @return
      */
-    private void exportObjectiveQuestionStructures(Map<String,Object> dataMap,ExtractConfig extractConfig,AccessUser accessUser,String currNum){
+    private void exportObjectiveQuestionStructures(Map<String,Object> dataMap,ExtractConfig extractConfig,AccessUser accessUser,String currNum,List<QuestionTypeNum> questionTypeNums){
     	PaperExp paperExp = (PaperExp) dataMap.get("paper");
     	List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
+    	//根据试卷结构导出设置中的数量补齐客观题
+    	fillObjectiveDetails(objectiveDetails,questionTypeNums);
     	List<ObjectiveQuestionStructure> objectiveQuestionStructureList = new ArrayList<ObjectiveQuestionStructure>();
     	for(PaperDetailExp paperDetailExp:objectiveDetails){
     		for(PaperDetailUnitExp unit:paperDetailExp.getPaperDetailUnits()){
@@ -158,7 +177,66 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 			e.printStackTrace();
 		}
     }
+    
     /**
+     * 根据试卷结构导出设置中的数量补齐客观题
+     * @param objectiveDetails
+     * @param questionTypeNums
+     */
+    private void fillObjectiveDetails(List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
+    	for(PaperDetailExp paperDetailExp:objectiveDetails){
+    		List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
+    		//1.将大题中的小题排序
+    		Collections.sort(paperDetailUnits);
+    		//2.将小题的number重新设置
+    		for(int i = 0;i<paperDetailUnits.size();i++){
+    			PaperDetailUnitExp paperDetailUnitExp = paperDetailUnits.get(i);
+    			paperDetailUnitExp.setNumber(i+1);
+    		}
+    		//3.根据试卷结构导出设置中的数量补齐客观题
+    		QuesStructType type = paperDetailUnits.get(0).getQuestionType();
+    		int unitSize = paperDetailUnits.size();
+    		for(QuestionTypeNum questionTypeNum:questionTypeNums){
+    			if(type==questionTypeNum.getQuestionType()){
+    				int length = questionTypeNum.getQuantity()-unitSize;
+    				for(int i = 0;i<length;i++){
+    					PaperDetailUnitExp paperDetailUnitExp = new PaperDetailUnitExp();
+    					paperDetailUnitExp.setQuestionType(type);
+    					paperDetailUnitExp.setScore((double) 0);
+    					paperDetailUnitExp.setNumber(unitSize+(i+1));
+    					Question question = new Question();
+    					question.setQuesAnswer("#");
+    					paperDetailUnitExp.setQuestion(question);
+    					paperDetailUnits.add(paperDetailUnitExp);
+    				}
+    			}
+    		}
+    	}
+	}
+
+	/**
+     * 检查客观题数量是否小于试卷结构导出设置的数量
+     * @param paperExp
+     * @param objectiveDetails
+     * @param questionTypeNums
+     * @return
+     */
+    private void checkObjectiveDetailsNum(PaperExp paperExp,List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
+	   for(PaperDetailExp paperDetailExp:objectiveDetails){
+			for(QuestionTypeNum typeNum:questionTypeNums){
+				QuesStructType quesStructType = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
+				if(typeNum.getQuestionType()==quesStructType){
+					if(paperDetailExp.getUnitCount()>typeNum.getQuantity()){
+						throw new RuntimeException("试卷:"+paperExp.getName()
+								+"中"+quesStructType.getName()+"的数量:"+paperDetailExp.getUnitCount()
+								+ ",大于试卷结构导出设置的数量:"+typeNum.getQuantity()+",不符合导出规则");
+					}
+				}
+			}
+		}
+    }
+
+   	/**
      * 获得主观题导出结构,并上传至又拍云
      * @param paperExp
      * @return
@@ -191,5 +269,6 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 			e.printStackTrace();
 		}
     }
+    
 }
 

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

@@ -49,7 +49,7 @@ public class TjdxExportPaperService extends ExportPaperAbstractService {
     }
 
     @Override
-    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception{
+    public void uploadFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception{
     	
     }
     

+ 29 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExamFileServiceImpl.java

@@ -1,18 +1,24 @@
 package com.qmth.cqb.paper.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 import main.java.com.UpYun;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Example;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
 
 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;
 
@@ -27,6 +33,8 @@ public class ExamFileServiceImpl implements ExamFileService{
 
 	@Autowired
 	private ExamFileRepo examFileRepo;
+	@Autowired
+	private MongoTemplate MongoTemplate;
 	
 	@Value("${upyun.bucketName}")
 	protected String bucketName;
@@ -69,5 +77,26 @@ public class ExamFileServiceImpl implements ExamFileService{
 		examFileRepo.save(examFile);
 	}
 
+	@Override
+	public List<ExamFile> findExamFileListByExportPaperInfoModel(ExportPaperInfoModel exportPaperInfoModel) {
+		Query query = new Query();
+		if(StringUtils.isBlank(exportPaperInfoModel.getExamId())){
+			throw new RuntimeException("考试ID不能为空");
+		}
+		query.addCriteria(Criteria.where("examId").is(exportPaperInfoModel.getExamId()));
+		if(StringUtils.isNotBlank(exportPaperInfoModel.getCourseId())){
+			query.addCriteria(Criteria.where("courseId").is(exportPaperInfoModel.getCourseId()));
+		}
+		
+		if(exportPaperInfoModel.getExportContentList().size()>0){
+			List<String> examFileTypes = new ArrayList<String>();
+			for(int i = 0;i<exportPaperInfoModel.getExportContentList().size();i++){
+				examFileTypes.add(exportPaperInfoModel.getExportContentList().get(i));
+			}
+			query.addCriteria(Criteria.where("examFileType").in(examFileTypes));
+		}
+		return this.MongoTemplate.find(query, ExamFile.class);
+	}
+
 }
 

+ 32 - 44
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Random;
 import java.util.Set;
 
@@ -64,6 +65,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.PaperType;
 
 /**
@@ -143,6 +145,11 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 
 	@Override
 	public Map<String, Object> saveExtractConfig(ExtractConfig extractConfig,String orgName,AccessUser accessUser) throws Exception {
+		Map<String, Object> returnMap = exportStructureService.findStructureByExamIdAndExamType(extractConfig.getExamId()+"",ExamType.strToEnum(extractConfig.getExamType()));
+		//试卷导出结构设置不完整
+		if("structure_imperfect".equals(returnMap.get("returnMsg"))){
+			return returnMap;
+		}
 		if(extractConfig.getScrambling_the_question_order()==null){
 			extractConfig.setScrambling_the_question_order((short) 0);
 		}
@@ -157,23 +164,24 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			examPaper.setPaper(paper);
 		}
 		extractConfig.setOrgName(orgName);
-		extractConfigRepo.save(extractConfig);
+		extractConfig = extractConfigRepo.save(extractConfig);
+		//生成试卷
+		Map<String, String> paperMap =  makePaperByConfig(extractConfig.getId());
 		//将试卷生成Word后上传至又拍云
-		String paperId = examPapers.get(0).getPaper().getId();
-		Map<String, Object> returnMap = uploadPaperFile(extractConfig,paperId,accessUser);
+		Set<Entry<String,String>> entry = paperMap.entrySet();
+		Iterator<Entry<String,String>> iterator = entry.iterator();
+		while(iterator.hasNext()){
+			String paperId = iterator.next().getValue();
+			uploadPaperFile(extractConfig,paperId,accessUser,returnMap);
+		}
+		returnMap.put("returnMsg", "success");
 		return returnMap;
 	}
 
-	private Map<String, Object> uploadPaperFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser) throws Exception {
-		Map<String, Object> returnMap = exportStructureService.findStructureByExamIdAndExamType(extractConfig.getExamId()+"",ExamType.strToEnum(extractConfig.getExamType()));
-		//试卷结构设置不完整
-		if("structure_imperfect".equals(returnMap.get("returnMsg"))){
-			return returnMap;
-		}
+	private void uploadPaperFile(ExtractConfig extractConfig,String paperId,AccessUser accessUser,Map<String,Object> exportStructureMap) throws Exception {
 		ExportServiceManage esm = exportServiceManageRepo.findByOrgName("陕西师范大学");
     	ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById(esm.getExportServiceName());
-    	exportPaperAbstractService.uploadFile(extractConfig,paperId,accessUser);
-    	return null;
+    	exportPaperAbstractService.uploadFile(extractConfig,paperId,accessUser,exportStructureMap);
 	}
 
 	@Override
@@ -654,22 +662,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 
 	@Override
 	public void exportExamPaperInfo(ExportPaperInfoModel exportModel,HttpServletResponse response) {
-		ExportStructure exportStructure =  exportStructureService.findByExportStructure(new ExportStructure(exportModel));
-		/*if(exportStructure.getExportType()==ExportType.ONLINE){
-			exportEncryptPackage(response);
-		}
-		if(exportStructure.getExportType()==ExportType.NORMAL){
-			exportOrdinaryFile(exportModel,exportStructure,response);
-		}*/
-		exportOrdinaryFile(exportModel,exportStructure,response);
-	}
-	
-	/**
-	 * 普通类型,可以导出试卷、答案、试卷结构
-	 * @param exportModel
-	 */
-	private void exportOrdinaryFile(ExportPaperInfoModel exportModel,ExportStructure exportStructure,HttpServletResponse response) {
-		List<ExamFile> examFiles = examFileService.findExamFileListByExamFile(new ExamFile(exportModel.getExamId()));
+		List<ExamFile> examFiles = examFileService.findExamFileListByExportPaperInfoModel(exportModel);
 		if(examFiles.size()>0){
 			//创建试卷和压缩文件 文件夹
 			createDirectory(downloadDirectory);
@@ -678,9 +671,6 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			for(ExamFile examFile:examFiles){
 				FileDisposeUtil.saveUrlAs(downloadUrl+examFile.getFilePath(),downloadDirectory+"\\"+examFile.getFileName());
 			}
-			//导出试卷结构
-			exportPaperStructure(exportStructure);
-			
 			//创建压缩文件名称
 			String zipFileName = examFiles.get(0).getExamName()+"_"+
 								 examFiles.get(0).getExamType().name()+"_"+
@@ -691,20 +681,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			FileDisposeUtil.downloadFile(zipFileName+".zip",zipDirectory+"\\"+zipFileName+".zip",response);
 		}
 	}
-
-	/**
-	 * 导出试卷结构
-	 * @param exportStructure
-	 */
-	private void exportPaperStructure(ExportStructure exportStructure) {
-		List<QuestionTypeNum> questionTypeNumList = exportStructure.getQuestionTypeNums();
-		
-		
-		
-		
-		
-	}
-
+	
 	/**
 	 * 导出加密数据包
 	 */
@@ -718,6 +695,9 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 	 */
 	@Override
 	public boolean checkAllCourseByExamId(String examId) {
+		
+		
+		
 		return true;
 	}
 
@@ -733,4 +713,12 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		}
 		directory.mkdirs();
 	}
+
+	@Override
+	public List<ExamFile> findPaperStructure(String examId, String courseId) {
+		ExamFile examFile = new ExamFile();
+		examFile.setExamId(examId);
+		examFile.setCourseId(courseId);
+		return examFileService.findExamFileListByExamFile(examFile);
+	}
 }

+ 29 - 9
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -1,7 +1,9 @@
 package com.qmth.cqb.paper.web;
 
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -24,8 +26,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 import cn.com.qmth.examcloud.common.dto.question.PaperDto;
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+import cn.com.qmth.examcloud.common.util.ErrorMsg;
 
 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;
 
@@ -64,16 +68,16 @@ public class ExtractConfigController {
 	
 	@ApiOperation(value = "保存调卷规则", notes = "保存调卷规则")
     @PutMapping(value = "/extractConfig/{orgName}")
-	public ResponseEntity saveExtractConfig(HttpServletRequest request,
+	public ResponseEntity<Object> saveExtractConfig(HttpServletRequest request,
 											@PathVariable String orgName,
 											@RequestBody ExtractConfig extractConfig){
 		try{
 			AccessUser user = (AccessUser) request.getAttribute("accessUser");
 			extractConfig.setOrgId(user.getRootOrgId()+"");
-			extractConfigService.saveExtractConfig(extractConfig,orgName,user);
-			return new ResponseEntity(HttpStatus.OK);
+			Map<String,Object> returnMap = extractConfigService.saveExtractConfig(extractConfig,orgName,user);
+			return new ResponseEntity<Object>(returnMap,HttpStatus.OK);
 		}catch(Exception e){
-			return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<Object>(new ErrorMsg(e.getMessage()),HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 	
@@ -139,16 +143,25 @@ public class ExtractConfigController {
 		}
 	}
 	
-	@ApiOperation(value = "导出考试试卷、答案、试卷结构", notes = "导出考试试卷、答案、试卷结构")
-	@GetMapping(value = "/exportExamPaperInfo/{examId}")
-	public ResponseEntity exportExamPaperInfo(HttpServletResponse response,@PathVariable String examId){
-		//,@RequestBody ExportPaperInfoModel exportModel
+	@ApiOperation(value = "导出单张考试试卷、答案、试卷结构", notes = "导出单张考试试卷、答案、试卷结构")
+	@GetMapping(value = "/exportExamPaperInfo/{examId}/{courseId}/{exportContentList}")
+	public void exportExamPaperInfo(HttpServletResponse response,
+											@PathVariable String examId,
+											@PathVariable String courseId,
+											@PathVariable String exportContentList){
 		ExportPaperInfoModel exportModel = new ExportPaperInfoModel();
 		exportModel.setExamId(examId);
+		exportModel.setCourseId(courseId);
+		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);
 		extractConfigService.exportExamPaperInfo(exportModel,response);
-		return new ResponseEntity(HttpStatus.OK);
 	}
 	
+	
 	@ApiOperation(value = "检查该考试下是否所有课程都制定了调卷规则", notes = "检查该考试下是否所有课程都制定了调卷规则")
 	@GetMapping(value = "/checkAllCourseByExamId/{examId}")
 	public ResponseEntity<Map<String, Object>> checkAllCourseByExamId(@PathVariable String examId){
@@ -158,4 +171,11 @@ public class ExtractConfigController {
 		returnMap.put("resultMsg", result?"是":"否");
 		return new ResponseEntity(returnMap,HttpStatus.OK);
 	}
+	
+	@ApiOperation(value = "检查该课程是否生成试卷结构", notes = "检查该课程是否生成试卷结构")
+	@GetMapping(value = "/findPaperStructure/{examId}/{courseId}")
+	public ResponseEntity findPaperStructure(@PathVariable String examId,@PathVariable String courseId){
+		List<ExamFile> examFiles = extractConfigService.findPaperStructure(examId,courseId);
+		return new ResponseEntity(examFiles,HttpStatus.OK);
+	}
 }