Bladeren bron

大题及班级大题增加paperType,修复和区分度问题

ting.yin 6 jaren geleden
bovenliggende
commit
4bd4f645db

+ 14 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectClassGroup.java

@@ -120,6 +120,12 @@ public class ReportSubjectClassGroup implements Serializable {
     @Column(name = "discrimination_level", nullable = true)
     private String discriminationLevel;
 
+    /**
+     * 卷型
+     */
+    @Column(name = "paper_type", nullable = true, length = 32)
+    private String paperType;
+
     public Integer getId() {
         return id;
     }
@@ -240,4 +246,12 @@ public class ReportSubjectClassGroup implements Serializable {
         this.coefficient = coefficient;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
 }

+ 15 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectGroup.java

@@ -169,6 +169,13 @@ public class ReportSubjectGroup implements Serializable {
     @Column(name = "discrimination_level", nullable = true)
     private String discriminationLevel;
 
+    /**
+     * 卷型
+     */
+    @ExcelField(title = "卷型", align = 2, sort = 110)
+    @Column(name = "paper_type", nullable = true, length = 32)
+    private String paperType;
+
     public Integer getId() {
         return id;
     }
@@ -345,4 +352,12 @@ public class ReportSubjectGroup implements Serializable {
         this.discriminationLevel = discriminationLevel;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
 }

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectClassGroupService.java

@@ -12,7 +12,7 @@ public interface ReportSubjectClassGroupService {
     ReportSubjectClassGroup save(ReportSubjectClassGroup r);
 
     ReportSubjectClassGroup findOne(Integer examId, String subjectCode, String className, boolean objective,
-            Integer groupNumber);
+            String paperType, Integer groupNumber);
 
     List<ReportSubjectClassGroup> findByQuery(ReportSubjectQuery query);
 

+ 2 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectGroupService.java

@@ -19,6 +19,7 @@ public interface ReportSubjectGroupService {
 
     ReportSubjectGroup save(ReportSubjectGroup r);
 
-    ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, Integer mainNumber);
+    ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, String paperType,
+            Integer mainNumber);
 
 }

+ 8 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectClassGroupServiceImpl.java

@@ -43,13 +43,14 @@ public class ReportSubjectClassGroupServiceImpl extends BaseQueryService<ReportS
 
     @Override
     public ReportSubjectClassGroup findOne(Integer examId, String subjectCode, String className, boolean objective,
-            Integer groupNumber) {
+            String paperType, Integer groupNumber) {
         ReportSubjectQuery query = new ReportSubjectQuery();
         query.setExamId(examId);
         query.setSubjectCode(subjectCode);
         query.setClassName(className);
         query.setObjective(objective);
         query.setGroupNumber(groupNumber);
+        query.setPaperType(paperType);
         List<ReportSubjectClassGroup> list = findByQuery(query);
         return list.isEmpty() ? null : list.get(0);
     }
@@ -76,6 +77,12 @@ public class ReportSubjectClassGroupServiceImpl extends BaseQueryService<ReportS
                         if (query.getGroupNumber() > 0) {
                             predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                         }
+                        if (query.getObjective() != null) {
+                            predicates.add(cb.equal(root.get("objective"), query.getObjective()));
+                        }
+                        if (query.getObjective() != null && query.getObjective()) {
+                            predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
+                        }
                         return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates
                                 .toArray(new Predicate[predicates.size()]));
                     }

+ 9 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectGroupServiceImpl.java

@@ -57,9 +57,15 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                 if (StringUtils.isNotBlank(query.getSubjectCode())) {
                     predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
                 }
+                if (query.getObjective() != null) {
+                    predicates.add(cb.equal(root.get("objective"), query.getObjective()));
+                }
                 if (query.getGroupNumber() > 0) {
                     predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                 }
+                if (query.getObjective() != null && query.getObjective()) {
+                    predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
+                }
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));
             }
@@ -73,12 +79,14 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
     }
 
     @Override
-    public ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, Integer mainNumber) {
+    public ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, String paperType,
+            Integer mainNumber) {
         ReportSubjectQuery query = new ReportSubjectQuery();
         query.setExamId(examId);
         query.setSubjectCode(subjectCode);
         query.setObjective(objective);
         query.setGroupNumber(mainNumber);
+        query.setPaperType(paperType);
         List<ReportSubjectGroup> list = findByQuery(query);
         return list.isEmpty() ? null : list.get(0);
     }

+ 13 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/QuestionGroup.java

@@ -9,10 +9,13 @@ public class QuestionGroup {
     private double totalScore;
 
     private double fullScore;
+    
+    private String paperType;
 
-    public QuestionGroup(boolean objective, int number) {
+    public QuestionGroup(boolean objective, int number,String paperType) {
         this.objective = objective;
         this.number = number;
+        this.paperType = paperType;
     }
 
     public void incrTotalScore(double score) {
@@ -47,4 +50,13 @@ public class QuestionGroup {
         return objective;
     }
 
+    
+    public String getPaperType() {
+        return paperType;
+    }
+    
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
 }

+ 2 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/ReportContext.java

@@ -129,7 +129,8 @@ public class ReportContext {
     }
 
     private String getGroupKey(ExamQuestion question) {
-        return question.getSubjectCode() + "\t" + question.isObjective() + "\t" + question.getMainNumber();
+        return question.getSubjectCode() + "\t" + question.isObjective() + "\t"
+                + StringUtils.trimToEmpty(question.getPaperType()) + "\t" + question.getMainNumber();
     }
 
     public void save() {

+ 11 - 9
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectClassGroupModule.java

@@ -1,6 +1,6 @@
 package cn.com.qmth.stmms.biz.report.utils.module;
 
-import java.util.Set;
+import org.apache.commons.lang.StringUtils;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
@@ -20,7 +20,7 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
 
     public String getKey(ExamStudent student, QuestionGroup group) {
         return student.getSubjectCode() + "\t" + student.getClassName() + "\t" + group.isObjective() + "\t"
-                + group.getNumber();
+                + StringUtils.trimToEmpty(group.getPaperType()) + "\t" + +group.getNumber();
     }
 
     public void save() {
@@ -28,29 +28,30 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
         ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
         for (String key : this.calculators.keySet()) {
             String s[] = key.split("\t");
-            if (s.length > 3) {
+            if (s.length > 4) {
                 String subjectCode = s[0];
                 String className = s[1];
                 Boolean objective = Boolean.parseBoolean(s[2]);
-                Integer mainNumber = Integer.parseInt(s[3]);
+                String paperType = s[3];
+                Integer mainNumber = Integer.parseInt(s[4]);
                 BaseCalculatorUnit unit = calculators.get(key);
                 ReportSubjectClassGroup r = new ReportSubjectClassGroup();
                 r.setExamId(this.context.getExamId());
                 r.setSubjectCode(subjectCode);
                 r.setClassName(className);
                 r.setSubjectName(context.getSubject(subjectCode).getName());
-                r.setGroupName(context.getGroup(subjectCode + "\t" + objective + "\t" + mainNumber).getMainTitle());
+                String groupKey = subjectCode + "\t" + objective + "\t" + paperType + "\t" + mainNumber;
+                r.setGroupName(context.getGroup(groupKey).getMainTitle());
                 r.setGroupNumber(mainNumber);
                 r.setTotalScore(unit.fullScore);
                 r.setObjective(objective);
                 r.setDiscrimination(unit.discrimination);
                 r.setDifficulty(unit.difficulty);
                 r.setCoefficient(unit.coefficient);
-                String paperType = null;
-                Set<String> paperTypeSet = context.getPaperType(subjectCode);
+
                 int questionCount = 0;
-                if (objective && paperTypeSet != null && paperTypeSet.size() > 0) {
-                    paperType = paperTypeSet.iterator().next();
+                paperType = StringUtils.trimToNull(paperType);
+                if (objective && paperType != null) {
                     questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(
                             context.getExamId(), subjectCode, objective, mainNumber, paperType);
                 } else {
@@ -58,6 +59,7 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
                             context.getExamId(), subjectCode, objective, mainNumber);
                 }
                 r.setQuestionCount(questionCount);
+                r.setPaperType(paperType);
                 service.save(r);
             }
         }

+ 6 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectClassQuestionLevelModule.java

@@ -7,6 +7,8 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
@@ -21,7 +23,6 @@ import cn.com.qmth.stmms.biz.report.utils.ReportContext;
 import cn.com.qmth.stmms.biz.report.utils.unit.BaseCalculatorUnit;
 import cn.com.qmth.stmms.biz.report.utils.unit.QuestionCounter;
 import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
-import net.sf.json.JSONObject;
 
 /**
  * 按科目+班级维度统计小题难度等级与区分度等级
@@ -199,12 +200,13 @@ public class SubjectClassQuestionLevelModule extends SubjectQuestionLevelModule
                 r.setDiscriminationLevel(discriminationLevel.toString());
                 classService.save(r);
             }
-            if (s.length == 5) {
+            if (s.length >= 5) {
                 String className = s[1];
                 Boolean objective = Boolean.parseBoolean(s[2]);
+                String paperType = StringUtils.trimToNull(s[3]);
                 Integer mainNumber = Integer.parseInt(s[4]);
-                ReportSubjectClassGroup r = groupService.findOne(context.getExamId(), subjectCode, className, objective,
-                        mainNumber);
+                ReportSubjectClassGroup r = groupService.findOne(context.getExamId(), subjectCode, className,
+                        objective, paperType, mainNumber);
                 r.setDifficulityLevel(difficulityLevel.toString());
                 r.setDiscriminationLevel(discriminationLevel.toString());
                 groupService.save(r);

+ 14 - 12
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectGroupModule.java

@@ -4,7 +4,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
@@ -44,7 +45,7 @@ public class SubjectGroupModule implements Module {
         if (scoreList == null || questionList == null) {
             return;
         }
-        Map<Integer, QuestionGroup> map = new HashMap<Integer, QuestionGroup>();
+        Map<String, QuestionGroup> map = new HashMap<String, QuestionGroup>();
         int scoreCount = scoreList.size();
         for (int i = 0; i < questionList.size(); i++) {
             ExamQuestion question = questionList.get(i);
@@ -54,13 +55,13 @@ public class SubjectGroupModule implements Module {
             ScoreItem item = scoreCount > i ? scoreList.get(i) : null;
             QuestionGroup group = map.get(question.getMainNumber());
             if (group == null) {
-                group = new QuestionGroup(objective, question.getMainNumber());
-                map.put(question.getMainNumber(), group);
+                group = new QuestionGroup(objective, question.getMainNumber(), question.getPaperType());
+                map.put(question.getMainNumber() + "/t" + objective, group);
             }
             group.incrTotalScore(item != null ? item.getScore() : 0);
             group.incrFullScore(question.getTotalScore());
         }
-        for (Entry<Integer, QuestionGroup> entry : map.entrySet()) {
+        for (Entry<String, QuestionGroup> entry : map.entrySet()) {
             QuestionGroup group = entry.getValue();
             if (group.getFullScore() == 0) {
                 continue;
@@ -70,7 +71,8 @@ public class SubjectGroupModule implements Module {
     }
 
     public String getKey(ExamStudent student, QuestionGroup group) {
-        return student.getSubjectCode() + "\t" + group.isObjective() + "\t" + group.getNumber();
+        return student.getSubjectCode() + "\t" + group.isObjective() + "\t"
+                + StringUtils.trimToEmpty(group.getPaperType()) + "\t" + group.getNumber();
     }
 
     public void save() {
@@ -78,10 +80,11 @@ public class SubjectGroupModule implements Module {
         ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
         for (String key : this.calculators.keySet()) {
             String s[] = key.split("\t");
-            if (s.length > 2) {
+            if (s.length > 3) {
                 String subjectCode = s[0];
                 Boolean objective = Boolean.parseBoolean(s[1]);
-                Integer mainNumber = Integer.parseInt(s[2]);
+                String paperType = s[2];
+                Integer mainNumber = Integer.parseInt(s[3]);
                 BaseCalculatorUnit unit = calculators.get(key);
                 ReportSubjectGroup r = new ReportSubjectGroup();
                 r.setExamId(this.context.getExamId());
@@ -102,11 +105,9 @@ public class SubjectGroupModule implements Module {
                 r.setDifficulty(unit.difficulty);
                 r.setDiscrimination(unit.discrimination);
                 r.setRealityCount(unit.count);
-                String paperType = null;
-                Set<String> paperTypeSet = context.getPaperType(subjectCode);
                 int questionCount = 0;
-                if (objective && paperTypeSet != null && paperTypeSet.size() > 0) {
-                    paperType = paperTypeSet.iterator().next();
+                paperType = StringUtils.trimToNull(paperType);
+                if (objective && paperType != null) {
                     questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(
                             context.getExamId(), subjectCode, objective, mainNumber, paperType);
                 } else {
@@ -114,6 +115,7 @@ public class SubjectGroupModule implements Module {
                             context.getExamId(), subjectCode, objective, mainNumber);
                 }
                 r.setQuestionCount(questionCount);
+                r.setPaperType(paperType);
                 service.save(r);
             }
         }

+ 6 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionLevelModule.java

@@ -8,6 +8,8 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
@@ -23,7 +25,6 @@ import cn.com.qmth.stmms.biz.report.utils.unit.BaseCalculatorUnit;
 import cn.com.qmth.stmms.biz.report.utils.unit.LevelRange;
 import cn.com.qmth.stmms.biz.report.utils.unit.QuestionCounter;
 import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
-import net.sf.json.JSONObject;
 
 /**
  * 按科目统计全样本小题难度等级与区分度等级
@@ -132,10 +133,12 @@ public class SubjectQuestionLevelModule implements Module {
                 r.setDiscriminationLevel(discriminationLevel.toString());
                 subjectService.save(r);
             }
-            if (s.length == 4) {
+            if (s.length >= 4 ) {
                 Boolean objective = Boolean.parseBoolean(s[1]);
+                String paperType = StringUtils.trimToNull(s[2]);
                 Integer mainNumber = Integer.parseInt(s[3]);
-                ReportSubjectGroup r = groupService.findOne(context.getExamId(), subjectCode, objective, mainNumber);
+                ReportSubjectGroup r = groupService.findOne(context.getExamId(), subjectCode, objective, paperType,
+                        mainNumber);
                 r.setDifficulityLevel(difficulityLevel.toString());
                 r.setDiscriminationLevel(discriminationLevel.toString());
                 groupService.save(r);

+ 38 - 14
stmms-web/src/main/java/cn/com/qmth/stmms/report/ReportController.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.report;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -108,18 +109,25 @@ public class ReportController {
         query.setPageSize(Integer.MAX_VALUE);
         ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
         List<ReportSubjectClass> subjectClasses = classService.findByQuery(query);
-        List<ReportSubjectGroup> subjectGroups = groupService.findByQuery(query);
+        List<ReportSubjectGroup> subjectGroups = new ArrayList<ReportSubjectGroup>();
+        query.setObjective(true);
+        List<ReportSubjectGroup> subjectGroupO = groupService.findByQuery(query);
+        query.setObjective(false);
+        List<ReportSubjectGroup> subjectGroupsS = groupService.findByQuery(query);
+        subjectGroups.addAll(subjectGroupO);
+        subjectGroups.addAll(subjectGroupsS);
         result.accumulate("basic_paper", getPaperJson(reportSubject));
-        result.accumulate("basic_question_objective", getQuestionJson(query, true));
-        result.accumulate("basic_question_subjective", getQuestionJson(query, false));
+        result.accumulate("basic_question_subjective", getQuestionJson(query, false, paperType));
+        result.accumulate("basic_question_objective", getQuestionJson(query, true, paperType));
         result.accumulate("basic_class", getClassJson(subjectClasses));
         result.accumulate("basic_teacher", getTeacerJson(query));
         result.accumulate("basic_college", getCollegeJson(query));
         result.accumulate("basic_main_question", getGroupJson(subjectGroups));
-        result.accumulate("basic_question_option", getOptionJson(query, reportSubject));
+        result.accumulate("basic_question_option", getOptionJson(query, reportSubject, paperType));
         result.accumulate("discrimination_level",
-                getDiscrimination(query, reportSubject, subjectClasses, subjectGroups));
-        result.accumulate("difficulty_level", getDifficulty(query, reportSubject, subjectClasses, subjectGroups));
+                getDiscrimination(query, paperType, reportSubject, subjectClasses, subjectGroups));
+        result.accumulate("difficulty_level",
+                getDifficulty(query, paperType, reportSubject, subjectClasses, subjectGroups));
         result.accumulate("range_level", getRangeLevel(query, reportSubject, subjectClasses));
         result.accumulate("range_10_totalScore", getRange10(reportSubject, subjectClasses));
         result.accumulate("range_1_totalScore", getRange1(reportSubject, subjectClasses));
@@ -284,7 +292,7 @@ public class ReportController {
         return array.toString();
     }
 
-    private String getDifficulty(ReportSubjectQuery query, ReportSubject reportSubject,
+    private String getDifficulty(ReportSubjectQuery query, String paperType, ReportSubject reportSubject,
             List<ReportSubjectClass> subjectClasses, List<ReportSubjectGroup> subjectGroups) {
         JSONObject defaultLevels = new JSONObject();
         JSONObject content = new JSONObject();
@@ -333,8 +341,14 @@ public class ReportController {
                     : reportSubjectClass.getDifficulityLevel());
             classGroups.add(group);
             query.setClassName(reportSubjectClass.getClassName());
-            query.setObjective(null);
-            List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
+            List<ReportSubjectClassGroup> classGroupsList = new ArrayList<ReportSubjectClassGroup>();
+            query.setObjective(true);
+            query.setPaperType(paperType);
+            List<ReportSubjectClassGroup> classGroupsListO = classGroupService.findByQuery(query);
+            query.setObjective(false);
+            List<ReportSubjectClassGroup> classGroupsListS = classGroupService.findByQuery(query);
+            classGroupsList.addAll(classGroupsListO);
+            classGroupsList.addAll(classGroupsListS);
             for (ReportSubjectClassGroup r : classGroupsList) {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.accumulate("name", r.getGroupName());
@@ -351,7 +365,7 @@ public class ReportController {
         return result.toString();
     }
 
-    private String getDiscrimination(ReportSubjectQuery query, ReportSubject reportSubject,
+    private String getDiscrimination(ReportSubjectQuery query, String paperType, ReportSubject reportSubject,
             List<ReportSubjectClass> subjectClasses, List<ReportSubjectGroup> subjectGroups) {
         JSONObject defaultLevels = new JSONObject();
         JSONObject content = new JSONObject();
@@ -401,8 +415,14 @@ public class ReportController {
                     : reportSubjectClass.getDiscriminationLevel());
             classGroups.add(group);
             query.setClassName(reportSubjectClass.getClassName());
-            query.setObjective(null);
-            List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
+            List<ReportSubjectClassGroup> classGroupsList = new ArrayList<ReportSubjectClassGroup>();
+            query.setObjective(true);
+            query.setPaperType(paperType);
+            List<ReportSubjectClassGroup> classGroupsListO = classGroupService.findByQuery(query);
+            query.setObjective(false);
+            List<ReportSubjectClassGroup> classGroupsListS = classGroupService.findByQuery(query);
+            classGroupsList.addAll(classGroupsListO);
+            classGroupsList.addAll(classGroupsListS);
             for (ReportSubjectClassGroup r : classGroupsList) {
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.accumulate("name", r.getGroupName());
@@ -419,13 +439,14 @@ public class ReportController {
         return result.toString();
     }
 
-    private String getOptionJson(ReportSubjectQuery query, ReportSubject reportSubject) {
+    private String getOptionJson(ReportSubjectQuery query, ReportSubject reportSubject, String paperType) {
         JSONObject value = new JSONObject();
         if (reportSubject.getOptions() != null) {
             value.accumulate("options", reportSubject.getOptions().split(ANSWER_SPLIT));
         }
         JSONArray array = new JSONArray();
         query.setObjective(true);
+        query.setPaperType(paperType);
         List<ReportSubjectQuestion> list = questionService.findByQuery(query);
         for (ReportSubjectQuestion r : list) {
             JSONObject jsonObject = new JSONObject();
@@ -538,8 +559,11 @@ public class ReportController {
         return array.toString();
     }
 
-    private String getQuestionJson(ReportSubjectQuery query, boolean isObjective) {
+    private String getQuestionJson(ReportSubjectQuery query, boolean isObjective, String paperType) {
         query.setObjective(isObjective);
+        if (isObjective) {
+            query.setPaperType(paperType);
+        }
         JSONArray array = new JSONArray();
         List<ReportSubjectQuestion> list = questionService.findByQuery(query);
         for (ReportSubjectQuestion r : list) {