From 33fdb033e0a6b5ef6b2f8ac5fc67ad8222e564e5 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 17 五月 2024 14:49:12 +0800
Subject: [PATCH] 下载文件接口,bug修改
---
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 50 +++++++++++++++++++++++++++++---------------------
1 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index d312ee9..5f0bb90 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -257,7 +257,17 @@
<select id="selectAllCount" resultType="java.lang.Integer">
- SELECT count(*) from t_exam_paper_answer
+ select count(*) from t_exam_paper_answer a
+ inner join
+ (select user_id from t_user_department
+ <if test="deptIds != null and deptIds.size() > 0">
+ where department_id in
+ <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
+ group by user_id)
+ b on a.create_user = b.user_id
</select>
@@ -395,12 +405,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,
@@ -410,8 +422,11 @@
FROM
t_exam_paper_answer a
INNER JOIN (SELECT * FROM t_user_department
- <if test="departmentId != null and departmentId != ''">
- WHERE department_id = #{departmentId}
+ <if test="departmentId != null and departmentId.size() > 0">
+ WHERE department_id IN
+ <foreach collection="departmentId" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
</if>
GROUP BY user_id) b ON a.create_user = b.user_id
LEFT JOIN t_user c ON a.create_user = c.id
@@ -422,22 +437,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
@@ -446,8 +451,11 @@
</if>
LEFT JOIN t_exam_paper_answer c ON a.exam_paper_id = c.exam_paper_id AND a.user_id = c.create_user AND (c.invalid IS NULL OR c.invalid = 0)
INNER JOIN (SELECT * FROM t_user_department
- <if test="departmentId != null and departmentId != ''">
- WHERE department_id = #{departmentId}
+ <if test="departmentId != null and departmentId.size() > 0">
+ WHERE department_id IN
+ <foreach collection="departmentId" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
</if>
GROUP BY user_id) d ON a.user_id = d.user_id
</select>
--
Gitblit v1.8.0