|
@@ -1,30 +1,21 @@
|
|
|
package cn.com.qmth.examcloud.core.questions.service.export;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
|
|
|
import cn.com.qmth.examcloud.api.commons.security.bean.User;
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailExp;
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailUnitExp;
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperExp;
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExportStructure;
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionTypeNum;
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
|
|
|
import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
|
|
|
import cn.com.qmth.examcloud.core.questions.base.enums.ExamFileType;
|
|
|
import cn.com.qmth.examcloud.core.questions.base.enums.ExportType;
|
|
|
+import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
|
|
|
import cn.com.qmth.examcloud.core.questions.base.word.DocxProcessUtil;
|
|
|
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
|
|
|
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailExp;
|
|
|
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailUnitExp;
|
|
|
+import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperExp;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author chenken
|
|
@@ -60,52 +51,53 @@ public class DzkdExportPaperService extends ExportPaperAbstractService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 小题排序
|
|
|
- *
|
|
|
- * @param paperDetailExps
|
|
|
- * @describle 大题排序完成之后,放在一个集合里面。然后对相同类型的大题分组,生成不同的结合,在对小题进行
|
|
|
+ * 对相同类型的大题分组,生成不同的集合放入小题,再对小题排序
|
|
|
*/
|
|
|
- //@Override
|
|
|
- public void sortPaperDetailUnitExps(List<PaperDetailExp> paperDetailExps) {
|
|
|
- Map<Long, List<PaperDetailUnitExp>> map = new HashMap<Long, List<PaperDetailUnitExp>>();
|
|
|
- //循环所有大题,将同类型的小题放到同一个集合下面
|
|
|
+ @Override
|
|
|
+ public void sortPaperDetailUnits(List<PaperDetailExp> details) {
|
|
|
int index = 0;
|
|
|
- for (PaperDetailExp paperDetailExp : paperDetailExps) {
|
|
|
- List<PaperDetailUnitExp> paperDetailUnitExps = null;
|
|
|
+ Map<Long, List<PaperDetailUnitExp>> map = new HashMap<>();
|
|
|
+
|
|
|
+ //循环所有大题,将同类型的小题放到同一个集合下面
|
|
|
+ for (PaperDetailExp detail : details) {
|
|
|
//单选,多选,判断放在同一集合下排序
|
|
|
- if (paperDetailExp.getSortNumber() < 5L) {
|
|
|
- //通过map的key去取value,如果没有,就添加
|
|
|
- if (map.get(paperDetailExp.getSortNumber()) == null) {
|
|
|
- paperDetailUnitExps = new ArrayList<PaperDetailUnitExp>();
|
|
|
- } else {
|
|
|
- paperDetailUnitExps = map.get(paperDetailExp.getSortNumber());
|
|
|
+ List<PaperDetailUnitExp> units;
|
|
|
+ Long sortNumber = detail.getSortNumber();
|
|
|
+ //前四道大题为客观题区
|
|
|
+ if (sortNumber < 5L) {
|
|
|
+ units = map.get(sortNumber);
|
|
|
+ if (units == null) {
|
|
|
+ units = new ArrayList<>();
|
|
|
}
|
|
|
- paperDetailUnitExps.addAll(paperDetailExp.getPaperDetailUnits());
|
|
|
- map.put(paperDetailExp.getSortNumber(), paperDetailUnitExps);
|
|
|
+ units.addAll(detail.getPaperDetailUnits());
|
|
|
+ map.put(sortNumber, units);
|
|
|
} else {
|
|
|
- paperDetailUnitExps = new ArrayList<PaperDetailUnitExp>();
|
|
|
- paperDetailUnitExps.addAll(paperDetailExp.getPaperDetailUnits());
|
|
|
- map.put(paperDetailExp.getSortNumber() + index, paperDetailUnitExps);
|
|
|
+ units = new ArrayList<>();
|
|
|
+ units.addAll(detail.getPaperDetailUnits());
|
|
|
+ map.put(sortNumber + index, units);
|
|
|
index++;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//循环所有小题,给小题排序
|
|
|
for (Long sortNumber : map.keySet()) {
|
|
|
- List<PaperDetailUnitExp> paperDetailUnitExps = map.get(sortNumber);
|
|
|
- int number = 1;
|
|
|
- if (paperDetailUnitExps != null && paperDetailUnitExps.size() > 0) {
|
|
|
- for (int i = 0; i < paperDetailUnitExps.size(); i++) {
|
|
|
- PaperDetailUnitExp paperDetailUnitExp = paperDetailUnitExps.get(i);
|
|
|
- if (paperDetailUnitExp.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
|
|
|
- List<Question> subQuestions = paperDetailUnitExp.getQuestion().getSubQuestions();
|
|
|
- for (int j = 0; j < subQuestions.size(); j++) {
|
|
|
- subQuestions.get(j).setNumber(number + j);
|
|
|
- }
|
|
|
- number += subQuestions.size();
|
|
|
- } else {
|
|
|
- paperDetailUnitExp.setNumber(number);
|
|
|
- number++;
|
|
|
+ List<PaperDetailUnitExp> utils = map.get(sortNumber);
|
|
|
+ if (CollectionUtils.isEmpty(utils)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ int number = 1;//小题号
|
|
|
+ for (int i = 0; i < utils.size(); i++) {
|
|
|
+ PaperDetailUnitExp unit = utils.get(i);
|
|
|
+ if (unit.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
|
|
|
+ List<Question> subQuestions = unit.getQuestion().getSubQuestions();
|
|
|
+ for (int j = 0; j < subQuestions.size(); j++) {
|
|
|
+ subQuestions.get(j).setNumber(number + j);
|
|
|
}
|
|
|
+ number += subQuestions.size();
|
|
|
+ } else {
|
|
|
+ unit.setNumber(number);
|
|
|
+ number++;
|
|
|
}
|
|
|
}
|
|
|
}
|