Browse Source

进线客户统计

xdd 1 month ago
parent
commit
ca8da359aa

+ 9 - 7
fs-admin/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java

@@ -26,6 +26,7 @@ import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import com.fs.qw.vo.QwWatchLogStatisticsListVO;
 import com.fs.sop.mapper.SopUserLogsMapper;
 import com.github.pagehelper.PageInfo;
+import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -90,25 +91,26 @@ public class FsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(param.getPageNum() == null){
+            param.setPageNum(1L);
+        }
+        if(param.getPageSize() == null){
+            param.setPageSize(10L);
+        }
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
 
 

+ 0 - 2
fs-admin/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java

@@ -65,7 +65,6 @@ public class QwFsCourseWatchLogController extends BaseController
 //            }
 //        }
         startPage();
-
         List<FsCourseWatchLogListVO> list = fsCourseWatchLogService.selectFsCourseWatchLogListVO(param);
         return getDataTable(list);
     }
@@ -87,7 +86,6 @@ public class QwFsCourseWatchLogController extends BaseController
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
         startPage();
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }

+ 2 - 6
fs-company/src/main/java/com/fs/course/controller/FsCourseWatchLogController.java

@@ -92,27 +92,23 @@ public class FsCourseWatchLogController extends BaseController
     @GetMapping("/qwWatchLogStatisticsList")
     public TableDataInfo qwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
     @GetMapping("/myQwWatchLogStatisticsList")
     public TableDataInfo myQwWatchLogStatisticsList(QwWatchLogStatisticsListParam param)
     {
-        startPage();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
         param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getSTime()==null||param.getETime()==null){
             return getDataTable(new ArrayList<>());
         }
-        List<QwWatchLogStatisticsListVO> list = qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
-        return getDataTable(list);
+        return qwWatchLogService.selectQwWatchLogStatisticsListVONew(param);
     }
 
 

+ 3 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -7,6 +7,7 @@ import com.fs.company.vo.CompanyQwUserByIdsVo;
 import com.fs.company.vo.CompanyUserQwListVO;
 import com.fs.company.vo.CompanyUserVO;
 import com.fs.company.vo.DocCompanyUserVO;
+import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.vo.CompanyUserQwVO;
 import com.fs.qw.vo.QwUserVO;
 import com.fs.wxUser.domain.CompanyWxUser;
@@ -270,6 +271,8 @@ public interface CompanyUserMapper
     @Select("select domain from company_user where user_id = #{userId}")
     String selectDomainByUserId(Long userId);
 
+    Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param);
+
     @Select("select * from company_user where ma_open_id = #{maOpenId}")
     CompanyUser getCompanyUserByOpenId(String openId);
 

+ 12 - 4
fs-service-system/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java

@@ -106,15 +106,23 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
     QwWatchLogStatisticsListVO selectQwWatchLogByQwUserId(@Param("id")Long id,@Param("createTime") Date createTime);
 
     List<QwWatchLogStatisticsListVO> selectQwWatchLogByCompanyUserId(
-            @Param("companyId") Long companyId,
-            @Param("companyUserId") Long companyUserId,
+                                            @Param("companyUserIds") List<Long> companyUserIds,
                                                                      @Param("sTime") Date sTime,
                                                                      @Param("dTime") Date dTime,
                                                                      @Param("project") Long project,
                                                                      @Param("courseId") Long courseId,
-                                                                     @Param("videoId") Long videoId
+                                                                     @Param("videoId") Long videoId,
+                                            @Param("pageNum") Long pageNum,
+                                            @Param("pageSize") Long pageSize
+    );
+    Long selectQwWatchLogByCompanyUserIdCount(
+            @Param("companyUserIds") List<Long> companyUserIds,
+            @Param("sTime") Date sTime,
+            @Param("dTime") Date dTime,
+            @Param("project") Long project,
+            @Param("courseId") Long courseId,
+            @Param("videoId") Long videoId
     );
-
 
     @Select("SELECT count(1) from qw_watch_log where ext_id=#{id} and `day`=0 ")
     int selectQwWatchLogIsFirst(Long id);

+ 3 - 0
fs-service-system/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java

@@ -20,4 +20,7 @@ public class QwWatchLogStatisticsListParam {
     private Long project;
     private Long courseId;
     private Long videoId;
+
+    private Long pageNum;
+    private Long pageSize;
 }

+ 6 - 1
fs-service-system/src/main/java/com/fs/qw/service/IQwWatchLogService.java

@@ -1,6 +1,7 @@
 package com.fs.qw.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.common.core.page.TableDataInfo;
 import com.fs.qw.domain.QwWatchLog;
 import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
@@ -64,8 +65,12 @@ public interface IQwWatchLogService extends IService<QwWatchLog>{
     int deleteQwWatchLogById(Long id);
 
     List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVO(QwWatchLogStatisticsListParam param);
-    List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param);
+    TableDataInfo selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param);
+    Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param);
 
     List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVO(QwWatchLogStatisticsListParam param);
     List<QwWatchLogAllStatisticsListVO> selectQwWatchLogAllStatisticsListVONew(QwWatchLogStatisticsListParam param);
+
+
+
 }

+ 67 - 27
fs-service-system/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java

@@ -2,8 +2,12 @@ package com.fs.qw.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.constant.HttpStatus;
+import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DictUtils;
+import com.fs.company.cache.ICompanyCacheService;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.domain.FsUserCourse;
@@ -18,11 +22,13 @@ import com.fs.qw.service.IQwWatchLogService;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import com.fs.qw.vo.QwWatchLogStatisticsListVO;
 import com.fs.store.service.cache.IFsUserCourseCacheService;
+import com.github.pagehelper.PageInfo;
 import com.hc.openapi.tool.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 企微看课Service业务层处理
@@ -44,6 +50,9 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
 
     @Autowired
     private IFsUserCourseVideoCacheService fsUserCourseVideoCacheService;
+
+    @Autowired
+    private ICompanyCacheService companyCacheService;
     /**
      * 查询企微看课
      *
@@ -143,43 +152,68 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
         return vos;
     }
 
+
     @Override
-    public List<QwWatchLogStatisticsListVO> selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param) {
+    public TableDataInfo selectQwWatchLogStatisticsListVONew(QwWatchLogStatisticsListParam param) {
         // 获取当前公司下的所有销售
         List<CompanyUser> companyUsers = companyUserMapper.selectCompanyUserByCompanyId(param.getCompanyId());
 
+        List<Long> userIds = companyUsers.stream()
+                .map(CompanyUser::getUserId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
         List<QwWatchLogStatisticsListVO> list = new ArrayList<>();
-        for (CompanyUser companyUser : companyUsers) {
-            // 统计销售下面的所有记录
-            List<QwWatchLogStatisticsListVO> vos = qwWatchLogMapper.selectQwWatchLogByCompanyUserId(companyUser.getCompanyId(),companyUser.getUserId()
-                    , param.getSTime(),param.getETime(),param.getProject(),param.getCourseId(),param.getVideoId());
-            for (QwWatchLogStatisticsListVO item : vos) {
-                item.setCompanyUserName(String.format("%s_%d",companyUser.getUserName(),companyUser.getUserId()));
-                item.setCreateTime(companyUser.getCreateTime());
-                if(ObjectUtils.isNotNull(item.getProject())){
-                    String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
-                    if(StringUtils.isNotBlank(sysCourseProject)){
-                        item.setProjectName(sysCourseProject);
-                    }
+
+        // 统计销售下面的所有记录
+        List<QwWatchLogStatisticsListVO> vos = qwWatchLogMapper
+                .selectQwWatchLogByCompanyUserId(userIds
+                , param.getSTime(),param.getETime(),param.getProject(),param.getCourseId(),param.getVideoId(),param.getPageNum(),param.getPageSize());
+
+        for (QwWatchLogStatisticsListVO item : vos) {
+            Company company = companyCacheService.selectCompanyById(item.getCompanyId());
+            if(ObjectUtils.isNotNull(company)){
+                item.setCompanyUserName(company.getCompanyName());
+                item.setCreateTime(company.getCreateTime());
+            }
+
+            if(ObjectUtils.isNotNull(item.getProject())){
+                String sysCourseProject = DictUtils.getDictLabel("sys_course_project", String.valueOf(item.getProject()));
+                if(StringUtils.isNotBlank(sysCourseProject)){
+                    item.setProjectName(sysCourseProject);
                 }
-                // 课程名
-                if(ObjectUtils.isNotNull(item.getCourseId())) {
-                    FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
-                    if(ObjectUtils.isNotNull(course)){
-                        item.setCourseName(course.getCourseName());
-                    }
+            }
+            // 课程名
+            if(ObjectUtils.isNotNull(item.getCourseId())) {
+                FsUserCourse course = fsUserCourseCacheService.selectFsUserCourseByCourseId(item.getCourseId());
+                if(ObjectUtils.isNotNull(course)){
+                    item.setCourseName(course.getCourseName());
                 }
-                // 小节名
-                if(ObjectUtils.isNotNull(item.getVideoId())) {
-                    FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
-                    if(ObjectUtils.isNotNull(fsUserCourseVideo)){
-                        item.setVideoName(fsUserCourseVideo.getTitle());
-                    }
+            }
+            // 小节名
+            if(ObjectUtils.isNotNull(item.getVideoId())) {
+                FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(item.getVideoId());
+                if(ObjectUtils.isNotNull(fsUserCourseVideo)){
+                    item.setVideoName(fsUserCourseVideo.getTitle());
                 }
-                list.add(item);
             }
+            list.add(item);
         }
-        return list;
+
+        // 获取总记录数
+        Long total = qwWatchLogMapper
+                .selectQwWatchLogByCompanyUserIdCount(userIds
+                        , param.getSTime(), param.getETime(), param.getProject(), param.getCourseId(), param.getVideoId());
+
+
+
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+
+        return rspData;
     }
 
     @Override
@@ -250,6 +284,12 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
         return list;
     }
 
+    @Override
+    public Long selectQwWatchLogStatisticsListVONewCount(QwWatchLogStatisticsListParam param) {
+
+        return companyUserMapper.selectQwWatchLogStatisticsListVONewCount(param);
+    }
+
     public List<Date> getDatesBetween(Date sTime, Date eTime) {
         List<Date> dates = new ArrayList<>();
         Calendar calendar = Calendar.getInstance();

+ 1 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java

@@ -10,6 +10,7 @@ public class QwWatchLogStatisticsListVO {
     private Long id;
     private String qwUserName;
     private String companyUserName;
+    private Long companyId;
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createTime;
     /**

+ 3 - 0
fs-service-system/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -435,5 +435,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             del_flag = 0
           AND (company_user.user_id = #{userId} or company_user.parent_id = #{userId})
     </select>
+    <select id="selectQwWatchLogStatisticsListVONewCount" resultType="java.lang.Long">
+
+    </select>
 
 </mapper>

+ 33 - 6
fs-service-system/src/main/resources/mapper/qw/QwWatchLogMapper.xml

@@ -40,14 +40,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             COUNT(CASE WHEN day = 0 and status=2 THEN 1 END) AS firstOver,
             COUNT(CASE WHEN day = 1 and status in (1,2) THEN 1 END) AS d1Online,
             COUNT(CASE WHEN day = 1 and status=2 THEN 1 END) AS d1Over,
-            COUNT(1) AS line,project,course_id,video_id
+            COUNT(1) AS line,project,course_id,video_id,company_id
              from qw_watch_log
              <where>
-                 <if test="companyUserId">
-                     and company_user_id = #{companyUserId}
-                 </if>
-                 <if test="companyId">
-                     and company_id = #{companyId}
+                 <if test="companyUserIds != null and companyUserIds.size() != 0">
+                     and company_user_id in
+                     <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                         ${item}
+                     </foreach>
                  </if>
                  <if test="project != null">
                      and project=#{project}
@@ -61,6 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  and DATE(line_time) between #{sTime} and #{dTime}
              </where>
             group by project,course_id,video_id
+            limit ${(pageNum-1)*pageSize},${pageSize}
     </select>
     <select id="selectQwWatchLogAllStatisticsListVONew"
             resultType="com.fs.qw.vo.QwWatchLogAllStatisticsListVO">
@@ -148,6 +149,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and DATE(line_time) between #{sDate} AND #{eDate} group by project,course_id,video_id
             </where>
     </select>
+    <select id="selectQwWatchLogByCompanyUserIdCount" resultType="java.lang.Long">
+        SELECT COUNT(*)
+        FROM (
+        SELECT 1
+        FROM qw_watch_log
+        <where>
+            <if test="companyUserIds != null and companyUserIds.size() != 0">
+                and company_user_id in
+                <foreach collection="companyUserIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="project != null">
+                and project=#{project}
+            </if>
+            <if test="courseId != null">
+                and course_id=#{courseId}
+            </if>
+            <if test="videoId != null">
+                and video_id=#{videoId}
+            </if>
+            and DATE(line_time) between #{sTime} and #{dTime}
+        </where>
+        GROUP BY project, course_id, video_id
+        ) AS count_temp_table
+    </select>
 
     <insert id="insertQwWatchLog" parameterType="QwWatchLog" useGeneratedKeys="true" keyProperty="id">
         insert into qw_watch_log