Selaa lähdekoodia

增加试题按ID排除的查询方法,用于手工选题

luoshi@qmth.com.cn 8 vuotta sitten
vanhempi
commit
89ea6abf87

+ 17 - 19
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -14,7 +14,6 @@ import com.qmth.cqb.question.dao.QuesBakRepo;
 import com.qmth.cqb.question.dao.QuesRepo;
 import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.question.model.QuestionBak;
-import com.qmth.cqb.question.model.QuestionSearchCondition;
 import com.qmth.cqb.question.service.QuesService;
 import com.qmth.cqb.utils.BeanCopierUtil;
 import com.qmth.cqb.utils.CommonUtils;
@@ -473,28 +472,27 @@ public class PaperService {
     }
 
     public Page<Question> listQuestionforSelect(String paperId, int curPage, int pageSize, QuesStructType quesType) {
-        Set<String> paperQuestions = new HashSet<>();
+        Set<String> selectedIds = new HashSet<>();
         Paper paper = paperRepo.findOne(paperId);
-        QuestionSearchCondition ques = new QuestionSearchCondition();
-        if (quesType != null) {
-            ques.setQuestionType(quesType);
-        }
-        Map<String, String> quesParams = new HashMap<String, String>();
-        quesParams.put("courseName", paper.getCourseName());
-        ques.setQuesParams(quesParams);
+        //QuestionSearchCondition ques = new QuestionSearchCondition();
+        //if (quesType != null) {
+        //    ques.setQuestionType(quesType);
+        //}
+        //Map<String, String> quesParams = new HashMap<String, String>();
+        //quesParams.put("courseName", paper.getCourseName());
+        //ques.setQuesParams(quesParams);
         List<PaperDetailUnit> pdus = paperDetailUnitRepo.findByPaper(paper);
         for (PaperDetailUnit pdu : pdus) {
-            //questions.add(pdu.getQuestion());
-            paperQuestions.add(pdu.getQuestion().getId());
-        }
-        Page<Question> allQuestions = quesService.findAll(ques, curPage, pageSize);
-        Iterator<Question> que = allQuestions.iterator();
-        while (que.hasNext()) {
-            if (paperQuestions.contains(que.next().getId())) {
-                que.remove();
-            }
+            selectedIds.add(pdu.getQuestion().getId());
         }
-        return allQuestions;
+        //Page<Question> allQuestions = quesService.findAll(ques, curPage, pageSize);
+        //Iterator<Question> que = allQuestions.iterator();
+        //while (que.hasNext()) {
+        //    if (selectedIds.contains(que.next().getId())) {
+        //        que.remove();
+        //    }
+        //}
+        return quesService.findByIdExclude(selectedIds, paper.getCourseNo(), quesType, curPage, pageSize);
     }
 
     public Paper selectQuestionsToPaper(String paperId, String paperDetailId, List<Question> questions) {

+ 11 - 1
cqb-question-resource/src/main/java/com/qmth/cqb/question/dao/QuesRepo.java

@@ -1,11 +1,21 @@
 package com.qmth.cqb.question.dao;
 
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
 import com.qmth.cqb.question.model.Question;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
 
+import java.util.Set;
+
 /**
  * Created by songyue on 16/12/28.
  */
-public interface QuesRepo extends MongoRepository<Question,String>,QueryByExampleExecutor<Question>{
+public interface QuesRepo extends MongoRepository<Question, String>, QueryByExampleExecutor<Question> {
+
+    public Page<Question> findByIdNotInAndCourseNo(Set<String> idSet, String courseNo, Pageable page);
+
+    public Page<Question> findByIdNotInAndCourseNoAndQuestionType(Set<String> idSet, String courseNo,
+            QuesStructType quesType, Pageable page);
 }

+ 33 - 11
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/QuesService.java

@@ -1,18 +1,20 @@
 package com.qmth.cqb.question.service;
 
-import java.util.List;
-
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import com.qmth.cqb.question.dao.QuesRepo;
+import com.qmth.cqb.question.model.QuesOption;
+import com.qmth.cqb.question.model.Question;
+import com.qmth.cqb.question.model.QuestionSearchCondition;
+import com.qmth.cqb.utils.BeanCopierUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import com.qmth.cqb.question.dao.QuesRepo;
-import com.qmth.cqb.question.model.QuesOption;
-import com.qmth.cqb.question.model.Question;
-import com.qmth.cqb.question.model.QuestionSearchCondition;
-import com.qmth.cqb.utils.BeanCopierUtil;
+import java.util.List;
+import java.util.Set;
 
 /**
  * Created by songyue on 16/12/28.
@@ -25,7 +27,7 @@ public class QuesService {
 
     /**
      * 保存试题
-     * 
+     *
      * @param question
      */
     public void saveQues(Question question) {
@@ -51,7 +53,7 @@ public class QuesService {
 
     /**
      * 查询所有试题
-     * 
+     *
      * @param searchCondition
      * @param curPage
      * @param pageSize
@@ -66,9 +68,29 @@ public class QuesService {
         return list;
     }
 
+    /**
+     * 查询按ID过滤的试题
+     *
+     * @param idSet
+     * @param curPage
+     * @param pageSize
+     * @return
+     */
+    public Page<Question> findByIdExclude(Set<String> idSet, String courseNo, QuesStructType quesType, int curPage,
+            int pageSize) {
+        Pageable page = new PageRequest(curPage - 1, pageSize);
+        Page<Question> list = quesType != null ?
+                quesRepo.findByIdNotInAndCourseNoAndQuestionType(idSet, courseNo, quesType, page) :
+                quesRepo.findByIdNotInAndCourseNo(idSet, courseNo, page);
+        for (Question question : list) {
+            formatQues(question);
+        }
+        return list;
+    }
+
     /**
      * 按ID获取试题
-     * 
+     *
      * @param id
      * @return
      */
@@ -80,7 +102,7 @@ public class QuesService {
 
     /**
      * 去除试题中的word
-     * 
+     *
      * @param question
      */
     public void formatQues(Question question) {