CourseScheduleMapper.xml 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149
  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="queryStudentNotStartCourseScheduleIn90Mins" 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. <select id="queryTeacherCoursesTimesOfTomorrow" resultMap="Mapper">
  1052. select csts.user_id_ key_,u.real_name_ value_ from course_schedule cs right join course_schedule_teacher_salary csts on cs.id_ = csts.course_schedule_id_ left join sys_user u on csts.user_id_ = u.id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by csts.user_id_
  1053. </select>
  1054. <select id="queryTeacherNotStartCourseScheduleIn30Mins" resultMap="Mapper">
  1055. select csts.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_teacher_salary csts on cs.id_ = csts.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 30 MINUTE) and cs.status_ = 'NOT_START'
  1056. </select>
  1057. <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
  1058. <result property="id" column="id_"/>
  1059. <collection property="ids" ofType="string" javaType="list">
  1060. <result column="relate_id"/>
  1061. </collection>
  1062. </resultMap>
  1063. <select id="findCourseScheduleIdAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
  1064. select
  1065. course_schedule_id_ id_,
  1066. user_id_ relate_ids
  1067. from course_schedule_teacher_salary
  1068. where course_schedule_id_ IN
  1069. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  1070. #{courseScheduleId}
  1071. </foreach>
  1072. </select>
  1073. <select id="findClassGroupAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
  1074. SELECT
  1075. class_group_id_ id_,
  1076. user_id_ relate_ids
  1077. FROM
  1078. class_group_teacher_mapper
  1079. WHERE class_group_id_ IN
  1080. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  1081. #{classGroupId}
  1082. </foreach>
  1083. </select>
  1084. <select id="findCourseScheduleWithDate" resultMap="CourseSchedule">
  1085. SELECT
  1086. cs.*
  1087. FROM
  1088. course_schedule cs
  1089. WHERE cs.class_date_=DATE_FORMAT(#{date},'%Y-%m-%d %H:%i:%s')
  1090. </select>
  1091. </mapper>