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 | 224 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 214 insertions(+), 10 deletions(-)
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 4995c70..5f0bb90 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -17,11 +17,31 @@
<result column="create_user" jdbcType="INTEGER" property="createUser" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="task_exam_id" jdbcType="INTEGER" property="taskExamId" />
- </resultMap>
+ <result column="counts" jdbcType="INTEGER" property="counts"/></resultMap>
<sql id="Base_Column_List">
id, exam_paper_id, paper_name, paper_type, subject_id, system_score, user_score,
paper_score, question_correct, question_count, do_time, status, create_user, create_time,
task_exam_id
+ </sql>
+ <sql id="Base_Column_List1">
+ id, exam_paper_id, paper_name, paper_type, subject_id, system_score, TRUNCATE(user_score/10,0) as user_score,
+ TRUNCATE(paper_score/10,0) as paper_score, question_correct, question_count, do_time, status, create_user, create_time,
+ task_exam_id
+ </sql>
+ <sql id="Base_Column_List2">
+ id, exam_paper_id, paper_name, paper_type, subject_id, system_score, user_score,
+ paper_score, question_correct, question_count, do_time, status, create_user, create_time,
+ task_exam_id,counts
+ </sql>
+ <sql id="Base_Column_List3">
+ id, exam_paper_id, paper_name, paper_type, subject_id, system_score, user_score,
+ paper_score, question_correct, question_count, do_time, status, create_user, create_time,
+ task_exam_id,DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS formattedTime
+ </sql>
+ <sql id="Base_Column_List4">
+ id, exam_paper_id, paper_name, paper_type, subject_id, system_score, TRUNCATE(user_score/10,0) as user_score,
+ TRUNCATE(paper_score/10,0) as paper_score, question_correct, question_count, do_time, status, create_user, create_time,
+ task_exam_id,DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS formattedTime
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
@@ -211,11 +231,19 @@
where id = #{id,jdbcType=INTEGER}
</update>
+ <update id="setMissExam">
+ update t_exam_paper_answer
+ set invalid = 1
+ where exam_paper_id = #{examPaperId}
+ and create_user in (
+ <foreach collection="userIds" item="item" index="index" separator=",">
+ #{item}
+ </foreach>
+ )
+ </update>
-
-
- <select id="studentPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM">
+ <select id="studentPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM">
SELECT
<include refid="Base_Column_List"/>
FROM t_exam_paper_answer
@@ -229,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>
@@ -254,8 +292,59 @@
<select id="adminPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM">
SELECT
+ a.id, a.exam_paper_id, a.paper_name, a.paper_type, a.subject_id, a.system_score, a.user_score,
+ a.paper_score, a.question_correct, a.question_count, a.do_time, a.status, a.create_user, a.create_time,
+ a.task_exam_id, u.real_name as userName
+ FROM t_exam_paper_answer a
+ left join t_user u on a.create_user = u.id
+ <where>
+ <if test="subjectId != null">
+ and a.subject_id = #{subjectId}
+ </if>
+ <if test="paperName != null and paperName != ''">
+ and a.paper_name like concat('%',#{paperName},'%')
+ </if>
+ <if test="userName != null and userName != ''">
+ and u.real_name like concat('%',#{userName},'%')
+ </if>
+ </where>
+ </select>
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
<include refid="Base_Column_List"/>
FROM t_exam_paper_answer
+ where id = #{id}
+ </select>
+
+ <select id="selectByPaperName" resultMap="BaseResultMap" parameterType="java.lang.String">
+ SELECT
+ <include refid="Base_Column_List"/>
+ FROM t_exam_paper_answer
+ <where>
+ <if test="paperName != null and paperName != ''">
+ paper_name = #{paperName}
+ </if>
+ </where>
+ </select>
+
+ <select id="getByExamPaperIdAndUserId" resultMap="BaseResultMap" parameterType="list">
+ select
+ <include refid="Base_Column_List1" />
+ from t_exam_paper_answer
+ where (exam_paper_id,create_user) in
+ <if test="examTemplatesUserCount !=null and examTemplatesUserCount.size() > 0">
+ <foreach collection="examTemplatesUserCount" item="item" index="item" open="(" separator="," close=")">
+ (#{item.examPaperId},#{item.userId})
+ </foreach>
+ </if>
+ and (invalid = 0 or invalid is null)
+ </select>
+ <select id="adminPageByGrade" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM">
+ select
+ <include refid="Base_Column_List2" />
+ from t_exam_paper_answer where create_time between '2023-01-01'and '2023-12-31'
<where>
<if test="subjectId != null">
and subject_id = #{subjectId}
@@ -265,11 +354,126 @@
</if>
</where>
</select>
- <select id="getById" resultMap="BaseResultMap">
- SELECT
- <include refid="Base_Column_List"/>
- FROM t_exam_paper_answer
- where id = #{id}
+ <select id="getByScorePaperIdAndUserId" resultMap="BaseResultMap" parameterType="list">
+ select
+ <include refid="Base_Column_List1" />
+ from t_exam_paper_answer
+ where (exam_paper_id,create_user) in
+ <if test="scoreTemplatesUserCounts !=null and scoreTemplatesUserCounts.size() > 0">
+ <foreach collection="scoreTemplatesUserCounts" item="item" index="item" open="(" separator="," close=")">
+ (#{item.examPaperId},#{item.userId})
+ </foreach>
+ </if>
+ </select>
+
+ <select id="getByCreatUser" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.domain.vo.ScoreTemplatesCountVO">
+ select
+ <include refid="Base_Column_List4"/>
+ from
+ t_exam_paper_answer
+ <where>
+ AND create_user = #{query.createUser}
+ <if test="query.start != null and query.end != null">
+ AND create_time between #{query.start} and #{query.end}
+ </if>
+ </where>
+ </select>
+
+ <select id="getByExamPaperIds" resultMap="BaseResultMap" parameterType="list">
+ select
+ <include refid="Base_Column_List1" />
+ from t_exam_paper_answer
+ where exam_paper_id in
+ <if test="ids !=null and ids.size() > 0">
+ <foreach collection="examTemplatesUserCount" item="item" index="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ </if>
</select>
+ <select id="getResult" resultMap="BaseResultMap" parameterType="list">
+ select * from t_exam_paper_answer where (exam_paper_id) in
+ <foreach collection="list" item="item" open="(" close=")" separator=",">
+ (#{item})
+ </foreach>
+ </select>
+
+ <select id="getByTimeOne" resultType="com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO">
+ select a.paper_name as name, u.real_name as userName,SUBSTRING_INDEX(a.user_score/10,".",1) as userScore,
+ SUBSTRING_INDEX(a.paper_score/10,".",1) as paperScore,a.do_time as doTime from t_exam_paper_answer a
+ left join t_user u on a.create_user = u.id
+ where a.create_time
+ </select>
+
+ <select id="histogram" resultType="java.util.TreeMap">
+ <![CDATA[
+ SELECT
+ 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,
+ COUNT(CASE WHEN TIMESTAMPDIFF(YEAR, c.birth_day, CURDATE()) BETWEEN 40 AND 49 THEN 1 END) AS age40To49,
+ COUNT(CASE WHEN TIMESTAMPDIFF(YEAR, c.birth_day, CURDATE()) >= 50 THEN 1 END) AS ageOver50
+ ]]>
+ FROM
+ t_exam_paper_answer a
+ INNER JOIN (SELECT * FROM t_user_department
+ <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
+ WHERE
+ (a.invalid IS NULL OR a.invalid = 0)
+ <if test="examPaperId != null and examPaperId != ''">
+ AND a.exam_paper_id = #{examPaperId}
+ </if>
+ </select>
+
+ <select id="pieChart" resultType="java.util.TreeMap">
+ SELECT
+ <!-- 鍙傚姞鑰冭瘯鐨勪汉鏁� -->
+ COUNT(DISTINCT c.create_user) AS totalAttended,
+ <!-- 缂鸿�冪殑浜烘暟 -->
+ 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
+ <if test="examPaperId != null and examPaperId != ''">
+ AND b.id = #{examPaperId}
+ </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.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>
+
+<insert id="insertDefault">
+ INSERT INTO t_exam_paper_answer(exam_paper_id, paper_name, paper_type, system_score, user_score, paper_score, question_correct, question_count, do_time, status,
+ create_user, create_time, invalid)
+ SELECT
+ a.id, a.name, a.paper_type, 0, 0, a.score, 0, a.question_count, 0, 2, b.user_id, NOW(), 0
+ FROM t_exam_paper a
+ left join t_exam_paper_user b on a.id = b.exam_paper_id and b.deleted = 0
+ left join t_exam_paper_answer c on a.id = c.exam_paper_id and c.create_user = b.user_id
+ WHERE a.id = #{examPaperId}
+ and c.id is null
+ and b.user_id not in
+ <foreach collection="userIds" item="item" open="(" close=")" separator=",">
+ #{item}
+ </foreach>
+</insert>
+
</mapper>
--
Gitblit v1.8.0