|
@@ -388,14 +388,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
List<ObjectiveQuestionStructure> objectiveQuestionStructureList = new ArrayList<ObjectiveQuestionStructure>();
|
|
|
for(PaperDetailExp paperDetailExp:paperDetailExps){
|
|
|
for(PaperDetailUnitExp unit:paperDetailExp.getPaperDetailUnits()){
|
|
|
- if(unit.getQuestionType() != QuesStructType.NESTED_ANSWER_QUESTION){
|
|
|
- objectiveQuestionStructureList.add(new ObjectiveQuestionStructure(paperExp,paperDetailExp,unit));
|
|
|
- }else{
|
|
|
- List<Question> subQuestions = unit.getQuestion().getSubQuestions();
|
|
|
- for(Question question:subQuestions){
|
|
|
- objectiveQuestionStructureList.add(new ObjectiveQuestionStructure(paperExp,paperDetailExp,question));
|
|
|
- }
|
|
|
- }
|
|
|
+ objectiveQuestionStructureList.add(new ObjectiveQuestionStructure(paperExp,paperDetailExp,unit));
|
|
|
}
|
|
|
}
|
|
|
ExcelWriter objectiveExcelExporter = new ExcelWriter(ObjectiveQuestionStructure.class);
|
|
@@ -453,11 +446,10 @@ public abstract class ExportPaperAbstractService {
|
|
|
* @param questionTypeNums
|
|
|
*/
|
|
|
public List<PaperDetailExp> fillObjectiveQuestions(List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
|
|
|
- //1.得到所有客观题的类型
|
|
|
+ //1.得到所有客观题大题的类型
|
|
|
Set<QuesStructType> types = new HashSet<QuesStructType>();
|
|
|
for(PaperDetailExp paperDetailExp:objectiveDetails){
|
|
|
- List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
|
|
|
- types.add(paperDetailUnits.get(0).getQuestionType());
|
|
|
+ types.add(QuesStructType.getQuesStructTypeById(paperDetailExp.getSortNumber()));
|
|
|
}
|
|
|
List<PaperDetailExp> paperDetailExps = new ArrayList<PaperDetailExp>();
|
|
|
//如果没有单选
|
|
@@ -509,17 +501,36 @@ public abstract class ExportPaperAbstractService {
|
|
|
private void addObjectiveQuestion(List<PaperDetailExp> paperDetailExps,List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums,QuesStructType quesStructType){
|
|
|
//得到当前题量
|
|
|
int currentSize = 0;
|
|
|
+ /**
|
|
|
+ * 构建新的大题
|
|
|
+ * 遍历所有的客观大题,如果是符合的类型,就添加该大题
|
|
|
+ * 该大题中,如果有套题,要将该套题下的小题拆出来,添加到大题中,并删除原套题
|
|
|
+ */
|
|
|
for(PaperDetailExp paperDetailExp:objectiveDetails){
|
|
|
- List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
|
|
|
- if(paperDetailUnits.get(0).getQuestionType() == quesStructType){
|
|
|
- paperDetailExps.add(paperDetailExp);
|
|
|
- for(PaperDetailUnitExp paperDetailUnitExp:paperDetailUnits){
|
|
|
- if(paperDetailUnitExp.getQuestionType() != QuesStructType.NESTED_ANSWER_QUESTION){
|
|
|
+ if(paperDetailExp.getSortNumber() == quesStructType.getId()){
|
|
|
+ PaperDetailExp newPaperDetailExp = new PaperDetailExp();
|
|
|
+ List<PaperDetailUnitExp> newPaperDetailUnits = new ArrayList<PaperDetailUnitExp>();
|
|
|
+ //得到大题下的所有小题
|
|
|
+ List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
|
|
|
+ for(PaperDetailUnitExp paperDetailUnitExp:paperDetailUnits){
|
|
|
+ if(paperDetailUnitExp.getQuestionType() != QuesStructType.NESTED_ANSWER_QUESTION){
|
|
|
+ newPaperDetailUnits.add(paperDetailUnitExp);
|
|
|
currentSize += 1;
|
|
|
}else{
|
|
|
- currentSize += paperDetailUnitExp.getQuestion().getSubQuestions().size();
|
|
|
+ List<Question> subQuestions = paperDetailUnitExp.getQuestion().getSubQuestions();
|
|
|
+ if(subQuestions!=null&&subQuestions.size()>0){
|
|
|
+ for(int i = 0;i<subQuestions.size();i++){
|
|
|
+ newPaperDetailUnits.add(new PaperDetailUnitExp(quesStructType,subQuestions.get(i)));
|
|
|
+ }
|
|
|
+ currentSize += subQuestions.size();
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
+ //设置小题
|
|
|
+ newPaperDetailExp.setPaperDetailUnits(newPaperDetailUnits);
|
|
|
+ //设置大题题号
|
|
|
+ newPaperDetailExp.setNumber(Integer.parseInt(quesStructType.getId()+""));
|
|
|
+ paperDetailExps.add(newPaperDetailExp);
|
|
|
}
|
|
|
}
|
|
|
//计算差额、补齐试题
|
|
@@ -552,7 +563,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
* @param paperExp
|
|
|
* @return
|
|
|
*/
|
|
|
- protected List<PaperDetailExp> getAllObjectiveDetails(PaperExp paperExp){
|
|
|
+ public List<PaperDetailExp> getAllObjectiveDetails(PaperExp paperExp){
|
|
|
List<PaperDetailExp> objectiveDetails = new ArrayList<PaperDetailExp>();
|
|
|
for(PaperDetailExp paperDetailExp:paperExp.getPaperDetails()){
|
|
|
if(paperDetailExp.getSortNumber()==1L
|
|
@@ -569,7 +580,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
* @param paperExp
|
|
|
* @return
|
|
|
*/
|
|
|
- protected List<PaperDetailExp> getAllSubjectiveDetails(PaperExp paperExp){
|
|
|
+ public List<PaperDetailExp> getAllSubjectiveDetails(PaperExp paperExp){
|
|
|
List<PaperDetailExp> subjectiveDetails = new ArrayList<PaperDetailExp>();
|
|
|
for(PaperDetailExp paperDetailExp:paperExp.getPaperDetails()){
|
|
|
if(paperDetailExp.getSortNumber()==4L
|
|
@@ -590,16 +601,25 @@ public abstract class ExportPaperAbstractService {
|
|
|
protected void checkObjectiveDetailsNum(PaperExp paperExp,List<QuestionTypeNum> questionTypeNums) {
|
|
|
List<PaperDetailExp> objectiveDetails = getAllObjectiveDetails(paperExp);
|
|
|
for(QuestionTypeNum typeNum:questionTypeNums){
|
|
|
- int currentSize = 0;
|
|
|
+ List<PaperDetailUnitExp> paperDetailUnits = new ArrayList<PaperDetailUnitExp>();
|
|
|
for(PaperDetailExp paperDetailExp:objectiveDetails){
|
|
|
- List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
|
|
|
- if(paperDetailUnits.get(0).getQuestionType() == typeNum.getQuestionType());{
|
|
|
- currentSize += paperDetailUnits.size();
|
|
|
- break;
|
|
|
- }
|
|
|
+ if(paperDetailExp.getSortNumber() == typeNum.getQuestionType().getId()){
|
|
|
+ paperDetailUnits.addAll(paperDetailExp.getPaperDetailUnits());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int currentSize = 0;
|
|
|
+ for(PaperDetailUnitExp paperDetailUnitExp:paperDetailUnits){
|
|
|
+ if(paperDetailUnitExp.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
|
|
|
+ currentSize += paperDetailUnitExp.getQuestion().getSubQuestions().size();
|
|
|
+ }else{
|
|
|
+ currentSize++;
|
|
|
+ }
|
|
|
}
|
|
|
if(currentSize>typeNum.getQuantity()){
|
|
|
- throw new RuntimeException("课程最大题量超出设定范围,请核实后重新设置导出规则!");
|
|
|
+ throw new RuntimeException("试卷中"+typeNum.getQuestionType().getName()+"题题量超出设定范围"
|
|
|
+ + ",当前试卷题量:"+currentSize
|
|
|
+ + ",设定题量:"+typeNum.getQuantity()
|
|
|
+ + ",请核实后重新设置导出规则!");
|
|
|
}
|
|
|
}
|
|
|
}
|