Преглед на файлове

提交导出试卷文件代码

chenken преди 8 години
родител
ревизия
f8220c7a60

+ 1 - 2
cqb-comm-utils/src/main/java/com/qmth/cqb/utils/word/DocxProcessUtil.java

@@ -75,7 +75,6 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 import java.util.regex.Matcher;
@@ -730,7 +729,7 @@ public final class DocxProcessUtil {
             //wordMLPackage.setSourcePartStore(partStore);
         }
         // 以word2007标准模式重新保存(zip包)
-        OutputStream os = new java.io.FileOutputStream(filePath);
+        OutputStream os = new FileOutputStream(filePath);
         Docx4J.save(wordMLPackage, os, Docx4J.FLAG_SAVE_ZIP_FILE);
         IOUtils.closeQuietly(os);
         logger.info("试卷:“"+fileName+"”导出处理图片结束");

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

@@ -110,9 +110,9 @@ public class ExamFile implements Serializable{
     	this.examFileType = examFileType;
     }
     
-    public ExamFile(String examId,ExamType examType){
+    public ExamFile(String examId,String orgId){
     	this.examId = examId;
-    	this.examType = examType;
+    	this.orgId = orgId;
     }
     
 	public String getId() {

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

@@ -84,15 +84,15 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
 	@Autowired
     PaperRepo paperRepo;
 	
-    @Override
+	@Override
     public void downloadPaper(String paperId, HttpServletResponse response) throws Exception {
-        Map<String,Object> dataMap = initExportPaper(paperId);
+    	PaperExp paperExp = initExportPaper(paperId);
         List<String> fileList = new ArrayList<String>();
-        if (dataMap.get("fileName") != null) {
-            String paperfileName = (String) dataMap.get("fileName")+DOCX_SUFFIX;
-            String answerFileName = (String) dataMap.get("fileName")+"_"+ExamFileType.ANSWER.getName()+DOCX_SUFFIX;
-            DocxProcessUtil.exportWord(dataMap, paperfileName,SXSF_TEMPLATE_PAPER);
-            DocxProcessUtil.exportWord(dataMap,answerFileName,SXSF_TEMPLATE_ANSWER);
+        if (paperExp!= null) {
+            String paperfileName = paperExp.getName()+DOCX_SUFFIX;
+            String answerFileName = paperExp.getName()+"_"+ExamFileType.ANSWER.getName()+DOCX_SUFFIX;
+            DocxProcessUtil.exportWord(paperExp, paperfileName,SXSF_TEMPLATE_PAPER);
+            DocxProcessUtil.exportWord(paperExp,answerFileName,SXSF_TEMPLATE_ANSWER);
             DocxProcessUtil.processImage(paperfileName,getPkgList(paperId));
             DocxProcessUtil.processImage(answerFileName,getPkgList(paperId));
             fileList.add(paperfileName);
@@ -101,38 +101,38 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
         }
     }
 
-    @Override
-    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) {
+
+	@Override
+    public void uploadFile(ExtractConfig extractConfig,String paperId,ExportStructure exportStructure,AccessUser accessUser) throws Exception{
+    	PaperExp paperExp = initExportPaper(paperId);
+        if (paperExp!=null) {
         	String currNum = CommonUtils.getCurNum();
-    		ExportStructure exportStructure = (ExportStructure) exportStructureMap.get("exportStructure");
-    		List<QuestionTypeNum> questionTypeNums = new ArrayList<QuestionTypeNum>();
-    		if(exportStructure!=null){
-    			questionTypeNums = exportStructure.getQuestionTypeNums();
-    		}
-    		PaperExp paperExp = (PaperExp) dataMap.get("paper");
         	List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
-        	//检查客观题的数量是否大于试卷导出设置中的客观题数量
-        	if(questionTypeNums.size()>0){
-        		checkObjectiveDetailsNum(paperExp,objectiveDetails,questionTypeNums);
-        	}
         	if(exportStructure==null||exportStructure.getExportType()==ExportType.NORMAL){
+        		List<QuestionTypeNum> questionTypeNums = new ArrayList<QuestionTypeNum>();
+        		if(exportStructure!=null){
+        			questionTypeNums = exportStructure.getQuestionTypeNums();
+        		}
+        		//检查客观题的数量是否大于试卷导出设置中的客观题数量
+            	if(questionTypeNums.size()>0){
+            		checkObjectiveDetailsNum(paperExp,objectiveDetails,questionTypeNums);
+            	}
 	    		//上传试卷
-	        	uploadPaperWord(dataMap,extractConfig,paperId,accessUser,currNum);
+	        	uploadPaperWord(paperExp,extractConfig,paperId,accessUser,currNum);
 	        	//上传答案
-	        	uploadAnswerWord(dataMap,extractConfig,paperId,accessUser,currNum);
+	        	uploadAnswerWord(paperExp,extractConfig,paperId,accessUser,currNum);
+	        	//上传试卷结构
+	        	if(questionTypeNums.size()>0){
+	        		uploadPaperStructure(paperExp,extractConfig,paperId,accessUser,currNum,questionTypeNums);
+	        	}
         	}else if(exportStructure.getExportType()==ExportType.ONLINE){
         		//上传机考JSON文件
         		uploadComputerTestFile(extractConfig,accessUser);
         	}
-        	//上传试卷结构
-        	if(questionTypeNums.size()>0){
-        		uploadPaperStructure(dataMap,extractConfig,paperId,accessUser,currNum,questionTypeNums);
-        	}
         }
     }
     
+
 	/**
      * 生成试卷Word,上传至又拍云
      * @param orgName
@@ -141,10 +141,10 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param paperId
      * @param accessUser
      */
-    private void uploadPaperWord(Map<String,Object> dataMap,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum){
+    private void uploadPaperWord(PaperExp paperExp,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum){
     	String paperfileName = currNum+ExamFileType.PAPER.name()+DOCX_SUFFIX;
     	try {
-			DocxProcessUtil.exportWord(dataMap,paperfileName,SXSF_TEMPLATE_PAPER);
+			DocxProcessUtil.exportWord(paperExp,paperfileName,SXSF_TEMPLATE_PAPER);
 			DocxProcessUtil.processImage(paperfileName,getPkgList(paperId));
 			File paperFile  = new File(TEMP_FILE_EXP+paperfileName);
 			String paperFilePath = uploadUrl+paperfileName;
@@ -165,10 +165,10 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param paperId
      * @param accessUser
      */
-    private void uploadAnswerWord(Map<String,Object> dataMap,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum){
+    private void uploadAnswerWord(PaperExp paperExp,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum){
     	String answerFileName = currNum+ExamFileType.ANSWER.name()+DOCX_SUFFIX;
     	try {
-    		DocxProcessUtil.exportWord(dataMap,answerFileName,SXSF_TEMPLATE_ANSWER);
+    		DocxProcessUtil.exportWord(paperExp,answerFileName,SXSF_TEMPLATE_ANSWER);
     		DocxProcessUtil.processImage(answerFileName,getPkgList(paperId));
     		File answerFile  = new File(TEMP_FILE_EXP+answerFileName);
     		String answerFilePath = uploadUrl+answerFileName;
@@ -184,9 +184,9 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
     /**
      * 生成试卷结构,上传至又拍云
      */
-    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);
+    private void uploadPaperStructure(PaperExp paperExp,ExtractConfig extractConfig,String paperId,AccessUser accessUser,String currNum,List<QuestionTypeNum> questionTypeNums) {
+    	exportObjectiveQuestionStructures(paperExp,extractConfig,accessUser,currNum,questionTypeNums);
+    	exportSubjectiveQuestionStructures(paperExp,extractConfig,accessUser,currNum);
 	}
     
     /**
@@ -194,9 +194,8 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param paperExp
      * @return
      */
-    private void exportObjectiveQuestionStructures(Map<String,Object> dataMap,ExtractConfig extractConfig,AccessUser accessUser,String currNum,List<QuestionTypeNum> questionTypeNums){
+    private void exportObjectiveQuestionStructures(PaperExp paperExp,ExtractConfig extractConfig,AccessUser accessUser,String currNum,List<QuestionTypeNum> questionTypeNums){
     	String objectiveFilename = currNum+ExamFileType.PAPER_STRUCTURE_OBJECTIVE.name()+EXCEL_SUFFIX;
-    	PaperExp paperExp = (PaperExp) dataMap.get("paper");
     	List<PaperDetailExp> objectiveDetails = paperExp.getObjectiveDetails();
     	//根据试卷结构导出设置中的数量补齐客观题
     	fillObjectiveQuestions(objectiveDetails,questionTypeNums);
@@ -286,9 +285,8 @@ public class SxsfExportPaperService extends ExportPaperAbstractService {
      * @param paperExp
      * @return
      */
-    private void exportSubjectiveQuestionStructures(Map<String,Object> dataMap,ExtractConfig extractConfig,AccessUser accessUser,String currNum){
+    private void exportSubjectiveQuestionStructures(PaperExp paperExp,ExtractConfig extractConfig,AccessUser accessUser,String currNum){
     	String subjectiveFileName = currNum+ExamFileType.PAPER_STRUCTURE_SUBJECTIVE.name()+EXCEL_SUFFIX;
-    	PaperExp paperExp = (PaperExp) dataMap.get("paper");
     	List<PaperDetailExp> subjectiveDetails = paperExp.getSubjectiveDetails();
     	List<SubjectiveQuestionStructure> subjectiveQuestionStructureList = new ArrayList<SubjectiveQuestionStructure>();
     	for(PaperDetailExp paperDetailExp:subjectiveDetails){

+ 4 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -14,6 +14,7 @@ import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.nlpcn.commons.lang.util.StringUtil;
 import org.slf4j.Logger;
@@ -715,6 +716,9 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		FileDisposeUtil.fileToZip(downloadDirectory,zipDirectory,zipFileName);
 		//下载zip文件到客户端
 		FileDisposeUtil.downloadFile(zipFileName+".zip",zipDirectory+File.separator+zipFileName+".zip",response);
+		//删除文件夹
+		FileUtils.deleteQuietly(new File(downloadDirectory));
+		FileUtils.deleteQuietly(new File(zipDirectory));
 	}
 	
 	/**