|
@@ -548,42 +548,44 @@
|
|
|
<result property="num0" column="course_sum_"/>
|
|
|
</resultMap>
|
|
|
<select id="queryCourseConsumer" resultMap="StudentCourseConsumerDto">
|
|
|
- select o.id_ organ_id_,o.name_ organName,count(CASE WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 THEN 1 END) normalNum,
|
|
|
+ select o.id_ organ_id_,o.name_ organName,count(ss.user_id_) normalNum,
|
|
|
COUNT(CASE WHEN cs.course_num_ > 4 THEN 1 END) num5
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 4 THEN 1 END) num4,COUNT(CASE WHEN cs.course_num_ = 3 THEN 1 END) num3
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 2 THEN 1 END) num2,COUNT(CASE WHEN cs.course_num_ = 1 THEN 1 END) num1,
|
|
|
- COUNT(CASE WHEN cs.course_num_ = 0 THEN 1 END) num0
|
|
|
+ count(ss.user_id_) - COUNT(cs.user_id_) num0
|
|
|
from student_statistics ss
|
|
|
- left join (select cs.organ_id_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
+ left join (select cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
|
|
|
- where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{queryInfo.month}
|
|
|
- <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
- AND FIND_IN_SET(cs.organ_id_,#{queryInfo.organId})
|
|
|
- </if>
|
|
|
+ where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{queryInfo.month} AND cs.type_ = 'VIP'
|
|
|
<include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
|
|
|
- left join organization o ON o.id_ = cs.organ_id_
|
|
|
- where ss.group_type_ = 'VIP' AND cs.organ_id_ IS NOT NULL
|
|
|
- group by cs.organ_id_
|
|
|
+ left join sys_user su ON su.id_ = ss.user_id_
|
|
|
+ left join organization o ON o.id_ = su.organ_id_
|
|
|
+ where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
|
|
|
+ <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
+ AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
|
|
|
+ </if>
|
|
|
+ group by su.organ_id_
|
|
|
</select>
|
|
|
<select id="queryPreCourseConsumer" resultMap="StudentCourseConsumerDto">
|
|
|
- select o.id_ organ_id_,o.name_ organName,count(CASE WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 THEN 1 END) normalNum,
|
|
|
+ select o.id_ organ_id_,o.name_ organName,count(ss.user_id_) normalNum,
|
|
|
COUNT(CASE WHEN cs.course_num_ > 4 THEN 1 END) num5
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 4 THEN 1 END) num4,COUNT(CASE WHEN cs.course_num_ = 3 THEN 1 END) num3
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 2 THEN 1 END) num2,COUNT(CASE WHEN cs.course_num_ = 1 THEN 1 END) num1,
|
|
|
- COUNT(CASE WHEN cs.course_num_ = 0 THEN 1 END) num0
|
|
|
+ count(ss.user_id_) - COUNT(cs.user_id_) num0
|
|
|
from student_statistics ss
|
|
|
- left join (select cs.organ_id_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
+ left join (select cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
|
|
|
- where DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate}
|
|
|
- <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
- AND FIND_IN_SET(cs.organ_id_,#{queryInfo.organId})
|
|
|
- </if>
|
|
|
+ where DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate} AND cs.type_ = 'VIP'
|
|
|
<include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
|
|
|
- left join organization o ON o.id_ = cs.organ_id_
|
|
|
- where ss.group_type_ = 'VIP' AND cs.organ_id_ IS NOT NULL
|
|
|
- group by cs.organ_id_
|
|
|
+ left join sys_user su ON su.id_ = ss.user_id_
|
|
|
+ left join organization o ON o.id_ = su.organ_id_
|
|
|
+ where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
|
|
|
+ <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
+ AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
|
|
|
+ </if>
|
|
|
+ group by su.organ_id_
|
|
|
</select>
|
|
|
|
|
|
<resultMap id="StudentCourseConsumerSumDto" type="com.ym.mec.biz.dal.dto.StudentCourseConsumerSumDto" extends="StudentCourseConsumerDto">
|
|
@@ -591,24 +593,25 @@
|
|
|
<result property="num6" column="num6"/>
|
|
|
</resultMap>
|
|
|
<select id="queryCourseConsumerSum" resultMap="StudentCourseConsumerSumDto">
|
|
|
- select o.id_ organ_id_,o.name_ organName,SUM(cs.course_sum_) course_sum_,count(CASE WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 THEN 1 END) normalNum,
|
|
|
+ select o.id_ organ_id_,o.name_ organName,SUM(cs.course_sum_) course_sum_,count(ss.user_id_) normalNum,
|
|
|
COUNT(CASE WHEN cs.course_num_ > 4 THEN 1 END) num5,
|
|
|
COUNT(CASE WHEN cs.course_num_ > 3 THEN 1 END) num6
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 4 THEN 1 END) num4,COUNT(CASE WHEN cs.course_num_ = 3 THEN 1 END) num3
|
|
|
,COUNT(CASE WHEN cs.course_num_ = 2 THEN 1 END) num2,COUNT(CASE WHEN cs.course_num_ = 1 THEN 1 END) num1,
|
|
|
- COUNT(CASE WHEN cs.course_num_ = 0 THEN 1 END) num0
|
|
|
+ count(ss.user_id_) - COUNT(cs.user_id_) num0
|
|
|
from student_statistics ss
|
|
|
- left join (select cs.organ_id_,COUNT(cssp.id_) course_sum_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
+ left join (select COUNT(cssp.id_) course_sum_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
|
|
|
- where DATE_FORMAT(cs.class_date_,'%Y-%m-%d') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate} AND cs.status_ = 'OVER'
|
|
|
- <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
- AND FIND_IN_SET(cs.organ_id_,#{queryInfo.organId})
|
|
|
- </if>
|
|
|
+ where DATE_FORMAT(cs.class_date_,'%Y-%m-%d') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate} AND cs.status_ = 'OVER' AND cs.type_ = 'VIP'
|
|
|
<include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
|
|
|
- left join organization o ON o.id_ = cs.organ_id_
|
|
|
- where ss.group_type_ = 'VIP' AND cs.organ_id_ IS NOT NULL
|
|
|
- group by cs.organ_id_
|
|
|
+ left join sys_user su ON su.id_ = ss.user_id_
|
|
|
+ left join organization o ON o.id_ = su.organ_id_
|
|
|
+ where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
|
|
|
+ <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
+ AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
|
|
|
+ </if>
|
|
|
+ group by su.organ_id_
|
|
|
</select>
|
|
|
<resultMap id="StudentCourseConsumerDetailDto" type="com.ym.mec.biz.dal.dto.StudentCourseConsumerDetailDto">
|
|
|
<result property="organName" column="organName"/>
|
|
@@ -620,34 +623,40 @@
|
|
|
<result property="courseNum" column="course_num_"/>
|
|
|
</resultMap>
|
|
|
<select id="queryCourseConsumerDetail" resultMap="StudentCourseConsumerDetailDto">
|
|
|
- select o.name_ organName,su.username_,su.phone_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) consumerNum,4 preConsumerNum
|
|
|
- from course_schedule cs
|
|
|
+ select o.name_ organName,su.username_,su.phone_,ss.user_id_,
|
|
|
+ CASE WHEN cs.consumerNum IS NULL THEN 0 ELSE cs.consumerNum END consumerNum,4 preConsumerNum
|
|
|
+ from student_statistics ss
|
|
|
+ left join (select cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) consumerNum from course_schedule cs
|
|
|
left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
|
|
|
- left join organization o ON o.id_ = cs.organ_id_
|
|
|
- left join sys_user su ON su.id_ = cssp.user_id_
|
|
|
- where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{queryInfo.month} AND cs.status_ = 'OVER'
|
|
|
+ where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{queryInfo.month} AND cs.status_ = 'OVER' AND cs.type_ = 'VIP'
|
|
|
+ <include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
+ group by cssp.user_id_) cs ON cs.user_id_ = ss.user_id_
|
|
|
+ left join sys_user su ON su.id_ = ss.user_id_
|
|
|
+ left join organization o ON o.id_ = su.organ_id_
|
|
|
+ where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
|
|
|
<if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
- AND FIND_IN_SET(cs.organ_id_,#{queryInfo.organId})
|
|
|
+ AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
|
|
|
</if>
|
|
|
- <include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
- group by cssp.user_id_ order by cs.organ_id_;
|
|
|
+ group by ss.user_id_ order by su.organ_id_;
|
|
|
</select>
|
|
|
<select id="queryPreCourseConsumerDetail" resultMap="StudentCourseConsumerDetailDto">
|
|
|
- select cs.name_ organName,cs.username_,cs.user_id_,cs.phone_,
|
|
|
- CASE WHEN ss.no_schedule_num_ + cs.course_num_ > 3 THEN 4 ELSE ss.no_schedule_num_ + cs.course_num_ END preConsumerNum,
|
|
|
- cs.course_num_
|
|
|
+ select o.name_ organName,su.username_,ss.user_id_,su.phone_,
|
|
|
+ CASE WHEN ss.no_schedule_num_ + CASE WHEN cs.course_num_ IS NULL THEN 0 ELSE cs.course_num_ END > 3
|
|
|
+ THEN 4 ELSE ss.no_schedule_num_ + CASE WHEN cs.course_num_ IS NULL THEN 0 ELSE cs.course_num_ END END preConsumerNum,
|
|
|
+ CASE WHEN cs.course_num_ IS NULL THEN 0 ELSE cs.course_num_ END course_num_
|
|
|
from student_statistics ss
|
|
|
left join (
|
|
|
- select cs.organ_id_,o.name_,su.username_,su.phone_,cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
+ select cssp.user_id_,COUNT(distinct cssp.course_schedule_id_) course_num_ from course_schedule cs
|
|
|
left join course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
|
|
|
- left join organization o ON o.id_ = cs.organ_id_
|
|
|
- left join sys_user su ON su.id_ = cssp.user_id_
|
|
|
- where DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate}
|
|
|
- <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
- AND FIND_IN_SET(cs.organ_id_,#{queryInfo.organId})
|
|
|
- </if>
|
|
|
+ where DATE_FORMAT(cs.class_date_,'%Y-%m') BETWEEN #{queryInfo.startDate} AND #{queryInfo.endDate} AND cs.type_ = 'VIP'
|
|
|
<include refid="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseIgnore"/>
|
|
|
group by cssp.user_id_) cs ON ss.user_id_ = cs.user_id_
|
|
|
- where ss.group_type_ = 'VIP' AND ss.user_id_ = cs.user_id_
|
|
|
+ left join sys_user su ON su.id_ = ss.user_id_
|
|
|
+ left join organization o ON o.id_ = su.organ_id_
|
|
|
+ where ss.group_type_ = 'VIP' AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0
|
|
|
+ <if test="queryInfo.organId != null and queryInfo.organId != ''">
|
|
|
+ AND FIND_IN_SET(su.organ_id_,#{queryInfo.organId})
|
|
|
+ </if>
|
|
|
+ ORDER BY su.organ_id_
|
|
|
</select>
|
|
|
</mapper>
|