Bladeren bron

教学活动统计分析bug处理

pans 6 maanden geleden
bovenliggende
commit
19026ab7a3

+ 163 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/TeachingActivityMapper.xml

@@ -0,0 +1,163 @@
+<?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="vip.xiaonuo.disk.mapper.TeachingActivityMapper">
+
+   <select id="documentStatistic" resultType="map">
+       SELECT
+           COUNT(DISTINCT ctb.USER_ID) AS alreadyUserCount,
+           COUNT(DISTINCT stu.ID) AS allUserCount,
+           CASE
+               WHEN COUNT(DISTINCT stu.ID) > 0 THEN
+                   ROUND(
+                           CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
+                           2
+                   )
+               ELSE 0
+               END AS finishRate
+        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 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>
+          <if test="map.startTime != null">
+              AND ctb.create_time &gt;= #{map.startTime}
+          </if>
+          <if test="map.endTime != null">
+              AND ctb.create_time &lt;= #{map.endTime}
+          </if>
+          AND 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
+      </where>
+   </select>
+
+
+    <select id="documentJumpStatistic" resultType="map">
+        SELECT
+        ifnull(ROUND(AVG(ctb.END_TIME), 2),0) AS jumpAvgTime,
+        COUNT(DISTINCT cch.ID) AS allHourCount,
+        CASE
+        WHEN COUNT(DISTINCT cch.ID) > 0 THEN
+        ROUND(
+        CAST(COUNT(DISTINCT ctb.HOUR_ID) AS FLOAT) / COUNT(DISTINCT cch.ID),
+        2
+        )
+        ELSE 0
+        END AS finishRate
+        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 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>
+            <if test="map.startTime != null">
+                AND ctb.create_time &gt;= #{map.startTime}
+            </if>
+            <if test="map.endTime != null">
+                AND ctb.create_time &lt;= #{map.endTime}
+            </if>
+            AND 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
+        </where>
+    </select>
+
+    <select id="courseOpenStatistic" resultType="map">
+        SELECT
+            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
+        <where>
+             ci.DELETE_FLAG ='NOT_DELETE'
+            <if test="courseId != null and courseId != ''">
+                AND ci.COURSE_ID = #{courseId}
+            </if>
+            <if test="map.startTime != null">
+                AND ctb.create_time &gt;= #{map.startTime}
+            </if>
+            <if test="map.endTime != null">
+                AND ctb.create_time &lt;= #{map.endTime}
+            </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
+        </where>
+        GROUP BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
+        ORDER BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
+    </select>
+
+
+    <select id="documentDetailStatistic" resultType="map">
+        SELECT
+            ctb.file_id fileId,
+            ctb.FILE_NAME fileName,
+            count(DISTINCT stu.id) seeNum ,
+            count(DISTINCT ctb.USER_ID ) finishNum,
+            CASE
+                WHEN COUNT(DISTINCT stu.ID) > 0 THEN
+                    ROUND(
+                            CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
+                            2
+                    )
+                ELSE 0
+                END AS finishRate,
+            ifnull(ROUND(AVG(ctb.END_TIME), 2),0) AS jumpAvgTime,
+            CASE
+                WHEN COUNT(DISTINCT stu.ID) > 0 THEN 1-
+                                                     ROUND(
+                                                             CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
+                                                             2
+                                                     )
+                ELSE 0
+                END AS jumpRate,
+            count(ctb1.id) downNum
+        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 ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
+                 LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb1 ON ctb1.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='2' AND cch.ID =ctb1.HOUR_ID AND stu.ID=ctb1.USER_ID
+        <where>
+            ci.DELETE_FLAG ='NOT_DELETE'
+            <if test="courseId != null and courseId != ''">
+                AND ci.COURSE_ID = #{courseId}
+            </if>
+            <if test="map.startTime != null">
+                AND ctb.create_time &gt;= #{map.startTime}
+            </if>
+            <if test="map.endTime != null">
+                AND ctb.create_time &lt;= #{map.endTime}
+            </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
+        </where>
+        GROUP BY  ctb.file_id,ctb.FILE_NAME
+    </select>
+
+
+
+</mapper>