Browse Source

学生服务指标导出

liweifan 3 years ago
parent
commit
76bb008aa7

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -159,7 +159,7 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
      * @param params
      * @return
      */
-    List<StudentServeDto> queryStudentServeInfo(Map<String, Object> params);
+    List<StudentServeDto> queryStudentServeInfo(@Param("params") Map<String, Object> params);
 
     List<StudentExtracurricularExercisesSituation> findTeacherServeWithDate(@Param("monday") String monday,
                                                                             @Param("sunday") String sunday,

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java

@@ -15,7 +15,7 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	MUSIC_GROUP_COURSE_LIST(9, "乐团课表详情导出"),
 	MUSIC_GROUP_DATA_EXPORT(10, "乐团数据导出"),
 	EXPORT_STUDENT_SUBCOURSE(11, "活动资格导出"),
-	EXPORT_STUDENT_SERVE_INFO(12, "乐团学生指标导出");
+	EXPORT_STUDENT_SERVE_INFO(12, "乐团学生服务指标导出");
 	;
 
 	private Integer code;

+ 7 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1462,15 +1462,19 @@ public class ExportServiceImpl implements ExportService {
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_STUDENT_SERVE_INFO,sysUser.getId());
         Integer tenantId = TenantContextHolder.getTenantId();
         info.put("tenantId",tenantId);
-        return this.asyncExport(() -> this.queryStudentServeInfo(info,managerDownload,headColumns,ExportEnum.EXPORT_STUDENT_SERVE_INFO),
+         return this.asyncExport(() -> this.queryStudentServeInfo(info,managerDownload,headColumns,ExportEnum.EXPORT_STUDENT_SERVE_INFO),
                 managerDownload.getName());
     }
     @Autowired
     private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
 
     private void queryStudentServeInfo(Map<String, Object> info, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) {
-        List<StudentServeDto> rows = studentExtracurricularExercisesSituationDao.queryStudentServeInfo(info);
-        exportManagerDownload(getHSSFWorkbook(rows,headColumns,exportEnum),managerDownload);
+        try{
+            List<StudentServeDto> rows = studentExtracurricularExercisesSituationDao.queryStudentServeInfo(info);
+            exportManagerDownload(getHSSFWorkbook(rows,headColumns,exportEnum),managerDownload);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
 

+ 979 - 888
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -6,900 +6,991 @@
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.StudentExtracurricularExercisesSituationDao">
 
-	<resultMap type="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation" id="StudentExtracurricularExercisesSituation">
-		<result column="id_" property="id" />
-		<result column="student_id_" property="studentId" />
-		<result column="week_of_year_" property="weekOfYear" />
-		<result column="monday_" property="monday" />
-		<result column="sunday_" property="sunday" />
-		<result column="teacher_id_" property="teacherId" />
-		<result column="expect_exercises_num_" property="expectExercisesNum" />
-		<result column="actual_exercises_num_" property="actualExercisesNum" />
-		<result column="exercises_reply_num_" property="exercisesReplyNum" />
-		<result column="exercises_message_num_" property="exercisesMessageNum" />
-		<result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-		<result column="last_submit_time_" property="lastSubmitTime"/>
-		<result column="serve_type_" property="serveType"/>
-		<result column="course_ids_" property="courseIds"/>
-		<result column="not_over_course_ids_" property="notOverCourseIds"/>
-		<result column="not_over_course_num_" property="notOverCourseNum"/>
+    <resultMap type="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
+               id="StudentExtracurricularExercisesSituation">
+        <result column="id_" property="id"/>
+        <result column="student_id_" property="studentId"/>
+        <result column="week_of_year_" property="weekOfYear"/>
+        <result column="monday_" property="monday"/>
+        <result column="sunday_" property="sunday"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="expect_exercises_num_" property="expectExercisesNum"/>
+        <result column="actual_exercises_num_" property="actualExercisesNum"/>
+        <result column="exercises_reply_num_" property="exercisesReplyNum"/>
+        <result column="exercises_message_num_" property="exercisesMessageNum"/>
+        <result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="last_submit_time_" property="lastSubmitTime"/>
+        <result column="serve_type_" property="serveType"/>
+        <result column="course_ids_" property="courseIds"/>
+        <result column="not_over_course_ids_" property="notOverCourseIds"/>
+        <result column="not_over_course_num_" property="notOverCourseNum"/>
         <result column="tenant_id_" property="tenantId"/>
-	</resultMap>
-
-	<resultMap id="StudentExercisesSituationDto" type="com.ym.mec.biz.dal.dto.StudentExercisesSituationDto" extends="StudentExtracurricularExercisesSituation">
-		<result column="student_name_" property="studentName"/>
-		<result column="teacher_name_" property="teacherName"/>
-		<result column="organ_name_" property="organName"/>
-		<result column="exist_vip_course_" property="existVipCourse"/>
-	</resultMap>
-
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="StudentExtracurricularExercisesSituation" >
-		SELECT * FROM student_extracurricular_exercises_situation_ WHERE id_ = #{id} 
-	</select>
-
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_ where tenant_id_ = #{tenantId} ORDER BY id_
-	</select>
-
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" >
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-		</selectKey>
-		-->
-		INSERT INTO student_extracurricular_exercises_situation_ (id_,student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
-		                                                          actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
-		                                                          exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
-		                                                          serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
-		VALUES(#{id},#{studentId},#{weekOfYear},#{monday},#{sunday},#{teacherId},#{expectExercisesNum},#{actualExercisesNum},#{exercisesReplyNum},
-		       #{exercisesMessageNum},#{exercisesMessageTimelyNum},NOW(),NOW(),#{lastSubmitTime},#{serveType},#{courseIds},#{notOverCourseIds},#{notOverCourseNum},#{tenantId})
-	</insert>
-
-	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO student_extracurricular_exercises_situation_ (student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
-		                                                          actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
-		                                                          exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
-		                                                          serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
-		VALUES
-		<foreach collection="situations" item="situation" separator=",">
-			(#{situation.studentId},#{situation.weekOfYear},#{situation.monday},#{situation.sunday},#{situation.teacherId},#{situation.expectExercisesNum},
-			#{situation.actualExercisesNum},#{situation.exercisesReplyNum},#{situation.exercisesMessageNum},#{situation.exercisesMessageTimelyNum},
-			NOW(),NOW(),#{situation.lastSubmitTime},#{situation.serveType},#{situation.courseIds},#{situation.notOverCourseIds},#{situation.notOverCourseNum},#{situation.tenantId})
-		</foreach>
-	</insert>
-
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
-		UPDATE student_extracurricular_exercises_situation_
-		<set>
-			<if test="exercisesReplyNum != null">
-				exercises_reply_num_ = #{exercisesReplyNum},
-			</if>
-			<if test="monday != null">
-				monday_ = #{monday},
-			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
-			<if test="weekOfYear != null">
-				week_of_year_ = #{weekOfYear},
-			</if>
-			<if test="exercisesMessageNum != null">
-				exercises_message_num_ = #{exercisesMessageNum},
-			</if>
-			<if test="createTime != null">
-				create_time_ = #{createTime},
-			</if>
-			<if test="teacherId != null">
-				teacher_id_ = #{teacherId},
-			</if>
-			<if test="actualExercisesNum != null">
-				actual_exercises_num_ = #{actualExercisesNum},
-			</if>
-			<if test="exercisesMessageTimelyNum != null">
-				exercises_message_timely_num_ = #{exercisesMessageTimelyNum},
-			</if>
-			<if test="studentId != null">
-				student_id_ = #{studentId},
-			</if>
-			<if test="expectExercisesNum != null">
-				expect_exercises_num_ = #{expectExercisesNum},
-			</if>
-			<if test="sunday != null">
-				sunday_ = #{sunday},
-			</if>
-			<if test="lastSubmitTime!=null">
-				last_submit_time_=#{lastSubmitTime},
-			</if>
-			<if test="serveType!=null">
-				serve_type_=#{serveType},
-			</if>
-			<if test="courseIds!=null and courseIds!=''">
-				course_ids_=#{courseIds},
-			</if>
-			<if test="notOverCourseIds!=null and notOverCourseIds!=''">
-				not_over_course_ids_=#{notOverCourseIds},
-			</if>
-			<if test="notOverCourseNum!=null">
-				not_over_course_num_=#{notOverCourseNum},
-			</if>
-			update_time_ = #{updateTime}
-		</set> WHERE id_ = #{id} and tenant_id_ = #{tenantId}
-	</update>
-
-	<update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
-		<foreach collection="situations" item="situation" separator=";">
-			UPDATE student_extracurricular_exercises_situation_
-			<set>
-				<if test="situation.exercisesReplyNum != null">
-					exercises_reply_num_ = #{situation.exercisesReplyNum},
-				</if>
-				<if test="situation.monday != null">
-					monday_ = #{situation.monday},
-				</if>
-				<if test="situation.weekOfYear != null">
-					week_of_year_ = #{situation.weekOfYear},
-				</if>
-				<if test="situation.exercisesMessageNum != null">
-					exercises_message_num_ = #{situation.exercisesMessageNum},
-				</if>
-				<if test="situation.teacherId != null">
-					teacher_id_ = #{situation.teacherId},
-				</if>
-				<if test="situation.actualExercisesNum != null">
-					actual_exercises_num_ = #{situation.actualExercisesNum},
-				</if>
-				<if test="situation.exercisesMessageTimelyNum != null">
-					exercises_message_timely_num_ = #{situation.exercisesMessageTimelyNum},
-				</if>
-				<if test="situation.studentId != null">
-					student_id_ = #{situation.studentId},
-				</if>
-				<if test="situation.expectExercisesNum != null">
-					expect_exercises_num_ = #{situation.expectExercisesNum},
-				</if>
-				<if test="situation.sunday != null">
-					sunday_ = #{situation.sunday},
-				</if>
-				<if test="situation.lastSubmitTime!=null">
-					last_submit_time_=#{situation.lastSubmitTime},
-				</if>
-				<if test="situation.serveType!=null">
-					serve_type_=#{situation.serveType},
-				</if>
-				<if test="situation.courseIds!=null">
-					course_ids_=#{situation.courseIds},
-				</if>
-				<if test="situation.notOverCourseIds!=null and situation.notOverCourseIds!=''">
-					not_over_course_ids_=#{situation.notOverCourseIds},
-				</if>
-				<if test="situation.notOverCourseNum!=null">
-					not_over_course_num_=#{situation.notOverCourseNum},
-				</if>
-				update_time_ = NOW()
-			</set> WHERE id_ = #{situation.id} and tenant_id_ = #{situation.tenantId}
-		</foreach>
-	</update>
-
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM student_extracurricular_exercises_situation_ WHERE id_ = #{id} 
-	</delete>
-	<delete id="deleteByMonday">
-		DELETE FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
-		<if test="studentIds!=null and studentIds.size()>0">
-			AND student_id_ IN
-			<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-				#{studentId}
-			</foreach>
-		</if>
-	</delete>
-	<select id="selectByMonday" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
-		<if test="studentIds!=null and studentIds.size()>0">
-			AND student_id_ IN
-			<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-				#{studentId}
-			</foreach>
-		</if>
-	</select>
-	<delete id="deleteByStudent">
-		DELETE FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
-		<if test="monday!=null and monday!=''">
-			AND monday_=#{monday}
-		</if>
-	</delete>
-	<delete id="batchDelete">
-		DELETE FROM student_extracurricular_exercises_situation_ WHERE id_ IN
-		<foreach collection="situationIds" item="id" open="(" close=")" separator=",">
-			#{id}
-		</foreach>
-	</delete>
-
-	<select id="selectByStudent" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
-		<if test="monday!=null and monday!=''">
-			AND monday_=#{monday}
-		</if>
-	</select>
-
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="StudentExtracurricularExercisesSituation" parameterType="map">
-		SELECT * FROM student_extracurricular_exercises_situation_ where tenant_id_ = #{tenantId} ORDER BY id_ <include refid="global.limit"/>
-	</select>
-
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM student_extracurricular_exercises_situation_ where tenant_id_ = #{tenantId}
-	</select>
-
-	<select id="findExercisesSituations" resultMap="StudentExercisesSituationDto">
-		SELECT
-		sees.id_ id_,
-		student_id_,
-		stu.username_ student_name_,
-		tea.real_name_ teacher_name_,
-		o.name_ organ_name_,
-		sees.monday_,
-		sees.sunday_,
-		sees.serve_type_,
-		sees.course_ids_,
-		expect_exercises_num_ expect_exercises_num_,
-		actual_exercises_num_ actual_exercises_num_,
-		<if test="submitStartDate==null or submitEndDate==null">
-			exercises_reply_num_ exercises_reply_num_,
-			exercises_message_num_ exercises_message_num_,
-			exercises_message_timely_num_ exercises_message_timely_num_,
-			last_submit_time_ last_submit_time_
-		</if>
-		<if test="submitStartDate!=null and submitEndDate!=null">
-			IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_reply_num_,0) exercises_reply_num_,
-			IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) exercises_message_num_,
-			IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_timely_num_,0) exercises_message_timely_num_,
-			IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},last_submit_time_, NULL) last_submit_time_
-		</if>
-		FROM
-			student_extracurricular_exercises_situation_ sees
-			LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
-			LEFT JOIN teacher t ON t.id_=sees.teacher_id_
-			LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
-			LEFT JOIN organization o ON stu.organ_id_=o.id_
-		WHERE
-		sees.monday_ &gt;= #{monday}
-		AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
-		<if test="teacherId!=null">
-			AND sees.teacher_id_ = #{teacherId}
-		</if>
-		<if test="search!=null">
-			AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
-		</if>
-		<if test="organId != null and organId != ''">
-			AND FIND_IN_SET(t.organ_id_,#{organId})
-		</if>
-		<if test="existVipCourse!=null and existVipCourse==1">
-			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existVipCourse!=null and existVipCourse==0">
-			AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existPracticeCourse!=null and existPracticeCourse==1">
-			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existPracticeCourse!=null and existPracticeCourse==0">
-			AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-
-		<if test="expectExercisesNum!=null">
-			AND expect_exercises_num_ = #{expectExercisesNum}
-		</if>
-		<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
-			AND actual_exercises_num_ &lt; expect_exercises_num_
-		</if>
-		<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
-			AND actual_exercises_num_ &gt;= expect_exercises_num_
-		</if>
-		<if test="submitStartDate==null or submitEndDate==null">
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND exercises_reply_num_ &lt; actual_exercises_num_
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-				AND exercises_reply_num_ &gt;= actual_exercises_num_
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-				AND exercises_message_num_ &lt; exercises_reply_num_
-			</if>
-			<if test="serviceIsError!=null and serviceIsError">
-				AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt; exercises_reply_num_)
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-				AND exercises_message_num_ &gt;= exercises_reply_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-				AND exercises_message_timely_num_ &lt; exercises_message_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-				AND exercises_message_timely_num_ &gt;= exercises_message_num_
-			</if>
-		</if>
-		<if test="submitStartDate!=null and submitEndDate!=null">
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
-			</if>
-			<if test="serviceIsError!=null and serviceIsError">
-				AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
-			</if>
-		</if>
-		ORDER BY student_id_
-		<include refid="global.limit"/>
-	</select>
-
-	<select id="countExercisesSituations" resultType="int">
-		SELECT COUNT(1) FROM (
-		SELECT
-		1
-		FROM
-		student_extracurricular_exercises_situation_ sees
-		LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
-		LEFT JOIN teacher t ON t.id_=sees.teacher_id_
-		LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
-		LEFT JOIN organization o ON stu.organ_id_=o.id_
-		WHERE
-		sees.monday_ &gt;= #{monday}
-		AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
-		<if test="teacherId!=null">
-			AND sees.teacher_id_ = #{teacherId}
-		</if>
-		<if test="search!=null">
-			AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
-		</if>
-		<if test="organId != null and organId != ''">
-			AND FIND_IN_SET(t.organ_id_, #{organId})
-		</if>
-		<if test="existVipCourse!=null and existVipCourse==1">
-			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existVipCourse!=null and existVipCourse==0">
-			AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existPracticeCourse!=null and existPracticeCourse==1">
-			AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-		<if test="existPracticeCourse!=null and existPracticeCourse==0">
-			AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN #{monday} AND #{sunday})
-		</if>
-
-		<if test="expectExercisesNum!=null">
-			AND expect_exercises_num_ = #{expectExercisesNum}
-		</if>
-		<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
-			AND actual_exercises_num_ &lt; expect_exercises_num_
-		</if>
-		<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
-			AND actual_exercises_num_ &gt;= expect_exercises_num_
-		</if>
-		<if test="submitStartDate==null or submitEndDate==null">
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND exercises_reply_num_ &lt; actual_exercises_num_
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-				AND exercises_reply_num_ &gt;= actual_exercises_num_
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-				AND exercises_message_num_ &lt; exercises_reply_num_
-			</if>
-			<if test="serviceIsError!=null and serviceIsError">
-				AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt; exercises_reply_num_)
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-				AND exercises_message_num_ &gt;= exercises_reply_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-				AND exercises_message_timely_num_ &lt; exercises_message_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-				AND exercises_message_timely_num_ &gt;= exercises_message_num_
-			</if>
-		</if>
-		<if test="submitStartDate!=null and submitEndDate!=null">
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
-			</if>
-			<if test="serviceIsError!=null and serviceIsError">
-				AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-				AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
-			</if>
-		</if>
-		) tmp
-	</select>
-
-	<select id="findExercisesSituationsById" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_ WHERE id_ IN
-		<foreach collection="ids" item="id" separator="," open="(" close=")">
-			#{id}
-		</foreach>
-	</select>
-
-	<select id="findTeacherExercisesServiceSituations" resultType="com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto">
-		SELECT
-		teacher_id_ teacherId,
-		COUNT( exercises_reply_num_ ) expectExercisesNum,
-		COUNT( CASE WHEN actual_exercises_num_ = 1 THEN 1 ELSE NULL END ) actualExercisesNum
-		FROM
-		student_extracurricular_exercises_situation_
-		FORCE INDEX(monday_)
-		WHERE monday_ = #{monday}
-		AND teacher_id_ IN
-		<foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
-			#{teacherId}
-		</foreach>
-		GROUP BY
-		teacher_id_;
-	</select>
-
-	<select id="findLastWeekTodayUpdateNum" resultType="int">
-		SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE sunday_=#{sunday} AND DATE_FORMAT(update_time_,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d') 
+    </resultMap>
+
+    <resultMap id="StudentExercisesSituationDto" type="com.ym.mec.biz.dal.dto.StudentExercisesSituationDto"
+               extends="StudentExtracurricularExercisesSituation">
+        <result column="student_name_" property="studentName"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="organ_name_" property="organName"/>
+        <result column="exist_vip_course_" property="existVipCourse"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT *
+        FROM student_extracurricular_exercises_situation_
+        WHERE id_ = #{id}
+    </select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT *
+        FROM student_extracurricular_exercises_situation_
+        where tenant_id_ = #{tenantId}
+        ORDER BY id_
+    </select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO student_extracurricular_exercises_situation_
+        (id_,student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
+        actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
+        exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
+        serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
+        VALUES(#{id},#{studentId},#{weekOfYear},#{monday},#{sunday},#{teacherId},#{expectExercisesNum},#{actualExercisesNum},#{exercisesReplyNum},
+        #{exercisesMessageNum},#{exercisesMessageTimelyNum},NOW(),NOW(),#{lastSubmitTime},#{serveType},#{courseIds},#{notOverCourseIds},#{notOverCourseNum},#{tenantId})
+    </insert>
+
+    <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        INSERT INTO student_extracurricular_exercises_situation_
+        (student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
+        actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
+        exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
+        serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
+        VALUES
+        <foreach collection="situations" item="situation" separator=",">
+            (#{situation.studentId},#{situation.weekOfYear},#{situation.monday},#{situation.sunday},#{situation.teacherId},#{situation.expectExercisesNum},
+            #{situation.actualExercisesNum},#{situation.exercisesReplyNum},#{situation.exercisesMessageNum},#{situation.exercisesMessageTimelyNum},
+            NOW(),NOW(),#{situation.lastSubmitTime},#{situation.serveType},#{situation.courseIds},#{situation.notOverCourseIds},#{situation.notOverCourseNum},#{situation.tenantId})
+        </foreach>
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
+        UPDATE student_extracurricular_exercises_situation_
+        <set>
+            <if test="exercisesReplyNum != null">
+                exercises_reply_num_ = #{exercisesReplyNum},
+            </if>
+            <if test="monday != null">
+                monday_ = #{monday},
+            </if>
+            <if test="id != null">
+                id_ = #{id},
+            </if>
+            <if test="weekOfYear != null">
+                week_of_year_ = #{weekOfYear},
+            </if>
+            <if test="exercisesMessageNum != null">
+                exercises_message_num_ = #{exercisesMessageNum},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="teacherId != null">
+                teacher_id_ = #{teacherId},
+            </if>
+            <if test="actualExercisesNum != null">
+                actual_exercises_num_ = #{actualExercisesNum},
+            </if>
+            <if test="exercisesMessageTimelyNum != null">
+                exercises_message_timely_num_ = #{exercisesMessageTimelyNum},
+            </if>
+            <if test="studentId != null">
+                student_id_ = #{studentId},
+            </if>
+            <if test="expectExercisesNum != null">
+                expect_exercises_num_ = #{expectExercisesNum},
+            </if>
+            <if test="sunday != null">
+                sunday_ = #{sunday},
+            </if>
+            <if test="lastSubmitTime!=null">
+                last_submit_time_=#{lastSubmitTime},
+            </if>
+            <if test="serveType!=null">
+                serve_type_=#{serveType},
+            </if>
+            <if test="courseIds!=null and courseIds!=''">
+                course_ids_=#{courseIds},
+            </if>
+            <if test="notOverCourseIds!=null and notOverCourseIds!=''">
+                not_over_course_ids_=#{notOverCourseIds},
+            </if>
+            <if test="notOverCourseNum!=null">
+                not_over_course_num_=#{notOverCourseNum},
+            </if>
+            update_time_ = #{updateTime}
+        </set>
+        WHERE id_ = #{id} and tenant_id_ = #{tenantId}
+    </update>
+
+    <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
+        <foreach collection="situations" item="situation" separator=";">
+            UPDATE student_extracurricular_exercises_situation_
+            <set>
+                <if test="situation.exercisesReplyNum != null">
+                    exercises_reply_num_ = #{situation.exercisesReplyNum},
+                </if>
+                <if test="situation.monday != null">
+                    monday_ = #{situation.monday},
+                </if>
+                <if test="situation.weekOfYear != null">
+                    week_of_year_ = #{situation.weekOfYear},
+                </if>
+                <if test="situation.exercisesMessageNum != null">
+                    exercises_message_num_ = #{situation.exercisesMessageNum},
+                </if>
+                <if test="situation.teacherId != null">
+                    teacher_id_ = #{situation.teacherId},
+                </if>
+                <if test="situation.actualExercisesNum != null">
+                    actual_exercises_num_ = #{situation.actualExercisesNum},
+                </if>
+                <if test="situation.exercisesMessageTimelyNum != null">
+                    exercises_message_timely_num_ = #{situation.exercisesMessageTimelyNum},
+                </if>
+                <if test="situation.studentId != null">
+                    student_id_ = #{situation.studentId},
+                </if>
+                <if test="situation.expectExercisesNum != null">
+                    expect_exercises_num_ = #{situation.expectExercisesNum},
+                </if>
+                <if test="situation.sunday != null">
+                    sunday_ = #{situation.sunday},
+                </if>
+                <if test="situation.lastSubmitTime!=null">
+                    last_submit_time_=#{situation.lastSubmitTime},
+                </if>
+                <if test="situation.serveType!=null">
+                    serve_type_=#{situation.serveType},
+                </if>
+                <if test="situation.courseIds!=null">
+                    course_ids_=#{situation.courseIds},
+                </if>
+                <if test="situation.notOverCourseIds!=null and situation.notOverCourseIds!=''">
+                    not_over_course_ids_=#{situation.notOverCourseIds},
+                </if>
+                <if test="situation.notOverCourseNum!=null">
+                    not_over_course_num_=#{situation.notOverCourseNum},
+                </if>
+                update_time_ = NOW()
+            </set>
+            WHERE id_ = #{situation.id} and tenant_id_ = #{situation.tenantId}
+        </foreach>
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM student_extracurricular_exercises_situation_
+        WHERE id_ = #{id}
+    </delete>
+    <delete id="deleteByMonday">
+        DELETE FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
+        <if test="studentIds!=null and studentIds.size()>0">
+            AND student_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+        </if>
+    </delete>
+    <select id="selectByMonday" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
+        <if test="studentIds!=null and studentIds.size()>0">
+            AND student_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+        </if>
+    </select>
+    <delete id="deleteByStudent">
+        DELETE FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
+        <if test="monday!=null and monday!=''">
+            AND monday_=#{monday}
+        </if>
+    </delete>
+    <delete id="batchDelete">
+        DELETE FROM student_extracurricular_exercises_situation_ WHERE id_ IN
+        <foreach collection="situationIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectByStudent" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
+        <if test="monday!=null and monday!=''">
+            AND monday_=#{monday}
+        </if>
+    </select>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="StudentExtracurricularExercisesSituation" parameterType="map">
+        SELECT * FROM student_extracurricular_exercises_situation_ where tenant_id_ = #{tenantId} ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM student_extracurricular_exercises_situation_
+        where tenant_id_ = #{tenantId}
+    </select>
+
+    <select id="findExercisesSituations" resultMap="StudentExercisesSituationDto">
+        SELECT
+        sees.id_ id_,
+        student_id_,
+        stu.username_ student_name_,
+        tea.real_name_ teacher_name_,
+        o.name_ organ_name_,
+        sees.monday_,
+        sees.sunday_,
+        sees.serve_type_,
+        sees.course_ids_,
+        expect_exercises_num_ expect_exercises_num_,
+        actual_exercises_num_ actual_exercises_num_,
+        <if test="submitStartDate==null or submitEndDate==null">
+            exercises_reply_num_ exercises_reply_num_,
+            exercises_message_num_ exercises_message_num_,
+            exercises_message_timely_num_ exercises_message_timely_num_,
+            last_submit_time_ last_submit_time_
+        </if>
+        <if test="submitStartDate!=null and submitEndDate!=null">
+            IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+            #{submitEndDate},exercises_reply_num_,0) exercises_reply_num_,
+            IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+            #{submitEndDate},exercises_message_num_,0) exercises_message_num_,
+            IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+            #{submitEndDate},exercises_message_timely_num_,0) exercises_message_timely_num_,
+            IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+            #{submitEndDate},last_submit_time_, NULL) last_submit_time_
+        </if>
+        FROM
+        student_extracurricular_exercises_situation_ sees
+        LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
+        LEFT JOIN teacher t ON t.id_=sees.teacher_id_
+        LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
+        LEFT JOIN organization o ON stu.organ_id_=o.id_
+        WHERE
+        sees.monday_ &gt;= #{monday}
+        AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
+        <if test="teacherId!=null">
+            AND sees.teacher_id_ = #{teacherId}
+        </if>
+        <if test="search!=null">
+            AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
+        </if>
+        <if test="organId != null and organId != ''">
+            AND FIND_IN_SET(t.organ_id_,#{organId})
+        </if>
+        <if test="existVipCourse!=null and existVipCourse==1">
+            AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
+            class_date_ BETWEEN #{monday} AND #{sunday})
+        </if>
+        <if test="existVipCourse!=null and existVipCourse==0">
+            AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
+            class_date_ BETWEEN #{monday} AND #{sunday})
+        </if>
+        <if test="existPracticeCourse!=null and existPracticeCourse==1">
+            AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
+            cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
+            #{monday} AND #{sunday})
+        </if>
+        <if test="existPracticeCourse!=null and existPracticeCourse==0">
+            AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
+            cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
+            #{monday} AND #{sunday})
+        </if>
+
+        <if test="expectExercisesNum!=null">
+            AND expect_exercises_num_ = #{expectExercisesNum}
+        </if>
+        <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
+            AND actual_exercises_num_ &lt; expect_exercises_num_
+        </if>
+        <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
+            AND actual_exercises_num_ &gt;= expect_exercises_num_
+        </if>
+        <if test="submitStartDate==null or submitEndDate==null">
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND exercises_reply_num_ &lt; actual_exercises_num_
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND exercises_reply_num_ &gt;= actual_exercises_num_
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND exercises_message_num_ &lt; exercises_reply_num_
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt;
+                exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND exercises_message_num_ &gt;= exercises_reply_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND exercises_message_timely_num_ &lt; exercises_message_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND exercises_message_timely_num_ &gt;= exercises_message_num_
+            </if>
+        </if>
+        <if test="submitStartDate!=null and submitEndDate!=null">
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d')
+                BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
+            </if>
+        </if>
+        ORDER BY student_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countExercisesSituations" resultType="int">
+        SELECT COUNT(1) FROM (
+        SELECT
+        1
+        FROM
+        student_extracurricular_exercises_situation_ sees
+        LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
+        LEFT JOIN teacher t ON t.id_=sees.teacher_id_
+        LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
+        LEFT JOIN organization o ON stu.organ_id_=o.id_
+        WHERE
+        sees.monday_ &gt;= #{monday}
+        AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
+        <if test="teacherId!=null">
+            AND sees.teacher_id_ = #{teacherId}
+        </if>
+        <if test="search!=null">
+            AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
+        </if>
+        <if test="organId != null and organId != ''">
+            AND FIND_IN_SET(t.organ_id_, #{organId})
+        </if>
+        <if test="existVipCourse!=null and existVipCourse==1">
+            AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
+            class_date_ BETWEEN #{monday} AND #{sunday})
+        </if>
+        <if test="existVipCourse!=null and existVipCourse==0">
+            AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
+            class_date_ BETWEEN #{monday} AND #{sunday})
+        </if>
+        <if test="existPracticeCourse!=null and existPracticeCourse==1">
+            AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
+            cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
+            #{monday} AND #{sunday})
+        </if>
+        <if test="existPracticeCourse!=null and existPracticeCourse==0">
+            AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
+            cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
+            cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
+            #{monday} AND #{sunday})
+        </if>
+
+        <if test="expectExercisesNum!=null">
+            AND expect_exercises_num_ = #{expectExercisesNum}
+        </if>
+        <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
+            AND actual_exercises_num_ &lt; expect_exercises_num_
+        </if>
+        <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
+            AND actual_exercises_num_ &gt;= expect_exercises_num_
+        </if>
+        <if test="submitStartDate==null or submitEndDate==null">
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND exercises_reply_num_ &lt; actual_exercises_num_
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND exercises_reply_num_ &gt;= actual_exercises_num_
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND exercises_message_num_ &lt; exercises_reply_num_
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt;
+                exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND exercises_message_num_ &gt;= exercises_reply_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND exercises_message_timely_num_ &lt; exercises_message_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND exercises_message_timely_num_ &gt;= exercises_message_num_
+            </if>
+        </if>
+        <if test="submitStartDate!=null and submitEndDate!=null">
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d')
+                BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
+                #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
+            </if>
+        </if>
+        ) tmp
+    </select>
+
+    <select id="findExercisesSituationsById" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT * FROM student_extracurricular_exercises_situation_ WHERE id_ IN
+        <foreach collection="ids" item="id" separator="," open="(" close=")">
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="findTeacherExercisesServiceSituations" resultType="com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto">
+        SELECT
+        teacher_id_ teacherId,
+        COUNT( exercises_reply_num_ ) expectExercisesNum,
+        COUNT( CASE WHEN actual_exercises_num_ = 1 THEN 1 ELSE NULL END ) actualExercisesNum
+        FROM
+        student_extracurricular_exercises_situation_
+        FORCE INDEX(monday_)
+        WHERE monday_ = #{monday}
+        AND teacher_id_ IN
+        <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+            #{teacherId}
+        </foreach>
+        GROUP BY
+        teacher_id_;
+    </select>
+
+    <select id="findLastWeekTodayUpdateNum" resultType="int">
+        SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE sunday_=#{sunday} AND
+        DATE_FORMAT(update_time_,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')
         <if test="tenantId != null">
-        and tenant_id_ = #{tenantId}
+            and tenant_id_ = #{tenantId}
         </if>
     </select>
 
-	<select id="findStudentExercisesSituationsWithMonDay" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} AND student_id_=#{studentId}
-	</select>
-
-	<select id="getNoFinishedServiceTeacher" resultType="java.util.Map">
-		SELECT
-			teacher_id_ AS 'key',
-			COUNT( student_id_ ) AS 'value'
-		FROM
-			student_extracurricular_exercises_situation_
-		WHERE
-			actual_exercises_num_ = 0
-			AND serve_type_ = 'EXERCISE'
-			AND monday_ = #{monday}
-			AND teacher_id_ IS NOT NULL
-		GROUP BY
-			teacher_id_
-	</select>
-
-	<select id="countWeekServiceNum" resultType="int">
-		SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} 
+    <select id="findStudentExercisesSituationsWithMonDay" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT *
+        FROM student_extracurricular_exercises_situation_
+        WHERE monday_ = #{monday}
+          AND student_id_ = #{studentId}
+    </select>
+
+    <select id="getNoFinishedServiceTeacher" resultType="java.util.Map">
+        SELECT teacher_id_ AS 'key', COUNT( student_id_ ) AS 'value'
+        FROM student_extracurricular_exercises_situation_
+        WHERE actual_exercises_num_ = 0
+          AND serve_type_ = 'EXERCISE'
+          AND monday_ = #{monday}
+          AND teacher_id_ IS NOT NULL
+        GROUP BY teacher_id_
+    </select>
+
+    <select id="countWeekServiceNum" resultType="int">
+        SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday}
         <if test="tenantId != null">
-        and tenant_id_ = #{tenantId}
-        </if>
-	</select>
-
-	<select id="findWeekServiceWithStudents" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_
-		<where>
-			teacher_id_=#{teacherId}
-			<if test="monday != null and monday != ''">
-				AND monday_ = #{monday}
-			</if>
-			<if test="studentIds!=null and studentIds.size()>0">
-				AND student_id_ IN
-				<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-					#{studentId}
-				</foreach>
-			</if>
-		</where>
-	</select>
+            and tenant_id_ = #{tenantId}
+        </if>
+    </select>
+
+    <select id="findWeekServiceWithStudents" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT * FROM student_extracurricular_exercises_situation_
+        <where>
+            teacher_id_=#{teacherId}
+            <if test="monday != null and monday != ''">
+                AND monday_ = #{monday}
+            </if>
+            <if test="studentIds!=null and studentIds.size()>0">
+                AND student_id_ IN
+                <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                    #{studentId}
+                </foreach>
+            </if>
+        </where>
+    </select>
     <select id="findTeacherNoStartServices" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_ WHERE teacher_id_=#{teacherId} AND actual_exercises_num_&lt;=0 AND serve_type_='HOMEWORK';
-	</select>
-
-
-	<select id="getTeacherHomeworkCourseIdsWithMonday" resultType="string">
-		SELECT course_ids_ FROM student_extracurricular_exercises_situation_
-		WHERE teacher_id_=#{teacherId}
-		  	AND serve_type_='HOMEWORK'
-			<if test="monday!=null and monday!=''">
-				AND monday_=#{monday}
-			</if>
-	</select>
-
-	<select id="findServiceWithCourse"
-			resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} AND FIND_IN_SET(#{courseId}, course_ids_)
-	</select>
-
-	<resultMap id="TeacherServeDto" type="com.ym.mec.biz.dal.dto.TeacherServeDto">
-		<result column="organ_name_" property="organName"/>
-		<result column="monday_" property="monday"/>
-		<result column="sunday_" property="sunday"/>
-		<result column="teacher_id_" property="teacherId"/>
-		<result column="teacher_name_" property="teacherName"/>
-		<result column="homework_num_" property="homeworkNum"/>
-		<result column="exercise_num_" property="exerciseNum"/>
-		<result column="un_done_" property="unDone"/>
-		<result column="remind_time_" property="remindDate"/>
-		<result column="operator_name_" property="operatorName"/>
-		<result column="job_nature_" property="jobNature" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="expect_exercises_num_" property="expectExercisesNum" />
-		<result column="actual_exercises_num_" property="actualExercisesNum" />
-		<result column="exercises_reply_num_" property="exercisesReplyNum" />
-		<result column="exercises_message_num_" property="exercisesMessageNum" />
-		<result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum" />
-	</resultMap>
-
-
-
-	<sql id="queryTeacherServeInfoCondition">
-		<where>
-			sees.tenant_id_ = #{tenantId} 
-			<if test="organIds != null and organIds.size()>0">
-				AND tea.organ_id_ IN
-				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
-					#{organId}
-				</foreach>
-			</if>
-			<if test="monday!=null and monday!='' and sunday!=null and sunday!=''">
-				AND sees.monday_ BETWEEN #{monday} AND #{sunday}
-			</if>
-			<if test="teacherId!=null">
-				AND sees.teacher_id_ = #{teacherId}
-			</if>
-			<if test="reminded!=null and reminded==0">
-				AND NOT EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_ AND type_='SERVICE')
-			</if>
-			<if test="reminded!=null and reminded==1">
-				AND EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_ AND type_='SERVICE')
-			</if>
-			<if test="operatorId!=null">
-				AND EXISTS (SELECT id_ FROM teacher_remind WHERE operator_id_=#{operatorId} AND teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_ AND type_='SERVICE')
-			</if>
-			<if test="jobNature!=null">
-				AND tea.job_nature_=#{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-			</if>
-		</where>
-	</sql>
-
-	<select id="queryTeacherServeInfo" resultMap="TeacherServeDto">
-		SELECT
-			organ.name_ organ_name_,
-			sees.monday_,
-			sees.sunday_,
-			sees.teacher_id_,
-			su.real_name_ teacher_name_,
-		    tea.job_nature_,
-			SUM(expect_exercises_num_) expect_exercises_num_,
-			SUM(actual_exercises_num_) actual_exercises_num_,
-			SUM(exercises_reply_num_) exercises_reply_num_,
-			SUM(exercises_message_num_) exercises_message_num_,
-			SUM(exercises_message_timely_num_) exercises_message_timely_num_,
-			SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
-			SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
-			SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
-		FROM
-			student_extracurricular_exercises_situation_ sees
-			LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
-			LEFT JOIN organization organ ON organ.id_=tea.organ_id_
-			LEFT JOIN sys_user su ON tea.id_=su.id_
-		<include refid="queryTeacherServeInfoCondition" />
-		GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
-		<trim prefix="HAVING" prefixOverrides="AND">
-			<if test="unDone!=null">
-				<if test="unDone==1">
-					AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_ )
-				</if>
-				<if test="unDone==0">
-					AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM( sees.actual_exercises_num_ )
-				</if>
-			</if>
-			<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
-				AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
-			</if>
-			<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
-				AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
-			</if>
-			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-				AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-				AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
-			</if>
-			<if test="serviceIsError!=null and serviceIsError">
-				AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_))
-			</if>
-			<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-				AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-				AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
-			</if>
-			<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-				AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
-			</if>
-		</trim>
-		ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
-		<include refid="global.limit"></include>
-	</select>
-
-	<select id="countTeacherServeInfo" resultType="int">
-		SELECT COUNT(1) FROM (
-			SELECT
-				sees.id_
-			FROM
-				student_extracurricular_exercises_situation_ sees
-				LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
-			<include refid="queryTeacherServeInfoCondition" />
-			GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
-			<trim prefix="HAVING" prefixOverrides="AND">
-				<if test="unDone!=null">
-					<if test="unDone==1">
-						AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_ )
-					</if>
-					<if test="unDone==0">
-						AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM( sees.actual_exercises_num_ )
-					</if>
-				</if>
-				<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
-					AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
-				</if>
-				<if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
-					AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
-				</if>
-				<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-					AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
-				</if>
-				<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
-					AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
-				</if>
-				<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
-					AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
-				</if>
-				<if test="serviceIsError!=null and serviceIsError">
-					AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_))
-				</if>
-				<if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
-					AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
-				</if>
-				<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
-					AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
-				</if>
-				<if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
-					AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
-				</if>
-			</trim>
-			ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
-		) e
-	</select>
-
-	<select id="findTeacherServeWithDate" resultMap="StudentExtracurricularExercisesSituation">
-		SELECT * FROM student_extracurricular_exercises_situation_
-		WHERE monday_ BETWEEN #{monday} AND #{sunday}
-			<if test="serveType!=null and serveType!=''">
-				AND serve_type_=#{serveType}
-			</if>
-			  AND teacher_id_ IN
-			  <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
-				  #{teacherId}
-			  </foreach>
-	</select>
-
-	<select id="getHomeworkData" resultMap="com.ym.mec.biz.dal.dao.IndexBaseMonthDataDao.IndexBaseMonthData">
-		SELECT
-		sees.monday_ month_,
-		<choose>
-			<when test="type == 'submit'">
-				SUM(sees.actual_exercises_num_) total_num_,
-				SUM(sees.exercises_reply_num_) activate_num_,
-				TRUNCATE(SUM(sees.exercises_reply_num_)/SUM(sees.actual_exercises_num_)*100, 2) percent_
-			</when>
-			<when test="type == 'comment'">
-				SUM(sees.exercises_reply_num_) total_num_,
-				SUM(sees.exercises_message_num_) activate_num_,
-				TRUNCATE(SUM(sees.exercises_message_num_)/SUM(sees.exercises_reply_num_)*100, 2) percent_
-			</when>
-			<otherwise>
-				SUM(sees.expect_exercises_num_-sees.not_over_course_num_) total_num_,
-				SUM(sees.actual_exercises_num_) activate_num_,
-				TRUNCATE(SUM(sees.actual_exercises_num_)/SUM(sees.expect_exercises_num_-sees.not_over_course_num_)*100, 2) percent_
-			</otherwise>
-		</choose>
-		FROM student_extracurricular_exercises_situation_ sees
-		LEFT JOIN teacher tea ON sees.teacher_id_=tea.id_
-		WHERE tea.job_nature_='FULL_TIME'
-		AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&gt;=#{startDay}
-		AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&lt;=#{endDay}
-		AND (sees.serve_type_ = 'EXERCISE' OR EXISTS (SELECT id_ FROM course_schedule WHERE group_type_='MUSIC' AND music_group_id_=#{musicGroupId} AND FIND_IN_SET(id_, sees.course_ids_)))
-		AND sees.student_id_ IN
-		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-			#{studentId}
-		</foreach>
-		GROUP BY sees.monday_
-	</select>
-
-	<select id="queryCourseIdByClassDate" resultType="java.lang.Long">
-		SELECT DISTINCT csts.course_schedule_id_ FROM course_schedule_teacher_salary csts
-		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
-		LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
-		WHERE csts.user_id_ = #{teacherId} AND cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
-		AND FIND_IN_SET(cs.id_,se.course_ids_) AND se.serve_type_ = 'HOMEWORK'
-	</select>
-
-	<select id="countWaitCreateHomeworkNum" resultType="java.lang.Integer">
-		SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE teacher_id_ = #{teacherId}
-		AND expect_exercises_num_ > actual_exercises_num_ AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN monday_ AND sunday_
-		AND serve_type_ = 'EXERCISE'
-	</select>
-	<select id="countWaitCreateHomeworkNum1" resultType="java.lang.Integer">
-		SELECT SUM(t.num_) FROM (
-		SELECT COUNT(se.id_) num_ FROM student_extracurricular_exercises_situation_ se
-		LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_,se.course_ids_)
-		WHERE se.teacher_id_ = #{teacherId}
-		AND se.expect_exercises_num_ > se.actual_exercises_num_ AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
-		AND se.serve_type_ = 'HOMEWORK' AND cs.group_type_ = 'MUSIC' AND cs.class_date_ = DATE_FORMAT(NOW(), '%Y-%m-%d')
-		UNION ALL
-		SELECT COUNT(se.id_) num_ FROM student_extracurricular_exercises_situation_ se
-		LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_,se.course_ids_)
-		WHERE se.teacher_id_ = #{teacherId}
-		AND se.expect_exercises_num_ > se.actual_exercises_num_ AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
-		AND se.serve_type_ = 'HOMEWORK' AND cs.group_type_ != 'MUSIC' AND cs.class_date_ &lt;= DATE_FORMAT(NOW(), '%Y-%m-%d'))t
-	</select>
-
-	<select id="queryTeacherPerformanceIndicator" resultMap="TeacherServeDto">
-		SELECT
-			organ.name_ organ_name_,
-			sees.monday_,
-			sees.sunday_,
-			sees.teacher_id_,
-			su.real_name_ teacher_name_,
-		    tea.job_nature_,
-			SUM(expect_exercises_num_) expect_exercises_num_,
-			SUM(actual_exercises_num_) actual_exercises_num_,
-			SUM(exercises_reply_num_) exercises_reply_num_,
-			SUM(exercises_message_num_) exercises_message_num_,
-			SUM(exercises_message_timely_num_) exercises_message_timely_num_,
-			SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
-			SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
-			SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
-		FROM
-			student_extracurricular_exercises_situation_ sees
-			LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
-			LEFT JOIN organization organ ON organ.id_=tea.organ_id_
-			LEFT JOIN sys_user su ON tea.id_=su.id_
-		<include refid="queryTeacherServeInfoCondition" />
-		GROUP BY sees.teacher_id_
-		ORDER BY sees.teacher_id_
-		<include refid="global.limit"></include>
-	</select>
-	<select id="getHomeworkSituations" resultType="java.util.Date">
-		SELECT cs.class_date_ FROM student_extracurricular_exercises_situation_ sees
-		LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_,sees.course_ids_)
-		WHERE sees.serve_type_ = #{serveType} AND cs.id_ != #{courseScheduleId} AND cs.music_group_id_ = #{musicGroupId}
-		AND sees.monday_ = #{month} 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>
-
-	<!-- 还差出勤率和达标率 -->
-	<select id="queryStudentServeInfo" resultMap="TeacherServeDto">
-		select
-			sees.student_id_,
-			sees.username_,
-			sees.organ_name_,
-			sees.serve_num_,
-			sees.actual_exercises_num_,
-			sees.exercises_reply_num_,
-			sees.exercises_message_num_,
-		    a.sign_rate_,
-		    a.pass_rate_,
-			b.music_group_name_,
-		    concat(#{monday},'至', #{sunday}) as serve_period_
-		from (
-			select
-				sees.student_id_,
-				u.username_,
-				organ.name_ as organ_name_,
-			    count(sees.id_) 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_
-			LEFT JOIN organization organ ON organ.id_=u.organ_id_ and organ.del_flag_ = 0
-			<where>
-				sees.tenant_id_ = #{tenantId}
-				<if test="monday != null and monday != ''">
-					AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') &gt;= #{monday}
-				</if>
-				<if test="sunday != null and sunday != ''">
-					AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') &lt;= #{sunday}
-				</if>
-				<if test="organIds != null and organIds.size()>0">
-					AND u.organ_id_ IN
-					<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
-						#{organId}
-					</foreach>
-				</if>
-			</where>
-			group by sees.student_id_
-		) sees
-		left join (
-			select
-				sees.student_id_,
-				ifnull(sum(if(sa.status_ = 'NORMAL',1,0))/count(sa.id_),0) as sign_rate_,
-				ifnull(sum(sa.qualified_flag_)/count(sa.id_),0)  as pass_rate_
-			from student_extracurricular_exercises_situation_ sees
-			left join sys_user u ON sees.student_id_ = u.id_
-			left join course_schedule cs on find_in_set(cs.id_,sees.course_ids_) and cs.del_flag_ = 0
-			left join music_group mg on cs.music_group_id_ = mg.id_
-			left join student_attendance sa on sees.student_id_ = sa.user_id_ and cs.id_ = sa.course_schedule_id_
-			<where>
-				sees.tenant_id_ = #{tenantId} and cs.id_ is not null
-				<if test="monday != null and monday != ''">
-					AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') &gt;= #{monday}
-				</if>
-				<if test="sunday != null and sunday != ''">
-					AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') &lt;= #{sunday}
-				</if>
-				<if test="organIds != null and organIds.size()>0">
-					AND u.organ_id_ IN
-					<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
-						#{organId}
-					</foreach>
-				</if>
-			</where>
-			group by sees.student_id_
-		) a on sees.student_id_ = a.student_id_
-		left join (
-			select
-			    user_id_,group_concat(distinct b.name_) as music_group_name_
-			from student_registration a
-			left join music_group b on a.music_group_id_ = b.id_
-			where payment_status_ = 1 and music_group_status_ = 'PROGRESS'
-		    group by a.user_id_
-		) b on sees.student_id_ = b.user_id_
-	</select>
+        SELECT *
+        FROM student_extracurricular_exercises_situation_
+        WHERE teacher_id_ = #{teacherId}
+          AND actual_exercises_num_ &lt;= 0
+          AND serve_type_ = 'HOMEWORK';
+    </select>
+
+
+    <select id="getTeacherHomeworkCourseIdsWithMonday" resultType="string">
+        SELECT course_ids_ FROM student_extracurricular_exercises_situation_
+        WHERE teacher_id_=#{teacherId}
+        AND serve_type_='HOMEWORK'
+        <if test="monday!=null and monday!=''">
+            AND monday_=#{monday}
+        </if>
+    </select>
+
+    <select id="findServiceWithCourse"
+            resultMap="StudentExtracurricularExercisesSituation">
+        SELECT *
+        FROM student_extracurricular_exercises_situation_
+        WHERE monday_ = #{monday}
+          AND FIND_IN_SET(#{courseId}, course_ids_)
+    </select>
+
+    <resultMap id="TeacherServeDto" type="com.ym.mec.biz.dal.dto.TeacherServeDto">
+        <result column="organ_name_" property="organName"/>
+        <result column="monday_" property="monday"/>
+        <result column="sunday_" property="sunday"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="homework_num_" property="homeworkNum"/>
+        <result column="exercise_num_" property="exerciseNum"/>
+        <result column="un_done_" property="unDone"/>
+        <result column="remind_time_" property="remindDate"/>
+        <result column="operator_name_" property="operatorName"/>
+        <result column="job_nature_" property="jobNature" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="expect_exercises_num_" property="expectExercisesNum"/>
+        <result column="actual_exercises_num_" property="actualExercisesNum"/>
+        <result column="exercises_reply_num_" property="exercisesReplyNum"/>
+        <result column="exercises_message_num_" property="exercisesMessageNum"/>
+        <result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum"/>
+    </resultMap>
+
+
+    <sql id="queryTeacherServeInfoCondition">
+        <where>
+            sees.tenant_id_ = #{tenantId}
+            <if test="organIds != null and organIds.size()>0">
+                AND tea.organ_id_ IN
+                <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="monday!=null and monday!='' and sunday!=null and sunday!=''">
+                AND sees.monday_ BETWEEN #{monday} AND #{sunday}
+            </if>
+            <if test="teacherId!=null">
+                AND sees.teacher_id_ = #{teacherId}
+            </if>
+            <if test="reminded!=null and reminded==0">
+                AND NOT EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ =
+                sees.monday_ AND type_='SERVICE')
+            </if>
+            <if test="reminded!=null and reminded==1">
+                AND EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_
+                AND type_='SERVICE')
+            </if>
+            <if test="operatorId!=null">
+                AND EXISTS (SELECT id_ FROM teacher_remind WHERE operator_id_=#{operatorId} AND
+                teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_ AND type_='SERVICE')
+            </if>
+            <if test="jobNature!=null">
+                AND tea.job_nature_=#{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryTeacherServeInfo" resultMap="TeacherServeDto">
+        SELECT
+        organ.name_ organ_name_,
+        sees.monday_,
+        sees.sunday_,
+        sees.teacher_id_,
+        su.real_name_ teacher_name_,
+        tea.job_nature_,
+        SUM(expect_exercises_num_) expect_exercises_num_,
+        SUM(actual_exercises_num_) actual_exercises_num_,
+        SUM(exercises_reply_num_) exercises_reply_num_,
+        SUM(exercises_message_num_) exercises_message_num_,
+        SUM(exercises_message_timely_num_) exercises_message_timely_num_,
+        SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
+        SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
+        SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
+        FROM
+        student_extracurricular_exercises_situation_ sees
+        LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
+        LEFT JOIN organization organ ON organ.id_=tea.organ_id_
+        LEFT JOIN sys_user su ON tea.id_=su.id_
+        <include refid="queryTeacherServeInfoCondition"/>
+        GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
+        <trim prefix="HAVING" prefixOverrides="AND">
+            <if test="unDone!=null">
+                <if test="unDone==1">
+                    AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_
+                    )
+                </if>
+                <if test="unDone==0">
+                    AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM(
+                    sees.actual_exercises_num_ )
+                </if>
+            </if>
+            <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
+                AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
+            </if>
+            <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
+                AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt;
+                SUM(exercises_reply_num_))
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
+            </if>
+        </trim>
+        ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
+        <include refid="global.limit"></include>
+    </select>
+
+    <select id="countTeacherServeInfo" resultType="int">
+        SELECT COUNT(1) FROM (
+        SELECT
+        sees.id_
+        FROM
+        student_extracurricular_exercises_situation_ sees
+        LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
+        <include refid="queryTeacherServeInfoCondition"/>
+        GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
+        <trim prefix="HAVING" prefixOverrides="AND">
+            <if test="unDone!=null">
+                <if test="unDone==1">
+                    AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_
+                    )
+                </if>
+                <if test="unDone==0">
+                    AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM(
+                    sees.actual_exercises_num_ )
+                </if>
+            </if>
+            <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
+                AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
+            </if>
+            <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
+                AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
+                AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
+            </if>
+            <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
+                AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
+                AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
+            </if>
+            <if test="serviceIsError!=null and serviceIsError">
+                AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt;
+                SUM(exercises_reply_num_))
+            </if>
+            <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
+                AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
+                AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
+            </if>
+            <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
+                AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
+            </if>
+        </trim>
+        ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
+        ) e
+    </select>
+
+    <select id="findTeacherServeWithDate" resultMap="StudentExtracurricularExercisesSituation">
+        SELECT * FROM student_extracurricular_exercises_situation_
+        WHERE monday_ BETWEEN #{monday} AND #{sunday}
+        <if test="serveType!=null and serveType!=''">
+            AND serve_type_=#{serveType}
+        </if>
+        AND teacher_id_ IN
+        <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+            #{teacherId}
+        </foreach>
+    </select>
+
+    <select id="getHomeworkData" resultMap="com.ym.mec.biz.dal.dao.IndexBaseMonthDataDao.IndexBaseMonthData">
+        SELECT
+        sees.monday_ month_,
+        <choose>
+            <when test="type == 'submit'">
+                SUM(sees.actual_exercises_num_) total_num_,
+                SUM(sees.exercises_reply_num_) activate_num_,
+                TRUNCATE(SUM(sees.exercises_reply_num_)/SUM(sees.actual_exercises_num_)*100, 2) percent_
+            </when>
+            <when test="type == 'comment'">
+                SUM(sees.exercises_reply_num_) total_num_,
+                SUM(sees.exercises_message_num_) activate_num_,
+                TRUNCATE(SUM(sees.exercises_message_num_)/SUM(sees.exercises_reply_num_)*100, 2) percent_
+            </when>
+            <otherwise>
+                SUM(sees.expect_exercises_num_-sees.not_over_course_num_) total_num_,
+                SUM(sees.actual_exercises_num_) activate_num_,
+                TRUNCATE(SUM(sees.actual_exercises_num_)/SUM(sees.expect_exercises_num_-sees.not_over_course_num_)*100,
+                2) percent_
+            </otherwise>
+        </choose>
+        FROM student_extracurricular_exercises_situation_ sees
+        LEFT JOIN teacher tea ON sees.teacher_id_=tea.id_
+        WHERE tea.job_nature_='FULL_TIME'
+        AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&gt;=#{startDay}
+        AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&lt;=#{endDay}
+        AND (sees.serve_type_ = 'EXERCISE' OR EXISTS (SELECT id_ FROM course_schedule WHERE group_type_='MUSIC' AND
+        music_group_id_=#{musicGroupId} AND FIND_IN_SET(id_, sees.course_ids_)))
+        AND sees.student_id_ IN
+        <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+            #{studentId}
+        </foreach>
+        GROUP BY sees.monday_
+    </select>
+
+    <select id="queryCourseIdByClassDate" resultType="java.lang.Long">
+        SELECT DISTINCT csts.course_schedule_id_
+        FROM course_schedule_teacher_salary csts
+                 LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+                 LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
+        WHERE csts.user_id_ = #{teacherId}
+          AND cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
+          AND FIND_IN_SET(cs.id_, se.course_ids_)
+          AND se.serve_type_ = 'HOMEWORK'
+    </select>
+
+    <select id="countWaitCreateHomeworkNum" resultType="java.lang.Integer">
+        SELECT COUNT(id_)
+        FROM student_extracurricular_exercises_situation_
+        WHERE teacher_id_ = #{teacherId}
+          AND expect_exercises_num_ > actual_exercises_num_
+          AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN monday_ AND sunday_
+          AND serve_type_ = 'EXERCISE'
+    </select>
+    <select id="countWaitCreateHomeworkNum1" resultType="java.lang.Integer">
+        SELECT SUM(t.num_)
+        FROM (
+                 SELECT COUNT(se.id_) num_
+                 FROM student_extracurricular_exercises_situation_ se
+                          LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, se.course_ids_)
+                 WHERE se.teacher_id_ = #{teacherId}
+                   AND se.expect_exercises_num_ > se.actual_exercises_num_
+                   AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
+                   AND se.serve_type_ = 'HOMEWORK'
+                   AND cs.group_type_ = 'MUSIC'
+                   AND cs.class_date_ = DATE_FORMAT(NOW(), '%Y-%m-%d')
+                 UNION ALL
+                 SELECT COUNT(se.id_) num_
+                 FROM student_extracurricular_exercises_situation_ se
+                          LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, se.course_ids_)
+                 WHERE se.teacher_id_ = #{teacherId}
+                   AND se.expect_exercises_num_ > se.actual_exercises_num_
+                   AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
+                   AND se.serve_type_ = 'HOMEWORK'
+                   AND cs.group_type_ != 'MUSIC' AND cs.class_date_ &lt;= DATE_FORMAT(NOW(), '%Y-%m-%d')) t
+    </select>
+
+    <select id="queryTeacherPerformanceIndicator" resultMap="TeacherServeDto">
+        SELECT
+        organ.name_ organ_name_,
+        sees.monday_,
+        sees.sunday_,
+        sees.teacher_id_,
+        su.real_name_ teacher_name_,
+        tea.job_nature_,
+        SUM(expect_exercises_num_) expect_exercises_num_,
+        SUM(actual_exercises_num_) actual_exercises_num_,
+        SUM(exercises_reply_num_) exercises_reply_num_,
+        SUM(exercises_message_num_) exercises_message_num_,
+        SUM(exercises_message_timely_num_) exercises_message_timely_num_,
+        SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
+        SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
+        SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
+        FROM
+        student_extracurricular_exercises_situation_ sees
+        LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
+        LEFT JOIN organization organ ON organ.id_=tea.organ_id_
+        LEFT JOIN sys_user su ON tea.id_=su.id_
+        <include refid="queryTeacherServeInfoCondition"/>
+        GROUP BY sees.teacher_id_
+        ORDER BY sees.teacher_id_
+        <include refid="global.limit"></include>
+    </select>
+    <select id="getHomeworkSituations" resultType="java.util.Date">
+        SELECT cs.class_date_
+        FROM student_extracurricular_exercises_situation_ sees
+                 LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, sees.course_ids_)
+        WHERE sees.serve_type_ = #{serveType}
+          AND cs.id_ != #{courseScheduleId}
+          AND cs.music_group_id_ = #{musicGroupId}
+          AND sees.monday_ = #{month}
+          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>
+
+    <!-- 还差出勤率和达标率 -->
+    <select id="queryStudentServeInfo" resultMap="StudentServeDto">
+        select
+            sees.student_id_,
+            sees.username_,
+            sees.organ_name_,
+            sees.serve_num_,
+            sees.actual_exercises_num_,
+            sees.exercises_reply_num_,
+            sees.exercises_message_num_,
+            a.sign_rate_,
+            a.pass_rate_,
+            b.music_group_name_,
+            concat(#{params.monday},'至', #{params.sunday}) as serve_period_
+        from (
+            select
+                sees.student_id_,
+                u.username_,
+                organ.name_ as organ_name_,
+                count(sees.id_) 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_
+            LEFT JOIN organization organ ON organ.id_=u.organ_id_ and organ.del_flag_ = 0
+            <where>
+                <if test="params.tenantId != null and params.tenantId > 0">
+                    AND sees.tenant_id_ = #{params.tenantId}
+                </if>
+                <if test="params.monday != null and params.monday != ''">
+                    AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') &gt;= #{params.monday}
+                </if>
+                <if test="params.sunday != null and params.sunday != ''">
+                    AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') &lt;= #{params.sunday}
+                </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
+        left join (
+            select
+                sees.student_id_,
+                ifnull(sum(if(sa.status_ = 'NORMAL',1,0))/count(sa.id_),0) as sign_rate_,
+                ifnull(sum(sa.qualified_flag_)/count(sa.id_),0) as pass_rate_
+            from student_extracurricular_exercises_situation_ sees
+            left join sys_user u ON sees.student_id_ = u.id_
+            left join course_schedule cs on find_in_set(cs.id_,sees.course_ids_) and cs.del_flag_ = 0
+            left join music_group mg on cs.music_group_id_ = mg.id_
+            left join student_attendance sa on sees.student_id_ = sa.user_id_ and cs.id_ = sa.course_schedule_id_
+            <where>
+                cs.id_ is not null
+                <if test="params.tenantId != null and params.tenantId > 0">
+                    AND sees.tenant_id_ = #{params.tenantId}
+                </if>
+                <if test="params.monday != null and params.monday != ''">
+                    AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') &gt;= #{params.monday}
+                </if>
+                <if test="params.sunday != null and params.sunday != ''">
+                    AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') &lt;= #{params.sunday}
+                </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_
+        ) a on sees.student_id_ = a.student_id_
+        left join (
+            select
+                user_id_,group_concat(distinct b.name_) as music_group_name_
+            from student_registration a
+            left join music_group b on a.music_group_id_ = b.id_
+            where payment_status_ = 1 and music_group_status_ = 'PROGRESS'
+            group by a.user_id_
+        ) b on sees.student_id_ = b.user_id_
+    </select>
 
 </mapper>