TeacherCourseStatisticsMapper.xml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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.TeacherCourseStatisticsDao">
  4. <resultMap id="TeacherCourseStatistics" type="com.ym.mec.biz.dal.entity.TeacherCourseStatistics">
  5. <result column="id_" jdbcType="BIGINT" property="id"/>
  6. <result column="user_id_" jdbcType="INTEGER" property="userId"/>
  7. <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
  8. <result column="month_" jdbcType="DATE" property="month"/>
  9. <result column="subject_id_list_" jdbcType="VARCHAR" property="subjectIdList"/>
  10. <result column="vip_course_num_" jdbcType="INTEGER" property="vipCourseNum"/>
  11. <result column="music_course_num_" jdbcType="INTEGER" property="musicCourseNum"/>
  12. <result column="practice_course_num_" jdbcType="INTEGER" property="practiceCourseNum"/>
  13. <result column="expect_music_course_salary_" jdbcType="DECIMAL" property="expectMusicCourseSalary"/>
  14. <result column="expect_vip_course_salary_" jdbcType="DECIMAL" property="expectVipCourseSalary"/>
  15. <result column="expect_practice_course_salary_" jdbcType="DECIMAL" property="expectPracticeCourseSalary"/>
  16. <result column="expect_total_salary_" jdbcType="DECIMAL" property="expectTotalSalary"/>
  17. <result column="low_salary" jdbcType="DECIMAL" property="lowSalary"/>
  18. <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
  19. <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
  20. <result column="group_type_" jdbcType="VARCHAR" property="groupType"/>
  21. <result column="real_name_" jdbcType="VARCHAR" property="realName"/>
  22. <result column="phone_" jdbcType="VARCHAR" property="phone"/>
  23. <result column="organ_name_" jdbcType="VARCHAR" property="organName"/>
  24. <result column="month_str_" jdbcType="VARCHAR" property="monthStr"/>
  25. <association property="subjectList"
  26. select="com.ym.mec.biz.dal.dao.SubjectDao.findBySubjectByIdList"
  27. column="{subjectIdList = tcs.subject_id_list_}"/>
  28. </resultMap>
  29. <resultMap id="TeacherCourseStatistics1" type="com.ym.mec.biz.dal.entity.TeacherCourseStatistics">
  30. <result column="id_" jdbcType="BIGINT" property="id"/>
  31. <result column="user_id_" jdbcType="INTEGER" property="userId"/>
  32. <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
  33. <result column="month_" jdbcType="DATE" property="month"/>
  34. <result column="subject_id_list_" jdbcType="VARCHAR" property="subjectIdList"/>
  35. <result column="vip_course_num_" jdbcType="INTEGER" property="vipCourseNum"/>
  36. <result column="music_course_num_" jdbcType="INTEGER" property="musicCourseNum"/>
  37. <result column="practice_course_num_" jdbcType="INTEGER" property="practiceCourseNum"/>
  38. <result column="expect_music_course_salary_" jdbcType="DECIMAL" property="expectMusicCourseSalary"/>
  39. <result column="expect_vip_course_salary_" jdbcType="DECIMAL" property="expectVipCourseSalary"/>
  40. <result column="expect_practice_course_salary_" jdbcType="DECIMAL" property="expectPracticeCourseSalary"/>
  41. <result column="expect_total_salary_" jdbcType="DECIMAL" property="expectTotalSalary"/>
  42. <result column="low_salary" jdbcType="DECIMAL" property="lowSalary"/>
  43. <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
  44. <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
  45. <result column="group_type_" jdbcType="VARCHAR" property="groupType"/>
  46. <result column="real_name_" jdbcType="VARCHAR" property="realName"/>
  47. <result column="phone_" jdbcType="VARCHAR" property="phone"/>
  48. <result column="organ_name_" jdbcType="VARCHAR" property="organName"/>
  49. <result column="month_str_" jdbcType="VARCHAR" property="monthStr"/>
  50. </resultMap>
  51. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherCourseStatistics" useGeneratedKeys="true"
  52. keyColumn="id" keyProperty="id">
  53. INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
  54. subject_id_list_, vip_course_num_, music_course_num_, practice_course_num_,
  55. expect_music_course_salary_, expect_vip_course_salary_, expect_practice_course_salary_,
  56. expect_total_salary_, average_class_minutes_,
  57. statistics_date_time_,low_salary)
  58. VALUES (#{id,jdbcType=BIGINT}, #{userId,jdbcType=INTEGER}, #{organId,jdbcType=INTEGER}, #{month,jdbcType=DATE},
  59. #{subjectIdList,jdbcType=VARCHAR}, #{vipCourseNum,jdbcType=INTEGER}, #{musicCourseNum,jdbcType=INTEGER}, #{practiceCourseNum},
  60. #{expectMusicCourseSalary,jdbcType=DECIMAL}, #{expectVipCourseSalary,jdbcType=DECIMAL}, #{expectPracticeCourseSalary},
  61. #{expectTotalSalary,jdbcType=DECIMAL}, #{averageClassMinutes,jdbcType=INTEGER},NOW(),#{lowSalary})
  62. </insert>
  63. <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  64. INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
  65. subject_id_list_, vip_course_num_, music_course_num_, practice_course_num_,
  66. expect_music_course_salary_, expect_vip_course_salary_, expect_practice_course_salary_,
  67. expect_total_salary_, average_class_minutes_,statistics_date_time_,low_salary)
  68. VALUE
  69. <foreach collection="lists" item="list" separator=",">
  70. (#{list.id,jdbcType=BIGINT}, #{list.userId,jdbcType=INTEGER}, #{list.organId,jdbcType=INTEGER}, #{list.month,jdbcType=DATE},
  71. #{list.subjectIdList,jdbcType=VARCHAR}, #{list.vipCourseNum,jdbcType=INTEGER}, #{list.musicCourseNum,jdbcType=INTEGER},
  72. #{list.practiceCourseNum},
  73. #{list.expectMusicCourseSalary,jdbcType=DECIMAL}, #{list.expectVipCourseSalary,jdbcType=DECIMAL},
  74. #{list.expectPracticeCourseSalary},
  75. #{list.expectTotalSalary,jdbcType=DECIMAL}, #{list.averageClassMinutes,jdbcType=INTEGER},NOW(),#{list.lowSalary})
  76. </foreach>
  77. </insert>
  78. <delete id="deleteByMonth">
  79. DELETE FROM teacher_course_statistics WHERE month_=#{date}
  80. </delete>
  81. <!-- 查找下月排课小于基准课酬的老师-->
  82. <select id="findUserByWarringSalary" resultMap="TeacherCourseStatistics1"><![CDATA[
  83. SELECT ctt.expect_total_salary_, t.id_ user_id_,t.organ_id_,t.subject_id_ subject_id_list_,
  84. ctt.average_class_minutes_
  85. FROM teacher t
  86. LEFT JOIN sys_user su ON t.id_=su.id_
  87. LEFT JOIN (
  88. SELECT
  89. csts.user_id_,
  90. SUM( csts.expect_salary_ ) expect_total_salary_,
  91. ROUND( AVG( TIMESTAMPDIFF( MINUTE, start_class_time_, end_class_time_ )), 0 ) average_class_minutes_
  92. FROM course_schedule_teacher_salary csts
  93. LEFT JOIN course_schedule cs ON cs.id_=csts.course_schedule_id_
  94. WHERE cs.del_flag_ != 1
  95. AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
  96. AND csts.group_type_ IN ( 'VIP', 'MUSIC', 'PRACTICE' )
  97. GROUP BY
  98. csts.user_id_
  99. ) ctt ON ctt.user_id_=t.id_
  100. WHERE su.del_flag_ != 1 AND su.lock_flag_!=1
  101. AND t.demission_date_ IS NULL
  102. AND t.organ_id_ IS NOT NULL
  103. ]]>
  104. </select>
  105. <select id="findUserCourseSalaryByUserIds" resultMap="TeacherCourseStatistics1">
  106. SELECT SUM(csts.expect_salary_) expect_total_salary_, COUNT(csts.id_) music_course_num_, csts.user_id_, csts.group_type_
  107. FROM course_schedule_teacher_salary csts LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  108. WHERE csts.user_id_ IN
  109. <foreach collection="userIds" item="userId" open="(" separator="," close=")">
  110. #{userId}
  111. </foreach>
  112. <![CDATA[AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate} AND csts.group_type_ IN ('VIP', 'MUSIC', 'PRACTICE') AND cs.del_flag_ != 1
  113. GROUP BY csts.user_id_, csts.group_type_;
  114. ]]></select>
  115. <select id="queryPage" resultMap="TeacherCourseStatistics" parameterType="map">
  116. SELECT tcs.*,u.real_name_,u.phone_,o.name_ organ_name_,DATE_FORMAT(tcs.month_,'%Y年%m月') month_str_
  117. FROM teacher_course_statistics tcs
  118. LEFT JOIN sys_user u ON tcs.user_id_ = u.id_
  119. LEFT JOIN teacher t ON t.id_ = tcs.user_id_
  120. LEFT JOIN organization o ON tcs.organ_id_ = o.id_
  121. <include refid="queryParams"/>
  122. <include refid="global.limit"/>
  123. </select>
  124. <!-- 查询当前表的总记录数 -->
  125. <select id="queryCount" resultType="int" parameterType="map">
  126. SELECT COUNT(tcs.id_) FROM teacher_course_statistics tcs
  127. LEFT JOIN sys_user u ON tcs.user_id_ = u.id_
  128. LEFT JOIN teacher t ON t.id_ = tcs.user_id_
  129. <include refid="queryParams"/>
  130. </select>
  131. <sql id="queryParams">
  132. <where>
  133. u.lock_flag_ = 0 AND u.del_flag_ = 0 AND t.job_nature_ = 'FULL_TIME' AND t.demission_date_ IS NULL
  134. <if test="organId != null">
  135. AND FIND_IN_SET(tcs.organ_id_,#{organId})
  136. </if>
  137. <if test="monthStr != null">
  138. AND DATE_FORMAT(tcs.month_,'%Y-%m') = #{monthStr}
  139. </if>
  140. <if test="userId != null">
  141. AND tcs.user_id_ = #{userId}
  142. </if>
  143. <if test="lowSalary != null">
  144. AND tcs.low_salary = #{lowSalary}
  145. </if>
  146. <if test="minSalary != null">
  147. AND tcs.expect_total_salary_ &gt; #{minSalary}
  148. </if>
  149. <if test="maxSalary != null">
  150. AND tcs.expect_total_salary_ &lt; #{maxSalary}
  151. </if>
  152. </where>
  153. </sql>
  154. </mapper>