|
@@ -75,6 +75,8 @@ public class ReportController {
|
|
|
@Autowired
|
|
|
private ReportSubjectService reportSubjectService;
|
|
|
|
|
|
+ public static final String ANSWER_SPLIT = ",";
|
|
|
+
|
|
|
@RequestMapping(value = "/teachAndResearch", method = RequestMethod.GET)
|
|
|
public String getReport(Model model, HttpServletRequest request, @RequestParam Integer examId,
|
|
|
@RequestParam String subjectCode, @RequestParam(required = false) String paperType) {
|
|
@@ -91,20 +93,23 @@ public class ReportController {
|
|
|
query.setPaperType(paperType);
|
|
|
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);
|
|
|
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_question_subjective", getQuestionJson(query, false));
|
|
|
+ result.accumulate("basic_class", getClassJson(subjectClasses));
|
|
|
result.accumulate("basic_teacher", getTeacerJson(query));
|
|
|
result.accumulate("basic_college", getCollegeJson(query));
|
|
|
- result.accumulate("basic_main_question", getGroupJson(query));
|
|
|
+ result.accumulate("basic_main_question", getGroupJson(subjectGroups));
|
|
|
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));
|
|
|
+ result.accumulate("discrimination_level",
|
|
|
+ getDiscrimination(query, reportSubject, subjectClasses, subjectGroups));
|
|
|
+ result.accumulate("difficulty_level", getDifficulty(query, 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));
|
|
|
+ result.accumulate("range_segment_6", getRange6(reportSubject, subjectClasses));
|
|
|
model.addAttribute("data", result);
|
|
|
return "modules/report/pdf";
|
|
|
}
|
|
@@ -125,55 +130,101 @@ public class ReportController {
|
|
|
return jsonObject.toString();
|
|
|
}
|
|
|
|
|
|
- // 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) {
|
|
|
+ private String getRange6(ReportSubject subject, List<ReportSubjectClass> list) {
|
|
|
+ JSONArray result = new JSONArray();
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.accumulate("name", "全卷");
|
|
|
+ JSONArray groups = new JSONArray();
|
|
|
+ JSONObject value = new JSONObject();
|
|
|
+ value.accumulate("name", "全体");
|
|
|
+ value.accumulate("segments", getScoreRange(subject.getScoreRange(), subject.getTotalScore(), 20, subject.getRealityCount()));
|
|
|
+ groups.add(value);
|
|
|
+ for (ReportSubjectClass c : list) {
|
|
|
+ JSONObject classValue = new JSONObject();
|
|
|
+ classValue.accumulate("name", c.getClassName());
|
|
|
+ classValue.accumulate("segments", getScoreRange(c.getScoreRange(), subject.getTotalScore(), 20, c.getRealityCount()));
|
|
|
+ groups.add(classValue);
|
|
|
+ }
|
|
|
+ jsonObject.accumulate("groups",groups );
|
|
|
+ result.add(jsonObject);
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getRange1(ReportSubject subject, List<ReportSubjectClass> list) {
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+ result.accumulate("total",
|
|
|
+ getScoreRange(subject.getScoreRange(), subject.getTotalScore(), 1, subject.getRealityCount()));
|
|
|
+ JSONArray classes = new JSONArray();
|
|
|
+ for (ReportSubjectClass c : list) {
|
|
|
+ JSONObject classValue = new JSONObject();
|
|
|
+ classValue.accumulate("name", c.getClassName());
|
|
|
+ classValue.accumulate("ranges",
|
|
|
+ getScoreRange(c.getScoreRange(), subject.getTotalScore(), 1, c.getRealityCount()));
|
|
|
+ classes.add(classValue);
|
|
|
+ }
|
|
|
+ result.accumulate("classes", classes);
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getRange10(ReportSubject subject, List<ReportSubjectClass> list) {
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+ result.accumulate("total",
|
|
|
+ getScoreRange(subject.getScoreRange(), subject.getTotalScore(), 10, subject.getRealityCount()));
|
|
|
+ JSONArray classes = new JSONArray();
|
|
|
+ for (ReportSubjectClass r : list) {
|
|
|
+ JSONObject classValue = new JSONObject();
|
|
|
+ classValue.accumulate("name", r.getClassName());
|
|
|
+ classValue.accumulate("ranges",
|
|
|
+ getScoreRange(r.getScoreRange(), subject.getTotalScore(), 10, r.getRealityCount()));
|
|
|
+ classes.add(classValue);
|
|
|
+ }
|
|
|
+ result.accumulate("classes", classes);
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private JSONArray getScoreRange(String scoreRange, double totalScore, int range, Integer totalCount) {
|
|
|
+ JSONArray result = new JSONArray();
|
|
|
+ JSONObject jsonObject = JSONObject.fromObject(scoreRange);
|
|
|
+ int rangeCount = 0;
|
|
|
+ int sumCount = 0;
|
|
|
+ int total = (int) totalScore;
|
|
|
+ for (int i = total; i >= 0; i--) {
|
|
|
+ rangeCount = jsonObject.getInt(String.valueOf(i));
|
|
|
+ if (i == totalScore) {
|
|
|
+ sumCount = rangeCount;
|
|
|
+ } else {
|
|
|
+ sumCount = sumCount + rangeCount;
|
|
|
+ }
|
|
|
+ if (i % range == 0) {
|
|
|
+ JSONObject value = new JSONObject();
|
|
|
+ value.accumulate("score", i);
|
|
|
+ value.accumulate("rangeCount", rangeCount);
|
|
|
+ value.accumulate("rangeRate", rangeCount * 100.0 / totalCount);
|
|
|
+ value.accumulate("sumCount", sumCount);
|
|
|
+ value.accumulate("sumRate", sumCount * 100.0 / totalCount);
|
|
|
+ result.add(value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getRangeLevel(ReportSubjectQuery query, ReportSubject reportSubject, List<ReportSubjectClass> classes) {
|
|
|
JSONArray array = new JSONArray();
|
|
|
JSONObject value = JSONObject.fromObject(reportSubject.getRangeLevel());
|
|
|
value.accumulate("name", "全部");
|
|
|
value.accumulate("totalCount", reportSubject.getRealityCount());
|
|
|
array.add(value);
|
|
|
- List<ReportSubjectClass> classes = classService.findByQuery(query);
|
|
|
for (ReportSubjectClass reportSubjectClass : classes) {
|
|
|
JSONObject classValue = JSONObject.fromObject(reportSubjectClass.getRangeLevel());
|
|
|
classValue.accumulate("name", reportSubjectClass.getClassName());
|
|
|
- classValue.accumulate("totalCount", reportSubject.getTotalCount());
|
|
|
+ classValue.accumulate("totalCount", reportSubjectClass.getRealityCount());
|
|
|
array.add(classValue);
|
|
|
}
|
|
|
return array.toString();
|
|
|
}
|
|
|
|
|
|
- private String getDifficulty(ReportSubjectQuery query, ReportSubject reportSubject) {
|
|
|
+ private String getDifficulty(ReportSubjectQuery query, ReportSubject reportSubject,
|
|
|
+ List<ReportSubjectClass> subjectClasses, List<ReportSubjectGroup> subjectGroups) {
|
|
|
JSONArray result = new JSONArray();
|
|
|
// 全部
|
|
|
JSONObject obj = new JSONObject();
|
|
@@ -185,8 +236,7 @@ public class ReportController {
|
|
|
value.accumulate("difficulty", reportSubject.getDifficulty());
|
|
|
value.accumulate("levels", reportSubject.getDifficulityLevel());
|
|
|
groups.add(value);
|
|
|
- List<ReportSubjectGroup> list = groupService.findByQuery(query);
|
|
|
- for (ReportSubjectGroup r : list) {
|
|
|
+ for (ReportSubjectGroup r : subjectGroups) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.accumulate("name", r.getGroupName());
|
|
|
jsonObject.accumulate("questionCount", r.getQuestionCount());
|
|
@@ -199,10 +249,9 @@ public class ReportController {
|
|
|
obj.accumulate("groups", groups);
|
|
|
result.add(obj);
|
|
|
// 班级
|
|
|
- List<ReportSubjectClass> classes = classService.findByQuery(query);
|
|
|
- for (ReportSubjectClass reportSubjectClass : classes) {
|
|
|
+ for (ReportSubjectClass reportSubjectClass : subjectClasses) {
|
|
|
JSONObject classValue = new JSONObject();
|
|
|
- value.accumulate("name", reportSubjectClass.getClassName());
|
|
|
+ classValue.accumulate("name", reportSubjectClass.getClassName());
|
|
|
JSONArray classGroups = new JSONArray();
|
|
|
JSONObject group = new JSONObject();
|
|
|
group.accumulate("name", "全卷");
|
|
@@ -212,6 +261,7 @@ public class ReportController {
|
|
|
group.accumulate("levels", reportSubjectClass.getDifficulityLevel());
|
|
|
classGroups.add(group);
|
|
|
query.setClassName(reportSubjectClass.getClassName());
|
|
|
+ query.setObjective(null);
|
|
|
List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
|
|
|
for (ReportSubjectClassGroup r : classGroupsList) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
@@ -220,7 +270,7 @@ public class ReportController {
|
|
|
jsonObject.accumulate("fullScore", r.getTotalScore());
|
|
|
jsonObject.accumulate("difficulty", r.getDifficulty());
|
|
|
jsonObject.accumulate("levels", r.getDifficulityLevel());
|
|
|
- groups.add(jsonObject);
|
|
|
+ classGroups.add(jsonObject);
|
|
|
}
|
|
|
classValue.accumulate("groups", classGroups);
|
|
|
result.add(classValue);
|
|
@@ -228,7 +278,8 @@ public class ReportController {
|
|
|
return result.toString();
|
|
|
}
|
|
|
|
|
|
- private String getDiscrimination(ReportSubjectQuery query, ReportSubject reportSubject) {
|
|
|
+ private String getDiscrimination(ReportSubjectQuery query, ReportSubject reportSubject,
|
|
|
+ List<ReportSubjectClass> subjectClasses, List<ReportSubjectGroup> subjectGroups) {
|
|
|
JSONArray result = new JSONArray();
|
|
|
// 全部
|
|
|
JSONObject obj = new JSONObject();
|
|
@@ -240,8 +291,7 @@ public class ReportController {
|
|
|
value.accumulate("coefficient", reportSubject.getCoefficient());
|
|
|
value.accumulate("levels", reportSubject.getDiscriminationLevel());
|
|
|
groups.add(value);
|
|
|
- List<ReportSubjectGroup> list = groupService.findByQuery(query);
|
|
|
- for (ReportSubjectGroup r : list) {
|
|
|
+ for (ReportSubjectGroup r : subjectGroups) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.accumulate("name", r.getGroupName());
|
|
|
jsonObject.accumulate("questionCount", r.getQuestionCount());
|
|
@@ -254,10 +304,9 @@ public class ReportController {
|
|
|
obj.accumulate("groups", groups);
|
|
|
result.add(obj);
|
|
|
// 班级
|
|
|
- List<ReportSubjectClass> classes = classService.findByQuery(query);
|
|
|
- for (ReportSubjectClass reportSubjectClass : classes) {
|
|
|
+ for (ReportSubjectClass reportSubjectClass : subjectClasses) {
|
|
|
JSONObject classValue = new JSONObject();
|
|
|
- value.accumulate("name", reportSubjectClass.getClassName());
|
|
|
+ classValue.accumulate("name", reportSubjectClass.getClassName());
|
|
|
JSONArray classGroups = new JSONArray();
|
|
|
JSONObject group = new JSONObject();
|
|
|
group.accumulate("name", "全卷");
|
|
@@ -267,6 +316,7 @@ public class ReportController {
|
|
|
group.accumulate("levels", reportSubjectClass.getDiscriminationLevel());
|
|
|
classGroups.add(group);
|
|
|
query.setClassName(reportSubjectClass.getClassName());
|
|
|
+ query.setObjective(null);
|
|
|
List<ReportSubjectClassGroup> classGroupsList = classGroupService.findByQuery(query);
|
|
|
for (ReportSubjectClassGroup r : classGroupsList) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
@@ -275,7 +325,7 @@ public class ReportController {
|
|
|
jsonObject.accumulate("fullScore", r.getTotalScore());
|
|
|
jsonObject.accumulate("coefficient", r.getCoefficient());
|
|
|
jsonObject.accumulate("levels", r.getDiscriminationLevel());
|
|
|
- groups.add(jsonObject);
|
|
|
+ classGroups.add(jsonObject);
|
|
|
}
|
|
|
classValue.accumulate("groups", classGroups);
|
|
|
result.add(classValue);
|
|
@@ -285,7 +335,7 @@ public class ReportController {
|
|
|
|
|
|
private String getOptionJson(ReportSubjectQuery query, ReportSubject reportSubject) {
|
|
|
JSONObject value = new JSONObject();
|
|
|
- value.accumulate("options", reportSubject.getOptions());
|
|
|
+ value.accumulate("options", reportSubject.getOptions().split(ANSWER_SPLIT));
|
|
|
JSONArray array = new JSONArray();
|
|
|
query.setObjective(true);
|
|
|
List<ReportSubjectQuestion> list = questionService.findByQuery(query);
|
|
@@ -304,9 +354,8 @@ public class ReportController {
|
|
|
return value.toString();
|
|
|
}
|
|
|
|
|
|
- private String getGroupJson(ReportSubjectQuery query) {
|
|
|
+ private String getGroupJson(List<ReportSubjectGroup> list) {
|
|
|
JSONArray array = new JSONArray();
|
|
|
- List<ReportSubjectGroup> list = groupService.findByQuery(query);
|
|
|
for (ReportSubjectGroup r : list) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.accumulate("name", r.getGroupName());
|
|
@@ -321,7 +370,7 @@ public class ReportController {
|
|
|
jsonObject.accumulate("discrimination", r.getDiscrimination());
|
|
|
jsonObject.accumulate("totalCount", r.getRealityCount());
|
|
|
jsonObject.accumulate("zeroCount", r.getZeroCount());
|
|
|
- jsonObject.accumulate("fullCount", r.getScoreRate());
|
|
|
+ jsonObject.accumulate("fullCount", r.getFullCount());
|
|
|
array.add(jsonObject);
|
|
|
}
|
|
|
return array.toString();
|
|
@@ -351,6 +400,7 @@ public class ReportController {
|
|
|
for (ReportSubjectTeacher r : list) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.accumulate("name", r.getTeacherName());
|
|
|
+ jsonObject.accumulate("totalCount", r.getRealityCount());
|
|
|
jsonObject.accumulate("maxScore", r.getMaxScore());
|
|
|
jsonObject.accumulate("minScore", r.getMinScore());
|
|
|
jsonObject.accumulate("avgScore", r.getAvgScore());
|
|
@@ -364,7 +414,8 @@ public class ReportController {
|
|
|
List<ReportSubjectTeacherClass> teacherClasses = teacherClassService.findByQuery(query);
|
|
|
for (ReportSubjectTeacherClass teacherClass : teacherClasses) {
|
|
|
JSONObject value = new JSONObject();
|
|
|
- value.accumulate("name", teacherClass.getTeacherName());
|
|
|
+ value.accumulate("name", teacherClass.getClassName());
|
|
|
+ value.accumulate("totalCount", teacherClass.getRealityCount());
|
|
|
value.accumulate("maxScore", teacherClass.getMaxScore());
|
|
|
value.accumulate("minScore", teacherClass.getMinScore());
|
|
|
value.accumulate("avgScore", teacherClass.getAvgScore());
|
|
@@ -381,9 +432,8 @@ public class ReportController {
|
|
|
return array.toString();
|
|
|
}
|
|
|
|
|
|
- private String getClassJson(ReportSubjectQuery query) {
|
|
|
+ private String getClassJson(List<ReportSubjectClass> list) {
|
|
|
JSONArray array = new JSONArray();
|
|
|
- List<ReportSubjectClass> list = classService.findByQuery(query);
|
|
|
for (ReportSubjectClass r : list) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.accumulate("name", r.getClassName());
|
|
@@ -418,7 +468,7 @@ public class ReportController {
|
|
|
jsonObject.accumulate("discrimination", r.getDiscrimination());
|
|
|
jsonObject.accumulate("totalCount", r.getRealityCount());
|
|
|
jsonObject.accumulate("zeroCount", r.getZeroCount());
|
|
|
- jsonObject.accumulate("fullCount", r.getScoreRate());
|
|
|
+ jsonObject.accumulate("fullCount", r.getFullCount());
|
|
|
jsonObject.accumulate("fullRate", r.getFullScoreRate());
|
|
|
jsonObject.accumulate("scoreRate", r.getScoreRate());
|
|
|
array.add(jsonObject);
|