CourseScheduleTeacherSalaryMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  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. <!--
  4. 这个文件是自动生成的。
  5. 不要修改此文件。所有改动将在下次重新自动生成时丢失。
  6. -->
  7. <mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary" id="CourseScheduleTeacherSalary">
  9. <result column="id_" property="id" />
  10. <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  11. <result column="music_group_id_" property="musicGroupId"/>
  12. <result column="course_schedule_id_" property="courseScheduleId" />
  13. <result column="teacher_role_" property="teacherRole" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  14. <result column="user_id_" property="userId" />
  15. <result column="username_" property="userName"/>
  16. <result column="expect_salary_" property="expectSalary" />
  17. <result column="create_time_" property="createTime" />
  18. <result column="update_time_" property="updateTime" />
  19. <result column="subsidy_" property="subsidy" />
  20. <result column="actual_salary_" property="actualSalary" />
  21. <result column="settlement_time_" property="settlementTime" />
  22. <result column="class_group_id_" property="classGroupId" />
  23. </resultMap>
  24. <!-- 根据主键查询一条记录 -->
  25. <select id="get" resultMap="CourseScheduleTeacherSalary" >
  26. SELECT * FROM course_schedule_teacher_salary WHERE id_ = #{id}
  27. </select>
  28. <!-- 全查询 -->
  29. <select id="findAll" resultMap="CourseScheduleTeacherSalary">
  30. SELECT * FROM course_schedule_teacher_salary ORDER BY id_
  31. </select>
  32. <!-- 向数据库增加一条记录 -->
  33. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  34. <!--
  35. <selectKey resultClass="int" keyProperty="id" >
  36. SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
  37. </selectKey>
  38. -->
  39. INSERT INTO course_schedule_teacher_salary (id_,group_type_,music_group_id_,course_schedule_id_,teacher_role_,user_id_,expect_salary_,create_time_,update_time_,subsidy_,actual_salary_,settlement_time_,class_group_id_) VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{courseScheduleId},#{teacherRole},#{userId},#{expectSalary},now(),now(),#{subsidy},#{actualSalary},#{settlementTime},#{classGroupId})
  40. </insert>
  41. <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
  42. INSERT INTO course_schedule_teacher_salary (id_,group_type_,music_group_id_,course_schedule_id_,teacher_role_,user_id_,expect_salary_,create_time_,update_time_,subsidy_,actual_salary_,settlement_time_,class_group_id_)
  43. VALUES
  44. <foreach collection="list" item="data" separator=",">
  45. (#{data.id},#{data.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{data.musicGroupId},#{data.courseScheduleId},#{data.teacherRole},#{data.userId},#{data.expectSalary},now(),now(),#{data.subsidy},#{data.actualSalary},#{data.settlementTime},#{data.classGroupId})
  46. </foreach>
  47. </insert>
  48. <!-- 根据主键查询一条记录 -->
  49. <update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary">
  50. UPDATE course_schedule_teacher_salary
  51. <set>
  52. <if test="userId != null">
  53. user_id_ = #{userId},
  54. </if>
  55. <if test="groupType != null">
  56. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  57. </if>
  58. <if test="musicGroupId != null">
  59. music_group_id_ = #{musicGroupId},
  60. </if>
  61. <if test="subsidy != null">
  62. subsidy_ = #{subsidy},
  63. </if>
  64. <if test="expectSalary != null">
  65. expect_salary_ = #{expectSalary},
  66. </if>
  67. <if test="courseScheduleId != null">
  68. course_schedule_id_ = #{courseScheduleId},
  69. </if>
  70. <if test="settlementTime != null">
  71. settlement_time_ = #{settlementTime},
  72. </if>
  73. <if test="teacherRole != null">
  74. teacher_role_ = #{teacherRole},
  75. </if>
  76. <if test="updateTime != null">
  77. update_time_ = now(),
  78. </if>
  79. <if test="actualSalary != null">
  80. actual_salary_ = #{actualSalary},
  81. </if>
  82. <if test="classGroupId != null">
  83. class_group_id_ = #{classGroupId},
  84. </if>
  85. </set> WHERE id_ = #{id}
  86. </update>
  87. <!-- 根据主键删除一条记录 -->
  88. <delete id="delete" >
  89. DELETE FROM course_schedule_teacher_salary WHERE id_ = #{id}
  90. </delete>
  91. <delete id="batchDeleteByCourseScheduleIds">
  92. DELETE FROM course_schedule_teacher_salary WHERE course_schedule_id_ IN
  93. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  94. #{courseScheduleId}
  95. </foreach>
  96. </delete>
  97. <sql id="courseScheduleTeacherSalaryQueryPage">
  98. <where>
  99. csts.settlement_time_ IS NOT NULL AND csts.teacher_role_ IS NOT NULL AND cs.type_ IS NOT NULL
  100. <if test="organId != null">
  101. AND su.organ_id_ = #{organId}
  102. </if>
  103. <if test="search != null">
  104. AND (su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
  105. </if>
  106. <if test="startTime != null">
  107. AND csts.settlement_time_ &gt;= DATE_FORMAT(#{startTime},'%Y-%m-%d')
  108. </if>
  109. <if test="endTime != null">
  110. AND csts.settlement_time_ &lt;= DATE_FORMAT(#{endTime},'%Y-%m-%d')
  111. </if>
  112. <if test="courseScheduleType != null">
  113. AND cs.type_ = #{courseScheduleType}
  114. </if>
  115. <if test="teacherId != null">
  116. AND csts.user_id_ = #{teacherId}
  117. </if>
  118. </where>
  119. </sql>
  120. <!-- 分页查询 -->
  121. <select id="queryPage" resultMap="CourseScheduleTeacherSalary" parameterType="map">
  122. SELECT * FROM course_schedule_teacher_salary
  123. <include refid="global.limit"/>
  124. </select>
  125. <!-- 查询当前表的总记录数 -->
  126. <select id="queryCount" resultType="int">
  127. SELECT COUNT(id_) FROM course_schedule_teacher_salary
  128. </select>
  129. <select id="countSalaries" resultType="java.lang.Integer">
  130. SELECT COUNT(csts.id_) FROM course_schedule_teacher_salary csts
  131. LEFT JOIN sys_user su ON su.id_ = csts.user_id_
  132. LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
  133. <include refid="courseScheduleTeacherSalaryQueryPage"/>
  134. </select>
  135. <resultMap id="TeacherSalaryDtoMap" type="com.ym.mec.biz.dal.dto.TeacherSalaryDto">
  136. <result property="username" column="username"/>
  137. <result property="userId" column="user_id_"/>
  138. <result property="phone" column="phone_"/>
  139. <result property="type" column="type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  140. <result property="name" column="name_"/>
  141. <result property="actualSalary" column="actual_salary_"/>
  142. <result property="subsidy" column="subsidy_"/>
  143. <result property="settlementTime" column="settlement_time_"/>
  144. <result property="teacherRole" column="teacher_role_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  145. </resultMap>
  146. <select id="querySalaries" resultMap="TeacherSalaryDtoMap">
  147. SELECT su.id_ user_id_,su.username_,su.phone_,cs.type_,cs.name_,csts.actual_salary_,csts.subsidy_,csts.settlement_time_,csts.teacher_role_
  148. FROM course_schedule_teacher_salary csts
  149. LEFT JOIN sys_user su ON su.id_ = csts.user_id_
  150. LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
  151. <include refid="courseScheduleTeacherSalaryQueryPage"/>
  152. ORDER BY csts.settlement_time_ DESC
  153. <include refid="global.limit"/>
  154. </select>
  155. <resultMap id="VipGroupSalaryDto" type="com.ym.mec.biz.dal.dto.VipGroupSalaryDto" extends="CourseScheduleTeacherSalary">
  156. <result column="course_schedule_id_" property="courseScheduleId" />
  157. <result column="class_date_" property="classDate" />
  158. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
  159. </resultMap>
  160. <sql id="vipGroupSalaryQueryCondition">
  161. <where>
  162. vg.id_=#{vipGroupId}
  163. AND cs.group_type_='VIP'
  164. AND FIND_IN_SET(#{organId},vg.organ_id_list_)
  165. <if test="startTime!=null and endTime!=null">
  166. AND (cs.class_date_ BETWEEN #{startTime} AND #{endTime})
  167. </if>
  168. </where>
  169. </sql>
  170. <select id="findVipGroupSalarys" resultMap="VipGroupSalaryDto">
  171. SELECT
  172. cs.id_ course_schedule_id_,
  173. CONCAT(cs.class_date_," ",cs.start_class_time_) class_date_,
  174. cs.teach_mode_,
  175. csts.*
  176. FROM
  177. vip_group vg
  178. LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
  179. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  180. <include refid="vipGroupSalaryQueryCondition"/>
  181. ORDER BY id_
  182. <include refid="global.limit"/>
  183. </select>
  184. <select id="countVipGroupSalarys" resultType="int">
  185. SELECT
  186. COUNT(*)
  187. FROM
  188. vip_group vg
  189. LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
  190. <include refid="vipGroupSalaryQueryCondition"/>
  191. </select>
  192. <select id="findSomeDayAgoTeacherCourseSalaryNoSettlement" resultMap="CourseScheduleTeacherSalary">
  193. SELECT
  194. cs.class_date_,
  195. csts.*
  196. FROM
  197. course_schedule_teacher_salary csts
  198. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  199. WHERE
  200. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt;= DATE_ADD( NOW( ), INTERVAL - 7 DAY )
  201. AND cs.type_='VIP'
  202. AND csts.settlement_time_ IS NULL
  203. </select>
  204. <select id="queryByCourseScheduleIdAndUserId" resultMap="CourseScheduleTeacherSalary" parameterType="map">
  205. SELECT * FROM course_schedule_teacher_salary where user_id_ = #{teacherId} and course_schedule_id_ = #{courseScheduleId}
  206. </select>
  207. <select id="findByCourseScheduleIdsAndTeacherRole" resultMap="CourseScheduleTeacherSalary">
  208. SELECT
  209. csts.*,
  210. su.username_
  211. FROM
  212. course_schedule_teacher_salary csts
  213. LEFT JOIN sys_user su ON csts.user_id_=su.id_
  214. WHERE csts.course_schedule_id_ IN
  215. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  216. #{courseScheduleId}
  217. </foreach>
  218. AND csts.teacher_role_=#{teacherRole}
  219. </select>
  220. <select id="findMusicGroupSettlementTypeByCourse" resultType="map">
  221. SELECT
  222. cs.id_ AS 'key',
  223. mg.settlement_type_ AS 'value'
  224. FROM
  225. course_schedule cs
  226. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  227. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  228. WHERE cs.id_ IN
  229. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  230. #{courseScheduleId}
  231. </foreach>
  232. </select>
  233. <select id="findMusicGroupChargeTypeByCourse" resultType="map">
  234. SELECT
  235. cs.id_ AS 'key',
  236. mg.charge_type_id_ AS 'value'
  237. FROM
  238. course_schedule cs
  239. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  240. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  241. WHERE cs.id_ IN
  242. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  243. #{courseScheduleId}
  244. </foreach>
  245. </select>
  246. <select id="findCourseSubsidyByCourses" resultType="map">
  247. SELECT
  248. cs.id_,
  249. s.subsidy_
  250. FROM
  251. course_schedule cs
  252. LEFT JOIN school s ON cs.schoole_id_=s.id_
  253. WHERE cs.id_ IN
  254. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  255. #{courseScheduleId}
  256. </foreach>
  257. </select>
  258. <resultMap id="CourseScheduleTeachersDto" type="com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto">
  259. <result property="teacherId" column="user_id_"/>
  260. <result property="teacherName" column="real_name_"/>
  261. <result property="teacherRole" column="teacher_role_"/>
  262. <result property="expectSalary" column="expect_salary_"/>
  263. <result property="subsidy" column="subsidy_"/>
  264. </resultMap>
  265. <select id="queryTeacherSalary" resultMap="CourseScheduleTeachersDto">
  266. SELECT csts.user_id_,su.real_name_,csts.teacher_role_,csts.expect_salary_,csts.subsidy_
  267. FROM course_schedule_teacher_salary csts
  268. LEFT JOIN sys_user su ON su.id_ = csts.user_id_
  269. WHERE csts.course_schedule_id_ = #{courseScheduleId}
  270. </select>
  271. <select id="findByCourseSchedules" resultMap="CourseScheduleTeacherSalary">
  272. SELECT * FROM course_schedule_teacher_salary WHERE course_schedule_id_ IN
  273. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  274. #{courseScheduleId}
  275. </foreach>
  276. </select>
  277. <select id="findByCourseSchedulesWithNoSettlement" resultMap="CourseScheduleTeacherSalary">
  278. SELECT * FROM course_schedule_teacher_salary WHERE course_schedule_id_ IN
  279. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  280. #{courseScheduleId}
  281. </foreach>
  282. AND settlement_time_ IS NULL
  283. </select>
  284. <select id="countTeacherOnlineOfflineSalaryByClass" resultType="map">
  285. SELECT
  286. cs.teach_mode_ AS 'key',
  287. SUM( csts.actual_salary_ ) AS 'value'
  288. FROM
  289. course_schedule cs
  290. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  291. WHERE cs.class_group_id_=#{classGroupId} AND cs.id_ IS NOT NULL AND cs.status_='OVER'
  292. GROUP BY cs.teach_mode_
  293. </select>
  294. <update id="batchUpdateWages" parameterType="map">
  295. UPDATE course_schedule_teacher_salary set
  296. subsidy_ = #{subsidy},
  297. expect_salary_ = #{salary},
  298. update_time_ = now()
  299. WHERE user_id_ = #{userId} and class_group_id_ = #{classGroupId}
  300. </update>
  301. <update id="batchUpdateTeacherExpectSalary">
  302. UPDATE course_schedule_teacher_salary
  303. SET expect_salary_ = 0
  304. WHERE
  305. course_schedule_id_ = #{courseScheduleId}
  306. AND user_id_ IN
  307. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  308. #{userId}
  309. </foreach>
  310. </update>
  311. </mapper>