Jelajahi Sumber

添加克隆试卷功能service

weiwenhai 7 tahun lalu
induk
melakukan
e993e997da

+ 81 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -1121,7 +1121,87 @@ public class ImportPaperService {
     	return pText.replaceAll("\\["+word+"\\]","").replaceAll("[:|:]", "").trim();
     }
 
-    public static void main(String[] args){
+    /**
+     * 克隆试卷
+     * @param paperId
+     * @param paperName
+     * @param courseNo
+     * @param user
+     * @return
+     */
+    public Map<String, Object> clonePaper(String paperId, String paperName, String courseNo, AccessUser user){
+    	Map<String, Object> map = new HashMap<String, Object>();
+    	String msg = paperService.checkPaperName(paperName, user.getRootOrgId().toString());
+    	if (msg != null) {
+    		map.put("msg", msg);
+            return map;
+        }
+    	//根据paperId查询试卷
+    	Paper oldPaper = paperRepo.findOne(paperId);
+    	if(oldPaper == null){
+    		msg = "克隆试卷不存在";
+    		map.put("msg", msg);
+    		return map;
+    	}
+    	//克隆原试卷所有属性
+    	Paper newPaper = cloneOldPaper(oldPaper,paperName,courseNo,user);
+    	//克隆所有大题和小题
+    	clonePaperDetails(newPaper,oldPaper,paperName,user);
+    	map.put("msg", "success");
+    	return map;
+    }
+     
+	//克隆所有大题和小题
+    private void clonePaperDetails(Paper newPaper, Paper oldPaper,String paperName,AccessUser user) {
+    	List<PaperDetail> oldPaperDetails = paperDetailRepo.findByPaperOrderByNumber(oldPaper);
+    	if(oldPaperDetails != null && oldPaperDetails.size() >0){
+    		for(PaperDetail oldPaperDetail:oldPaperDetails){
+    			PaperDetail paperDetail = new PaperDetail();
+    			//给大题对象属性赋值
+    			paperDetail.setPaper(newPaper);
+    			paperDetail.setNumber(oldPaperDetail.getNumber());
+    			paperDetail.setName(oldPaperDetail.getName());
+    			paperDetail.setTitle(oldPaperDetail.getTitle());
+    			paperDetail.setScore(oldPaperDetail.getScore());
+    			paperDetail.setUnitCount(oldPaperDetail.getUnitCount());
+    			paperDetail.setCreator(user.getName());
+    			paperDetail.setCreateTime(CommonUtils.getCurDateTime());
+    			paperDetail = paperDetailRepo.save(paperDetail);
+    			//查询大题下面所有小题
+    			List<PaperDetailUnit> oldPaperDetailUnits = paperDetailUnitRepo.findByPaperDetailOrderByNumber(oldPaperDetail);
+    			for(PaperDetailUnit oldPaperDetailUnit:oldPaperDetailUnits){
+    				PaperDetailUnit paperDetailUnit = new PaperDetailUnit();
+    				paperDetailUnit.setPaper(newPaper);
+    				paperDetailUnit.setNumber(oldPaperDetailUnit.getNumber());
+    				paperDetailUnit.setScore(oldPaperDetailUnit.getScore());
+    				paperDetailUnit.setSubScoreList(oldPaperDetailUnit.getSubScoreList());
+    				paperDetailUnit.setPaperDetail(paperDetail);
+    				paperDetailUnit.setQuestionType(oldPaperDetailUnit.getQuestionType());
+    				paperDetailUnit.setQuestion(oldPaperDetailUnit.getQuestion());
+    				paperDetailUnit.setOptionOrder(oldPaperDetailUnit.getOptionOrder());
+    				paperDetailUnit.setCreator(user.getName());
+    				paperDetailUnit.setCreateTime(CommonUtils.getCurDateTime());
+    				paperDetailUnit.setPaperType(oldPaperDetailUnit.getPaperType());
+    				paperDetailUnitRepo.save(paperDetailUnit);
+    			}
+    		}
+    		
+    	}
+	}
+
+	//克隆原试卷所有属性
+    private Paper cloneOldPaper(Paper oldPaper,String paperName,String courseNo, AccessUser user) {
+    	Course course = courseRepo.findFirstByCodeAndOrgId(courseNo,user.getRootOrgId().toString());
+    	oldPaper.setName(paperName);
+    	oldPaper.setCreateTime(CommonUtils.getCurDateTime());
+    	oldPaper.setLastModifyName(user.getName());
+    	oldPaper.setOrgId(user.getRootOrgId().toString());
+    	oldPaper.setCourse(course);
+    	oldPaper.setId(null);
+		return paperRepo.save(oldPaper);
+	}
+
+	public static void main(String[] args){
         try {
             File file = new File("/Users/songyue/Downloads/行政组织学A卷.docx");
             File outFile = new File("/Users/songyue/Downloads/行政组织学A1卷.docx");