|
@@ -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 {
|
|
@@ -475,24 +484,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);
|
|
|
}
|
|
|
|
|
@@ -508,12 +518,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);
|