From f25f4c72105fa60c245e225b7f253e156a44ccb7 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 15 五月 2024 15:35:45 +0800
Subject: [PATCH] refactor:答卷统计返回结果调整
---
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java | 38 +++++++++++++++---
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 24 ++++--------
2 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
index 25c7afe..82a7cd6 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -313,15 +313,39 @@
@Override
public Map<String, Object> statistic(String examPaperId, String departmentId) {
- HashMap<String, Object> map = new HashMap<>();
+ // 鑾峰彇鍘熷鏁版嵁
Map<String, Object> histogram = examPaperAnswerMapper.histogram(examPaperId, departmentId);
Map<String, Object> pieChart = examPaperAnswerMapper.pieChart(examPaperId, departmentId);
- ArrayList<Double> histograms = new ArrayList<>();
- ArrayList<Double> pieCharts = new ArrayList<>();
- histogram.forEach((k, v) -> histograms.add(Double.valueOf(v.toString())));
- pieChart.forEach((k, v) -> pieCharts.add(Double.valueOf(v.toString())));
- map.put("histogram", histograms);
- map.put("pieChart", pieCharts);
+ // 鍒濆鍖栫粨鏋滃鍣�
+ HashMap<String, Object> map = new HashMap<>();
+ List<Map<String, Object>> score = new ArrayList<>();
+ List<Map<String, Object>> age = new ArrayList<>();
+ List<Map<String, Object>> examPeopleNum = new ArrayList<>();
+ // 澶勭悊鎴愮哗涓庡勾榫勫垎甯�
+ histogram.forEach((k, v) -> {
+ Map<String, Object> hashMap = new HashMap<>();
+ hashMap.put(k, v);
+ if (k.contains("score")) {
+ score.add(hashMap);
+ }
+ if (k.contains("age")) {
+ age.add(hashMap);
+ }
+ });
+ // 澶勭悊鍙傝�冧汉鏁帮紙鍑哄腑涓庣己甯級
+ pieChart.forEach((k, v) -> {
+ Map<String, Object> hashMap = new HashMap<>();
+ hashMap.put(k, v);
+ if ("totalAttended".equals(k)) {
+ examPeopleNum.add(hashMap);
+ }
+ if ("totalAbsent".equals(k)) {
+ examPeopleNum.add(hashMap);
+ }
+ });
+ map.put("score", score);
+ map.put("age", age);
+ map.put("examPeopleNum", examPeopleNum);
return map;
}
}
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index d312ee9..a730052 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -395,12 +395,14 @@
where a.create_time
</select>
- <select id="histogram" resultType="java.util.Map">
+ <select id="histogram" resultType="java.util.TreeMap">
<![CDATA[
SELECT
- COUNT(CASE WHEN a.user_score < 60 THEN 1 END) AS scoreLeq60,
- COUNT(CASE WHEN a.user_score >= 60 AND a.user_score < 80 THEN 1 END) AS score60To79,
- COUNT(CASE WHEN a.user_score >= 80 AND a.user_score <= 100 THEN 1 END) AS score80To100,
+ COUNT(CASE WHEN a.user_score < 60 THEN 1 END) AS score0To59,
+ COUNT(CASE WHEN a.user_score >= 60 AND a.user_score < 70 THEN 1 END) AS score60To69,
+ COUNT(CASE WHEN a.user_score >= 70 AND a.user_score < 80 THEN 1 END) AS score70To79,
+ COUNT(CASE WHEN a.user_score >= 80 AND a.user_score < 90 THEN 1 END) AS score80To89,
+ COUNT(CASE WHEN a.user_score >= 90 AND a.user_score <= 100 THEN 1 END) AS score90To100,
COUNT(CASE WHEN TIMESTAMPDIFF(YEAR, c.birth_day, CURDATE()) BETWEEN 0 AND 19 THEN 1 END) AS age0To19,
COUNT(CASE WHEN TIMESTAMPDIFF(YEAR, c.birth_day, CURDATE()) BETWEEN 20 AND 29 THEN 1 END) AS age20To29,
COUNT(CASE WHEN TIMESTAMPDIFF(YEAR, c.birth_day, CURDATE()) BETWEEN 30 AND 39 THEN 1 END) AS age30To39,
@@ -422,22 +424,12 @@
</if>
</select>
- <select id="pieChart" resultType="java.util.Map">
+ <select id="pieChart" resultType="java.util.TreeMap">
SELECT
- <!-- 搴旇鍙傚姞鑰冭瘯鐨勪汉鏁� -->
- COUNT(DISTINCT a.user_id) AS totalExpected,
<!-- 鍙傚姞鑰冭瘯鐨勪汉鏁� -->
COUNT(DISTINCT c.create_user) AS totalAttended,
- <!-- 鍙傚姞鑰冭瘯鐨勭櫨鍒嗘瘮锛屽苟鍥涜垗浜斿叆淇濈暀涓や綅灏忔暟 -->
- ROUND((COUNT(DISTINCT c.create_user) * 100.0 / NULLIF(COUNT(DISTINCT a.user_id), 0)), 2) AS percentageAttended,
- <!-- 鍙傚姞鑰冭瘯鐨勫皬鏁� -->
- COUNT(DISTINCT c.create_user) / NULLIF(COUNT(DISTINCT a.user_id), 0) as attended,
<!-- 缂鸿�冪殑浜烘暟 -->
- COUNT(DISTINCT a.user_id) - COUNT(DISTINCT c.create_user) AS totalAbsent,
- <!-- 缂鸿�冪殑鐧惧垎姣旓紝骞跺洓鑸嶄簲鍏ヤ繚鐣欎袱浣嶅皬鏁� -->
- ROUND(((COUNT(DISTINCT a.user_id) - COUNT(DISTINCT c.create_user)) * 100.0 / COUNT(DISTINCT a.user_id)), 2) AS percentageAbsent,
- <!-- 缂鸿�冪殑灏忔暟 -->
- ((COUNT(DISTINCT a.user_id) - COUNT(DISTINCT c.create_user)) / COUNT(DISTINCT a.user_id)) as absent
+ COUNT(DISTINCT a.user_id) - COUNT(DISTINCT c.create_user) AS totalAbsent
FROM
t_exam_paper_user a
INNER JOIN t_exam_paper b ON a.exam_paper_id = b.id
--
Gitblit v1.8.0