chenken 8 лет назад
Родитель
Сommit
9fae8a985c

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

@@ -1,6 +1,7 @@
 package com.qmth.cqb.paper.service.export;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -8,6 +9,19 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.stereotype.Service;
 
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+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.model.Paper;
+import com.qmth.cqb.paper.model.PaperDetail;
+import com.qmth.cqb.paper.model.PaperDetailUnit;
+import com.qmth.cqb.question.model.Question;
+import com.qmth.cqb.utils.BeanCopierUtil;
+import com.qmth.cqb.utils.CommonUtils;
+import com.qmth.cqb.utils.exception.PaperException;
 import com.qmth.cqb.utils.word.DocxProcessUtil;
 
 @Service("dzkdExportPaperService")
@@ -33,5 +47,89 @@ public class DzkdExportPaperService extends ExportPaperAbstractService{
             DocxProcessUtil.processDownload(fileList, response);
         }
     }
+    
+	/**
+	 * 初始化导出试卷DTO
+	 * @param id
+	 * @return
+	 */
+    @Override
+	protected Map<String,Object> initExportPaper(String paperId) throws Exception {
+		// 创建返回Map
+		Map<String,Object> returnMap = new HashMap<String,Object>();
+		// 获取paper
+		Paper paper = paperRepo.findOne(paperId);
+		paperService.formatPaper(paper, null);
+		if (paper == null) {
+			throw new PaperException("该试卷不存在");
+		}
+		// 创建paperDto
+		PaperExp paperExp = BeanCopierUtil.copyProperties(paper, PaperExp.class);
+		paperExp.setCourseLevel(paper.getLevel()==null?CourseLevel.ALL.name():paper.getLevel().name());
+		List<PaperDetailExp> objectiveDetails = new ArrayList<PaperDetailExp>();// 客观题
+		List<PaperDetailExp> subjectiveDetails = new ArrayList<PaperDetailExp>();// 主观题
+		double objectiveScore = 0;
+		double subjectiveScore = 0;
+		paperExp.setTitle(CommonUtils.PAPER_TITLE);
+		paperExp.setSubTitle(CommonUtils.PAPER_SUB_TITLE);
+		// 获取大题
+		List<PaperDetail> paperDetails = paperDetailRepo.findByPaper(paper);
+		int objectNumber = 1;// 客观题大题序号
+		int objetcUnitSum = 0;
+		for (int i = 0; i < paperDetails.size(); i++) {
+			PaperDetailExp paperDetailExp = BeanCopierUtil.copyProperties(paperDetails.get(i), PaperDetailExp.class);
+			List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetail(paperDetails.get(i));
+			// 把大题分类 :客观题和主观题
+			List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,PaperDetailUnitExp.class);
+			// 选择题,套题下选择题 选项顺序重新排列
+			paperService.reorderChoicequestionOption(paperDetailUnitExps);
+			paperDetailExp.setPaperDetailUnits(paperDetailUnitExps);
+			boolean hasTextAnswer = false;// 判断主观题
+			if (paperDetailUnits.get(0).getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
+				for (Question ques : paperDetailUnits.get(0).getQuestion().getSubQuestions()) {
+					if (ques.getQuestionType() == QuesStructType.TEXT_ANSWER_QUESTION) {
+						hasTextAnswer = true;
+						break;
+					}
+				}
+			} else if (paperDetailUnits.get(0).getQuestionType() == QuesStructType.TEXT_ANSWER_QUESTION) {
+				hasTextAnswer = true;
+			}
+			if (hasTextAnswer) {
+				subjectiveDetails.add(paperDetailExp);
+				subjectiveScore += paperDetailExp.getScore();
+			} else {
+				objectiveDetails.add(paperDetailExp);
+				paperDetailExp.setNumber(objectNumber);
+				paperDetailExp.setCnNum(CommonUtils.toCHNum(objectNumber));
+				objectiveScore += paperDetailExp.getScore();
+				objetcUnitSum += paperDetailExp.getUnitCount();
+				objectNumber++;
+			}
+			setExpTitle(paperDetailExp);
+		}
+
+		paperExp.setObjectiveDetails(objectiveDetails);
+		paperExp.setSubjectiveDetails(subjectiveDetails);
+		paperExp.setObjectiveScore(objectiveScore);
+		paperExp.setSubjectiveScore(subjectiveScore);
+		if (objectiveDetails.size() > 0) {
+			setUnitExpNumber(objectiveDetails, 0);
+			setScore(objectiveDetails);
+		}
+		if (subjectiveDetails.size() > 0) {
+			for (PaperDetailExp subDetail : subjectiveDetails) {
+				subDetail.setNumber(objectNumber);
+				subDetail.setCnNum(CommonUtils.toCHNum(objectNumber));
+				objectNumber++;
+			}
+			setUnitExpNumber(subjectiveDetails, objetcUnitSum);
+			setScore(subjectiveDetails);
+		}
+		returnMap.put("paper", paperExp);
+		returnMap.put("fileName", paperExp.getName());
+
+		return returnMap;
+	}
 
 }

+ 6 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExportPaperController.java

@@ -57,7 +57,12 @@ public class ExportPaperController {
             	ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById(esm.getExportServiceName());
     			exportPaperAbstractService.downloadPaper(id, response);
     		}
-    		//String folderLocalPath = request.getSession().getServletContext().getRealPath("/docxExport/");
+    		/*
+    		ExportServiceManage esm = exportServiceManageRepo.findByOrgName("电子科技大学");
+        	ExportPaperAbstractService exportPaperAbstractService = (ExportPaperAbstractService) SpringContextUtils.getBeanById(esm.getExportServiceName());
+			exportPaperAbstractService.downloadPaper(id, response);
+    		String folderLocalPath = request.getSession().getServletContext().getRealPath("/docxExport/");
+    		*/
 		} catch (Exception e) {
 			e.printStackTrace();
 	        log.error("导出异常:"+e.getMessage());