LessonExaminationMapper.xml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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 (
  35. select lesson_examination_id_,COUNT(distinct user_id_) num from student_lesson_examination_detail
  36. where lesson_examination_id_ = #{lessonExaminationId}
  37. group by user_id_ HAVING SUM(actual_avg_score_) >= 60) sle ON sle.lesson_examination_id_ = le.id_
  38. set le.standard_num_ = sle.num
  39. where le.id_ = #{lessonExaminationId} AND num > 0
  40. </update>
  41. <select id="queryPage" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto">
  42. select le.*,cg.name_ classGroupName
  43. from lesson_examination le
  44. left join student_lesson_examination sle ON sle.lesson_examination_id_ = le.id_
  45. left join class_group cg ON cg.id_ = le.class_group_id_
  46. <include refid="queryPageSql"/>
  47. GROUP BY le.id_ ORDER BY le.id_ DESC
  48. <include refid="global.limit"/>
  49. </select>
  50. <select id="findCount" resultType="java.lang.Integer">
  51. select COUNT(DISTINCT le.id_)
  52. from lesson_examination le
  53. left join student_lesson_examination sle ON sle.lesson_examination_id_ = le.id_
  54. left join class_group cg ON cg.id_ = le.class_group_id_
  55. <include refid="queryPageSql"/>
  56. </select>
  57. <sql id="queryPageSql">
  58. <where>
  59. <if test="lessonExaminationId != null">
  60. AND le.id_ = #{lessonExaminationId}
  61. </if>
  62. <if test="musicGroupId != null and musicGroupId != ''">
  63. AND le.music_group_id_ = #{musicGroupId}
  64. </if>
  65. <if test="organId != null and organId != ''">
  66. AND FIND_IN_SET(le.organ_id_,#{organId})
  67. </if>
  68. <if test="teacherId != null">
  69. AND le.teacher_id_ = #{teacherId}
  70. </if>
  71. <if test="startTime != null and startTime != ''">
  72. AND DATE_FORMAT( le.create_time_, '%Y-%m' ) = #{startTime}
  73. </if>
  74. <if test="subjectId != null">
  75. AND sle.subject_id_ = #{subjectId}
  76. </if>
  77. <if test="expireFlag != null and expireFlag == true">
  78. AND le.expire_date_ &lt; NOW()
  79. </if>
  80. <if test="expireFlag != null and expireFlag == false">
  81. AND le.expire_date_ >= NOW()
  82. </if>
  83. </where>
  84. </sql>
  85. <sql id="queryPageByStudentSql">
  86. <where>
  87. <if test="lessonExaminationId != null">
  88. AND sle.lesson_examination_id_ = #{lessonExaminationId}
  89. </if>
  90. <if test="studentId != null">
  91. AND sle.user_id_ = #{studentId}
  92. </if>
  93. <if test="startTime != null and startTime != ''">
  94. AND DATE_FORMAT(le.create_time_,'%Y-%m') = #{startTime}
  95. </if>
  96. <if test="expireFlag != null and expireFlag == true">
  97. AND le.expire_date_ &lt; NOW()
  98. </if>
  99. <if test="expireFlag != null and expireFlag == false">
  100. AND le.expire_date_ >= NOW()
  101. </if>
  102. <if test="standardFlag != null">
  103. AND sle.standard_flag_ = #{standardFlag}
  104. </if>
  105. </where>
  106. </sql>
  107. <select id="queryPageByStudent" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto1">
  108. select le.expire_date_ expireDate,cg.name_ classGroupName,le.music_group_id_ musicGroupId,
  109. sle.training_score_ trainingScore,sle.lesson_examination_id_ LessonExaminationId,sle.user_id_ userId,
  110. su.real_name_ teacherName,su.avatar_ avatar,sle.training_flag_ trainingFlag,sle.standard_flag_ standardFlag,
  111. le.class_group_id_ classGroupId,sle.training_time_ trainingTime
  112. from student_lesson_examination sle
  113. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  114. left join class_group cg ON cg.id_ = le.class_group_id_
  115. left join sys_user su ON su.id_ = le.teacher_id_
  116. <include refid="queryPageByStudentSql"/>
  117. ORDER BY sle.id_ DESC
  118. </select>
  119. <select id="findCountByStudent" resultType="java.lang.Integer">
  120. select COUNT(sle.id_)
  121. from student_lesson_examination sle
  122. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  123. <include refid="queryPageByStudentSql"/>
  124. </select>
  125. <select id="getOneByStudent" resultType="com.ym.mec.biz.dal.dto.LessonExaminationResultDto1">
  126. select le.expire_date_ expireDate,CASE WHEN NOW() > le.expire_date_ THEN 1 ELSE 0 END expireFlag,
  127. cg.name_ classGroupName,mg.name_ musicGroupName,sle.training_flag_ trainingFlag,
  128. sle.training_score_ trainingScore,sle.lesson_examination_id_ LessonExaminationId,sle.user_id_ userId,
  129. su.real_name_ teacherName,su.avatar_ avatar,le.class_group_id_ classGroupId,sle.training_time_ trainingTime
  130. from student_lesson_examination sle
  131. left join lesson_examination le ON sle.lesson_examination_id_ = le.id_
  132. left join class_group cg ON cg.id_ = le.class_group_id_
  133. left join music_group mg ON mg.id_ = le.music_group_id_
  134. left join sys_user su ON su.id_ = le.teacher_id_
  135. WHERE sle.lesson_examination_id_ = #{lessonExaminationId} AND sle.user_id_ = #{userId} LIMIT 1
  136. </select>
  137. <select id="queryEndList" resultType="com.ym.mec.biz.dal.entity.LessonExamination">
  138. select * from lesson_examination where NOW() > expire_date_ AND push_flag_ = 0
  139. </select>
  140. <resultMap type="com.ym.mec.biz.dal.entity.Subject" id="Subject">
  141. <result column="id_" property="id"/>
  142. <result column="name_" property="name"/>
  143. <result column="code_" property="code"/>
  144. <result column="parent_subject_id_" property="parentSubjectId"/>
  145. <result column="img_" property="img"/>
  146. <result column="create_time_" property="createTime"/>
  147. <result column="update_time_" property="updateTime"/>
  148. <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  149. </resultMap>
  150. <select id="querySubject" resultMap="Subject">
  151. select s.* from student_lesson_examination sle
  152. left join subject s ON s.id_ = sle.subject_id_
  153. where sle.lesson_examination_id_ = #{lessonExaminationId}
  154. group by s.id_
  155. </select>
  156. </mapper>