|  | @@ -21,6 +21,7 @@
 | 
	
		
			
				|  |  |          <result column="teacher_id_" property="teacherId"/>
 | 
	
		
			
				|  |  |          <result column="sign_in_time_" property="signInTime"/>
 | 
	
		
			
				|  |  |          <result column="sign_out_time_" property="signOutTime"/>
 | 
	
		
			
				|  |  | +        <result column="leave_time_" property="leaveTime"/>
 | 
	
		
			
				|  |  |          <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  |          <result column="visitFlag" property="visitFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 | 
	
		
			
				|  |  |          <result column="create_time_" property="createTime"/>
 | 
	
	
		
			
				|  | @@ -61,24 +62,24 @@
 | 
	
		
			
				|  |  |      <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentAttendance" useGeneratedKeys="true"
 | 
	
		
			
				|  |  |              keyColumn="id" keyProperty="id">
 | 
	
		
			
				|  |  |          INSERT INTO student_attendance
 | 
	
		
			
				|  |  | -        (group_type_,music_group_id_,class_group_id_,course_schedule_id_,user_id_,teacher_id_,status_,create_time_,
 | 
	
		
			
				|  |  | +        (group_type_,music_group_id_,class_group_id_,course_schedule_id_,user_id_,teacher_id_,status_,leave_time_,create_time_,
 | 
	
		
			
				|  |  |          update_time_,remark_,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_,visit_flag_,normal_remind_,tenant_id_,qualified_flag_)
 | 
	
		
			
				|  |  |          VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
 | 
	
		
			
				|  |  | -        #{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),
 | 
	
		
			
				|  |  | +        #{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{leaveTime},now(),now(),
 | 
	
		
			
				|  |  |          #{remark},#{currentClassTimes},#{signInTime},#{signOutTime},#{currentScheduleId},#{visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 | 
	
		
			
				|  |  |          #{normalRemind},#{tenantId},#{qualifiedFlag})
 | 
	
		
			
				|  |  |      </insert>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      <insert id="addStudentAttendances" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
 | 
	
		
			
				|  |  |        INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
 | 
	
		
			
				|  |  | -      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,
 | 
	
		
			
				|  |  | +      user_id_, teacher_id_, status_,leave_time_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,
 | 
	
		
			
				|  |  |                                        sign_out_time_,current_schedule_id_,visit_flag_,normal_remind_,tenant_id_)
 | 
	
		
			
				|  |  |        VALUES
 | 
	
		
			
				|  |  |  	  <foreach collection="list" item="studentAttendance" separator=",">
 | 
	
		
			
				|  |  |            (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 | 
	
		
			
				|  |  |            #{studentAttendance.musicGroupId},#{studentAttendance.classGroupId},#{studentAttendance.courseScheduleId},
 | 
	
		
			
				|  |  |            #{studentAttendance.userId},#{studentAttendance.teacherId},
 | 
	
		
			
				|  |  | -          #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
 | 
	
		
			
				|  |  | +          #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{leaveTime},now(),#{studentAttendance.updateTime},
 | 
	
		
			
				|  |  |            #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
 | 
	
		
			
				|  |  |            #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId},
 | 
	
		
			
				|  |  |             #{studentAttendance.visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 | 
	
	
		
			
				|  | @@ -102,6 +103,9 @@
 | 
	
		
			
				|  |  |              <if test="signOutTime != null">
 | 
	
		
			
				|  |  |                  sign_out_time_ = #{signOutTime},
 | 
	
		
			
				|  |  |              </if>
 | 
	
		
			
				|  |  | +            <if test="leaveTime != null">
 | 
	
		
			
				|  |  | +                leave_time_ = #{leaveTime},
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  |              <if test="signInTime != null">
 | 
	
		
			
				|  |  |                  sign_in_time_ = #{signInTime},
 | 
	
		
			
				|  |  |              </if>
 | 
	
	
		
			
				|  | @@ -766,4 +770,40 @@
 | 
	
		
			
				|  |  |              <if test="status.name == 'TRUANT'"> or sa.id_ is null </if>
 | 
	
		
			
				|  |  |          )
 | 
	
		
			
				|  |  |      </select>
 | 
	
		
			
				|  |  | +    <select id="queryStudentLeave"
 | 
	
		
			
				|  |  | +            resultType="com.ym.mec.biz.dal.dto.CourseHomeworkWrapper$StudentLeaveResult">
 | 
	
		
			
				|  |  | +        select cs.class_date_ classDate,cs.start_class_time_ startClassTime,cs.end_class_time_ endClassTime,sa.leave_time_ leaveTime,
 | 
	
		
			
				|  |  | +               cg.name_ classGroupName,cs.type_ courseScheduleType,sa.remark_ remark,su.username_ username from student_attendance sa
 | 
	
		
			
				|  |  | +        left join course_schedule cs ON cs.id_ = sa.course_schedule_id_
 | 
	
		
			
				|  |  | +        left join class_group cg ON cg.id_ = cs.class_group_id_
 | 
	
		
			
				|  |  | +        left join sys_user su ON su.id_ = sa.user_id_
 | 
	
		
			
				|  |  | +        <include refid="queryStudentLeaveCondition"/>
 | 
	
		
			
				|  |  | +        <include refid="global.limit"/>
 | 
	
		
			
				|  |  | +    </select>
 | 
	
		
			
				|  |  | +    <select id="countStudentLeave" 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_ = sa.user_id_
 | 
	
		
			
				|  |  | +        <include refid="queryStudentLeaveCondition"/>
 | 
	
		
			
				|  |  | +    </select>
 | 
	
		
			
				|  |  | +    <sql id="queryStudentLeaveCondition">
 | 
	
		
			
				|  |  | +        <where>
 | 
	
		
			
				|  |  | +            sa.status_ = 'LEAVE'
 | 
	
		
			
				|  |  | +            <if test="classGroupId != null">
 | 
	
		
			
				|  |  | +                AND sa.class_group_id_ = #{classGroupId}
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  | +            <if test="courseScheduleId != null">
 | 
	
		
			
				|  |  | +                AND sa.course_schedule_id_ = #{courseScheduleId}
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  | +            <if test="startTime != null and startTime != ''">
 | 
	
		
			
				|  |  | +                AND cs.class_date_ BETWEEN #{startTime} AND #{endTime}
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  | +            <if test="musicGroupIds != null and musicGroupIds != ''">
 | 
	
		
			
				|  |  | +                AND FIND_IN_SET(cs.music_group_id_,#{musicGroupIds})
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  | +            <if test="search != null and search != ''">
 | 
	
		
			
				|  |  | +                AND (sa.user_id_ = #{search} OR su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 | 
	
		
			
				|  |  | +            </if>
 | 
	
		
			
				|  |  | +        </where>
 | 
	
		
			
				|  |  | +    </sql>
 | 
	
		
			
				|  |  |  </mapper>
 |