LessonExaminationMapper.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.ym.mec.biz.dal.dao.LessonExaminationDao">
  4. <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.LessonExamination">
  5. <id column="id_" property="id"/>
  6. <result column="organ_id_" property="organId"/>
  7. <result column="music_group_id_" property="musicGroupId"/>
  8. <result column="class_group_id_" property="classGroupId"/>
  9. <result column="course_schedule_id_" property="courseScheduleId"/>
  10. <result column="teacher_id_" property="teacherId"/>
  11. <result column="expire_date_" property="expireDate"/>
  12. <result column="standard_num_" property="standardNum"/>
  13. <result column="training_num_" property="trainingNum"/>
  14. <result column="expect_num_" property="expectNum"/>
  15. <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
  16. <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
  17. <result column="tenant_id_" property="tenantId"/>
  18. </resultMap>
  19. <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
  20. parameterType="com.ym.mec.biz.dal.dto.LessonExaminationSaveDto">
  21. insert into lesson_examination(organ_id_, music_group_id_, class_group_id_, course_schedule_id_, teacher_id_,
  22. expire_date_,expect_num_,tenant_id_)
  23. values
  24. <foreach collection="entities" item="entity" separator=",">
  25. (#{entity.organId}, #{entity.musicScoreId}, #{entity.classGroupId}, #{entity.courseScheduleId}, #{entity.teacherId},
  26. #{entity.expireDate},#{entity.expectNum},#{entity.tenantId})
  27. </foreach>
  28. </insert>
  29. <update id="updateTrainingNum">
  30. UPDATE lesson_examination SET training_num_ = training_num_ + 1 WHERE id_ = #{lessonExaminationId}
  31. </update>
  32. <update id="updateStandardNum">
  33. update lesson_examination le
  34. left join (select lesson_examination_id_,COUNT(user_id_) num from (
  35. select lesson_examination_id_,user_id_ from student_lesson_examination_detail
  36. where lesson_examination_id_ = #{lessonExaminationId}
  37. group by user_id_ HAVING SUM(actual_avg_score_) >= 60) le
  38. group by lesson_examination_id_) sle ON sle.lesson_examination_id_ = le.id_
  39. set le.standard_num_ = sle.num
  40. where le.id_ = #{lessonExaminationId} AND num > 0
  41. </update>
  42. <select id="queryPage" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto">
  43. select le.*,cg.name_ classGroupName,su.real_name_ teacherName
  44. from lesson_examination le
  45. left join student_lesson_examination sle ON sle.lesson_examination_id_ = le.id_
  46. left join class_group cg ON cg.id_ = le.class_group_id_
  47. left join sys_user su ON su.id_ = le.teacher_id_
  48. <include refid="queryPageSql"/>
  49. GROUP BY le.id_ ORDER BY le.id_ DESC
  50. <include refid="global.limit"/>
  51. </select>
  52. <select id="findCount" resultType="java.lang.Integer">
  53. select COUNT(DISTINCT le.id_)
  54. from lesson_examination le
  55. left join student_lesson_examination sle ON sle.lesson_examination_id_ = le.id_
  56. left join class_group cg ON cg.id_ = le.class_group_id_
  57. left join sys_user su ON su.id_ = le.teacher_id_
  58. <include refid="queryPageSql"/>
  59. </select>
  60. <sql id="queryPageSql">
  61. <where>
  62. <if test="lessonExaminationId != null">
  63. AND le.id_ = #{lessonExaminationId}
  64. </if>
  65. <if test="search != null and search != ''">
  66. AND su.real_name_ LIKE CONCAT('%',#{search},'%')
  67. </if>
  68. <if test="musicGroupId != null and musicGroupId != ''">
  69. AND le.music_group_id_ = #{musicGroupId}
  70. </if>
  71. <if test="musicGroupIds != null and musicGroupIds.size > 0">
  72. and le.music_group_id_ IN
  73. <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
  74. #{musicGroupId}
  75. </foreach>
  76. </if>
  77. <if test="organId != null and organId != ''">
  78. AND FIND_IN_SET(le.organ_id_,#{organId})
  79. </if>
  80. <if test="teacherId != null">
  81. AND le.teacher_id_ = #{teacherId}
  82. </if>
  83. <if test="startTime != null and startTime != ''">
  84. AND DATE_FORMAT( le.create_time_, '%Y-%m' ) = #{startTime}
  85. </if>
  86. <if test="subjectId != null">
  87. AND sle.subject_id_ = #{subjectId}
  88. </if>
  89. <if test="expireFlag != null and expireFlag == true">
  90. AND le.expire_date_ &lt; NOW()
  91. </if>
  92. <if test="expireFlag != null and expireFlag == false">
  93. AND le.expire_date_ >= NOW()
  94. </if>
  95. </where>
  96. </sql>
  97. <sql id="queryPageByStudentSql">
  98. <where>
  99. <if test="lessonExaminationId != null">
  100. AND sle.lesson_examination_id_ = #{lessonExaminationId}
  101. </if>
  102. <if test="studentId != null">
  103. AND sle.user_id_ = #{studentId}
  104. </if>
  105. <if test="startTime != null and startTime != ''">
  106. AND DATE_FORMAT(le.create_time_,'%Y-%m') = #{startTime}
  107. </if>
  108. <if test="expireFlag != null and expireFlag == true">
  109. AND le.expire_date_ &lt; NOW()
  110. </if>
  111. <if test="expireFlag != null and expireFlag == false">
  112. AND le.expire_date_ >= NOW()
  113. </if>
  114. <if test="standardFlag != null">
  115. AND sle.standard_flag_ = #{standardFlag}
  116. </if>
  117. </where>
  118. </sql>
  119. <select id="queryPageByStudent" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto1">
  120. select le.expire_date_ expireDate,cg.name_ classGroupName,le.music_group_id_ musicGroupId,
  121. sle.training_score_ trainingScore,sle.lesson_examination_id_ LessonExaminationId,sle.user_id_ userId,
  122. su.real_name_ teacherName,su.avatar_ avatar,sle.training_flag_ trainingFlag,sle.standard_flag_ standardFlag,
  123. le.class_group_id_ classGroupId,sle.training_time_ trainingTime
  124. from student_lesson_examination sle
  125. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  126. left join class_group cg ON cg.id_ = le.class_group_id_
  127. left join sys_user su ON su.id_ = le.teacher_id_
  128. <include refid="queryPageByStudentSql"/>
  129. ORDER BY sle.id_ DESC
  130. </select>
  131. <select id="findCountByStudent" resultType="java.lang.Integer">
  132. select COUNT(sle.id_)
  133. from student_lesson_examination sle
  134. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  135. <include refid="queryPageByStudentSql"/>
  136. </select>
  137. <select id="getOneByStudent" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto1">
  138. select le.expire_date_ expireDate,CASE WHEN NOW() > le.expire_date_ THEN 1 ELSE 0 END expireFlag,
  139. cg.name_ classGroupName,mg.name_ musicGroupName,sle.training_flag_ trainingFlag,
  140. sle.training_score_ trainingScore,sle.lesson_examination_id_ LessonExaminationId,sle.user_id_ userId,
  141. su.real_name_ teacherName,su.avatar_ avatar,le.class_group_id_ classGroupId,sle.training_time_ trainingTime
  142. from student_lesson_examination sle
  143. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  144. left join class_group cg ON cg.id_ = le.class_group_id_
  145. left join music_group mg ON mg.id_ = le.music_group_id_
  146. left join sys_user su ON su.id_ = le.teacher_id_
  147. WHERE sle.lesson_examination_id_ = #{lessonExaminationId} AND sle.user_id_ = #{userId} LIMIT 1
  148. </select>
  149. <select id="queryEndList" resultType="com.ym.mec.biz.dal.entity.LessonExamination">
  150. select * from lesson_examination where NOW() > expire_date_ AND push_flag_ = 0
  151. </select>
  152. <resultMap type="com.ym.mec.biz.dal.entity.Subject" id="Subject">
  153. <result column="id_" property="id"/>
  154. <result column="name_" property="name"/>
  155. <result column="code_" property="code"/>
  156. <result column="parent_subject_id_" property="parentSubjectId"/>
  157. <result column="img_" property="img"/>
  158. <result column="create_time_" property="createTime"/>
  159. <result column="update_time_" property="updateTime"/>
  160. <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  161. </resultMap>
  162. <select id="querySubject" resultMap="Subject">
  163. select s.* from student_lesson_examination sle
  164. left join subject s ON s.id_ = sle.subject_id_
  165. where sle.lesson_examination_id_ = #{lessonExaminationId}
  166. group by s.id_
  167. </select>
  168. <select id="schoolLessonStat" resultType="com.ym.mec.biz.dal.wrapper.SchoolIndexStatWrapper$StudentLesson">
  169. select SUM(cs.expectNum) expectNum,SUM(cs.actualNum) actualNum,SUM(cs.passNum) passNum
  170. from (
  171. select ch.expect_num_ expectNum,ch.completed_num_ actualNum,ch.completed_num_ passNum from
  172. course_homework ch
  173. left join course_schedule cs ON cs.id_ = ch.course_schedule_id_
  174. where CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
  175. AND cs.music_group_id_ IN
  176. <foreach collection="musicGroupIds" close=")" open="(" separator="," item="item">
  177. #{item}
  178. </foreach>
  179. AND cs.class_date_ BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
  180. UNION ALL
  181. select le.expect_num_ expectNum,le.training_num_ actualNum,le.standard_num_ passNum from lesson_examination le
  182. left join course_schedule cs ON cs.id_ = le.course_schedule_id_
  183. where CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
  184. AND cs.music_group_id_ IN
  185. <foreach collection="musicGroupIds" close=")" open="(" separator="," item="item">
  186. #{item}
  187. </foreach>
  188. AND cs.class_date_ BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
  189. )cs
  190. </select>
  191. </mapper>