lanan-system/dl-module-jx/src/main/resources/mapper/course/ProcessMapper.xml
2025-05-10 16:35:42 +08:00

107 lines
4.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.course.mapper.ProcessMapper">
<update id="updateProcessBatch">
UPDATE drive_school_process
SET exam_status = '9'
WHERE
user_id IN
<foreach collection="userIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND course_id = #{courseId}
AND `subject` = #{subject}
AND coach_id = #{coachId}
AND (exam_status IS NULL OR exam_status = '0')
AND deleted =0
</update>
<update id="updateProcessExamResult">
</update>
<select id="selectNewMaxByUserId" resultType="cn.iocoder.yudao.module.course.entity.Process">
SELECT
dsp.* FROM drive_school_process dsp
WHERE
dsp.user_id = #{userId}
<if test="coachId != null and coachId != ''">
AND dsp.coach_id=#{coachId}
</if>
ORDER BY dsp.`subject` DESC, dsp.create_time DESC LIMIT 1
</select>
<select id="selectAllTrainTime" resultType="java.lang.Double">
SELECT
SUM(dsp.train_time)
FROM
drive_school_process dsp
WHERE
dsp.user_id = #{userId}
AND dsp.deleted = 0
AND dsp.course_id = #{courseId}
AND (( dsp.`status` = '2' AND dsp.exam_status = '1' ) OR dsp.`status` = '1' )
</select>
<select id="pageProcess" resultType="cn.iocoder.yudao.module.course.vo.ProcessVO">
SELECT
dsp.*,
dss.id_card AS studentIdCard,
sysu.nickname AS updateName
FROM drive_school_process dsp
LEFT JOIN drive_school_student dss ON dss.user_id = dsp.user_id
LEFT JOIN system_users sysu on sysu.id = dsp.updater
<where>
dsp.deleted = 0
<if test="entity.coachName != null and entity.coachName != '' "> and dsp.coach_name like concat('%', #{entity.coachName}, '%')</if>
<if test="entity.userName != null and entity.userName != '' "> and dsp.user_name like concat('%', #{entity.userName}, '%')</if>
<if test="entity.courseName != null and entity.courseName != '' "> and dsp.name like concat('%', #{entity.courseName}, '%')</if>
<if test="entity.userId != null "> and dsp.user_id = #{entity.userId}</if>
<if test="entity.courseId != null and entity.courseId != '' "> and dsp.course_id = #{entity.courseId}</if>
<if test="entity.studentIdCard != null and entity.studentIdCard != '' "> AND RIGHT(dss.id_card, 4) = RIGHT(#{entity.studentIdCard}, 4) </if>
</where>
ORDER BY
(CASE
WHEN dsp.exam_status = '1' AND dsp.finance_pass IS NULL THEN 1 -- 优先级最高
WHEN dsp.exam_status = '9' THEN 2
WHEN dsp.status = '1' THEN 2
ELSE 4
END),
dsp.create_time DESC; -- 再按创建时间降序
</select>
<select id="getProcessList" resultType="cn.iocoder.yudao.module.course.entity.Process">
SELECT
*
FROM
drive_school_process
WHERE
user_id = #{userId}
AND deleted = 0
<if test="courseId!= null and courseId!= '' ">
AND course_id = #{courseId}
</if>
</select>
<select id="getProcessAndBatch" resultType="cn.iocoder.yudao.module.course.vo.ProcessAndExamBatchVO">
SELECT
dseb.start_time AS startTime,
dseb.end_time AS endTime,
dseb.addr_id AS addrId,
dseb.addr AS addr,
dseb.trans_way AS transWay,
dseb.creator AS creator,
dseb.id AS batchId,
dseb.updater AS updater,
dsebi.id AS batchItemId
from drive_school_exam_batch dseb
left join drive_school_exam_batch_item dsebi ON dseb.id = dsebi.batch_id
WHERE dseb.course_id = #{courseId}
AND dseb.coach_id = #{coachId}
AND dseb.subject = #{subject}
AND dsebi.fraction = #{fraction}
AND dsebi.user_id = #{userId}
ORDER BY dseb.update_time DESC LIMIT 1
</select>
</mapper>