ソースを参照

修改QuesService的save方法
修改unit的save接口,增加套题内容的修改支持

luoshi@qmth.com.cn 8 年 前
コミット
4f376c57a7

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

@@ -10,10 +10,10 @@ import com.qmth.cqb.paper.model.ImportPaperCheck;
 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.dao.QuesRepo;
 import com.qmth.cqb.question.model.QuesOption;
 import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.question.model.QuestionType;
+import com.qmth.cqb.question.service.QuesService;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
@@ -48,7 +48,7 @@ public class ImportPaperService {
     PaperDetailUnitRepo paperDetailUnitRepo;
 
     @Autowired
-    QuesRepo quesRepo;
+    QuesService quesService;
 
     @Autowired
     Gson gson;
@@ -132,7 +132,7 @@ public class ImportPaperService {
         }
 
         if (questions.size() > 0) {
-            quesRepo.save(questions);
+            quesService.saveQuesList(questions);
         }
 
         if (paperDetailUnits.size() > 0) {

+ 10 - 18
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperDetailUnitService.java

@@ -6,7 +6,6 @@ import com.qmth.cqb.paper.dto.PaperDetailUnitExp;
 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.dao.QuesRepo;
 import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.question.service.QuesService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,9 +23,6 @@ public class PaperDetailUnitService {
     @Autowired
     QuesService quesService;
 
-    @Autowired
-    QuesRepo quesRepo;
-
     @Autowired
     PaperService paperService;
 
@@ -59,9 +55,10 @@ public class PaperDetailUnitService {
     public PaperDetailUnit savePaperDetailUnit(PaperDetailUnitExp pduExp) {
         PaperDetailUnit oldPdu = paperDetailUnitRepo.findOne(pduExp.getId());
         if (oldPdu.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
-            Question updateQuestion = null;
+            //套题情况下单独处理
+            Question oldQuestion = null;
             if (pduExp.getQuestion().getId().equals(oldPdu.getQuestion().getId())) {
-                updateQuestion = oldPdu.getQuestion();
+                oldQuestion = oldPdu.getQuestion();
             }
             List<Double> subScoreList = oldPdu.getSubScoreList();
             //套题需要判断更新的对象是套题本身还是子题
@@ -74,30 +71,25 @@ public class PaperDetailUnitService {
                 }
                 if (sub.getId().equals(pduExp.getQuestion().getId())) {
                     //匹配到子题
-                    updateQuestion = sub;
+                    oldQuestion = sub;
                     subScoreList.set(index - 1, pduExp.getScore());
                 }
             }
-            if (updateQuestion == null) {
+            if (oldQuestion == null) {
                 //匹配试题失败,参数错误直接返回
                 return oldPdu;
             }
             //更新套题unit当前总分
             oldPdu.updateSubScore(subScoreList);
-            if (updateQuestion.getId().equals(oldPdu.getQuestion().getId())) {
-                //更新的是套题大题
-                //oldPdu.setQuestion(updateQuestion);
-            } else {
-                //更新的是套题下的子题
+            if (oldQuestion.getId().equals(oldPdu.getQuestion().getId())) {
+                //更新的是套题大题,需要沿用之前的子题
+                pduExp.getQuestion().setSubQuestions(oldQuestion.getSubQuestions());
             }
-            //quesRepo.save(updateQuestion);// 暂时不支持修改套题内容
-
         } else {
             oldPdu.setScore(pduExp.getScore());
-            oldPdu.setQuestion(pduExp.getQuestion());
-            Question ques = pduExp.getQuestion();
-            quesRepo.save(ques);// 同时要跟新小题里面的Qustion对象
         }
+        oldPdu.setQuestion(pduExp.getQuestion());
+        quesService.saveQues(pduExp.getQuestion());// 同时要跟新小题里面的Qustion对象
         paperService.formatPaper(oldPdu.getPaper());
         return paperDetailUnitRepo.save(oldPdu);
     }

+ 36 - 4
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/QuesService.java

@@ -6,6 +6,7 @@ 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 com.qmth.cqb.utils.CommonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.Page;
@@ -13,6 +14,7 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 
@@ -25,14 +27,34 @@ public class QuesService {
     @Autowired
     QuesRepo quesRepo;
 
+    /**
+     * 批量保存试题
+     *
+     * @param list
+     */
+    public void saveQuesList(List<Question> list) {
+        if (list != null) {
+            for (Question question : list) {
+                saveQues(question);
+            }
+        }
+    }
+
     /**
      * 保存试题
      *
      * @param question
      */
-    public void saveQues(Question question) {
+    public Question saveQues(Question question) {
+        String now = CommonUtils.getCurDateTime();
         Question saveQues = quesRepo.findOne(question.getId());
+        if (saveQues == null) {
+            question.setCreateTime(now);
+            question.setUpdateTime(now);
+            return quesRepo.save(question);
+        }
         saveQues.setQuesAnswer(question.getQuesAnswer());
+        saveQues.setQuesAnswerAnalysis(question.getQuesAnswerAnalysis());
         saveQues.setScore(question.getScore());
         saveQues.setQuesBody(question.getQuesBody());
         if (question.getQuesOptions() != null && question.getQuesOptions().size() > 0) {
@@ -43,12 +65,22 @@ public class QuesService {
             } else {
                 for (int i = 0; i < quesOptions.size(); i++) {
                     saveQuesOptions.get(i).setOptionBody(quesOptions.get(i).getOptionBody());
-
                 }
             }
-
         }
-        quesRepo.save(saveQues);
+        if (question.getQuesParams() != null) {
+            if (saveQues.getQuesParams() == null) {
+                saveQues.setQuesParams(new HashMap<>());
+            }
+            for (String key : question.getQuesParams().keySet()) {
+                saveQues.getQuesParams().put(key, question.getQuesParams().get(key));
+            }
+        }
+        if (saveQues.getCreateTime() == null) {
+            saveQues.setCreateTime(now);
+        }
+        saveQues.setUpdateTime(now);
+        return quesRepo.save(saveQues);
     }
 
     /**