Переглянути джерело

选题和试卷页面分数BUG修改

gaoxing 8 роки тому
батько
коміт
6c60987c13

+ 49 - 43
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -1,6 +1,20 @@
 package com.qmth.cqb.paper.service;
 
-import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+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.stereotype.Service;
+
 import com.google.gson.Gson;
 import com.qmth.cqb.paper.dao.ExamPaperRepo;
 import com.qmth.cqb.paper.dao.PaperDetailRepo;
@@ -9,7 +23,11 @@ import com.qmth.cqb.paper.dao.PaperRepo;
 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.*;
+import com.qmth.cqb.paper.model.ExamPaper;
+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.dao.QuesBakRepo;
 import com.qmth.cqb.question.dao.QuesRepo;
 import com.qmth.cqb.question.model.Question;
@@ -19,14 +37,8 @@ import com.qmth.cqb.utils.BeanCopierUtil;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.PaperStatus;
 import com.qmth.cqb.utils.enums.PaperType;
-import org.apache.commons.lang3.StringUtils;
-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.stereotype.Service;
 
-import java.util.*;
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
 
 /**
  * Created by songyue on 16/12/28.
@@ -268,8 +280,8 @@ public class PaperService {
         for (int i = 0; i < paperDetailExps.size(); i++) {
             List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetail(paperDetails.get(i));
             if (paperDetailUnits != null && paperDetailUnits.size() > 0) {
-                List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil
-                        .copyPropertiesOfList(paperDetailUnits, PaperDetailUnitExp.class);
+                List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,
+                        PaperDetailUnitExp.class);
                 paperDetailExps.get(i).setPaperDetailUnits(paperDetailUnitExps);
             } else {
                 paperDetailExps.get(i).setUnitCount(0);
@@ -365,21 +377,18 @@ public class PaperService {
             if (paperDetailUnits.size() > 0) {
                 int count = 0;
                 double score = 0;
-                PaperDetailUnit firstUnit = paperDetailUnits.get(0);
-                QuesStructType questionType = firstUnit.getQuestionType();
-                if (!questionType.equals(QuesStructType.NESTED_ANSWER_QUESTION)) {
-                    for (PaperDetailUnit unit : paperDetailUnits) {
-                        if (unit.getScore() != null) {
-                            score += unit.getScore();
-                        }
+                int nestQusNum = 0;
+                for (PaperDetailUnit unit : paperDetailUnits) {
+                    if (unit.getScore() != null) {
+                        score += unit.getScore();
                     }
-                    count = paperDetailUnits.size();
-                } else {
-                    Question question = firstUnit.getQuestion();
-                    List<Question> subQuestions = question.getSubQuestions();
-                    score = subQuestions.stream().mapToDouble(Question::getScore).sum();
-                    count = subQuestions.size();
+                    if (unit.getQuestion().getSubQuestions() != null
+                            && unit.getQuestion().getSubQuestions().size() > 0) {
+                        nestQusNum += unit.getQuestion().getSubQuestions().size() - 1;
+                    }
+
                 }
+                count = paperDetailUnits.size() + nestQusNum;
                 paperDetail.setScore(score);
                 paperDetail.setUnitCount(count);
             } else {
@@ -474,24 +483,25 @@ public class PaperService {
     public Page<Question> listQuestionforSelect(String paperId, int curPage, int pageSize, QuesStructType quesType) {
         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) {
             selectedIds.add(pdu.getQuestion().getId());
         }
-        //Page<Question> allQuestions = quesService.findAll(ques, curPage, pageSize);
-        //Iterator<Question> que = allQuestions.iterator();
-        //while (que.hasNext()) {
-        //    if (selectedIds.contains(que.next().getId())) {
-        //        que.remove();
-        //    }
-        //}
+        // 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);
     }
 
@@ -507,12 +517,8 @@ public class PaperService {
             pdu.setQuestion(ques);
             pdu.setCreateTime(CommonUtils.getCurDateTime());
             pdu.setPaperDetail(pd);
+            pdu.setScore(0d);
             pdus.add(pdu);
-            if (ques.getScore() == null || ques.getScore() == 0d) {
-                pdu.setScore(0d);
-            } else {
-                pdu.setScore(ques.getScore());
-            }
             saveUnits.add(pdu);
         }
         Collections.sort(pdus);