CourseScheduleMapper.xml 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123
  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.CourseScheduleDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.CourseSchedule" id="CourseSchedule">
  9. <result column="id_" property="id"/>
  10. <result column="class_group_id_" property="classGroupId"/>
  11. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  12. <result column="subsidy_" property="subsidy"/>
  13. <result column="class_date_" property="classDate"/>
  14. <result column="start_class_time_" property="startClassTime"/>
  15. <result column="end_class_time_" property="endClassTime"/>
  16. <result column="teacher_id_" property="teacherId"/>
  17. <result column="actual_teacher_id_" property="actualTeacherId"/>
  18. <result column="create_time_" property="createTime"/>
  19. <result column="update_time_" property="updateTime"/>
  20. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  21. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  22. <result column="name_" property="name"/>
  23. <result column="student_num_" property="studentNum"/>
  24. <result column="leave_student_num_" property="leaveStudentNum"/>
  25. <result column="schoole_id_" property="schoolId"/>
  26. </resultMap>
  27. <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
  28. <result column="key_" property="key"/>
  29. <result column="value_" property="value"/>
  30. </resultMap>
  31. <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
  32. <result column="teacher_name_" property="teacherName"/>
  33. <result column="name_" property="classGroupName"/>
  34. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  35. <result column="school_name_" property="schoolName"/>
  36. <result column="sign_in_status_" property="signInStatus"/>
  37. <result column="sign_out_status_" property="signOutStatus"/>
  38. <result column="seal_class_id_" property="sealClassId"/>
  39. <result column="total_student_num_" property="totalStudentNum"/>
  40. <result column="teacher_role_" property="teacherRole" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  41. <result column="attendance_status_" property="attendanceStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  42. <result column="complaint_status_" property="complaintStatus"/>
  43. </resultMap>
  44. <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
  45. <result column="id_" property="id"/>
  46. <result column="course_schedule_id_" property="courseScheduleId"/>
  47. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  48. <result column="name_" property="courseName"/>
  49. <result column="class_date_" property="classDate"/>
  50. <result column="start_class_time_" property="startClassTime"/>
  51. <result column="end_class_time_" property="endClassTime"/>
  52. <result column="teacher_id_" property="teacherId"/>
  53. <result column="teacher_name_" property="teacherName"/>
  54. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  55. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  56. <result column="rest_of_class_" property="restOfClass"/>
  57. </resultMap>
  58. <!-- 根据主键查询一条记录 -->
  59. <select id="get" resultMap="CourseSchedule">
  60. SELECT
  61. id_,
  62. class_group_id_,
  63. status_,
  64. subsidy_,
  65. class_date_,
  66. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  67. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  68. teacher_id_,
  69. actual_teacher_id_,
  70. create_time_,
  71. update_time_,
  72. teach_mode_,
  73. type_,
  74. name_,
  75. student_num_,
  76. leave_student_num_,
  77. schoole_id_
  78. FROM course_schedule WHERE id_ = #{id}
  79. </select>
  80. <!-- 全查询 -->
  81. <select id="findAll" resultMap="CourseSchedule">
  82. SELECT *
  83. FROM course_schedule
  84. ORDER BY id_
  85. </select>
  86. <!-- 向数据库增加一条记录 -->
  87. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule" useGeneratedKeys="true" keyColumn="id"
  88. keyProperty="id">
  89. <!--
  90. <selectKey resultClass="int" keyProperty="id" >
  91. SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
  92. </selectKey>
  93. -->
  94. INSERT INTO course_schedule
  95. (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,schoole_id_)
  96. VALUES(#{id},#{classGroupId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subsidy},#{classDate},#{startClassTime},#{endClassTime},#{teacherId},#{teacherId},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{name},#{teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentNum},#{leaveStudentNum},#{schoolId})
  97. </insert>
  98. <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
  99. keyProperty="id">
  100. INSERT INTO course_schedule
  101. (id_,class_group_id_,status_,subsidy_,class_date_,start_class_time_,end_class_time_,teacher_id_,actual_teacher_id_,create_time_,update_time_,type_,name_,teach_mode_,student_num_,leave_student_num_,schoole_id_)
  102. VALUE
  103. <foreach collection="list" item="course" separator=",">
  104. (#{course.id},#{course.classGroupId},#{course.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.subsidy},#{course.classDate},#{course.startClassTime},#{course.endClassTime},#{course.teacherId},#{course.teacherId},now(),now(),#{course.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.name},#{course.teachMode,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.studentNum},#{course.leaveStudentNum},#{course.schoolId})
  105. </foreach>
  106. </insert>
  107. <!-- 根据主键查询一条记录 -->
  108. <update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule">
  109. UPDATE course_schedule
  110. <set>
  111. <if test="classDate != null">
  112. class_date_ = #{classDate},
  113. </if>
  114. <if test="endClassTime != null">
  115. end_class_time_ = #{endClassTime},
  116. </if>
  117. <if test="status != null">
  118. status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  119. </if>
  120. <if test="type != null">
  121. type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  122. </if>
  123. <if test="actualTeacherId != null">
  124. actual_teacher_id_ = #{actualTeacherId},
  125. </if>
  126. <if test="subsidy != null">
  127. subsidy_ = #{subsidy},
  128. </if>
  129. <if test="classGroupId != null">
  130. class_group_id_ = #{classGroupId},
  131. </if>
  132. <if test="startClassTime != null">
  133. start_class_time_ = #{startClassTime},
  134. </if>
  135. <if test="teacherId != null">
  136. teacher_id_ = #{teacherId},
  137. </if>
  138. <if test="updateTime != null">
  139. update_time_ = #{updateTime},
  140. </if>
  141. <if test="studentNum != null">
  142. student_num_ = #{studentNum},
  143. </if>
  144. <if test="leaveStudentNum != null">
  145. leave_student_num_ = #{leaveStudentNum},
  146. </if>
  147. <if test="schoolId != null">
  148. schoole_id_ = #{schoolId},
  149. </if>
  150. </set>
  151. WHERE id_ = #{id}
  152. </update>
  153. <!-- 根据主键删除一条记录 -->
  154. <delete id="delete">
  155. DELETE FROM course_schedule WHERE id_ = #{id}
  156. </delete>
  157. <delete id="deleteCourseSchedulesByMusicGroupID">
  158. DELETE
  159. cs
  160. FROM
  161. course_schedule cs
  162. INNER JOIN class_group cg ON cs.class_group_id_=cg.id_
  163. WHERE cg.music_group_id_=#{musicGroupID}
  164. </delete>
  165. <delete id="batchDeleteCourseSchedules">
  166. DELETE FROM course_schedule WHERE id_ IN
  167. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  168. #{courseScheduleId}
  169. </foreach>
  170. </delete>
  171. <!-- 分页查询 -->
  172. <select id="queryPage" resultMap="CourseSchedule" parameterType="map">
  173. SELECT * FROM course_schedule ORDER BY id_
  174. <include refid="global.limit"/>
  175. </select>
  176. <!-- 查询当前表的总记录数 -->
  177. <select id="queryCount" resultType="int">
  178. SELECT COUNT(*)
  179. FROM course_schedule
  180. </select>
  181. <resultMap type="com.ym.mec.biz.dal.dto.TeacherAttendanceDto" id="TeacherAttendanceViewUtilEntity">
  182. <result property="courseScheduleId" column="id_"/>
  183. <result property="courseScheduleName" column="course_schedule_name_"/>
  184. <result property="classDate" column="class_date_"/>
  185. <result property="startClassTime" column="start_class_time_"/>
  186. <result property="endClassTime" column="end_class_time_"/>
  187. <result property="courseStatus" column="course_status_"
  188. typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  189. <result property="classId" column="class_id"/>
  190. <result property="className" column="class_name"/>
  191. <result property="classType" column="class_type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  192. <result property="musicGroupId" column="music_group_id"/>
  193. <result property="musicGroupName" column="music_group_name"/>
  194. <result property="schoolId" column="school_id_"/>
  195. <result property="address" column="address_"/>
  196. <result property="longitudeAndLatitude" column="longitude_latitude_"/>
  197. <result property="teacherName" column="teacher_name_"/>
  198. <result property="signInTime" column="sign_in_time_"/>
  199. <result column="total_class_times_" property="totalClassTimes"/>
  200. <result column="current_class_times_" property="currentClassTimes"/>
  201. <result column="student_num_" property="studentNum"/>
  202. </resultMap>
  203. <select id="getCurrentCourseDetail"
  204. resultMap="TeacherAttendanceViewUtilEntity">
  205. SELECT
  206. cs.id_ ,
  207. cs.name_ course_schedule_name_,
  208. cs.class_date_,
  209. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  210. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  211. cs.status_ course_status_,
  212. cg.id_ class_id,
  213. cg.name_ class_name,
  214. cg.total_class_times_,
  215. cg.current_class_times_,
  216. cg.student_num_,
  217. cs.type_ class_type,
  218. mg.id_ music_group_id,
  219. mg.name_ music_group_name,
  220. s.id_ school_id_,
  221. s.address_,
  222. s.longitude_latitude_,
  223. su.username_ teacher_name_,
  224. ta.sign_in_time_
  225. FROM
  226. course_schedule cs
  227. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  228. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  229. LEFT JOIN school s ON mg.school_id_=s.id_
  230. LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
  231. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  232. WHERE cs.id_= #{courseID}
  233. </select>
  234. <select id="getTeacherCourseByDateSpeed"
  235. resultMap="TeacherAttendanceViewUtilEntity">
  236. SELECT
  237. cs.id_ ,
  238. cs.name_ course_schedule_name_,
  239. cs.class_date_,
  240. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  241. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  242. cs.status_ course_status_,
  243. cg.id_ class_id,
  244. cg.name_ class_name,
  245. cs.type_ class_type,
  246. mg.id_ music_group_id,
  247. mg.name_ music_group_name,
  248. s.id_ school_id_,
  249. s.address_,
  250. s.longitude_latitude_,
  251. su.username_ teacher_name_,
  252. ta.sign_in_time_
  253. FROM
  254. course_schedule cs
  255. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  256. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  257. LEFT JOIN school s ON mg.school_id_=s.id_
  258. LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
  259. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  260. WHERE cs.actual_teacher_id_= #{teacherId}
  261. AND (cs.end_class_time_ BETWEEN #{startTime} AND #{endTime})
  262. ORDER BY cs.id_ DESC LIMIT 1
  263. </select>
  264. <resultMap id="studentAttendanceViewUtilEntity" type="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
  265. <result property="classGroupId" column="class_group_id_"/>
  266. <result property="studentId" column="student_id_"/>
  267. <result property="userName" column="username_"/>
  268. <result property="musicGroupId" column="music_group_id_"/>
  269. <result property="subjectId" column="subject_id_"/>
  270. <result property="subjectName" column="subject_name_"/>
  271. <result property="status" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  272. </resultMap>
  273. <select id="getCurrentCourseStudents" resultMap="studentAttendanceViewUtilEntity">
  274. SELECT
  275. cgsm.class_group_id_,
  276. su.id_ student_id_,
  277. su.username_,
  278. mg.id_ music_group_id_,
  279. s.id_ subject_id_,
  280. s.name_ subject_name_,
  281. cgsm.status_
  282. FROM
  283. class_group cg
  284. LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
  285. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  286. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  287. LEFT JOIN `subject` s ON cg.subject_id_=s.id_
  288. WHERE cgsm.class_group_id_=#{classID} AND cgsm.status_!="DROP_OUT"
  289. </select>
  290. <select id="countStudentInClass" resultType="java.lang.Integer">
  291. SELECT
  292. COUNT(class_group_id_)
  293. FROM
  294. class_group_student_mapper cgsm
  295. WHERE class_group_id_ IN
  296. <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
  297. #{item}
  298. </foreach>
  299. GROUP BY user_id_
  300. </select>
  301. <select id="findByCourseScheduleIds" resultMap="CourseSchedule">
  302. SELECT
  303. cs.id_,
  304. cs.class_group_id_,
  305. cs.status_,
  306. cs.subsidy_,
  307. cs.class_date_,
  308. cs.start_class_time_,
  309. cs.end_class_time_,
  310. cs.teacher_id_,
  311. csts.user_id_ actual_teacher_id_,
  312. cs.create_time_,
  313. cs.update_time_,
  314. cs.teach_mode_,
  315. cs.type_,
  316. cs.name_,
  317. cs.student_num_,
  318. cs.leave_student_num_,
  319. cs.schoole_id_
  320. FROM
  321. course_schedule cs
  322. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_= csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
  323. WHERE cs.id_ IN
  324. <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
  325. #{id}
  326. </foreach>
  327. </select>
  328. <select id="findTeachingTeachers" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao.CourseScheduleTeacherSalary">
  329. SELECT
  330. csts.*
  331. FROM
  332. course_schedule_teacher_salary csts
  333. WHERE
  334. csts.teacher_role_ = 'BISHOP'
  335. AND csts.course_schedule_id_ IN
  336. <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
  337. #{id}
  338. </foreach>
  339. </select>
  340. <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
  341. SELECT
  342. cg.id_ seal_class_id_,
  343. cs.name_,
  344. cs.type_,
  345. cs.id_,
  346. cs.class_date_,
  347. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  348. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  349. cs.status_,
  350. cs.student_num_,
  351. cs.leave_student_num_,
  352. cg.student_num_ total_student_num_,
  353. su.username_ teacher_name_,
  354. ta.sign_in_status_ attendance_status_
  355. FROM
  356. music_group mg
  357. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  358. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  359. LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
  360. LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
  361. WHERE
  362. mg.organ_id_ = #{organId}
  363. AND cs.id_ IS NOT NULL
  364. AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
  365. <include refid="global.limit"/>
  366. </select>
  367. <select id="countCourseSchedulesWithDate" resultType="int">
  368. SELECT
  369. count(*)
  370. FROM
  371. music_group mg
  372. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  373. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  374. WHERE
  375. mg.organ_id_ = #{organId}
  376. AND cs.id_ IS NOT NULL
  377. AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
  378. </select>
  379. <select id="getStudentCourseSchedulesWithDate" resultMap="courseScheduleDto">
  380. SELECT
  381. cgsm.class_group_id_ seal_class_id_,
  382. cs.name_,
  383. cs.type_,
  384. cs.id_,
  385. cs.class_date_,
  386. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  387. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  388. cs.status_,
  389. su.username_ teacher_name_,
  390. cgsm.status_ attendance_status_,
  391. csc.id_ IS NOT NULL complaint_status_,
  392. cs.teach_mode_
  393. FROM
  394. course_schedule_student_payment cssp
  395. LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
  396. LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
  397. LEFT JOIN course_schedule_complaints csc ON csc.course_schedule_id_=cssp.course_schedule_id_ AND csc.user_id_=#{studentId}
  398. LEFT JOIN class_group_student_mapper cgsm ON cgsm.class_group_id_ = cs.class_group_id_ AND cgsm.user_id_=#{studentId}
  399. WHERE
  400. cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
  401. AND cssp.user_id_ = #{studentId}
  402. ORDER BY start_class_time_
  403. </select>
  404. <select id="getTeacherCourseSchedulesWithDate" resultMap="courseScheduleDto">
  405. SELECT
  406. cg.id_ seal_class_id_,
  407. cg.name_,
  408. su.username_ teacher_name_,
  409. cs.type_,
  410. cs.id_,
  411. cs.class_group_id_,
  412. cs.class_date_,
  413. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  414. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  415. cs.status_,
  416. csts.user_id_ actual_teacher_id_,
  417. csts.teacher_role_,
  418. cs.schoole_id_,
  419. s.name_ school_name_,
  420. if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
  421. if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
  422. cs.teach_mode_
  423. FROM
  424. course_schedule_teacher_salary csts
  425. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  426. LEFT JOIN sys_user su ON csts.user_id_ = su.id_
  427. LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
  428. LEFT JOIN school s ON cs.schoole_id_ = s.id_
  429. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
  430. WHERE
  431. cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
  432. <if test="type!=null and type!=''">
  433. AND cs.type_=#{type}
  434. </if>
  435. AND csts.user_id_ = #{teacherId}
  436. </select>
  437. <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
  438. SELECT
  439. cs.class_date_
  440. FROM
  441. course_schedule cs
  442. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  443. WHERE DATE_FORMAT(cs.class_date_,'%Y%m')=DATE_FORMAT(#{month},'%Y%m')
  444. AND cg.music_group_id_=#{musicGroupID}
  445. GROUP BY cs.class_date_
  446. </select>
  447. <select id="countTeacherCourseInOnDayRepeats" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule"
  448. resultType="int">
  449. SELECT
  450. COUNT( * )
  451. FROM
  452. course_schedule cs
  453. WHERE
  454. cs.teacher_id_ = #{teacherId}
  455. AND cs.class_date_ = DATE_FORMAT( #{classDate}, '%Y-%m-%d' )
  456. AND (
  457. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_FORMAT( 'endClassTime', '%Y-%m-%d %H:%i:%s' )
  458. OR CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) &gt; DATE_FORMAT( 'startClassTime', '%Y-%m-%d %H:%i:%s' )
  459. )
  460. </select>
  461. <select id="findTeacherCoursesInDates" resultMap="CourseSchedule">
  462. SELECT
  463. id_,
  464. class_group_id_,
  465. status_,
  466. subsidy_,
  467. class_date_,
  468. concat(class_date_,' ',start_class_time_) start_class_time_,
  469. concat(class_date_,' ',end_class_time_) end_class_time_,
  470. teacher_id_,
  471. actual_teacher_id_,
  472. create_time_,
  473. update_time_
  474. FROM
  475. course_schedule cs
  476. WHERE
  477. cs.teacher_id_ = #{teacherId}
  478. AND cs.class_date_ IN
  479. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  480. #{date}
  481. </foreach>
  482. </select>
  483. <select id="findCoursesByDates" resultMap="CourseSchedule">
  484. SELECT
  485. *
  486. FROM
  487. course_schedule cs
  488. WHERE
  489. cs.class_date_ IN
  490. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  491. DATE_FORMAT(#{date},'%Y-%m-%d')
  492. </foreach>
  493. </select>
  494. <select id="findOverLapCoursesInDay" resultMap="CourseSchedule">
  495. SELECT
  496. cs.id_,
  497. cs.class_group_id_,
  498. cs.status_,
  499. cs.subsidy_,
  500. cs.class_date_,
  501. cs.start_class_time_,
  502. cs.end_class_time_,
  503. cs.teacher_id_,
  504. csts.user_id_ actual_teacher_id_,
  505. cs.create_time_,
  506. cs.update_time_,
  507. cs.teach_mode_,
  508. cs.type_,
  509. cs.name_,
  510. cs.student_num_,
  511. cs.leave_student_num_,
  512. cs.schoole_id_
  513. FROM
  514. course_schedule cs
  515. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  516. WHERE
  517. cs.class_date_ IN
  518. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  519. DATE_FORMAT(#{date},'%Y-%m-%d')
  520. </foreach>
  521. AND (
  522. DATE_FORMAT(cs.start_class_time_,"%H:%i:%s") &gt; DATE_FORMAT(#{endClassTime}, '%H:%i:%s' )
  523. OR DATE_FORMAT(cs.end_class_time_,"%H:%i:%s") &lt; DATE_FORMAT( #{startClassTime}, '%H:%i:%s' )
  524. )=0
  525. </select>
  526. <select id="findCourseSchedulesByIds" resultMap="CourseSchedule">
  527. SELECT
  528. *
  529. FROM
  530. course_schedule cs
  531. WHERE
  532. cs.id_ IN
  533. <foreach collection="ids" item="id" open="(" close=")" separator=",">
  534. #{id}
  535. </foreach>
  536. </select>
  537. <!-- 获取班级未开始的课程 -->
  538. <select id="findClassGroupNoStartCourseSchedules" resultMap="CourseSchedule">
  539. SELECT * FROM course_schedule
  540. WHERE status_ = 'NOT_START'
  541. AND class_group_id_ IN
  542. <foreach collection="classGroupTeacherMapperList" item="classGroupTeacherMapper" index="index" open="("
  543. close=")" separator=",">
  544. #{classGroupTeacherMapper.classGroupId}
  545. </foreach>
  546. </select>
  547. <select id="getStudentCourseScheduleDate" resultType="java.util.Date">
  548. SELECT
  549. cs.class_date_
  550. FROM
  551. course_schedule_student_payment cssp
  552. LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
  553. WHERE
  554. cssp.user_id_ = #{studentId}
  555. <if test="month==null">
  556. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  557. </if>
  558. <if test="month!=null">
  559. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  560. </if>
  561. <if test="isAttend!=null">
  562. AND cs.status_='NOT_START'
  563. </if>
  564. GROUP BY
  565. cs.class_date_
  566. </select>
  567. <select id="getTeacherCourseScheduleDate" resultType="java.util.Date">
  568. SELECT
  569. cs.class_date_
  570. FROM
  571. course_schedule_teacher_salary csts
  572. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  573. WHERE
  574. csts.user_id_ = #{teacherId}
  575. <if test="month==null">
  576. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  577. </if>
  578. <if test="month!=null">
  579. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  580. </if>
  581. <if test="type!=null and type!=''">
  582. AND cs.type_=#{type}
  583. </if>
  584. GROUP BY
  585. cs.class_date_
  586. </select>
  587. <select id="getCourseScheduleDate" resultType="java.util.Date">
  588. SELECT
  589. cs.class_date_
  590. FROM
  591. music_group mg
  592. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  593. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  594. WHERE
  595. mg.organ_id_ = #{organId} AND cs.id_ IS NOT NULL
  596. <if test="month==null">
  597. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  598. </if>
  599. <if test="month!=null">
  600. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  601. </if>
  602. GROUP BY
  603. cs.class_date_
  604. </select>
  605. <select id="findClassSubjects" resultType="string">
  606. SELECT
  607. CONCAT(cg.id_,'-',IF(GROUP_CONCAT(s.name_) IS NULL,'',GROUP_CONCAT(s.name_)))
  608. FROM
  609. class_group cg
  610. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
  611. WHERE cg.id_ IN
  612. <foreach collection="list" item="id" open="(" close=")" separator=",">
  613. #{id}
  614. </foreach>
  615. GROUP BY cg.id_
  616. </select>
  617. <sql id="queryStudentCourseScheduleRecordCondition">
  618. <where>
  619. sa.user_id_=#{userId}
  620. <if test="teachMode!=null and teachMode!=''">
  621. AND cs.teach_mode_=#{teachMode}
  622. </if>
  623. <if test="type!=null and type!=''">
  624. AND cs.type_=#{type}
  625. </if>
  626. <if test="status!=null and status!=''">
  627. AND sa.status_=#{status}
  628. </if>
  629. </where>
  630. </sql>
  631. <select id="findStudentCourseScheduleRecords" resultMap="studentCourseScheduleRecord">
  632. SELECT
  633. sa.id_,
  634. sa.status_,
  635. sa.teacher_id_,
  636. su.username_,
  637. cs.id_ course_schedule_id_,
  638. cs.name_,
  639. cs.class_date_,
  640. cs.start_class_time_,
  641. cs.end_class_time_,
  642. cs.teacher_id_,
  643. cs.teach_mode_
  644. FROM
  645. student_attendance sa
  646. LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
  647. LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
  648. <include refid="queryStudentCourseScheduleRecordCondition"/>
  649. ORDER BY sa.id_
  650. <include refid="global.limit"/>
  651. </select>
  652. <select id="countStudentCourseScheduleRecords" resultType="int">
  653. SELECT
  654. count(*)
  655. FROM
  656. student_attendance sa
  657. LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
  658. LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
  659. <include refid="queryStudentCourseScheduleRecordCondition"/>
  660. </select>
  661. <select id="findStudentCourseScheduleNotStartRecords" resultMap="studentCourseScheduleRecord">
  662. SELECT
  663. cs.teacher_id_,
  664. su.username_ teacher_name_,
  665. cs.id_ course_schedule_id_,
  666. cs.name_,
  667. cs.class_date_,
  668. cs.start_class_time_,
  669. cs.end_class_time_,
  670. cs.teach_mode_,
  671. (cg.total_class_times_-cg.current_class_times_) rest_of_class_
  672. FROM
  673. class_group_student_mapper cgsm
  674. LEFT JOIN course_schedule cs ON cs.class_group_id_=cgsm.class_group_id_
  675. LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
  676. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  677. WHERE cs.status_='NOT_START' AND cgsm.user_id_=#{userId} AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d')
  678. </select>
  679. <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
  680. SELECT
  681. cs.*
  682. FROM
  683. class_group cg
  684. LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
  685. WHERE cg.music_group_id_=#{musicGroupId}
  686. </select>
  687. <select id="countClassTimes" resultType="int">
  688. SELECT
  689. COUNT( * )
  690. FROM
  691. course_schedule
  692. WHERE
  693. class_group_id_ = #{classGroupId}
  694. AND CONCAT( class_date_, ' ', end_class_time_ ) &lt;= #{startClassTime}
  695. </select>
  696. <select id="getCourseSchedules" resultMap="courseScheduleDto">
  697. SELECT
  698. cs.type_,
  699. cs.id_,
  700. cs.class_date_,
  701. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  702. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  703. sc.paran_value_
  704. FROM
  705. course_schedule cs
  706. LEFT JOIN sys_config sc ON sc.param_name_="vip_appeal_days_range"
  707. WHERE
  708. cs.id_=#{courseScheduleId}
  709. </select>
  710. <select id="findStudentNamesByCourseSchedule" resultType="string">
  711. SELECT
  712. su.username_
  713. FROM
  714. student_attendance sa
  715. LEFT JOIN sys_user su ON sa.user_id_=su.id_
  716. WHERE sa.course_schedule_id_=#{courseScheduleId}
  717. </select>
  718. <select id="findVipGroupCourseSchedules" resultMap="CourseSchedule">
  719. SELECT
  720. cs.*
  721. FROM
  722. course_schedule cs
  723. LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cs.class_group_id_
  724. WHERE
  725. vgcgm.vip_group_id_ =#{vipGroupId}
  726. </select>
  727. <select id="findByClassGroupAndDate" resultMap="CourseSchedule">
  728. SELECT
  729. id_,
  730. class_group_id_,
  731. status_,
  732. subsidy_,
  733. class_date_,
  734. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  735. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  736. teacher_id_,
  737. actual_teacher_id_,
  738. create_time_,
  739. update_time_,
  740. type_,name_,
  741. teach_mode_
  742. FROM
  743. course_schedule
  744. <where>
  745. <if test="classGroupId!=null">
  746. AND class_group_id_ = #{classGroupId}
  747. </if>
  748. <if test="classDates!=null">
  749. AND class_date_ IN
  750. <foreach collection="classDates" item="classDate" open="(" close=")" separator=",">
  751. #{classDate}
  752. </foreach>
  753. </if>
  754. </where>
  755. </select>
  756. <select id="findClassTypeByCourse" resultType="string">
  757. SELECT
  758. cg.type_
  759. FROM
  760. course_schedule cs
  761. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  762. WHERE cs.id_=#{courseScheduleId}
  763. </select>
  764. <select id="queryVipGroupTeachereClassTimesByMonth" resultType="map" parameterType="map">
  765. SELECT vp.organ_id_ organ_id_,cs.actual_teacher_id_ teacher_id_,count(cs.id_) times FROM course_schedule cs left join vip_group_class_group_mapper vgm on cs.class_group_id_ = vgm.class_group_id_ left join vip_group vp on vgm.vip_group_id_ = vp.id_ where cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and date_format(#{monthDate} , '%Y%m' ) = date_format(cs.class_date_, '%Y%m' ) group by vp.organ_id_,cs.actual_teacher_id_
  766. </select>
  767. <select id="queryFinishedWithNoUpdateStatus" resultMap="CourseSchedule">
  768. select * from course_schedule where CONCAT(class_date_,' ',end_class_time_) &lt;= now() and status_ != 'OVER'
  769. </select>
  770. <update id="batchUpdate" parameterType="java.util.List">
  771. <foreach collection="list" item="item" index="index" open="" close="" separator=";">
  772. UPDATE course_schedule
  773. <set>
  774. <if test="item.classDate != null">
  775. class_date_ = #{item.classDate},
  776. </if>
  777. <if test="item.endClassTime != null">
  778. end_class_time_ = #{item.endClassTime},
  779. </if>
  780. <if test="item.status != null">
  781. status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  782. </if>
  783. <if test="item.type != null">
  784. type_ = #{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  785. </if>
  786. <if test="item.actualTeacherId != null">
  787. actual_teacher_id_ = #{item.actualTeacherId},
  788. </if>
  789. <if test="item.subsidy != null">
  790. subsidy_ = #{item.subsidy},
  791. </if>
  792. <if test="item.classGroupId != null">
  793. class_group_id_ = #{item.classGroupId},
  794. </if>
  795. <if test="item.startClassTime != null">
  796. start_class_time_ = #{item.startClassTime},
  797. </if>
  798. <if test="item.teacherId != null">
  799. teacher_id_ = #{item.teacherId},
  800. </if>
  801. <if test="item.updateTime != null">
  802. update_time_ = #{item.updateTime},
  803. </if>
  804. <if test="item.studentNum != null">
  805. student_num_ = #{item.studentNum},
  806. </if>
  807. <if test="item.leaveStudentNum != null">
  808. leave_student_num_ = #{item.leaveStudentNum},
  809. </if>
  810. <if test="item.schoolId != null">
  811. school_id_ = #{item.choolId},
  812. </if>
  813. </set>
  814. WHERE id_ = #{item.id}
  815. </foreach>
  816. </update>
  817. <update id="updateByMusicGroupId">
  818. UPDATE course_schedule cs SET cs.schoole_id_ = #{schoolId}
  819. WHERE cs.class_group_id_ IN (SELECT cg.id_ FROM class_group cg WHERE cg.music_group_id_ = #{musicGroupId})
  820. </update>
  821. <select id="queryNoSignInListByBeforeMinutes" resultMap="CourseSchedule">
  822. SELECT cs.* FROM course_schedule cs left join teacher_attendance ta on ta.course_schedule_id_ = cs.id_ WHERE ta.sign_in_time_ is null and SUBTIME(start_class_time_, CONCAT(#{minutes},'00')) &lt; CURRENT_TIME()
  823. </select>
  824. <resultMap id="teacherClassCourseSchedule" type="com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto">
  825. <result property="classGroupId" column="class_group_id_"/>
  826. <result property="courseScheduleId" column="course_schedule_id_"/>
  827. <result property="courseScheduleName" column="course_schedule_name_"/>
  828. <result property="status" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  829. <result property="classDate" column="class_date_"/>
  830. <result property="startClassTime" column="start_class_time_"/>
  831. <result property="endClassTime" column="end_class_time_"/>
  832. <result property="actualTeacherId" column="actual_teacher_id_"/>
  833. <result property="actualTeacherName" column="actual_teacher_id_"/>
  834. <result property="type" column="type_"/>
  835. <result property="studentNum" column="student_num_"/>
  836. <result property="leaveStudentNum" column="leave_student_num_"/>
  837. <result property="currentClassTimes" column="current_class_times_"/>
  838. <result property="totalClassTimes" column="total_class_times_"/>
  839. <result property="studentNames" column="student_names_"/>
  840. </resultMap>
  841. <sql id="teacherClassCourseScheduleQueryCondition">
  842. <where>
  843. cs.class_group_id_ = #{classGroupId}
  844. AND csts.user_id_ = #{userId}
  845. AND csts.expect_salary_ != 0
  846. <if test="onlyHistory!=null and onlyHistory==1">
  847. AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ )&lt;now()
  848. </if>
  849. </where>
  850. </sql>
  851. <select id="queryTeacherClassCourseSchedule" resultMap="teacherClassCourseSchedule">
  852. SELECT
  853. cs.class_group_id_,
  854. cs.id_ course_schedule_id_,
  855. cs.class_date_,
  856. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) start_class_time_,
  857. CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
  858. cs.name_ course_schedule_name_,
  859. cs.student_num_,
  860. cs.leave_student_num_,
  861. cs.type_,
  862. cs.status_,
  863. cs.actual_teacher_id_,
  864. su.username_,
  865. cg.total_class_times_
  866. FROM
  867. course_schedule_teacher_salary csts
  868. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  869. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  870. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  871. <include refid="teacherClassCourseScheduleQueryCondition"/>
  872. ORDER BY cs.id_
  873. <include refid="global.limit"/>
  874. </select>
  875. <select id="queryTeacherHistoryClassCourseSchedule" resultMap="teacherClassCourseSchedule">
  876. SELECT
  877. cs.class_group_id_,
  878. cs.id_ course_schedule_id_,
  879. cs.class_date_,
  880. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) start_class_time_,
  881. CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
  882. cs.name_ course_schedule_name_,
  883. cs.student_num_,
  884. cs.leave_student_num_,
  885. cs.type_,
  886. cs.status_,
  887. cs.actual_teacher_id_,
  888. su.username_,
  889. cg.total_class_times_,
  890. GROUP_CONCAT(IF(sa.status_='NORMAL',ssu.username_,NULL)) student_names_,
  891. MAX(sa.current_class_times_) current_class_times_
  892. FROM
  893. student_attendance sa
  894. LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
  895. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  896. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  897. LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
  898. WHERE sa.class_group_id_=#{classGroupId} AND sa.teacher_id_=#{userId}
  899. GROUP BY sa.course_schedule_id_
  900. ORDER BY cs.id_
  901. <include refid="global.limit"/>
  902. </select>
  903. <select id="countTeacherClassCourseSchedule" resultType="int">
  904. SELECT
  905. COUNT(cs.id_)
  906. FROM
  907. course_schedule_teacher_salary csts
  908. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  909. <include refid="teacherClassCourseScheduleQueryCondition"/>
  910. </select>
  911. <select id="countTeacherHistoryClassCourseSchedule" resultType="int">
  912. SELECT
  913. COUNT(DISTINCT sa.class_group_id_)
  914. FROM
  915. student_attendance sa
  916. WHERE sa.class_group_id_=#{classGroupId} AND sa.teacher_id_=#{userId}
  917. </select>
  918. <select id="countClassCourseNumByMusicGroup" resultType="java.util.Map">
  919. SELECT
  920. cg.id_ as 'key',
  921. COUNT(cs.id_) as 'value'
  922. FROM
  923. class_group cg
  924. LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
  925. WHERE music_group_id_ = #{musicGroupId}
  926. GROUP BY cg.id_
  927. </select>
  928. <select id="findCourseScheduleCurrentTimes" resultType="java.util.Map">
  929. SELECT
  930. course_schedule_id_ AS 'key',
  931. MAX(current_class_times_) AS 'value'
  932. FROM
  933. student_attendance sa
  934. WHERE sa.course_schedule_id_ IN
  935. <foreach collection="list" item="id" open="(" close=")" separator=",">
  936. #{id}
  937. </foreach>
  938. GROUP BY course_schedule_id_
  939. </select>
  940. <!-- 获取班级某时间后对应节数的课程 -->
  941. <select id="findCourseScheduleByClassGroupIdAndDate" resultMap="CourseSchedule">
  942. SELECT * FROM course_schedule WHERE class_group_id_=#{classGroupId} AND class_date_ >= #{startDate} ORDER BY class_date_ ASC LIMIT #{times}
  943. </select>
  944. <select id="queryTeacherCourseScheduleListByTimeRangeAndType" resultMap="CourseSchedule" parameterType="map">
  945. SELECT
  946. id_,
  947. class_group_id_,
  948. status_,
  949. subsidy_,
  950. class_date_,
  951. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  952. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  953. teacher_id_,
  954. actual_teacher_id_,
  955. create_time_,
  956. update_time_,
  957. teach_mode_,
  958. type_,
  959. name_,
  960. student_num_,
  961. leave_student_num_,
  962. schoole_id_
  963. FROM course_schedule WHERE teacher_id_=#{teacherId} and CONCAT( class_date_, ' ', start_class_time_ ) between #{startTime} and #{endTime}
  964. <if test="type != null">
  965. and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  966. </if>
  967. </select>
  968. <!-- 查找班级未开始的课程 -->
  969. <select id="findNoStartCoursesByClassGroupId" resultMap="CourseSchedule">
  970. SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId} AND status_ = 'NOT_START'
  971. </select>
  972. <resultMap id="CourseAttendanceDetailHeadInfoDto" type="com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto">
  973. <result property="courseScheduleId" column="course_schedule_id_"/>
  974. <result property="classGroupId" column="class_group_id_"/>
  975. <result property="classGroupName" column="class_group_name_"/>
  976. <result property="teacherId" column="user_id_"/>
  977. <result property="teacherName" column="username_"/>
  978. <result property="classDate" column="class_date_"/>
  979. <result property="startClassTime" column="start_class_time_"/>
  980. <result property="endClassTime" column="end_class_time_"/>
  981. <result property="studentNum" column="student_num_"/>
  982. <result property="leaveStudentNum" column="leave_student_num_"/>
  983. <result property="totalStudentNum" column="total_student_num_"/>
  984. </resultMap>
  985. <select id="findByCourse" resultMap="CourseAttendanceDetailHeadInfoDto">
  986. SELECT
  987. cs.id_ course_schedule_id_,
  988. cg.id_ class_group_id_,
  989. cg.name_ class_group_name_,
  990. csts.user_id_,
  991. su.username_,
  992. cs.student_num_,
  993. cg.student_num_ total_student_num_,
  994. cs.leave_student_num_,
  995. cs.class_date_,
  996. cs.start_class_time_,
  997. cs.end_class_time_
  998. FROM
  999. course_schedule cs
  1000. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
  1001. LEFT JOIN sys_user su ON csts.user_id_=su.id_
  1002. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  1003. WHERE cs.id_=#{courseScheduleId}
  1004. </select>
  1005. <select id="queryMusicGroupIds" resultType="java.lang.String">
  1006. SELECT DISTINCT spo.music_group_id_ FROM student_payment_order spo
  1007. WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS'
  1008. <include refid="global.limit"/>
  1009. </select>
  1010. <select id="countExistRepeatInDateZone" resultType="int">
  1011. SELECT
  1012. COUNT(csts.course_schedule_id_)
  1013. FROM
  1014. course_schedule_teacher_salary csts
  1015. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  1016. WHERE
  1017. csts.user_id_=#{teacherId}
  1018. AND cs.class_date_ = DATE_FORMAT( #{classDate}, '%Y-%m-%d' )
  1019. AND DATE_FORMAT( #{startTime}, '%H:%i:%S' ) &lt;= DATE_FORMAT( cs.end_class_time_, '%H:%i:%S' )
  1020. AND DATE_FORMAT( #{endTime}, '%H:%i:%S' ) &gt;= DATE_FORMAT( cs.start_class_time_, '%H:%i:%S' )
  1021. </select>
  1022. <select id="findByDateZone" resultMap="CourseSchedule">
  1023. SELECT
  1024. cs.id_,
  1025. cs.class_group_id_,
  1026. cs.status_,
  1027. cs.subsidy_,
  1028. cs.class_date_,
  1029. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1030. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1031. cs.teacher_id_,
  1032. cs.actual_teacher_id_,
  1033. cs.create_time_,
  1034. cs.update_time_,
  1035. cs.teach_mode_,
  1036. cs.type_,
  1037. cs.name_,
  1038. cs.student_num_,
  1039. cs.leave_student_num_,
  1040. cs.schoole_id_
  1041. FROM
  1042. course_schedule cs
  1043. WHERE cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d')
  1044. </select>
  1045. <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
  1046. select cssp.user_id_ key_,count(1) value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by cssp.user_id_
  1047. </select>
  1048. <select id="queryNotStartCourseScheduleIn90Mins" resultMap="Mapper">
  1049. select cssp.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 90 MINUTE) and cs.status_ = 'NOT_START'
  1050. </select>
  1051. <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
  1052. <result property="id" column="id_"/>
  1053. <collection property="ids" ofType="string" javaType="list">
  1054. <result column="relate_id"/>
  1055. </collection>
  1056. </resultMap>
  1057. <select id="findCourseScheduleIdAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
  1058. select
  1059. course_schedule_id_ id_,
  1060. user_id_ relate_ids
  1061. from course_schedule_teacher_salary
  1062. where course_schedule_id_ IN
  1063. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  1064. #{courseScheduleId}
  1065. </foreach>
  1066. </select>
  1067. </mapper>