123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?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="com.gyee.exam.modules.stat.course.mapper.StatCourseMapper">
- <select id="findOverview" resultType="com.gyee.exam.modules.stat.course.dto.StatCourseTotalDTO">
- <!--部门开放-->
- <if test="openType == 2">
- SELECT COUNT(uc.id) AS totalUser,
- COUNT(DISTINCT cl.user_id) AS actualUser,
- COUNT(IF( cl.state = 1 ,1, NULL)) AS passUser
- FROM el_course_depart dept
- LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
- LEFT JOIN el_course_learn cl ON cl.user_id=uc.id AND cl.course_id=dept.course_id
- WHERE uc.id IS NOT NULL AND dept.course_id=#{courseId}
- </if>
- <!--指定人员-->
- <if test="openType == 3">
- SELECT
- COUNT(DISTINCT cp.user_id) AS totalUser,
- COUNT(DISTINCT cl.user_id) AS actualUser,
- COUNT(IF( cl.state = 1 ,1, NULL)) AS passUser
- FROM el_course_person cp
- LEFT JOIN el_course_learn cl ON cp.user_id=cl.user_id AND cp.course_id=cl.course_id
- WHERE cp.course_id=#{courseId}
- </if>
- <!--其它公开的-->
- <if test="openType!=2 and openType!=3">
- SELECT 0 AS totalUser,
- (
- SELECT COUNT(DISTINCT user_id) FROM el_course_learn WHERE course_id=#{courseId}
- ) AS actualUser,
- (
- SELECT COUNT(DISTINCT user_id) FROM el_course_learn WHERE course_id=#{courseId} AND state=1
- ) AS passUser
- </if>
- </select>
- <select id="fileStatPaging" resultType="com.gyee.exam.modules.stat.course.dto.response.StatCourseFileDTO">
- SELECT ff.title AS fileName,
- (SELECT COUNT(DISTINCT user_id) FROM el_course_file_learn WHERE course_id=rf.course_id) AS learnUser,
- (SELECT COUNT(DISTINCT user_id) FROM el_course_file_learn WHERE learn_min >= rf.need_learn AND course_id=rf.course_id) AS finishUser
- FROM el_course_ref_file rf
- LEFT JOIN el_course_file ff ON rf.file_id=ff.id
- WHERE rf.course_id=#{query.courseId}
- <if test="query.fileName!=null and query.fileName!=''">
- AND ff.title LIKE CONCAT('%',#{query.fileName},'%')
- </if>
- </select>
- <select id="userStatPaging" resultType="com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO">
- <choose>
- <!--部门开放-->
- <when test="openType == 2">
- <include refid="queryDept"></include>
- </when>
- <!-- 指定人员 -->
- <when test="openType == 3">
- <include refid="queryUser"></include>
- </when>
- <otherwise>
- <include refid="queryOpen"></include>
- </otherwise>
- </choose>
- </select>
- <select id="checkUserCourseStat"
- resultType="com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO">
- SELECT
- uc.id,
- cl.state,
- uc.id AS userId,
- IFNULL(cl.learn_file, 0) AS learnFile,
- (SELECT COUNT(0) FROM el_course_ref_file WHERE course_id=dept.course_id) AS totalFile,
- uc.real_name AS realName,
- (SELECT IFNULL(SUM(learn_min),0) FROM el_course_file_learn fl WHERE fl.course_id=cl.course_id AND fl.user_id=cl.user_id) AS totalMin
- FROM el_course_depart dept
- LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
- LEFT JOIN el_course_person cp ON cp.user_id=uc.id
- LEFT JOIN el_course_learn cl ON cl.user_id=uc.id AND (cl.course_id=dept.course_id or cl.course_id=cp.course_id)
- WHERE uc.id IS NOT NULL AND cl.course_id=#{query.courseId}
- <if test="query.userId!=null and query.userId!=''">
- AND uc.id = #{query.userId}
- </if>
- ORDER BY cl.state DESC,totalMin DESC LIMIT 1
- </select>
- <sql id="queryOpen">
- SELECT
- cl.id,
- cl.state,
- cl.user_id AS userId,
- cl.learn_file AS learnFile,
- cl.total_file AS totalFile,
- uc.real_name AS realName,
- (SELECT SUM(learn_min) FROM el_course_file_learn fl WHERE fl.course_id=cl.course_id AND fl.user_id=cl.user_id) AS totalMin
- FROM el_course_learn cl
- LEFT JOIN sys_user uc ON cl.user_id=uc.id
- WHERE uc.id IS NOT NULL AND cl.course_id=#{query.courseId}
- <if test="query.realName!=null and query.realName!=''">
- AND uc.real_name LIKE CONCAT('%', #{query.realName} , '%')
- </if>
- <if test="query.courseDeparts!=null and query.courseDeparts!=''">
- AND uc.dept_code in <foreach item="item" collection="query.courseDeparts" separator="," open="(" close=")" index="">'${item}'</foreach>
- </if>
- ORDER BY cl.state DESC,totalMin DESC
- </sql>
- <sql id="queryDept">
- SELECT
- uc.id,
- cl.state,
- uc.id AS userId,
- IFNULL(cl.learn_file, 0) AS learnFile,
- (SELECT COUNT(0) FROM el_course_ref_file WHERE course_id=dept.course_id) AS totalFile,
- uc.real_name AS realName,
- (SELECT IFNULL(SUM(learn_min),0) FROM el_course_file_learn fl WHERE fl.course_id=cl.course_id AND fl.user_id=cl.user_id) AS totalMin,
- dept.dept_code deptCode
- FROM el_course_depart dept
- LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
- LEFT JOIN el_course_learn cl ON cl.user_id=uc.id AND cl.course_id=dept.course_id
- WHERE uc.id IS NOT NULL AND dept.course_id=#{query.courseId}
- <if test="query.realName!=null and query.realName!=''">
- AND (uc.real_name LIKE '%${query.realName}%' OR uc.user_name LIKE '%${query.realName}%')
- </if>
- <if test="query.courseDeparts!=null">
- AND dept.dept_code in <foreach item="item" collection="query.courseDeparts" separator="," open="(" close=")" index="">'${item}'</foreach>
- </if>
- ORDER BY cl.state DESC,totalMin DESC
- </sql>
- <sql id="queryUser">
- SELECT
- uc.id,
- cl.state,
- uc.id AS userId,
- IFNULL(cl.learn_file, 0) AS learnFile,
- (SELECT COUNT(0) FROM el_course_ref_file WHERE course_id=ps.course_id) AS totalFile,
- uc.real_name AS realName,
- (SELECT IFNULL(SUM(learn_min),0) FROM el_course_file_learn fl WHERE fl.course_id=cl.course_id AND fl.user_id=cl.user_id) AS totalMin,
- uc.dept_code deptCode
- FROM el_course_person ps
- LEFT JOIN sys_user uc ON ps.user_id=uc.id
- LEFT JOIN el_course_learn cl ON cl.user_id=uc.id AND cl.course_id=ps.course_id
- WHERE ps.course_id=#{query.courseId}
- <if test="query.realName!=null and query.realName!=''">
- AND (uc.real_name LIKE '%${query.realName}%' OR uc.user_name LIKE '%${query.realName}%')
- </if>
- <if test="query.courseDeparts!=null">
- AND uc.dept_code in <foreach item="item" collection="query.courseDeparts" separator="," open="(" close=")" index="">'${item}'</foreach>
- </if>
- ORDER BY cl.state DESC,totalMin DESC
- </sql>
- </mapper>
|