|
@@ -900,106 +900,56 @@
|
|
|
AND sees.student_id_ = #{userId}
|
|
|
</select>
|
|
|
|
|
|
- <resultMap id="StudentServeDto" type="com.ym.mec.biz.dal.dto.StudentServeDto">
|
|
|
- <result column="student_id_" property="userId"/>
|
|
|
- <result column="username_" property="username"/>
|
|
|
- <result column="music_group_name_" property="musicGroupName"/>
|
|
|
- <result column="organ_name_" property="organName"/>
|
|
|
- <result column="serve_period_" property="servePeriod"/>
|
|
|
- <result column="serve_num_" property="serveNum"/>
|
|
|
- <result column="actual_exercises_num_" property="actualExercisesNum"/>
|
|
|
- <result column="exercises_reply_num_" property="exercisesReplyNum"/>
|
|
|
- <result column="exercises_message_num_" property="exercisesMessageNum"/>
|
|
|
- <result column="sign_rate_" property="signRate"/>
|
|
|
- <result column="pass_rate_" property="passRate"/>
|
|
|
+ <resultMap id="StudentServeExportDto" type="com.ym.mec.biz.dal.dto.StudentServeExportDto">
|
|
|
+ <result column="student_id_" property="studentId" jdbcType="INTEGER"/>
|
|
|
+ <result column="user_name_" property="username" jdbcType="VARCHAR"/>
|
|
|
+ <result column="music_group_name_" property="musicGroupName" jdbcType="VARCHAR"/>
|
|
|
+ <result column="serve_total_num_" property="serveTotalNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="sign_num_" property="signNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="course_num_" property="courseNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="qualified_num_" property="qualifiedNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="single_num_" property="singleNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="mix_num_" property="mixNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="not_sign_num_" property="notSignNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="not_sign_date_" property="notSignDate" jdbcType="VARCHAR"/>
|
|
|
+ <result column="not_homework_date_" property="notHomeworkDate" jdbcType="VARCHAR"/>
|
|
|
+ <result column="monday_" property="monday"/>
|
|
|
+ <result column="sunday_" property="sunday"/>
|
|
|
+ <result column="actual_exercises_num_" property="actualExercisesNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="exercises_reply_num_" property="exercisesReplyNum" jdbcType="INTEGER"/>
|
|
|
+ <result column="exercises_message_num_" property="exercisesMessageNum" jdbcType="INTEGER"/>
|
|
|
</resultMap>
|
|
|
|
|
|
<!-- 还差出勤率和达标率 -->
|
|
|
- <select id="queryStudentServeInfo" resultMap="StudentServeDto">
|
|
|
- select
|
|
|
- t.student_id_,
|
|
|
- t.music_group_name_,
|
|
|
- concat(#{params.startTime},'至', #{params.endTime}) as serve_period_,
|
|
|
- t.username_,
|
|
|
- t.organ_name_,
|
|
|
- ifnull(sees.serve_num_,0) as serve_num_,
|
|
|
- ifnull(sees.actual_exercises_num_,0) as actual_exercises_num_,
|
|
|
- ifnull(sees.exercises_reply_num_,0) as exercises_reply_num_,
|
|
|
- ifnull(sees.exercises_message_num_,0) as exercises_message_num_,
|
|
|
- round(ifnull(a.sign_rate_,0) * 100,2) as sign_rate_,
|
|
|
- round(ifnull(a.pass_rate_,0) * 100,2) as pass_rate_
|
|
|
- from (
|
|
|
- select
|
|
|
- a.user_id_ as student_id_,
|
|
|
- group_concat(distinct b.name_) as music_group_name_,
|
|
|
- u.username_,
|
|
|
- organ.name_ as organ_name_
|
|
|
- from student_registration a
|
|
|
- left join music_group b on a.music_group_id_ = b.id_
|
|
|
- left join sys_user u ON a.user_id_ = u.id_
|
|
|
- LEFT JOIN organization organ ON organ.id_=u.organ_id_ and organ.del_flag_ = 0
|
|
|
- where payment_status_ = 2 and b.status_ = 'PROGRESS'
|
|
|
- <if test="params.tenantId != null and params.tenantId > 0">
|
|
|
- AND a.tenant_id_ = #{params.tenantId}
|
|
|
- </if>
|
|
|
- <if test="params.organId != null and params.organId != ''">
|
|
|
- AND FIND_IN_SET(u.organ_id_,#{params.organId})
|
|
|
- </if>
|
|
|
- group by a.user_id_
|
|
|
- ) t
|
|
|
- left join
|
|
|
- (
|
|
|
- select
|
|
|
- sees.student_id_,
|
|
|
- sum(sees.expect_exercises_num_) as serve_num_,
|
|
|
- sum(sees.actual_exercises_num_) as actual_exercises_num_,
|
|
|
- sum(sees.exercises_reply_num_) as exercises_reply_num_,
|
|
|
- sum(sees.exercises_message_num_) as exercises_message_num_
|
|
|
- from student_extracurricular_exercises_situation_ sees
|
|
|
- left join sys_user u ON sees.student_id_ = u.id_
|
|
|
- <where>
|
|
|
- <if test="params.tenantId != null and params.tenantId > 0">
|
|
|
- AND sees.tenant_id_ = #{params.tenantId}
|
|
|
- </if>
|
|
|
- <if test="params.startTime != null and params.startTime != ''">
|
|
|
- AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') >= #{params.startTime}
|
|
|
- </if>
|
|
|
- <if test="params.endTime != null and params.endTime != ''">
|
|
|
- AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') <= #{params.endTime}
|
|
|
- </if>
|
|
|
- <if test="params.organId != null and params.organId != ''">
|
|
|
- AND FIND_IN_SET(u.organ_id_,#{params.organId})
|
|
|
- </if>
|
|
|
- </where>
|
|
|
- group by sees.student_id_
|
|
|
- ) sees on t.student_id_ = sees.student_id_
|
|
|
- left join (
|
|
|
- select
|
|
|
- cssp.user_id_,
|
|
|
- ifnull(sum(if(sa.status_ in ('NORMAL','LATE'),1,0))/count(cs.id_),0) as sign_rate_,
|
|
|
- ifnull(sum(sa.qualified_flag_)/count(cs.id_),0) as pass_rate_
|
|
|
- from course_schedule cs
|
|
|
- left join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
|
|
|
- left join sys_user u ON cssp.user_id_ = u.id_
|
|
|
- left join student_attendance sa on cssp.user_id_ = sa.user_id_ and cs.id_ = sa.course_schedule_id_
|
|
|
- <where>
|
|
|
- cs.del_flag_ = 0 and cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND cs.organ_id_ IS NOT NULL and cs.id_ is not null
|
|
|
- and cs.group_type_ = 'MUSIC'
|
|
|
- and (cs.new_course_id_ is null or cs.id_ = cs.new_course_id_)
|
|
|
- <if test="params.tenantId != null and params.tenantId > 0">
|
|
|
- AND cs.tenant_id_ = #{params.tenantId}
|
|
|
- </if>
|
|
|
- <if test="params.startTime != null and params.startTime != ''">
|
|
|
- AND DATE_FORMAT(cs.class_date_, '%Y-%m-%d') >= #{params.startTime}
|
|
|
- </if>
|
|
|
- <if test="params.endTime != null and params.endTime != ''">
|
|
|
- AND DATE_FORMAT(cs.class_date_, '%Y-%m-%d') <= #{params.endTime}
|
|
|
- </if>
|
|
|
- <if test="params.organId != null and params.organId != ''">
|
|
|
- AND FIND_IN_SET(u.organ_id_,#{params.organId})
|
|
|
- </if>
|
|
|
- </where>
|
|
|
- group by cssp.user_id_
|
|
|
- ) a on sees.student_id_ = a.user_id_
|
|
|
+ <select id="queryStudentServeInfo" resultMap="StudentServeExportDto">
|
|
|
+ select sees.student_id_,cs.user_name_,cs.music_group_name_,cs.organ_name_,sees.monday_,sees.sunday_,sees.serve_total_num_,sees.actual_exercises_num_,
|
|
|
+ sees.exercises_reply_num_,sees.exercises_message_num_,cs.sign_num_,cs.course_num_,cs.qualified_num_,cs.single_num_,cs.mix_num_,
|
|
|
+ cs.not_sign_num_,cs.not_sign_date_,sees.not_homework_date_ from (
|
|
|
+ select sees.student_id_,sees.music_group_id_,sees.monday_,sees.sunday_,sum(sees.expect_exercises_num_) serve_total_num_,
|
|
|
+ sum(sees.actual_exercises_num_) actual_exercises_num_,SUM(sees.exercises_reply_num_) exercises_reply_num_,sum(sees.exercises_message_num_) exercises_message_num_,
|
|
|
+ GROUP_CONCAT(DISTINCT CASE WHEN sees.exercises_reply_num_ < sees.actual_exercises_num_ THEN sees.monday_ END) not_homework_date_
|
|
|
+ from student_extracurricular_exercises_situation_ sees
|
|
|
+ where sees.monday_ = #{monday} AND sees.sunday_ = #{sunday}
|
|
|
+ group by sees.student_id_,sees.music_group_id_) sees
|
|
|
+ LEFT JOIN (
|
|
|
+ select sees.student_id_,sbi.organ_id_,sees.music_group_id_,sbi.user_name_,mg.name_ music_group_name_,sbi.organ_name_,
|
|
|
+ COUNT(sa.qualified_flag_ = 1) qualified_num_,COUNT(cs.id_) course_num_,COUNT(cs.type_ = 'SINGLE') single_num_,
|
|
|
+ COUNT(cs.type_ = 'MIX') mix_num_,COUNT(sa.id_) sign_num_,
|
|
|
+ COUNT(sa.id_ IS NULL) not_sign_num_,
|
|
|
+ GROUP_CONCAT(DISTINCT CASE WHEN sa.id_ IS NULL THEN cs.class_date_ END) not_sign_date_
|
|
|
+ from student_extracurricular_exercises_situation_ sees
|
|
|
+ left join student_basic_info sbi ON sbi.user_id_ = sees.student_id_
|
|
|
+ left join music_group mg ON mg.id_ = sees.music_group_id_
|
|
|
+ LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = sees.music_group_id_ AND cssp.user_id_ = sees.student_id_ AND cssp.group_type_ = 'MUSIC'
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
|
|
|
+ LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND sa.user_id_ = cssp.user_id_ AND sa.status_ = 'NORMAL'
|
|
|
+ where sees.monday_ = #{monday} AND sees.sunday_ = #{sunday}
|
|
|
+ group by sees.student_id_,sees.music_group_id_) cs ON cs.student_id_ = sees.student_id_ AND cs.music_group_id_ = sees.music_group_id_
|
|
|
+ <where>
|
|
|
+ <if test="organId != null and organId != ''">
|
|
|
+ AND FIND_IN_SET(cs.organ_id_,#{organId})
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ order by cs.organ_id_,cs.student_id_,cs.music_group_id_
|
|
|
</select>
|
|
|
</mapper>
|