|
@@ -947,7 +947,7 @@
|
|
LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
|
|
LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
|
|
WHERE ta.teacher_id_ = cs.actual_teacher_id_
|
|
WHERE ta.teacher_id_ = cs.actual_teacher_id_
|
|
AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= '2021-02-01'
|
|
AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= '2021-02-01'
|
|
- AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
|
|
|
|
|
|
+ AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
|
|
AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
|
|
AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
|
|
AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
|
|
AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
|
|
AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
|
|
AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
|
|
@@ -976,7 +976,7 @@
|
|
LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
|
|
LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
|
|
WHERE ta.teacher_id_ = cs.actual_teacher_id_
|
|
WHERE ta.teacher_id_ = cs.actual_teacher_id_
|
|
AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= '2021-02-01'
|
|
AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= '2021-02-01'
|
|
- AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
|
|
|
|
|
|
+ AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0)))
|
|
AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
|
|
AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
|
|
AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
|
|
AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
|
|
AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
|
|
AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
|
|
@@ -1387,4 +1387,124 @@
|
|
ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
|
|
ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
|
|
) e GROUP BY e.organ_id_
|
|
) e GROUP BY e.organ_id_
|
|
</select>
|
|
</select>
|
|
|
|
+ <select id="countStudentErrorLeave" resultType="java.lang.Integer">
|
|
|
|
+ SELECT COUNT(DISTINCT c.user_id_) FROM (
|
|
|
|
+ SELECT sa.user_id_ FROM student_attendance sa
|
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
|
|
|
|
+ WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{format} AND sa.status_ = 'LEAVE'
|
|
|
|
+ <if test="organIdList != null and organIdList.size > 0">
|
|
|
|
+ AND cs.organ_id_ IN
|
|
|
|
+ <foreach collection="organIdList" open="(" close=")" item="item" separator=",">
|
|
|
|
+ #{item}
|
|
|
|
+ </foreach>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="classGroupIds != null and classGroupIds.size() > 0">
|
|
|
|
+ AND cs.class_group_id_ IN
|
|
|
|
+ <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
|
|
|
|
+ #{classGroupId}
|
|
|
|
+ </foreach>
|
|
|
|
+ </if>
|
|
|
|
+ GROUP BY sa.user_id_,DATE_FORMAT(cs.class_date_,'%Y-%m')
|
|
|
|
+ HAVING COUNT(sa.id_) > 1 AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_)) c
|
|
|
|
+ </select>
|
|
|
|
+ <select id="countStudentErrorLeave1" resultType="java.lang.Integer">
|
|
|
|
+ SELECT COUNT(DISTINCT c.user_id_) FROM (
|
|
|
|
+ SELECT sa.user_id_ FROM student_attendance sa
|
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
|
|
|
|
+ LEFT JOIN sys_user su ON su.id_ = sa.user_id_
|
|
|
|
+ WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{totalMonth} AND sa.status_ = 'LEAVE'
|
|
|
|
+ <if test="organId != null">
|
|
|
|
+ AND FIND_IN_SET(cs.organ_id_,#{organId})
|
|
|
|
+ </if>
|
|
|
|
+ <if test="classGroupIds != null and classGroupIds.size() > 0">
|
|
|
|
+ AND cs.class_group_id_ IN
|
|
|
|
+ <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
|
|
|
|
+ #{classGroupId}
|
|
|
|
+ </foreach>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="search != null and search != ''">
|
|
|
|
+ AND (sa.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
|
|
|
|
+ </if>
|
|
|
|
+ GROUP BY sa.user_id_,DATE_FORMAT(cs.class_date_,'%Y-%m')
|
|
|
|
+ HAVING COUNT(sa.id_) > 1 AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_)) c
|
|
|
|
+ </select>
|
|
|
|
+ <resultMap id="StudentErrorLeaveDto" type="com.ym.mec.biz.dal.dto.StudentErrorLeaveDto">
|
|
|
|
+ <result property="currentNum" column="current_num_"/>
|
|
|
|
+ <result property="totalNum" column="total_num_"/>
|
|
|
|
+ <result property="userId" column="user_id_"/>
|
|
|
|
+ <result property="studentName" column="username_"/>
|
|
|
|
+ <result property="phone" column="phone_"/>
|
|
|
|
+ <result property="organId" column="organ_id_"/>
|
|
|
|
+ <result property="organName" column="organ_name_"/>
|
|
|
|
+ </resultMap>
|
|
|
|
+ <select id="queryStudentErrorLeave" resultMap="StudentErrorLeaveDto">
|
|
|
|
+ SELECT organ_id_,organ_name_,user_id_,username_,phone_,total_num_,MIN(current_num_) current_num_,class_date_
|
|
|
|
+ FROM (SELECT cs.organ_id_,o.name_ organ_name_,sa.user_id_,su.username_,su.phone_,COUNT(sa.id_) total_num_,
|
|
|
|
+ COUNT(CASE WHEN DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} THEN 1 ELSE NULL END) current_num_,cs.class_date_
|
|
|
|
+ FROM student_attendance sa
|
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
|
|
|
|
+ LEFT JOIN organization o ON o.id_ = cs.organ_id_
|
|
|
|
+ LEFT JOIN sys_user su ON su.id_ = sa.user_id_
|
|
|
|
+ WHERE DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{totalMonth} AND sa.status_ = 'LEAVE'
|
|
|
|
+ <if test="organId != null">
|
|
|
|
+ AND FIND_IN_SET(cs.organ_id_,#{organId})
|
|
|
|
+ </if>
|
|
|
|
+ <if test="classGroupIds != null and classGroupIds.size() > 0">
|
|
|
|
+ AND cs.class_group_id_ IN
|
|
|
|
+ <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
|
|
|
|
+ #{classGroupId}
|
|
|
|
+ </foreach>
|
|
|
|
+ </if>
|
|
|
|
+ <if test="search != null and search != ''">
|
|
|
|
+ AND (sa.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
|
|
|
|
+ </if>
|
|
|
|
+ GROUP BY sa.user_id_,DATE_FORMAT(cs.class_date_,'%Y-%m') HAVING COUNT(sa.id_) > 1 AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_))c
|
|
|
|
+ GROUP BY c.user_id_
|
|
|
|
+ <include refid="global.limit"/>
|
|
|
|
+ </select>
|
|
|
|
+ <select id="countStudentLeaveCourseList" resultType="java.lang.Integer">
|
|
|
|
+ SELECT COUNT(sa.id_)
|
|
|
|
+ FROM student_attendance sa
|
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
|
|
|
|
+ LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
|
|
|
|
+ <include refid="queryStudentLeaveCourseListSql"/>
|
|
|
|
+ </select>
|
|
|
|
+ <sql id="queryStudentLeaveCourseListSql">
|
|
|
|
+ <where>
|
|
|
|
+ sa.user_id_ = #{userId} AND sa.status_ = 'LEAVE'
|
|
|
|
+ <if test="search != null and search != ''">
|
|
|
|
+ AND (cs.id_ = #{search} OR cs.actual_teacher_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
|
|
|
|
+ </if>
|
|
|
|
+ <if test="leaveVisitFlag != null">
|
|
|
|
+ AND sa.leave_visit_flag_ = #{leaveVisitFlag}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="courseType != null">
|
|
|
|
+ AND cs.type_ = #{courseType}
|
|
|
|
+ </if>
|
|
|
|
+ </where>
|
|
|
|
+ </sql>
|
|
|
|
+ <resultMap id="StudentLeaveCourseDto" type="com.ym.mec.biz.dal.dto.StudentLeaveCourseDto">
|
|
|
|
+ <result property="leaveVisitFlag" column="leave_visit_flag_"/>
|
|
|
|
+ <result property="classDate" column="class_date_"/>
|
|
|
|
+ <result property="startClassTime" column="start_class_time_"/>
|
|
|
|
+ <result property="endClassTime" column="end_class_time_"/>
|
|
|
|
+ <result property="teacherName" column="teacher_name_"/>
|
|
|
|
+ <result property="actualTeacherId" column="actual_teacher_id_"/>
|
|
|
|
+ <result property="courseScheduleId" column="course_schedule_id_"/>
|
|
|
|
+ <result property="groupType" column="group_type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
|
+ <result property="courseScheduleType" column="type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
|
+ <result property="courseName" column="name_"/>
|
|
|
|
+ <result property="groupId" column="music_group_id_"/>
|
|
|
|
+ </resultMap>
|
|
|
|
+ <select id="queryStudentLeaveCourseList" resultMap="StudentLeaveCourseDto">
|
|
|
|
+ SELECT sa.leave_visit_flag_,cs.class_date_,cs.start_class_time_,
|
|
|
|
+ cs.end_class_time_,su.real_name_ teacher_name_,cs.actual_teacher_id_,
|
|
|
|
+ sa.course_schedule_id_,cs.group_type_,cs.type_,cs.name_,cs.music_group_id_
|
|
|
|
+ FROM student_attendance sa
|
|
|
|
+ LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
|
|
|
|
+ LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
|
|
|
|
+ <include refid="queryStudentLeaveCourseListSql"/>
|
|
|
|
+ ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
|
|
|
|
+ <include refid="global.limit"/>
|
|
|
|
+ </select>
|
|
</mapper>
|
|
</mapper>
|