فهرست منبع

update:sql优化

ct 1 هفته پیش
والد
کامیت
f1a150aacb

+ 9 - 5
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -133,11 +133,15 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
     @Select("select l.*,v.title,c.course_name from fs_course_watch_log l LEFT JOIN fs_user_course_video v ON v.video_id = l.video_id LEFT JOIN fs_user_course c ON c.course_id = l.course_id WHERE l.qw_external_contact_id =#{id} ORDER BY l.create_time  desc LIMIT 1  ")
     FsCourseWatchLogVO selectFsCourseWatchLogByExtId(Long id);
 
-    @Select("select l.qw_external_contact_id,l.company_id,l.company_user_id,l.log_type,ext.`level`,l.qw_user_id FROM fs_course_watch_log l LEFT JOIN qw_external_contact ext ON ext.id =l.qw_external_contact_id  where l.sop_id=#{SopId} and  date(l.create_time)= CURDATE() and l.log_type =3 and l.video_id not in (select video_id from fs_user_course_video WHERE is_first=1 ) ")
-    List<FsCourseWatchLogTaskVO> selectFsCourseWatchLogByDaySopId3(@Param("SopId")String SopId);
-
-    @Select("select l.qw_external_contact_id,l.company_id,l.company_user_id,l.log_type,ext.`level`,l.qw_user_id FROM fs_course_watch_log l LEFT JOIN qw_external_contact ext ON ext.id =l.qw_external_contact_id  where l.sop_id=#{SopId} and  date(l.create_time)= CURDATE() and l.log_type =4 and l.video_id not in (select video_id from fs_user_course_video WHERE is_first=1 ) ")
-    List<FsCourseWatchLogTaskVO> selectFsCourseWatchLogByDaySopId4(@Param("SopId")String SopId);
+//    @Select("select l.qw_external_contact_id,l.company_id,l.company_user_id,l.log_type,ext.`level`,l.qw_user_id FROM fs_course_watch_log l LEFT JOIN qw_external_contact ext ON ext.id =l.qw_external_contact_id  where l.sop_id=#{SopId} and  date(l.create_time)= CURDATE() and l.log_type =3 and l.video_id not in (select video_id from fs_user_course_video WHERE is_first=1 ) ")
+    List<FsCourseWatchLogTaskVO> selectFsCourseWatchLogByDaySopId3(@Param("SopId")String SopId,
+                                                                   @Param("todayStart") String todayStart,
+                                                                   @Param("todayEnd") String todayEnd);
+
+//    @Select("select l.qw_external_contact_id,l.company_id,l.company_user_id,l.log_type,ext.`level`,l.qw_user_id FROM fs_course_watch_log l LEFT JOIN qw_external_contact ext ON ext.id =l.qw_external_contact_id  where l.sop_id=#{SopId} and  date(l.create_time)= CURDATE() and l.log_type =4 and l.video_id not in (select video_id from fs_user_course_video WHERE is_first=1 ) ")
+    List<FsCourseWatchLogTaskVO> selectFsCourseWatchLogByDaySopId4(@Param("SopId")String SopId,
+                                                                   @Param("todayStart") String todayStart,
+                                                                   @Param("todayEnd") String todayEnd);
 
 //    @Select("   SELECT\n" +
 //            "            wl.log_type,\n" +

+ 3 - 1
fs-service/src/main/java/com/fs/qw/service/impl/HyWorkTaskServiceImpl.java

@@ -195,7 +195,9 @@ public class HyWorkTaskServiceImpl extends ServiceImpl<HyWorkTaskMapper, HyWorkT
                 continue;
             }
             // 每次sop的观看记录
-            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = fsCourseWatchLogMapper.selectFsCourseWatchLogByDaySopId3(qwSop.getId());
+            String todayStart = DateUtils.getStartOfDayString(DateUtils.getNowDate());
+            String todayEnd = DateUtils.getEndOfDayString(DateUtils.getNowDate());
+            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = fsCourseWatchLogMapper.selectFsCourseWatchLogByDaySopId3(qwSop.getId(),todayStart,todayEnd);
             if (fsCourseWatchLogs==null || fsCourseWatchLogs.isEmpty()) {
                 continue;
             }

+ 6 - 3
fs-service/src/main/java/com/fs/qw/service/impl/QwWorkTaskServiceImpl.java

@@ -179,8 +179,9 @@ public class QwWorkTaskServiceImpl extends ServiceImpl<QwWorkTaskMapper, QwWorkT
             if (qwSopLogs==null || qwSopLogs.isEmpty()) {
                 continue;
             }
-
-            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = courseWatchLogMapper.selectFsCourseWatchLogByDaySopId3(qwSop.getId());
+            String todayStart = DateUtils.getStartOfDayString(DateUtils.getNowDate());
+            String todayEnd = DateUtils.getEndOfDayString(DateUtils.getNowDate());
+            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = courseWatchLogMapper.selectFsCourseWatchLogByDaySopId3(qwSop.getId(),todayStart,todayEnd);
             if (fsCourseWatchLogs==null || fsCourseWatchLogs.isEmpty()) {
                 continue;
             }
@@ -258,7 +259,9 @@ public class QwWorkTaskServiceImpl extends ServiceImpl<QwWorkTaskMapper, QwWorkT
             if (qwSopLogs==null || qwSopLogs.isEmpty()) {
                 continue;
             }
-            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = courseWatchLogMapper.selectFsCourseWatchLogByDaySopId4(qwSop.getId());
+            String todayStart = DateUtils.getStartOfDayString(DateUtils.getNowDate());
+            String todayEnd = DateUtils.getEndOfDayString(DateUtils.getNowDate());
+            List<FsCourseWatchLogTaskVO> fsCourseWatchLogs = courseWatchLogMapper.selectFsCourseWatchLogByDaySopId4(qwSop.getId(),todayStart,todayEnd);
             if (fsCourseWatchLogs==null || fsCourseWatchLogs.isEmpty()) {
                 continue;
             }

+ 45 - 0
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -1141,4 +1141,49 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         DATE(o.create_time)
         ) AS t
     </select>
+    <select id="selectFsCourseWatchLogByDaySopId3" resultType="com.fs.course.vo.FsCourseWatchLogTaskVO">
+        SELECT
+        l.qw_external_contact_id,
+        l.company_id,
+        l.company_user_id,
+        l.log_type,
+        ext.`level`,
+        l.qw_user_id
+        FROM fs_course_watch_log l
+        LEFT JOIN qw_external_contact ext ON ext.id = l.qw_external_contact_id
+        WHERE l.sop_id = #{sopId}
+        AND l.create_time >= #{todayStart}
+        AND l.create_time &lt; #{todayEnd}
+        AND l.log_type = 3
+        AND NOT EXISTS (
+        SELECT 1
+        FROM fs_user_course_video ucv
+        WHERE ucv.video_id = l.video_id
+        AND ucv.is_first = 1
+        LIMIT 1
+        )
+    </select>
+    <select id="selectFsCourseWatchLogByDaySopId4" resultType="com.fs.course.vo.FsCourseWatchLogTaskVO">
+        SELECT
+            l.qw_external_contact_id,
+            l.company_id,
+            l.company_user_id,
+            l.log_type,
+            ext.`level`,
+            l.qw_user_id
+        FROM fs_course_watch_log l
+                 LEFT JOIN qw_external_contact ext ON ext.id = l.qw_external_contact_id
+        WHERE l.sop_id = #{sopId}
+          AND l.create_time >= #{todayStart}
+          AND l.create_time &lt; #{todayEnd}
+          AND l.log_type = 4
+          AND NOT EXISTS (
+            SELECT 1
+            FROM fs_user_course_video ucv
+            WHERE ucv.video_id = l.video_id
+              AND ucv.is_first = 1
+            LIMIT 1
+        )
+
+    </select>
 </mapper>