Browse Source

蓝图组卷添加难度功能

weiwenhai 7 years ago
parent
commit
1a069c6ab3

+ 6 - 0
cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/service/GenPaperService.java

@@ -13,6 +13,7 @@ import java.util.Set;
 import java.util.UUID;
 
 import com.qmth.cqb.utils.enums.PaperStructType;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +31,7 @@ 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.PaperStruct;
+import com.qmth.cqb.paper.service.PaperService;
 import com.qmth.cqb.question.model.QuesProperty;
 import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.utils.BeanCopierUtil;
@@ -57,6 +59,9 @@ public class GenPaperService {
     @Autowired
     CourseRepo courseRepo;
     
+    @Autowired
+    PaperService paperService;
+    
     /**
      * 精确组卷,根据设定试卷结构组卷
      * 
@@ -368,6 +373,7 @@ public class GenPaperService {
                                  List<PaperDetailUnit> selectedUnits,
                                  List<PaperDetail> details,
                                  Paper paper) {
+    	paper.setDifficultyDegree(paperService.reSetDifficulty(paper, paper.getTotalScore()));
         paper = paperRepo.save(paper);
         for (PaperDetail pd : details) {
             pd.setPaper(paper);

+ 258 - 250
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -1,250 +1,258 @@
-package com.qmth.cqb.paper.service;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.springframework.data.domain.Page;
-import org.springframework.web.multipart.MultipartFile;
-
-import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
-import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
-
-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.paper.model.PaperSearchInfo;
-import com.qmth.cqb.question.model.Question;
-import com.qmth.cqb.utils.enums.PaperType;
-
-
-/**
- * @author  	chenken
- * @date    	2017年9月12日 上午11:21:48
- * @company 	QMTH
- * @description PaperService.java
- */
-public interface PaperService {
-    /**
-     * 查询所有已导入试卷
-     *
-     * @param paperSearchInfo
-     * @param curPage
-     * @param pageSize
-     * @return
-     */
-    public Page<Paper> getImportPapers(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
-
-    /**
-     * 查询所有待审核和审核不通过的导入试卷
-     * 
-     * @param paperSearchInfo
-     * @param curPage
-     * @param pageSize
-     * @return
-     */
-    public Page<Paper> getImportPapersNotSuccess(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
-
-    /**
-     * 根据条件查询
-     * 
-     * @param paperSearchInfo
-     * @return
-     */
-    public List<Paper> getImportPapersBySearch(PaperSearchInfo paperSearchInfo);
-
-    /**
-     * 根据条件查询
-     *
-     * @param paperSearchInfo
-     * @return
-     */
-    public List<Paper> getGenPapersBySearch(PaperSearchInfo paperSearchInfo);
-
-    /**
-     * 保存试卷
-     *
-     * @param paperExp
-     * @return
-     */
-    public Map<String, Object> savePaper(PaperExp paperExp, AccessUser user);
-
-    /**
-     * 查询所有已组试卷
-     *
-     * @param paperSearchInfo
-     * @param curPage
-     * @param pageSize
-     * @return
-     */
-    public Page<Paper> getGenPapers(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
-
-    /**
-     * 查询考试试卷
-     *
-     * @param id
-     * @param courseCode
-     * @param groupCode
-     * @return
-     */
-    public List<Paper> listExamPapers(long id, String courseCode, String groupCode);
-
-    /**
-     * 设置考试试卷
-     *
-     * @param examId
-     * @param courseCode
-     * @param groupCode
-     * @param paperId
-     * @return
-     */
-    public void joinToExamPaper(long examId, String courseCode, String groupCode, String paperId);
-
-    public void releaseExamPaper(long examId, String courseCode, String groupCode, String paperId);
-
-    public Set<String> listGroupCodes(long examId, String courseCode);
-
-    public void deletGroupCode(long examId, String courseCode, String groupCode);
-
-    /**
-     * 根据试卷ID获取试卷下面的大题
-     *
-     * @param id
-     * @return
-     */
-    public List<PaperDetail> findPaperDetailsById(String id);
-
-    /**
-     * 批量删除试卷
-     *
-     * @param paperIds
-     */
-    public Map<String, Object> deletePapers(List<String> paperIds);
-
-    /**
-     * 批量通过试卷
-     *
-     * @param paperIds
-     */
-    public void passPapers(List<String> paperIds);
-
-    /**
-     * 批量不通过试卷
-     *
-     * @param paperIds
-     */
-    public void noPassPapers(List<String> paperIds);
-
-    /**
-     * 批量待审核试卷
-     *
-     * @param paperIds
-     */
-    public void backPapers(List<String> paperIds);
-
-    /**
-     * 初始化导出试卷DTO
-     *
-     * @param id
-     * @return
-     */
-    public PaperExp getPaperDto(String id);
-    /**
-     * 重新对选择题option进行排序(多选、单选、套题下选择题)
-     */
-    public void reorderChoicequestionOption(List<PaperDetailUnitExp> paperDetailUnitExps);
-    /**
-     * 初始化试卷内容(增加序号)
-     *
-     * @param paperExp
-     */
-    public void initPaper(PaperExp paperExp);
-    /**
-     * 格式化查询条件
-     *
-     * @param paperSearchInfo
-     */
-    public void formatPaperSearchInfo(PaperSearchInfo paperSearchInfo);
-    /**
-     *1.重新设置小题number,并返回试卷总分
-     *2.重新计算大题的总分和小题总数
-     *3.重新保存试卷大题数量、小题数量、试卷总分等信息
-     * @param paper
-     */
-    public void formatPaper(Paper paper, AccessUser user);
-	/**
-     * 先备份准备删掉的试题,然后再删掉
-     *
-     * @param questionId
-     * @return
-     */
-    public List<String> deleteImportQuestionById(String questionId, AccessUser user);
-    /**
-     * 向试卷中插入一个试题
-     * @param paperId
-     * @param paperDetailId
-     * @return
-     */
-    public Paper insertQuestionToPaper(String paperId, String paperDetailId, Question question, AccessUser user);
-    /**
-     * 获取试题所在的试卷名称
-     *
-     * @param questionId
-     * @return
-     */
-    public List<String> getPaperNamesByQuestionId(String questionId);
-    
-    public Page<Question> listQuestionforSelect(String paperId,int curPage,int pageSize,QuesStructType quesType,AccessUser accessUser,String quesBody);
-
-    public Paper selectQuestionsToPaper(String paperId, String paperDetailId, List<Question> questions,
-            AccessUser user);
-
-    public String checkPaperName(String paperName, String orgId);
-
-    public void checkPaperNameNew(String paperName, String orgId)throws Exception;
-
-    public Page<Paper> getImportPapersNotInIds(PaperSearchInfo paperSearchInfo, String[] ids, int curPage,int pageSize);
-    /**
-     * 将选中的导入试卷复制为卷库试卷
-     */
-    public void useBasePaper(String selectedPaperIds,String userId);
-    /**
-     * 根据试卷名称、试卷类型检查名称是否存在
-     * @param paperName
-     * @param paperType
-     * @param orgId
-     * @return
-     * @throws Exception
-     */
-    public boolean checkPaperName(String paperName, PaperType paperType,String orgId)throws Exception;
-    
-    /**
-     * 上传音频文件检查
-     * @param paperId
-     * @param filesName
-     * @return
-     */
-    public Map<String, String> checkRadioFile(String paperId,List<String> filesName);
-    
-    //判断选项
-    public Map<String, String> checkOptions(List<PaperDetailUnit> paperDetailUnits,String fileNames[],String fileName);
-    
-    /**
-     * 上传音频文件到又拍云
-     * @param files
-     * @param paperId
-     * @param accessUser
-     * @throws IOException
-     */
-    public void uploadRadio(List<MultipartFile> files,String paperId,AccessUser accessUser) throws IOException;
-    
-    /**
-     * 音频文件插入到标签
-     * @param files
-     * @param paperId
-     */
-    public void appendAudioTag(String fileName,String questionId);
-}
+package com.qmth.cqb.paper.service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.springframework.data.domain.Page;
+import org.springframework.web.multipart.MultipartFile;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
+
+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.paper.model.PaperSearchInfo;
+import com.qmth.cqb.question.model.Question;
+import com.qmth.cqb.utils.enums.PaperType;
+
+
+/**
+ * @author  	chenken
+ * @date    	2017年9月12日 上午11:21:48
+ * @company 	QMTH
+ * @description PaperService.java
+ */
+public interface PaperService {
+    /**
+     * 查询所有已导入试卷
+     *
+     * @param paperSearchInfo
+     * @param curPage
+     * @param pageSize
+     * @return
+     */
+    public Page<Paper> getImportPapers(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
+
+    /**
+     * 查询所有待审核和审核不通过的导入试卷
+     * 
+     * @param paperSearchInfo
+     * @param curPage
+     * @param pageSize
+     * @return
+     */
+    public Page<Paper> getImportPapersNotSuccess(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
+
+    /**
+     * 根据条件查询
+     * 
+     * @param paperSearchInfo
+     * @return
+     */
+    public List<Paper> getImportPapersBySearch(PaperSearchInfo paperSearchInfo);
+
+    /**
+     * 根据条件查询
+     *
+     * @param paperSearchInfo
+     * @return
+     */
+    public List<Paper> getGenPapersBySearch(PaperSearchInfo paperSearchInfo);
+
+    /**
+     * 保存试卷
+     *
+     * @param paperExp
+     * @return
+     */
+    public Map<String, Object> savePaper(PaperExp paperExp, AccessUser user);
+
+    /**
+     * 查询所有已组试卷
+     *
+     * @param paperSearchInfo
+     * @param curPage
+     * @param pageSize
+     * @return
+     */
+    public Page<Paper> getGenPapers(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
+
+    /**
+     * 查询考试试卷
+     *
+     * @param id
+     * @param courseCode
+     * @param groupCode
+     * @return
+     */
+    public List<Paper> listExamPapers(long id, String courseCode, String groupCode);
+
+    /**
+     * 设置考试试卷
+     *
+     * @param examId
+     * @param courseCode
+     * @param groupCode
+     * @param paperId
+     * @return
+     */
+    public void joinToExamPaper(long examId, String courseCode, String groupCode, String paperId);
+
+    public void releaseExamPaper(long examId, String courseCode, String groupCode, String paperId);
+
+    public Set<String> listGroupCodes(long examId, String courseCode);
+
+    public void deletGroupCode(long examId, String courseCode, String groupCode);
+
+    /**
+     * 根据试卷ID获取试卷下面的大题
+     *
+     * @param id
+     * @return
+     */
+    public List<PaperDetail> findPaperDetailsById(String id);
+
+    /**
+     * 批量删除试卷
+     *
+     * @param paperIds
+     */
+    public Map<String, Object> deletePapers(List<String> paperIds);
+
+    /**
+     * 批量通过试卷
+     *
+     * @param paperIds
+     */
+    public void passPapers(List<String> paperIds);
+
+    /**
+     * 批量不通过试卷
+     *
+     * @param paperIds
+     */
+    public void noPassPapers(List<String> paperIds);
+
+    /**
+     * 批量待审核试卷
+     *
+     * @param paperIds
+     */
+    public void backPapers(List<String> paperIds);
+
+    /**
+     * 初始化导出试卷DTO
+     *
+     * @param id
+     * @return
+     */
+    public PaperExp getPaperDto(String id);
+    /**
+     * 重新对选择题option进行排序(多选、单选、套题下选择题)
+     */
+    public void reorderChoicequestionOption(List<PaperDetailUnitExp> paperDetailUnitExps);
+    /**
+     * 初始化试卷内容(增加序号)
+     *
+     * @param paperExp
+     */
+    public void initPaper(PaperExp paperExp);
+    /**
+     * 格式化查询条件
+     *
+     * @param paperSearchInfo
+     */
+    public void formatPaperSearchInfo(PaperSearchInfo paperSearchInfo);
+    /**
+     *1.重新设置小题number,并返回试卷总分
+     *2.重新计算大题的总分和小题总数
+     *3.重新保存试卷大题数量、小题数量、试卷总分等信息
+     * @param paper
+     */
+    public void formatPaper(Paper paper, AccessUser user);
+	/**
+     * 先备份准备删掉的试题,然后再删掉
+     *
+     * @param questionId
+     * @return
+     */
+    public List<String> deleteImportQuestionById(String questionId, AccessUser user);
+    /**
+     * 向试卷中插入一个试题
+     * @param paperId
+     * @param paperDetailId
+     * @return
+     */
+    public Paper insertQuestionToPaper(String paperId, String paperDetailId, Question question, AccessUser user);
+    /**
+     * 获取试题所在的试卷名称
+     *
+     * @param questionId
+     * @return
+     */
+    public List<String> getPaperNamesByQuestionId(String questionId);
+    
+    public Page<Question> listQuestionforSelect(String paperId,int curPage,int pageSize,QuesStructType quesType,AccessUser accessUser,String quesBody);
+
+    public Paper selectQuestionsToPaper(String paperId, String paperDetailId, List<Question> questions,
+            AccessUser user);
+
+    public String checkPaperName(String paperName, String orgId);
+
+    public void checkPaperNameNew(String paperName, String orgId)throws Exception;
+
+    public Page<Paper> getImportPapersNotInIds(PaperSearchInfo paperSearchInfo, String[] ids, int curPage,int pageSize);
+    /**
+     * 将选中的导入试卷复制为卷库试卷
+     */
+    public void useBasePaper(String selectedPaperIds,String userId);
+    /**
+     * 根据试卷名称、试卷类型检查名称是否存在
+     * @param paperName
+     * @param paperType
+     * @param orgId
+     * @return
+     * @throws Exception
+     */
+    public boolean checkPaperName(String paperName, PaperType paperType,String orgId)throws Exception;
+    
+    /**
+     * 上传音频文件检查
+     * @param paperId
+     * @param filesName
+     * @return
+     */
+    public Map<String, String> checkRadioFile(String paperId,List<String> filesName);
+    
+    //判断选项
+    public Map<String, String> checkOptions(List<PaperDetailUnit> paperDetailUnits,String fileNames[],String fileName);
+    
+    /**
+     * 上传音频文件到又拍云
+     * @param files
+     * @param paperId
+     * @param accessUser
+     * @throws IOException
+     */
+    public void uploadRadio(List<MultipartFile> files,String paperId,AccessUser accessUser) throws IOException;
+    
+    /**
+     * 音频文件插入到标签
+     * @param files
+     * @param paperId
+     */
+    public void appendAudioTag(String fileName,String questionId);
+    
+    /**
+     * 计算试卷难度
+     * @param paper
+     * @param paperTotalScore
+     * @return
+     */
+    public Double reSetDifficulty(Paper paper,double paperTotalScore);
+}

+ 7 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/PaperServiceImpl.java

@@ -616,7 +616,13 @@ public class PaperServiceImpl implements PaperService{
         reSetPaper(paper,user,paperInfoMap,paperTotalScore);
     }
     
-	private Double reSetDifficulty(Paper paper,double paperTotalScore) {
+    /**
+     * 计算试卷难度
+     * @param paper
+     * @param paperTotalScore
+     * @return
+     */
+	public Double reSetDifficulty(Paper paper,double paperTotalScore) {
 		Double sum = 0.0;
 		List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
 		if(paperDetails != null && paperDetails.size()>0){