1
0
Эх сурвалжийг харах

成绩分析增加一些计算属性

ting.yin 6 жил өмнө
parent
commit
24cae9946a

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectDao.java

@@ -19,5 +19,9 @@ public interface ReportSubjectDao extends PagingAndSortingRepository<ReportSubje
     @Modifying
     @Query("delete from ReportSubject r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
+    
+    @Modifying
+    @Query("update ReportSubject r set r.questionCount = (select count(*) from ExamQuestion q where q.examId=?1 and q.subjectCode = r.subjectCode and q.examId = r.examId ) where r.examId=?1  ")
+    void updateQuestionCount(Integer examId);
 
 }

+ 131 - 19
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubject.java

@@ -146,6 +146,54 @@ public class ReportSubject implements Serializable {
     @Column(name = "score_range", nullable = true)
     private String scoreRange;
 
+    /**
+     * 标准差
+     */
+    @Column(name = "stdev")
+    private Double stdev;
+
+    /**
+     * 差异系数
+     */
+    @Column(name = "coefficient", nullable = true, length = 32)
+    private Double coefficient;
+
+    /**
+     * 难度
+     */
+    @Column(name = "difficulty", nullable = true, length = 32)
+    private Double difficulty;
+
+    /**
+     * 区分度
+     */
+    @Column(name = "discrimination", nullable = true, length = 32)
+    private Double discrimination;
+
+    /**
+     * 零分人数
+     */
+    @Column(name = "zero_count", nullable = true, length = 32)
+    private Integer zeroCount;
+
+    /**
+     * 满分人数
+     */
+    @Column(name = "full_count")
+    private Integer fullCount;
+
+    /**
+     * 满分
+     */
+    @Column(name = "total_score")
+    private Double totalScore;
+
+    /**
+     * 题目数量
+     */
+    @Column(name = "question_count")
+    private Integer questionCount;
+
     public Integer getId() {
         return id;
     }
@@ -290,23 +338,87 @@ public class ReportSubject implements Serializable {
         this.scoreRange = scoreRange;
     }
 
-//    public void addOptions(String option) {
-//        options = StringUtils.trimToNull(options);
-//        StringBuilder sb = new StringBuilder(options);
-//        if (options != null) {
-//            sb.append(DB_ITEM_JOINER);
-//        }
-//        sb.append(option);
-//        this.options = sb.toString();
-//    }
-//
-//    public List<String> getOptionList() {
-//        List<String> list = new LinkedList<String>();
-//        options = StringUtils.trimToEmpty(options);
-//        String[] values = StringUtils.split(options, DB_ITEM_JOINER);
-//        for (String value : values) {
-//            list.add(value);
-//        }
-//        return list;
-//    }
+    public Double getStdev() {
+        return stdev;
+    }
+
+    public void setStdev(Double stdev) {
+        this.stdev = stdev;
+    }
+
+    public Double getCoefficient() {
+        return coefficient;
+    }
+
+    public void setCoefficient(Double coefficient) {
+        this.coefficient = coefficient;
+    }
+
+    public Double getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(Double difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public Double getDiscrimination() {
+        return discrimination;
+    }
+
+    public void setDiscrimination(Double discrimination) {
+        this.discrimination = discrimination;
+    }
+
+    public Integer getZeroCount() {
+        return zeroCount;
+    }
+
+    public void setZeroCount(Integer zeroCount) {
+        this.zeroCount = zeroCount;
+    }
+
+    public Integer getFullCount() {
+        return fullCount;
+    }
+
+    public void setFullCount(Integer fullCount) {
+        this.fullCount = fullCount;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public Integer getQuestionCount() {
+        return questionCount;
+    }
+
+    public void setQuestionCount(Integer questionCount) {
+        this.questionCount = questionCount;
+    }
+
+    // public void addOptions(String option) {
+    // options = StringUtils.trimToNull(options);
+    // StringBuilder sb = new StringBuilder(options);
+    // if (options != null) {
+    // sb.append(DB_ITEM_JOINER);
+    // }
+    // sb.append(option);
+    // this.options = sb.toString();
+    // }
+    //
+    // public List<String> getOptionList() {
+    // List<String> list = new LinkedList<String>();
+    // options = StringUtils.trimToEmpty(options);
+    // String[] values = StringUtils.split(options, DB_ITEM_JOINER);
+    // for (String value : values) {
+    // list.add(value);
+    // }
+    // return list;
+    // }
 }

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

@@ -90,6 +90,18 @@ public class ReportSubjectClassGroup implements Serializable {
     @Column(name = "discrimination", nullable = true, length = 32)
     private Double discrimination;
 
+    /**
+     * 难度
+     */
+    @Column(name = "difficulty", nullable = true, length = 32)
+    private Double difficulty;
+
+    /**
+     * 差异系数
+     */
+    @Column(name = "coefficient", nullable = true, length = 32)
+    private Double coefficient;
+
     /**
      * 题目数量
      */
@@ -212,4 +224,20 @@ public class ReportSubjectClassGroup implements Serializable {
         this.discriminationLevel = discriminationLevel;
     }
 
+    public Double getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(Double difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public Double getCoefficient() {
+        return coefficient;
+    }
+
+    public void setCoefficient(Double coefficient) {
+        this.coefficient = coefficient;
+    }
+
 }

+ 30 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectQuestion.java

@@ -161,12 +161,24 @@ public class ReportSubjectQuestion implements Serializable {
     @Column(name = "reality_count")
     private Integer realityCount;
 
+    /**
+     * 满分人数
+     */
+    @Column(name = "full_count", nullable = true, length = 32)
+    private Integer fullCount;
+
     /**
      * 选项分析
      */
     @Column(name = "options", nullable = true)
     private String options;
 
+    /**
+     * 正确答案
+     */
+    @Column(name = "answer", nullable = true)
+    private String answer;
+
     public Integer getId() {
         return id;
     }
@@ -335,12 +347,28 @@ public class ReportSubjectQuestion implements Serializable {
         this.realityCount = realityCount;
     }
 
+    public Integer getFullCount() {
+        return fullCount;
+    }
+
+    public void setFullCount(Integer fullCount) {
+        this.fullCount = fullCount;
+    }
+
     public String getOptions() {
         return options;
     }
 
-    public void setOption(String options) {
+    public void setOptions(String options) {
         this.options = options;
     }
-    
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectService.java

@@ -19,4 +19,6 @@ public interface ReportSubjectService {
 
     ReportSubject findOne(Integer examId, String subjectCode);
 
+    void updateQuestionCount(Integer examId);
+
 }

+ 6 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java

@@ -77,4 +77,10 @@ public class ReportSubjectServiceImpl extends BaseQueryService<ReportSubject> im
         return list.isEmpty() ? null : list.get(0);
     }
 
+    @Transactional
+    @Override
+    public void updateQuestionCount(Integer examId) {
+        reportSubjectDao.updateQuestionCount(examId);
+    }
+
 }

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

@@ -14,6 +14,7 @@ import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.report.model.SasConfigItem;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassGroupService;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherService;
 import cn.com.qmth.stmms.biz.report.utils.module.SubjectClassGroupModule;
@@ -53,7 +54,7 @@ public class ReportContext {
         this.subjectMap = new HashMap<String, ExamSubject>();
         this.questionMap = new HashMap<String, ExamQuestion>();
         this.groupMap = new HashMap<String, ExamQuestion>();
-        //以下modules创建有顺序
+        // 以下modules创建有顺序
         this.sasConfigItem = SpringContextHolder.getBean(SasConfigItem.class);
         this.modules.add(new SubjectModule(this));
         this.modules.add(new SubjectClassModule(this));
@@ -134,7 +135,8 @@ public class ReportContext {
         ReportSubjectClassGroupService subjectClassGroupService = SpringContextHolder
                 .getBean(ReportSubjectClassGroupService.class);
         subjectClassGroupService.updateQuestionCount(this.getExamId());
-
+        ReportSubjectService subjectService = SpringContextHolder.getBean(ReportSubjectService.class);
+        subjectService.updateQuestionCount(this.getExamId());
     }
 
     public Double getPassScore() {

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

@@ -40,6 +40,8 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
                 r.setTotalScore(unit.fullScore);
                 r.setObjective(objective);
                 r.setDiscrimination(unit.discrimination);
+                r.setDifficulty(unit.difficulty);
+                r.setCoefficient(unit.coefficient);
                 service.save(r);
             }
         }

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectModule.java

@@ -61,6 +61,13 @@ public class SubjectModule implements Module {
                 subject.setAvgScore(unit.avgScore);
                 subject.setPassCount(unit.passCount);
                 subject.setPassRate(unit.passRate);
+                subject.setDifficulty(unit.difficulty);
+                subject.setDiscrimination(unit.discrimination);
+                subject.setCoefficient(unit.coefficient);
+                subject.setStdev(unit.stdev);
+                subject.setZeroCount(unit.zeroCount);
+                subject.setFullCount(unit.fullCount);
+                subject.setTotalScore(unit.fullScore);
             } else {
                 subject.setMaxScore(0d);
                 subject.setMinScore(0d);

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionModule.java

@@ -103,6 +103,8 @@ public class SubjectQuestionModule implements Module, QuestionCalculatorProvider
                 r.setMinScore(unit.minScore);
                 r.setRealityCount(unit.count);
                 r.setZeroCount(unit.zeroCount);
+                r.setFullCount(unit.fullCount);
+                r.setAnswer(context.getExamQuestion(key).getAnswer());
                 service.save(r);
             }
         }

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionOptionModule.java

@@ -88,7 +88,7 @@ public class SubjectQuestionOptionModule implements Module {
                 }
                 ReportSubjectQuestion r = questionService.findOne(this.context.getExamId(), subjectCode, true,
                         paperType, mainNumber, subNumber);
-                r.setOption(options.toString());
+                r.setOptions(options.toString());
                 questionService.save(r);
                 optionMap.put(subjectCode, optionCounter.getCounter().keySet());
             }

+ 121 - 66
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ReportController.java

@@ -90,55 +90,75 @@ public class ReportController {
         query.setSubjectCode(subjectCode);
         query.setPaperType(paperType);
         query.setPageSize(Integer.MAX_VALUE);
+        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
+        result.accumulate("basic_paper", getPaperJson(reportSubject));
         result.accumulate("basic_question_objective", getQuestionJson(query, true));
         result.accumulate("basic_question_subjective", getQuestionJson(query, true));
         result.accumulate("basic_class", getClassJson(query));
         result.accumulate("basic_teacher", getTeacerJson(query));
         result.accumulate("basic_college", getCollegeJson(query));
         result.accumulate("basic_main_question", getGroupJson(query));
-        result.accumulate("basic_question_option", getOptionJson(query));
-        result.accumulate("discrimination_level", getDiscrimination(query));
-        result.accumulate("difficulty_level", getDifficulty(query));
-        result.accumulate("range_level", getRangeLevel(query));
-//        result.accumulate("range_10_totalScore", getRange10(query));
-        result.accumulate("range_1_totalScore", getRange1(query));
-//        result.accumulate("range_segment_6", getRange6(query));
+        result.accumulate("basic_question_option", getOptionJson(query, reportSubject));
+        result.accumulate("discrimination_level", getDiscrimination(query, reportSubject));
+        result.accumulate("difficulty_level", getDifficulty(query, reportSubject));
+        result.accumulate("range_level", getRangeLevel(query, reportSubject));
+        // result.accumulate("range_10_totalScore", getRange10(query));
+        // result.accumulate("range_1_totalScore", getRange1(query));
+        // result.accumulate("range_segment_6", getRange6(query));
         model.addAttribute("data", result);
         return "modules/report/pdf";
     }
 
-//    private String getRange6(ReportSubjectQuery query) {
-//        // TODO Auto-generated method stub
-//    }
-
-    private String getRange1(ReportSubjectQuery query) {
-        JSONObject result = new JSONObject();
-        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
-        JSONArray array = new JSONArray();
-//        result.accumulate("total", getScoreRange(array,reportSubject.getScoreRange(),100,1));
-        JSONArray classes = new JSONArray();
-        List<ReportSubjectClass> list = classService.findByQuery(query);
-        for (ReportSubjectClass reportSubjectClass : list) {
-            
-        }
-        result.accumulate("classes", classes);
-        return result.toString();
+    private String getPaperJson(ReportSubject r) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.accumulate("fullScore", r.getTotalScore());
+        jsonObject.accumulate("maxScore", r.getMaxScore());
+        jsonObject.accumulate("minScore", r.getMinScore());
+        jsonObject.accumulate("avgScore", r.getAvgScore());
+        jsonObject.accumulate("stdevScore", r.getStdev());
+        jsonObject.accumulate("coefficient", r.getCoefficient());
+        jsonObject.accumulate("difficulty", r.getDifficulty());
+        jsonObject.accumulate("discrimination", r.getDiscrimination());
+        jsonObject.accumulate("totalCount", r.getRealityCount());
+        jsonObject.accumulate("zeroCount", r.getZeroCount());
+        jsonObject.accumulate("fullCount", r.getFullCount());
+        return jsonObject.toString();
     }
 
-//    private JSONArray getScoreRange(JSONArray array, String scoreRange, int totalScore, int range) {
-//        JSONObject value = new JSONObject();
-//        value.accumulate(key, value);
-//        array.add(value);
-//        return array;
-//    }
-
-//    private String getRange10(ReportSubjectQuery query) {
-//        // TODO Auto-generated method stub
-//    }
-
-    private String getRangeLevel(ReportSubjectQuery query) {
+    // private String getRange6(ReportSubjectQuery query) {
+    // // TODO Auto-generated method stub
+    // }
+
+    // private String getRange1(ReportSubjectQuery query) {
+    // JSONObject result = new JSONObject();
+    // ReportSubject reportSubject =
+    // reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
+    // JSONArray array = new JSONArray();
+    // // result.accumulate("total",
+    // // getScoreRange(array,reportSubject.getScoreRange(),100,1));
+    // JSONArray classes = new JSONArray();
+    // List<ReportSubjectClass> list = classService.findByQuery(query);
+    // for (ReportSubjectClass reportSubjectClass : list) {
+    //
+    // }
+    // result.accumulate("classes", classes);
+    // return result.toString();
+    // }
+
+    // private JSONArray getScoreRange(JSONArray array, String scoreRange, int
+    // totalScore, int range) {
+    // JSONObject value = new JSONObject();
+    // value.accumulate(key, value);
+    // array.add(value);
+    // return array;
+    // }
+
+    // private String getRange10(ReportSubjectQuery query) {
+    // // TODO Auto-generated method stub
+    // }
+
+    private String getRangeLevel(ReportSubjectQuery query, ReportSubject reportSubject) {
         JSONArray array = new JSONArray();
-        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
         JSONObject value = JSONObject.fromObject(reportSubject.getRangeLevel());
         value.accumulate("name", "全部");
         value.accumulate("totalCount", reportSubject.getRealityCount());
@@ -147,19 +167,24 @@ public class ReportController {
         for (ReportSubjectClass reportSubjectClass : classes) {
             JSONObject classValue = JSONObject.fromObject(reportSubjectClass.getRangeLevel());
             classValue.accumulate("name", reportSubjectClass.getClassName());
-//            value.accumulate("totalCount", reportSubjectClass.getRealityCount());
-            array.add(value);
+            classValue.accumulate("totalCount", reportSubject.getTotalCount());
+            array.add(classValue);
         }
         return array.toString();
     }
 
-    private String getDifficulty(ReportSubjectQuery query) {
-        JSONArray array = new JSONArray();
+    private String getDifficulty(ReportSubjectQuery query, ReportSubject reportSubject) {
+        JSONArray result = new JSONArray();
         // 全部
-        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
-        JSONObject value = new JSONObject();
-        value.accumulate("name", "全部");
+        JSONObject obj = new JSONObject();
         JSONArray groups = new JSONArray();
+        JSONObject value = new JSONObject();
+        value.accumulate("name", "全卷");
+        value.accumulate("questionCount", reportSubject.getQuestionCount());
+        value.accumulate("fullScore", reportSubject.getTotalScore());
+        value.accumulate("difficulty", reportSubject.getDifficulty());
+        value.accumulate("levels", reportSubject.getDifficulityLevel());
+        groups.add(value);
         List<ReportSubjectGroup> list = groupService.findByQuery(query);
         for (ReportSubjectGroup r : list) {
             JSONObject jsonObject = new JSONObject();
@@ -170,14 +195,22 @@ public class ReportController {
             jsonObject.accumulate("levels", r.getDifficulityLevel());
             groups.add(jsonObject);
         }
-        value.accumulate("groups", groups);
-        array.add(value);
+        obj.accumulate("name", "全部");
+        obj.accumulate("groups", groups);
+        result.add(obj);
         // 班级
         List<ReportSubjectClass> classes = classService.findByQuery(query);
         for (ReportSubjectClass reportSubjectClass : classes) {
             JSONObject classValue = new JSONObject();
             value.accumulate("name", reportSubjectClass.getClassName());
             JSONArray classGroups = new JSONArray();
+            JSONObject group = new JSONObject();
+            group.accumulate("name", "全卷");
+            group.accumulate("questionCount", reportSubject.getQuestionCount());
+            group.accumulate("fullScore", reportSubject.getTotalScore());
+            group.accumulate("difficulty", reportSubjectClass.getDifficulty());
+            group.accumulate("levels", reportSubjectClass.getDifficulityLevel());
+            classGroups.add(group);
             query.setClassName(reportSubjectClass.getClassName());
             List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
             for (ReportSubjectClassGroup r : classGroupsList) {
@@ -185,23 +218,28 @@ public class ReportController {
                 jsonObject.accumulate("name", r.getGroupName());
                 jsonObject.accumulate("questionCount", r.getQuestionCount());
                 jsonObject.accumulate("fullScore", r.getTotalScore());
-//                jsonObject.accumulate("difficulty", r.getDifficulty());
+                jsonObject.accumulate("difficulty", r.getDifficulty());
                 jsonObject.accumulate("levels", r.getDifficulityLevel());
                 groups.add(jsonObject);
             }
-            value.accumulate("groups", classGroups);
-            array.add(classValue);
+            classValue.accumulate("groups", classGroups);
+            result.add(classValue);
         }
-        return array.toString();
+        return result.toString();
     }
 
-    private String getDiscrimination(ReportSubjectQuery query) {
-        JSONArray array = new JSONArray();
+    private String getDiscrimination(ReportSubjectQuery query, ReportSubject reportSubject) {
+        JSONArray result = new JSONArray();
         // 全部
-        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
-        JSONObject value = new JSONObject();
-        value.accumulate("name", "全部");
+        JSONObject obj = new JSONObject();
         JSONArray groups = new JSONArray();
+        JSONObject value = new JSONObject();
+        value.accumulate("name", "全卷");
+        value.accumulate("questionCount", reportSubject.getQuestionCount());
+        value.accumulate("fullScore", reportSubject.getTotalScore());
+        value.accumulate("coefficient", reportSubject.getCoefficient());
+        value.accumulate("levels", reportSubject.getDiscriminationLevel());
+        groups.add(value);
         List<ReportSubjectGroup> list = groupService.findByQuery(query);
         for (ReportSubjectGroup r : list) {
             JSONObject jsonObject = new JSONObject();
@@ -212,14 +250,22 @@ public class ReportController {
             jsonObject.accumulate("levels", r.getDiscriminationLevel());
             groups.add(jsonObject);
         }
-        value.accumulate("groups", groups);
-        array.add(value);
+        obj.accumulate("name", "全部");
+        obj.accumulate("groups", groups);
+        result.add(obj);
         // 班级
         List<ReportSubjectClass> classes = classService.findByQuery(query);
         for (ReportSubjectClass reportSubjectClass : classes) {
             JSONObject classValue = new JSONObject();
             value.accumulate("name", reportSubjectClass.getClassName());
             JSONArray classGroups = new JSONArray();
+            JSONObject group = new JSONObject();
+            group.accumulate("name", "全卷");
+            group.accumulate("questionCount", reportSubject.getQuestionCount());
+            group.accumulate("fullScore", reportSubject.getTotalScore());
+            group.accumulate("coefficient", reportSubjectClass.getCoefficient());
+            group.accumulate("levels", reportSubjectClass.getDiscriminationLevel());
+            classGroups.add(group);
             query.setClassName(reportSubjectClass.getClassName());
             List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
             for (ReportSubjectClassGroup r : classGroupsList) {
@@ -227,31 +273,30 @@ public class ReportController {
                 jsonObject.accumulate("name", r.getGroupName());
                 jsonObject.accumulate("questionCount", r.getQuestionCount());
                 jsonObject.accumulate("fullScore", r.getTotalScore());
-//                jsonObject.accumulate("coefficient", r.getCoefficient());
+                jsonObject.accumulate("coefficient", r.getCoefficient());
                 jsonObject.accumulate("levels", r.getDiscriminationLevel());
                 groups.add(jsonObject);
             }
-            value.accumulate("groups", classGroups);
-            array.add(classValue);
+            classValue.accumulate("groups", classGroups);
+            result.add(classValue);
         }
-        return array.toString();
+        return result.toString();
     }
 
-    private String getOptionJson(ReportSubjectQuery query) {
+    private String getOptionJson(ReportSubjectQuery query, ReportSubject reportSubject) {
         JSONObject value = new JSONObject();
-        ReportSubject reportSubject = reportSubjectService.findOne(query.getExamId(), query.getSubjectCode());
         value.accumulate("options", reportSubject.getOptions());
         JSONArray array = new JSONArray();
         query.setObjective(true);
         List<ReportSubjectQuestion> list = questionService.findByQuery(query);
         for (ReportSubjectQuestion r : list) {
             JSONObject jsonObject = new JSONObject();
-            jsonObject.accumulate("number", r.getMainNumber()+"-"+r.getSubNumber());
+            jsonObject.accumulate("number", r.getMainNumber() + "-" + r.getSubNumber());
             jsonObject.accumulate("totalCount", r.getRealityCount());
-//            jsonObject.accumulate("correctCount", r.getf);
+            jsonObject.accumulate("correctCount", r.getFullCount());
             jsonObject.accumulate("difficulty", r.getDifficulty());
             jsonObject.accumulate("discrimination", r.getDiscrimination());
-//            jsonObject.accumulate("answer", r.get);
+            jsonObject.accumulate("answer", r.getAnswer());
             jsonObject.accumulate("options", r.getOptions());
             array.add(jsonObject);
         }
@@ -265,8 +310,18 @@ public class ReportController {
         for (ReportSubjectGroup r : list) {
             JSONObject jsonObject = new JSONObject();
             jsonObject.accumulate("name", r.getGroupName());
-            jsonObject.accumulate("difficulty", r.getDifficulty());
             jsonObject.accumulate("objective", r.getObjective());
+            jsonObject.accumulate("fullScore", r.getTotalScore());
+            jsonObject.accumulate("maxScore", r.getMaxScore());
+            jsonObject.accumulate("minScore", r.getMinScore());
+            jsonObject.accumulate("avgScore", r.getAvgScore());
+            jsonObject.accumulate("stdevScore", r.getStdev());
+            jsonObject.accumulate("coefficient", r.getCoefficient());
+            jsonObject.accumulate("difficulty", r.getDifficulty());
+            jsonObject.accumulate("discrimination", r.getDiscrimination());
+            jsonObject.accumulate("totalCount", r.getRealityCount());
+            jsonObject.accumulate("zeroCount", r.getZeroCount());
+            jsonObject.accumulate("fullCount", r.getScoreRate());
             array.add(jsonObject);
         }
         return array.toString();