|
|
@@ -13,7 +13,7 @@
|
|
|
2
|
|
|
)
|
|
|
ELSE 0
|
|
|
- END AS finishRate
|
|
|
+ END AS docFinishRate
|
|
|
FROM COURSE_INFO ci
|
|
|
LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
@@ -21,14 +21,14 @@
|
|
|
LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
<where>
|
|
|
- <if test="courseId != null and courseId != ''">
|
|
|
- AND ci.COURSE_ID = #{courseId}
|
|
|
+ <if test="param.courseId != null and param.courseId != ''">
|
|
|
+ AND ci.COURSE_ID = #{param.courseId}
|
|
|
</if>
|
|
|
- <if test="map.startTime != null">
|
|
|
- AND ci.create_time >= #{map.startTime}
|
|
|
+ <if test="param.startTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') >= #{param.startTime}
|
|
|
</if>
|
|
|
- <if test="map.endTime != null">
|
|
|
- AND ci.create_time <= #{map.endTime}
|
|
|
+ <if test="param.endTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') <= #{param.endTime}
|
|
|
</if>
|
|
|
AND ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
AND cch.ID IS NOT NULL
|
|
|
@@ -69,14 +69,14 @@
|
|
|
LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
<where>
|
|
|
- <if test="courseId != null and courseId != ''">
|
|
|
- AND ci.COURSE_ID = #{courseId}
|
|
|
+ <if test="param.courseId != null and param.courseId != ''">
|
|
|
+ AND ci.COURSE_ID = #{param.courseId}
|
|
|
</if>
|
|
|
- <if test="map.startTime != null">
|
|
|
- AND ci.create_time >= #{map.startTime}
|
|
|
+ <if test="param.startTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') >= #{param.startTime}
|
|
|
</if>
|
|
|
- <if test="map.endTime != null">
|
|
|
- AND ci.create_time <= #{map.endTime}
|
|
|
+ <if test="param.endTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') <= #{param.endTime}
|
|
|
</if>
|
|
|
AND ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
AND cch.ID IS NOT NULL
|
|
|
@@ -92,21 +92,21 @@
|
|
|
TO_CHAR(ctb.create_time, 'YYYY-MM-DD') AS time,
|
|
|
count(DISTINCT ctb.USER_ID ) num
|
|
|
FROM COURSE_INFO ci
|
|
|
- LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
- LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
- LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
- LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
- LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID and ctb.FUNC_TYPE='1' and ctb.TYPE='1'
|
|
|
<where>
|
|
|
ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
- <if test="courseId != null and courseId != ''">
|
|
|
- AND ci.COURSE_ID = #{courseId}
|
|
|
+ <if test="param.courseId != null and param.courseId != ''">
|
|
|
+ AND ci.COURSE_ID = #{param.courseId}
|
|
|
</if>
|
|
|
- <if test="map.startTime != null">
|
|
|
- AND ci.create_time >= #{map.startTime}
|
|
|
+ <if test="param.startTime != null">
|
|
|
+ AND TO_CHAR(ctb.create_time, 'YYYY-MM-DD') >= #{param.startTime}
|
|
|
</if>
|
|
|
- <if test="map.endTime != null">
|
|
|
- AND ci.create_time <= #{map.endTime}
|
|
|
+ <if test="param.endTime != null">
|
|
|
+ AND TO_CHAR(ctb.create_time, 'YYYY-MM-DD') <= #{param.endTime}
|
|
|
</if>
|
|
|
AND cch.ID IS NOT NULL
|
|
|
AND cc.ID IS NOT NULL
|
|
|
@@ -154,14 +154,14 @@
|
|
|
<where>
|
|
|
ctb.file_id IS NOT null
|
|
|
AND ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
- <if test="courseId != null and courseId != ''">
|
|
|
- AND ci.COURSE_ID = #{courseId}
|
|
|
+ <if test="param.courseId != null and param.courseId != ''">
|
|
|
+ AND ci.COURSE_ID = #{param.courseId}
|
|
|
</if>
|
|
|
- <if test="map.startTime != null">
|
|
|
- AND ci.create_time >= #{map.startTime}
|
|
|
+ <if test="param.startTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') >= #{param.startTime}
|
|
|
</if>
|
|
|
- <if test="map.endTime != null">
|
|
|
- AND ci.create_time <= #{map.endTime}
|
|
|
+ <if test="param.endTime != null">
|
|
|
+ AND TO_CHAR(ci.create_time, 'YYYY-MM-DD') <= #{param.endTime}
|
|
|
</if>
|
|
|
AND cch.ID IS NOT NULL
|
|
|
AND cc.ID IS NOT NULL
|
|
|
@@ -171,7 +171,1203 @@
|
|
|
</where>
|
|
|
GROUP BY ctb.file_id,ctb.FILE_NAME,ctb.extend_name
|
|
|
</select>
|
|
|
+ <select id="getJumpOutCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ IFNULL(count(csb.ID),0) AS jumpOutCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1' AND csb1.PROGRESS < 100
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getJumpOutRate" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ CASE
|
|
|
+ when z1.jumpOutCount=0 or z1.jumpOutCount is NULL OR z1.allCount=0 OR z1.allCount IS null then 0
|
|
|
+ else TRUNC(z1.jumpOutCount * 1.0 / z1.allCount, 2)
|
|
|
+ END AS jumpOutRate
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ count(CASE WHEN csb.PROGRESS < 100 THEN 1 END) AS jumpOutCount,
|
|
|
+ count(csb.ID) AS allCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
+ <select id="getJumpAvgTime" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ CASE
|
|
|
+ when tt1.jumpAvgTime=0 or tt1.jumpAvgTime is NULL
|
|
|
+ then ''
|
|
|
+ else
|
|
|
+ CASE
|
|
|
+ WHEN FLOOR(tt1.jumpAvgTime / 3600000) = 0 THEN '0'
|
|
|
+ ELSE REGEXP_REPLACE(LPAD(FLOOR(tt1.jumpAvgTime / 3600000), 5, '0'), '^0+', '')
|
|
|
+ END || 'h' ||
|
|
|
+ IFNULL(LPAD(FLOOR((tt1.jumpAvgTime % 3600000) / 60000), 2, '0'),'00') || 'm' ||
|
|
|
+ IFNULL(LPAD(FLOOR((tt1.jumpAvgTime % 60000) / 1000), 2, '0'),'00') || 's'
|
|
|
+ END AS jumpAvgTime
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- LPAD(FLOOR(csb1.END_TIME / 3600000), 2, '0') || ':' ||
|
|
|
+ -- LPAD(FLOOR((csb1.END_TIME % 3600000) / 60000), 2, '0') || ':' ||
|
|
|
+ -- LPAD(FLOOR((csb1.END_TIME % 60000) / 1000), 2, '0') AS jumpTime
|
|
|
+ ROUND(AVG(IFNULL(csb.END_TIME,0)), 2) AS jumpAvgTime
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.END_TIME
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1' AND csb1.PROGRESS < 100
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ )tt1
|
|
|
+ </select>
|
|
|
+ <select id="getPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ left join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getReplyCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) replyCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ select
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ left join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND reply.PARENT_ID != '-1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getAvgReplyCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ TRUNC(IFNULL(AVG(z1.replyCount),0),2) avgReplyCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.postId AS postId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ t2.postId AS postId,
|
|
|
+ count(t2.replyId) AS replyCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId,
|
|
|
+ fpi.POST_ID AS postId
|
|
|
+ from FORUM_POST_INFO fpi
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on fpi.POST_ID = chapter.POST_ID
|
|
|
+ join FORUM_POST_REPLY as reply on reply.POST_ID = chapter.POST_ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t2.postId
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
+ <select id="getStuWeekPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) weekPostCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.*,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND su.EDU_IDENTITY='2'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getStuWeekReplyCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) weekPostCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.*,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND reply.PARENT_ID != '-1'
|
|
|
+ AND su.EDU_IDENTITY='2'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getStuWeekAvgPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ TRUNC(IFNULL(AVG(z1.postCount),0),2) weekAvgPostCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.*,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND su.EDU_IDENTITY='2'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
|
|
|
+ <select id="getTeachWeekPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) weekPostCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.*,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND su.EDU_IDENTITY='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getTeachWeekReplyCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) weekPostCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.*,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND reply.PARENT_ID != '-1'
|
|
|
+ AND su.EDU_IDENTITY='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getTeachWeekAvgPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ TRUNC(IFNULL(AVG(z1.postCount),0),2) weekAvgPostCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="courseId !=null and courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ AND su.EDU_IDENTITY='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
+ <select id="courseDiscussDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ postInfo.postId AS postId,
|
|
|
+ IFNULL(postInfo.postTitle,'')AS postTitle,
|
|
|
+ IFNULL(postInfo.postCreateTime,'')AS postCreateTime,
|
|
|
+ IFNULL(postInfo.postLastReplyTime,'')AS postLastReplyTime,
|
|
|
+ IFNULL(finalOne.postCount,'0')AS postCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- fpi.POST_ID AS postId,
|
|
|
+ -- fpi.POST_TITLE AS postTitle,
|
|
|
+ -- cch.ID AS hourId,
|
|
|
+ -- ci.COURSE_ID AS courseId
|
|
|
+ fpi.POST_ID AS postId,
|
|
|
+ IFNULL(fpi.POST_TITLE,'')AS postTitle,
|
|
|
+ IFNULL(fpi.CREATE_TIME,'')AS postCreateTime,
|
|
|
+ IFNULL(fpi.LAST_REPLY_TIME,'')AS postLastReplyTime
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ join FORUM_CHAPTER_DISCUSSION fcd on fcd.CHAPTER_ID = cch.ID AND fcd.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN FORUM_POST_INFO fpi ON fpi.POST_ID = fcd.POST_ID AND fpi.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="param.courseId !=null and param.courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{param.courseId}
|
|
|
+ </if>
|
|
|
+ <if test="param.startTime!=null and param.startTime != ''">
|
|
|
+ and TO_CHAR(fpi.CREATE_TIME, 'YYYY-MM-DD') >=#{param.startTime}
|
|
|
+ </if>
|
|
|
+ <if test="param.endTime!=null and param.endTime != ''">
|
|
|
+ and TO_CHAR(fpi.CREATE_TIME, 'YYYY-MM-DD') <=#{param.endTime}
|
|
|
+ </if>
|
|
|
+ GROUP BY fpi.POST_ID,fpi.POST_TITLE,fpi.CREATE_TIME,fpi.LAST_REPLY_TIME
|
|
|
+ )postInfo
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.postId AS postId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ t2.postId AS postId,
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="param.courseId !=null and param.courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{param.courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT
|
|
|
+ reply.POST_ID AS postId,
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
+ join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
+ JOIN SYS_USER su ON reply.USER_ID= su.ID
|
|
|
+ where
|
|
|
+ reply.POST_TYPE = 3
|
|
|
+ <if test="param.startTime!=null and param.startTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') >=#{param.startTime}
|
|
|
+ </if>
|
|
|
+ <if test="param.endTime!=null and param.endTime != ''">
|
|
|
+ and TO_CHAR(reply.CREATE_TIME, 'YYYY-MM-DD') <=#{param.endTime}
|
|
|
+ </if>
|
|
|
+ )t2 ON t1.hourId=t2.chapterId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t2.postId
|
|
|
+ )finalOne ON finalOne.postId=postInfo.postId
|
|
|
+ </select>
|
|
|
+ <select id="getHourTeachMaterialList" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.fileName,'') AS fileName,
|
|
|
+ IFNULL(teachMaterial.suffix,'') AS suffix,
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(CONCAT(teachMaterial.courseName,'-',teachMaterial.chapterName,'-',teachMaterial.hourName) ,'') AS courseHourName
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ IFNULL(CAST(df.NAME AS VARCHAR),'') AS fileName,
|
|
|
+ IFNULL(CAST(df.SUFFIX AS VARCHAR),'') AS suffix,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ IFNULL(cch.NAME,'') AS hourName,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ IFNULL(cc.NAME,'') AS chapterName,
|
|
|
+ ci.COURSE_ID AS courseId,
|
|
|
+ IFNULL(ci.COURSE_NAME,'') AS courseName
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="param.courseId !=null and param.courseId != ''">
|
|
|
+ and ci.COURSE_ID=#{param.courseId}
|
|
|
+ </if>
|
|
|
+ GROUP BY df.NAME,df.SUFFIX,cch.ID,cch.NAME,cc.ID,cc.NAME,ci.COURSE_ID,ci.COURSE_NAME
|
|
|
+ )teachMaterial
|
|
|
+ </select>
|
|
|
+ <select id="getWatchUserCountListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalOne.watchUserCount,0) AS watchUserCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(csb.HOUR_ID),0) AS watchUserCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ GROUP BY csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalOne ON teachMaterial.hourId =finalOne.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteUserCountListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalTwo.completeUserCount,0) AS completeUserCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(csb.HOUR_ID),0) AS completeUserCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1' AND csb1.PROGRESS=100
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ GROUP BY csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalTwo ON teachMaterial.hourId =finalTwo.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteRateListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalThree.completeRate,0) AS completeRate
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ CASE
|
|
|
+ when z1.allUserCount=0 or z1.allUserCount is NULL OR z1.completeWatchUserCount=0 OR z1.completeWatchUserCount IS null then 0
|
|
|
+ else TRUNC(z1.completeWatchUserCount * 1.0 / z1.allUserCount, 2)
|
|
|
+ END AS completeRate
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(t1.hourId),0) AS allUserCount,
|
|
|
+ IFNULL(count(csb.HOUR_ID),0) AS completeWatchUserCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1' AND csb1.PROGRESS=100
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ GROUP BY csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )z1
|
|
|
+ )finalThree ON teachMaterial.hourId =finalThree.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getReadAvgTimeListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalFour.readAvgTime,'') AS readAvgTime
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ tt1.hourId AS hourId,
|
|
|
+ CASE
|
|
|
+ when tt1.readAvgTime=0 or tt1.readAvgTime is NULL then ''
|
|
|
+ else
|
|
|
+ CASE
|
|
|
+ WHEN FLOOR(tt1.readAvgTime / 3600000) = 0 THEN '0'
|
|
|
+ ELSE REGEXP_REPLACE(LPAD(FLOOR(tt1.readAvgTime / 3600000), 5, '0'), '^0+', '')
|
|
|
+ END || 'h' ||
|
|
|
+ IFNULL(LPAD(FLOOR((tt1.readAvgTime % 3600000) / 60000), 2, '0'),'00') || 'm' ||
|
|
|
+ IFNULL(LPAD(FLOOR((tt1.readAvgTime % 60000) / 1000), 2, '0'),'00') || 's'
|
|
|
+ END AS readAvgTime
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.STAY_TIME AS stayTime
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ ROUND(AVG(IFNULL(csb.STAY_TIME,0)), 2) AS readAvgTime
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT csb1.USER_ID,csb1.HOUR_ID,csb1.STAY_TIME
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )tt1
|
|
|
+ )finalFour ON teachMaterial.hourId =finalFour.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getJumpOutRateListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalFive.jumpOutRate,0) AS jumpOutRate
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ CASE
|
|
|
+ when z1.jumpOutCount=0 or z1.jumpOutCount is NULL OR z1.allCount=0 OR z1.allCount IS null then 0
|
|
|
+ else TRUNC(z1.jumpOutCount * 1.0 / z1.allCount, 2)
|
|
|
+ END AS jumpOutRate
|
|
|
+ FROM(
|
|
|
+ -- #当前这些开课下所有课程的所有课程,所有观看过的记录
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ count(CASE WHEN csb.PROGRESS < 100 THEN 1 END) AS jumpOutCount,
|
|
|
+ count(csb.ID) AS allCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='1'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )z1
|
|
|
+ )finalFive ON teachMaterial.hourId =finalFive.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getDownloadCountListDocWatch" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ IFNULL(teachMaterial.hourId,'') AS hourId,
|
|
|
+ IFNULL(finalSix.downloadCount,0) AS downloadCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch.ID AS hourId
|
|
|
+ FROM COURSE_INFO ci LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ JOIN COURSE_RELATE cr ON cch.ID = cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.FUNC_TYPE ='2'
|
|
|
+ JOIN DEV_FILE df ON df.ID = cr.RELATE_ID AND df.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch.ID
|
|
|
+ )teachMaterial
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(csb.ID),0) AS downloadCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cop.ID AS copId,
|
|
|
+ stu.ID AS userId,
|
|
|
+ cch.ID AS hourId,
|
|
|
+ cc.ID AS chapterId,
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='2' AND csb1.TYPE='2'
|
|
|
+ <if test="startTime!=null and startTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') >=#{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime!=null and endTime != ''">
|
|
|
+ and TO_CHAR(csb1.CREATE_TIME, 'YYYY-MM-DD') <=#{endTime}
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalSix ON teachMaterial.hourId =finalSix.hourId
|
|
|
+ </select>
|
|
|
+ <select id="courseOpenDayStatistic" resultType="java.lang.String">
|
|
|
+ select t1.num as num
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ TO_CHAR(ctb.create_time, 'YYYY-MM-DD') AS dayTime,
|
|
|
+ count(DISTINCT ctb.USER_ID ) num
|
|
|
+ FROM COURSE_INFO ci
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID and ctb.FUNC_TYPE='1' and ctb.TYPE='1'
|
|
|
+ where ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
+ AND ci.COURSE_ID = #{courseId}
|
|
|
+ </if>
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ AND ctb.create_time IS NOT null
|
|
|
+ GROUP BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
|
|
|
+ ORDER BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
|
|
|
+ )t1
|
|
|
+ where 1=1
|
|
|
+ <if test="dayStr!=null and dayStr != ''">
|
|
|
+ and t1.dayTime = #{dayStr}
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
|
|
|
|
|
|
</mapper>
|