|
|
@@ -1459,6 +1459,239 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
</foreach>
|
|
|
GROUP BY l.watch_log_id
|
|
|
</select>
|
|
|
+ <!-- 销售维度订单统计 -->
|
|
|
+ <select id="selectAppSalesOrderStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cu.user_id AS salesId,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_package_order po ON po.user_id = log.user_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cu.user_id, log.period_id, log.video_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售维度基础数据+看课统计(合并查询) -->
|
|
|
+ <select id="selectAppSalesWatchStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cu.user_id AS salesId,
|
|
|
+ cu.nick_name AS salesName,
|
|
|
+ cd.dept_name AS salesDept,
|
|
|
+ c.company_name AS salesCompany,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ cv.title AS videoTitle,
|
|
|
+ cd.dept_id AS deptId,
|
|
|
+ c.company_id AS companyId,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
|
|
|
+ COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
|
|
|
+ LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
|
|
|
+ LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cu.user_id, log.period_id, log.video_id
|
|
|
+ ORDER BY cu.user_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售维度基础数据+看课统计(合并查询) -->
|
|
|
+ <select id="selectAppSalesWatchStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cu.user_id AS salesId,
|
|
|
+ cu.nick_name AS salesName,
|
|
|
+ cd.dept_name AS salesDept,
|
|
|
+ c.company_name AS salesCompany,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ cv.title AS videoTitle,
|
|
|
+ cd.dept_id AS deptId,
|
|
|
+ c.company_id AS companyId,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
|
|
|
+ COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
|
|
|
+ LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
|
|
|
+ LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cu.user_id, log.period_id, log.video_id
|
|
|
+ ORDER BY cu.user_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 销售维度订单统计 -->
|
|
|
+ <select id="selectAppSalesOrderStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cu.user_id AS salesId,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_package_order po ON po.user_id = log.user_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cu.user_id, log.period_id, log.video_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售维度营期信息 -->
|
|
|
+ <select id="selectAppSalesCampPeriod" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cp.period_id periodId,
|
|
|
+ cp.period_name periodName,
|
|
|
+ camp.training_camp_name trainingCampName
|
|
|
+ FROM
|
|
|
+ fs_user_course_period cp
|
|
|
+ LEFT JOIN fs_user_course_training_camp camp ON camp.training_camp_id = cp.training_camp_id
|
|
|
+ WHERE cp.period_id in
|
|
|
+ <foreach collection="periodIds" item="periodId" open="(" separator="," close=")">
|
|
|
+ #{periodId}
|
|
|
+ </foreach>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售部门维度APP会员数统计 -->
|
|
|
+ <select id="selectAppDeptUserStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cd.dept_id AS deptId,
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END) AS appUserCount,
|
|
|
+ <choose>
|
|
|
+ <when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL AND u.register_date >= #{startDate} AND u.register_date < DATE_ADD(#{endDate}, INTERVAL 1 DAY) THEN u.user_id END)
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END)
|
|
|
+ </otherwise>
|
|
|
+ </choose> AS newAppUserCount,
|
|
|
+ COUNT(DISTINCT cu.user_id) AS salesCount
|
|
|
+ FROM fs_user u
|
|
|
+ LEFT JOIN fs_user_company_user cuu ON cuu.user_id = u.user_id
|
|
|
+ LEFT JOIN company_user cu ON cuu.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON cuu.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ WHERE u.source IS NOT NULL
|
|
|
+ <if test="companyId != null and companyId != ''">
|
|
|
+ AND cuu.company_id = #{companyId}
|
|
|
+ </if>
|
|
|
+ <if test="deptId != null and deptId != ''">
|
|
|
+ AND cu.dept_id = #{deptId}
|
|
|
+ </if>
|
|
|
+ <if test="salesId != null and salesId != ''">
|
|
|
+ AND cu.user_id = #{salesId}
|
|
|
+ </if>
|
|
|
+ <if test="project != null and project != ''">
|
|
|
+ AND cuu.project_id = #{project}
|
|
|
+ </if>
|
|
|
+ GROUP BY cd.dept_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售部门维度基础数据+看课统计(合并查询) -->
|
|
|
+ <select id="selectAppDeptWatchStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cd.dept_id AS deptId,
|
|
|
+ cd.dept_name AS salesDept,
|
|
|
+ c.company_name AS salesCompany,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ cv.title AS videoTitle,
|
|
|
+ c.company_id AS companyId,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
|
|
|
+ COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
|
|
|
+ LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
|
|
|
+ LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cd.dept_id, log.period_id, log.video_id
|
|
|
+ ORDER BY cd.dept_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 销售部门维度订单统计 -->
|
|
|
+ <select id="selectAppDeptOrderStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cd.dept_id AS deptId,
|
|
|
+ log.period_id AS periodId,
|
|
|
+ log.video_id AS videoId,
|
|
|
+ COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
|
|
|
+ FROM fs_course_watch_log log
|
|
|
+ LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON log.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ LEFT JOIN fs_package_order po ON po.user_id = log.user_id
|
|
|
+ WHERE log.send_type = 1
|
|
|
+ AND log.watch_type = 1
|
|
|
+ <include refid="commonConditions"/>
|
|
|
+ GROUP BY cd.dept_id, log.period_id, log.video_id
|
|
|
+ </select>
|
|
|
+ <!-- 销售维度APP会员数统计(直接查fs_user表) -->
|
|
|
+ <select id="selectAppSalesUserStats" resultType="com.fs.his.vo.AppSalesWatchLogReportVO">
|
|
|
+ SELECT
|
|
|
+ cu.user_id AS salesId,
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END) AS appUserCount,
|
|
|
+ <choose>
|
|
|
+ <when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL AND u.register_date >= #{startDate} AND u.register_date < DATE_ADD(#{endDate}, INTERVAL 1 DAY) THEN u.user_id END)
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END)
|
|
|
+ </otherwise>
|
|
|
+ </choose> AS newAppUserCount
|
|
|
+ FROM fs_user u
|
|
|
+ LEFT JOIN fs_user_company_user cuu ON cuu.user_id = u.user_id
|
|
|
+ LEFT JOIN company_user cu ON cuu.company_user_id = cu.user_id
|
|
|
+ LEFT JOIN company c ON cuu.company_id = c.company_id
|
|
|
+ LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
|
|
|
+ WHERE u.source IS NOT NULL
|
|
|
+ <if test="companyId != null and companyId != ''">
|
|
|
+ AND cuu.company_id = #{companyId}
|
|
|
+ </if>
|
|
|
+ <if test="deptId != null and deptId != ''">
|
|
|
+ AND cu.dept_id = #{deptId}
|
|
|
+ </if>
|
|
|
+ <if test="salesId != null and salesId != ''">
|
|
|
+ AND cu.user_id = #{salesId}
|
|
|
+ </if>
|
|
|
+ <if test="project != null and project != ''">
|
|
|
+ AND cuu.project_id = #{project}
|
|
|
+ </if>
|
|
|
+ GROUP BY cu.user_id
|
|
|
+ </select>
|
|
|
|
|
|
<sql id="commonConditions">
|
|
|
<!-- 销售公司 -->
|
|
|
@@ -1478,7 +1711,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
|
|
|
<!-- 项目 -->
|
|
|
<if test="project != null and project != ''">
|
|
|
- AND cuu.project_id = #{project}
|
|
|
+ AND log.project = #{project}
|
|
|
</if>
|
|
|
<!-- 时间范围 -->
|
|
|
<if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
|