CourseScheduleMapper.xml 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525
  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="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  11. <result column="music_group_id_" property="musicGroupId"/>
  12. <result column="class_group_id_" property="classGroupId"/>
  13. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  14. <result column="subsidy_" property="subsidy"/>
  15. <result column="class_date_" property="classDate"/>
  16. <result column="start_class_time_" property="startClassTime"/>
  17. <result column="end_class_time_" property="endClassTime"/>
  18. <result column="start_class_time_str_" property="startClassTimeStr"/>
  19. <result column="end_class_time_str_" property="endClassTimeStr"/>
  20. <result column="teacher_id_" property="teacherId"/>
  21. <result column="actual_teacher_id_" property="actualTeacherId"/>
  22. <result column="create_time_" property="createTime"/>
  23. <result column="update_time_" property="updateTime"/>
  24. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  25. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  26. <result column="name_" property="name"/>
  27. <result column="student_num_" property="studentNum"/>
  28. <result column="leave_student_num_" property="leaveStudentNum"/>
  29. <result column="schoole_id_" property="schoolId"/>
  30. <result column="schoole_name_" property="schoolName"/>
  31. <result column="class_group_name_" property="classGroupName"/>
  32. </resultMap>
  33. <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
  34. <result column="key_" property="key"/>
  35. <result column="value_" property="value"/>
  36. </resultMap>
  37. <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
  38. <result column="teacher_name_" property="teacherName"/>
  39. <result column="name_" property="classGroupName"/>
  40. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  41. <result column="school_name_" property="schoolName"/>
  42. <result column="sign_in_status_" property="signInStatus"/>
  43. <result column="sign_out_status_" property="signOutStatus"/>
  44. <result column="seal_class_id_" property="sealClassId"/>
  45. <result column="total_student_num_" property="totalStudentNum"/>
  46. <result column="teacher_role_" property="teacherRole" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  47. <result column="attendance_status_" property="attendanceStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  48. <result column="complaint_status_" property="complaintStatus"/>
  49. </resultMap>
  50. <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
  51. <result column="id_" property="id"/>
  52. <result column="course_schedule_id_" property="courseScheduleId"/>
  53. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  54. <result column="name_" property="courseName"/>
  55. <result column="class_date_" property="classDate"/>
  56. <result column="start_class_time_" property="startClassTime"/>
  57. <result column="end_class_time_" property="endClassTime"/>
  58. <result column="teacher_id_" property="teacherId"/>
  59. <result column="teacher_name_" property="teacherName"/>
  60. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  61. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  62. <result column="rest_of_class_" property="restOfClass"/>
  63. </resultMap>
  64. <resultMap type="com.ym.mec.biz.dal.entity.StudentAttendance" id="StudentAttendance">
  65. <result column="music_group_id_" property="musicGroupId"/>
  66. <result column="class_group_id_" property="classGroupId"/>
  67. <result column="group_type_" property="groupType"/>
  68. <result column="course_schedule_id_" property="courseScheduleId"/>
  69. <result column="user_id_" property="userId"/>
  70. <result column="teacher_id_" property="teacherId"/>
  71. <result column="current_class_times_" property="currentClassTimes"/>
  72. </resultMap>
  73. <!-- 根据主键查询一条记录 -->
  74. <select id="get" resultMap="CourseSchedule">
  75. SELECT
  76. id_,
  77. music_group_id_,
  78. group_type_,
  79. class_group_id_,
  80. status_,
  81. subsidy_,
  82. class_date_,
  83. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  84. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  85. teacher_id_,
  86. actual_teacher_id_,
  87. create_time_,
  88. update_time_,
  89. teach_mode_,
  90. type_,
  91. name_,
  92. student_num_,
  93. leave_student_num_,
  94. schoole_id_
  95. FROM course_schedule WHERE id_ = #{id}
  96. </select>
  97. <!-- 全查询 -->
  98. <select id="findAll" resultMap="CourseSchedule">
  99. SELECT *
  100. FROM course_schedule
  101. ORDER BY id_
  102. </select>
  103. <!-- 向数据库增加一条记录 -->
  104. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule" useGeneratedKeys="true" keyColumn="id"
  105. keyProperty="id">
  106. <!--
  107. <selectKey resultClass="int" keyProperty="id" >
  108. SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
  109. </selectKey>
  110. -->
  111. INSERT INTO course_schedule
  112. (id_,group_type_,music_group_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_)
  113. VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{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})
  114. </insert>
  115. <insert id="batchAddCourseSchedules" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
  116. keyProperty="id">
  117. INSERT INTO course_schedule
  118. (group_type_,music_group_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_)
  119. VALUE
  120. <foreach collection="list" item="course" separator=",">
  121. (#{course.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{course.musicGroupId},#{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})
  122. </foreach>
  123. </insert>
  124. <!-- 根据主键查询一条记录 -->
  125. <update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule">
  126. UPDATE course_schedule
  127. <set>
  128. <if test="classDate != null">
  129. class_date_ = #{classDate},
  130. </if>
  131. <if test="musicGroupId != null">
  132. music_group_id_ = #{musicGroupId},
  133. </if>
  134. <if test="endClassTime != null">
  135. end_class_time_ = #{endClassTime},
  136. </if>
  137. <if test="status != null">
  138. status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  139. </if>
  140. <if test="type != null">
  141. type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  142. </if>
  143. <if test="groupType != null">
  144. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  145. </if>
  146. <if test="actualTeacherId != null">
  147. actual_teacher_id_ = #{actualTeacherId},
  148. </if>
  149. <if test="subsidy != null">
  150. subsidy_ = #{subsidy},
  151. </if>
  152. <if test="classGroupId != null">
  153. class_group_id_ = #{classGroupId},
  154. </if>
  155. <if test="startClassTime != null">
  156. start_class_time_ = #{startClassTime},
  157. </if>
  158. <if test="teacherId != null">
  159. teacher_id_ = #{teacherId},
  160. </if>
  161. <if test="updateTime != null">
  162. update_time_ = NOW(),
  163. </if>
  164. <if test="studentNum != null">
  165. student_num_ = #{studentNum},
  166. </if>
  167. <if test="leaveStudentNum != null">
  168. leave_student_num_ = #{leaveStudentNum},
  169. </if>
  170. <if test="schoolId != null">
  171. schoole_id_ = #{schoolId},
  172. </if>
  173. </set>
  174. WHERE id_ = #{id}
  175. </update>
  176. <!-- 根据主键删除一条记录 -->
  177. <delete id="delete">
  178. DELETE FROM course_schedule WHERE id_ = #{id}
  179. </delete>
  180. <delete id="deleteCourseSchedulesByMusicGroupID">
  181. DELETE FROM course_schedule WHERE music_group_id_=#{musicGroupID} AND group_type_='MUSIC' and status_ = 'NOT_START'
  182. </delete>
  183. <update id="logicDeleteCourseSchedulesByMusicGroupID">
  184. update course_schedule set del_flag_ = '1' WHERE music_group_id_=#{musicGroupID} AND group_type_='MUSIC' and status_ = 'NOT_START'
  185. </update>
  186. <update id="resumeCourseScheduleByMusicGroupId">
  187. update course_schedule set del_flag_ = '0' WHERE music_group_id_=#{musicGroupID} AND group_type_='MUSIC' and status_ = 'NOT_START' and del_flag_ = '1'
  188. </update>
  189. <delete id="batchDeleteCourseSchedules">
  190. DELETE FROM course_schedule WHERE id_ IN
  191. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  192. #{courseScheduleId}
  193. </foreach>
  194. </delete>
  195. <!-- 分页查询 -->
  196. <select id="queryPage" resultMap="CourseSchedule" parameterType="map">
  197. SELECT * FROM course_schedule ORDER BY id_
  198. <include refid="global.limit"/>
  199. </select>
  200. <!-- 查询当前表的总记录数 -->
  201. <select id="queryCount" resultType="int">
  202. SELECT COUNT(*)
  203. FROM course_schedule
  204. </select>
  205. <resultMap type="com.ym.mec.biz.dal.dto.TeacherAttendanceDto" id="TeacherAttendanceViewUtilEntity">
  206. <result property="courseScheduleId" column="id_"/>
  207. <result property="courseScheduleName" column="course_schedule_name_"/>
  208. <result property="classDate" column="class_date_"/>
  209. <result property="startClassTime" column="start_class_time_"/>
  210. <result property="endClassTime" column="end_class_time_"/>
  211. <result property="courseStatus" column="course_status_"
  212. typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  213. <result property="classId" column="class_id"/>
  214. <result property="className" column="class_name"/>
  215. <result property="classType" column="class_type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  216. <result property="musicGroupId" column="music_group_id"/>
  217. <result property="musicGroupName" column="music_group_name"/>
  218. <result property="schoolId" column="school_id_"/>
  219. <result property="address" column="address_"/>
  220. <result property="longitudeAndLatitude" column="longitude_latitude_"/>
  221. <result property="teacherName" column="teacher_name_"/>
  222. <result property="signInTime" column="sign_in_time_"/>
  223. <result column="total_class_times_" property="totalClassTimes"/>
  224. <result column="current_class_times_" property="currentClassTimes"/>
  225. <result column="student_num_" property="studentNum"/>
  226. </resultMap>
  227. <select id="getCurrentCourseDetail"
  228. resultMap="TeacherAttendanceViewUtilEntity">
  229. SELECT
  230. cs.id_ ,
  231. cs.name_ course_schedule_name_,
  232. cs.class_date_,
  233. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  234. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  235. cs.status_ course_status_,
  236. cg.id_ class_id,
  237. cg.name_ class_name,
  238. cg.total_class_times_,
  239. cg.current_class_times_,
  240. cg.student_num_,
  241. cs.type_ class_type,
  242. mg.id_ music_group_id,
  243. mg.name_ music_group_name,
  244. s.id_ school_id_,
  245. s.address_,
  246. s.longitude_latitude_,
  247. su.username_ teacher_name_,
  248. ta.sign_in_time_
  249. FROM
  250. course_schedule cs
  251. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  252. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  253. LEFT JOIN school s ON cs.schoole_id_=s.id_
  254. LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
  255. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  256. WHERE cs.id_= #{courseID} AND ta.teacher_id_=#{teacherId}
  257. </select>
  258. <select id="getTeacherCourseByDateSpeed"
  259. resultMap="TeacherAttendanceViewUtilEntity">
  260. SELECT
  261. cs.id_ ,
  262. cs.name_ course_schedule_name_,
  263. cs.class_date_,
  264. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  265. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  266. cs.status_ course_status_,
  267. cg.id_ class_id,
  268. cg.name_ class_name,
  269. cs.type_ class_type,
  270. mg.id_ music_group_id,
  271. mg.name_ music_group_name,
  272. s.id_ school_id_,
  273. s.address_,
  274. s.longitude_latitude_,
  275. su.username_ teacher_name_,
  276. ta.sign_in_time_,
  277. cs.schoole_id_
  278. FROM
  279. course_schedule cs
  280. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  281. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  282. LEFT JOIN school s ON mg.school_id_=s.id_
  283. LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
  284. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  285. WHERE cs.actual_teacher_id_= #{teacherId}
  286. AND (cs.end_class_time_ BETWEEN #{startTime} AND #{endTime})
  287. ORDER BY cs.id_ DESC LIMIT 1
  288. </select>
  289. <resultMap id="studentAttendanceViewUtilEntity" type="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
  290. <result property="classGroupId" column="class_group_id_"/>
  291. <result property="studentId" column="student_id_"/>
  292. <result property="userName" column="username_"/>
  293. <result property="musicGroupId" column="music_group_id_"/>
  294. <result property="subjectId" column="subject_id_"/>
  295. <result property="subjectName" column="subject_name_"/>
  296. <result property="status" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  297. </resultMap>
  298. <select id="getCurrentCourseStudents" resultMap="studentAttendanceViewUtilEntity">
  299. SELECT
  300. cgsm.class_group_id_,
  301. su.id_ student_id_,
  302. su.username_,
  303. mg.id_ music_group_id_,
  304. s.id_ subject_id_,
  305. s.name_ subject_name_,
  306. cgsm.status_
  307. FROM
  308. class_group cg
  309. LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
  310. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  311. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  312. LEFT JOIN `subject` s ON cg.subject_id_=s.id_
  313. WHERE cgsm.class_group_id_=#{classID} AND cgsm.status_ != 'QUIT' AND cg.group_type_ = 'MUSIC'
  314. </select>
  315. <select id="countStudentInClass" resultType="java.lang.Integer">
  316. SELECT
  317. COUNT(class_group_id_)
  318. FROM
  319. class_group_student_mapper cgsm
  320. WHERE class_group_id_ IN
  321. <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
  322. #{item}
  323. </foreach>
  324. AND cgsm.status_ != 'QUIT'
  325. GROUP BY user_id_
  326. </select>
  327. <select id="findByCourseScheduleIds" resultMap="CourseSchedule">
  328. SELECT
  329. cs.id_,
  330. cs.music_group_id_,
  331. cs.group_type_,
  332. cs.class_group_id_,
  333. cs.status_,
  334. cs.subsidy_,
  335. cs.class_date_,
  336. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  337. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  338. cs.teacher_id_,
  339. csts.user_id_ actual_teacher_id_,
  340. cs.create_time_,
  341. cs.update_time_,
  342. cs.teach_mode_,
  343. cs.type_,
  344. cs.name_,
  345. cs.student_num_,
  346. cs.leave_student_num_,
  347. cs.schoole_id_
  348. FROM
  349. course_schedule cs
  350. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_= csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
  351. WHERE cs.id_ IN
  352. <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
  353. #{id}
  354. </foreach>
  355. ORDER BY csts.create_time_ DESC
  356. </select>
  357. <select id="findTeachingTeachers" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao.CourseScheduleTeacherSalary">
  358. SELECT
  359. csts.*
  360. FROM
  361. course_schedule_teacher_salary csts
  362. WHERE
  363. csts.teacher_role_ = 'TEACHING'
  364. AND csts.course_schedule_id_ IN
  365. <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
  366. #{id}
  367. </foreach>
  368. </select>
  369. <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
  370. SELECT
  371. cs.id_ seal_class_id_,
  372. cs.name_,
  373. cs.type_,
  374. cs.id_,
  375. cs.class_date_,
  376. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  377. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  378. cs.status_,
  379. cs.student_num_,
  380. cs.leave_student_num_,
  381. cg.student_num_ total_student_num_,
  382. su.username_ teacher_name_,
  383. ta.sign_in_status_ attendance_status_
  384. FROM
  385. music_group mg
  386. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  387. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  388. LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
  389. LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
  390. WHERE
  391. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  392. AND mg.organ_id_ = #{organId}
  393. AND cs.id_ IS NOT NULL AND cg.group_type_ = 'MUSIC'
  394. AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
  395. <include refid="global.limit"/>
  396. </select>
  397. <select id="countCourseSchedulesWithDate" resultType="int">
  398. SELECT
  399. count(*)
  400. FROM
  401. music_group mg
  402. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  403. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  404. WHERE
  405. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  406. AND mg.organ_id_ = #{organId}
  407. AND cs.id_ IS NOT NULL AND cg.group_type_ = 'MUSIC'
  408. AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
  409. </select>
  410. <select id="getStudentCourseSchedulesWithDate" resultMap="courseScheduleDto">
  411. SELECT
  412. cs.id_ seal_class_id_,
  413. cs.name_,
  414. cs.type_,
  415. cs.id_,
  416. cs.class_date_,
  417. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  418. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  419. cs.status_,
  420. su.username_ teacher_name_,
  421. IF(sa.status_ IS NULL,'NORMAL',sa.status_) attendance_status_,
  422. csc.id_ IS NOT NULL complaint_status_,
  423. cs.teach_mode_
  424. FROM
  425. course_schedule_student_payment cssp
  426. LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
  427. LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
  428. LEFT JOIN course_schedule_complaints csc ON csc.course_schedule_id_=cssp.course_schedule_id_ AND csc.user_id_=#{studentId}
  429. LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND sa.user_id_=#{studentId}
  430. WHERE
  431. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  432. AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
  433. AND cssp.user_id_ = #{studentId}
  434. <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
  435. AND cssp.class_group_id_ NOT IN
  436. <foreach collection="quitClassGroupIds" item="quitClassGroupId" open="(" close=")" separator=",">
  437. #{quitClassGroupId}
  438. </foreach>
  439. </if>
  440. ORDER BY start_class_time_
  441. </select>
  442. <select id="getTeacherCourseSchedulesWithDate" resultMap="courseScheduleDto">
  443. SELECT
  444. cs.id_ seal_class_id_,
  445. cg.name_,
  446. su.username_ teacher_name_,
  447. cs.type_,
  448. cs.id_,
  449. cs.class_group_id_,
  450. cs.class_date_,
  451. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  452. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  453. cs.status_,
  454. csts.user_id_ actual_teacher_id_,
  455. csts.teacher_role_,
  456. cs.schoole_id_,
  457. s.name_ school_name_,
  458. if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
  459. if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
  460. cs.teach_mode_
  461. FROM
  462. course_schedule_teacher_salary csts
  463. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  464. LEFT JOIN sys_user su ON csts.user_id_ = su.id_
  465. LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
  466. LEFT JOIN school s ON cs.schoole_id_ = s.id_
  467. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
  468. WHERE
  469. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  470. AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
  471. <if test="type!=null and type!=''">
  472. AND cs.type_=#{type}
  473. </if>
  474. AND csts.user_id_ = #{teacherId} AND cg.del_flag_ = 0
  475. ORDER BY start_class_time_
  476. </select>
  477. <select id="getCourseScheduleDateByMonth" resultType="java.util.Date">
  478. SELECT
  479. cs.class_date_
  480. FROM
  481. course_schedule cs
  482. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  483. WHERE DATE_FORMAT(cs.class_date_,'%Y%m')=DATE_FORMAT(#{month},'%Y%m')
  484. AND cg.music_group_id_=#{musicGroupID} AND cg.group_type_ = 'MUSIC'
  485. GROUP BY cs.class_date_
  486. </select>
  487. <select id="countTeacherCourseInOnDayRepeats" parameterType="com.ym.mec.biz.dal.entity.CourseSchedule"
  488. resultType="int">
  489. SELECT
  490. COUNT( * )
  491. FROM
  492. course_schedule cs
  493. WHERE
  494. cs.teacher_id_ = #{teacherId}
  495. AND cs.class_date_ = DATE_FORMAT( #{classDate}, '%Y-%m-%d' )
  496. AND (
  497. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_FORMAT( 'endClassTime', '%Y-%m-%d %H:%i:%s' )
  498. OR CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) &gt; DATE_FORMAT( 'startClassTime', '%Y-%m-%d %H:%i:%s' )
  499. )
  500. </select>
  501. <select id="findTeacherCoursesInDates" resultMap="CourseSchedule">
  502. SELECT
  503. id_,
  504. class_group_id_,
  505. status_,
  506. subsidy_,
  507. class_date_,
  508. concat(class_date_,' ',start_class_time_) start_class_time_,
  509. concat(class_date_,' ',end_class_time_) end_class_time_,
  510. teacher_id_,
  511. actual_teacher_id_,
  512. create_time_,
  513. update_time_
  514. FROM
  515. course_schedule cs
  516. WHERE
  517. cs.teacher_id_ = #{teacherId}
  518. AND cs.class_date_ IN
  519. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  520. #{date}
  521. </foreach>
  522. </select>
  523. <select id="findCoursesByDates" resultMap="CourseSchedule">
  524. SELECT
  525. *
  526. FROM
  527. course_schedule cs
  528. WHERE
  529. cs.class_date_ IN
  530. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  531. DATE_FORMAT(#{date},'%Y-%m-%d')
  532. </foreach>
  533. </select>
  534. <select id="findOverLapCoursesInDay" resultMap="CourseSchedule">
  535. SELECT
  536. cs.id_,
  537. cs.class_group_id_,
  538. cs.status_,
  539. cs.subsidy_,
  540. cs.class_date_,
  541. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  542. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  543. cs.teacher_id_,
  544. csts.user_id_ actual_teacher_id_,
  545. cs.create_time_,
  546. cs.update_time_,
  547. cs.teach_mode_,
  548. cs.type_,
  549. cs.name_,
  550. cs.student_num_,
  551. cs.leave_student_num_,
  552. cs.schoole_id_
  553. FROM
  554. course_schedule cs
  555. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  556. WHERE
  557. cs.class_date_ IN
  558. <foreach collection="dates" item="date" open="(" close=")" separator=",">
  559. DATE_FORMAT(#{date},'%Y-%m-%d')
  560. </foreach>
  561. AND (
  562. DATE_FORMAT(cs.start_class_time_,"%H:%i:%s") &gt; DATE_FORMAT(#{endClassTime}, '%H:%i:%s' )
  563. OR DATE_FORMAT(cs.end_class_time_,"%H:%i:%s") &lt; DATE_FORMAT( #{startClassTime}, '%H:%i:%s' )
  564. )=0
  565. </select>
  566. <select id="findCourseSchedulesByIds" resultMap="CourseSchedule">
  567. SELECT
  568. *
  569. FROM
  570. course_schedule cs
  571. WHERE
  572. cs.id_ IN
  573. <foreach collection="ids" item="id" open="(" close=")" separator=",">
  574. #{id}
  575. </foreach>
  576. </select>
  577. <!-- 获取班级未开始的课程 -->
  578. <select id="findClassGroupNoStartCourseSchedules" resultMap="CourseSchedule">
  579. SELECT * FROM course_schedule
  580. WHERE status_ = 'NOT_START'
  581. AND class_group_id_ IN
  582. <foreach collection="classGroupIds" item="classGroupId" index="index" open="(" close=")" separator=",">
  583. #{classGroupId}
  584. </foreach>
  585. <if test="groupType!= null ">
  586. AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  587. </if>
  588. </select>
  589. <select id="getStudentCourseScheduleDate" resultType="java.util.Date">
  590. SELECT
  591. cs.class_date_
  592. FROM
  593. course_schedule_student_payment cssp
  594. LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
  595. WHERE
  596. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  597. AND cssp.user_id_ = #{studentId}
  598. <if test="month==null">
  599. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  600. </if>
  601. <if test="month!=null">
  602. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  603. </if>
  604. <if test="isAttend!=null">
  605. AND cs.status_='NOT_START'
  606. </if>
  607. GROUP BY
  608. cs.class_date_
  609. </select>
  610. <select id="getTeacherCourseScheduleDate" resultType="java.util.Date">
  611. SELECT
  612. cs.class_date_
  613. FROM
  614. course_schedule_teacher_salary csts
  615. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  616. LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
  617. WHERE
  618. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  619. AND csts.user_id_ = #{teacherId}
  620. AND cg.del_flag_ = 0
  621. <if test="month==null">
  622. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  623. </if>
  624. <if test="month!=null">
  625. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  626. </if>
  627. <if test="type!=null and type!=''">
  628. AND cs.type_=#{type}
  629. </if>
  630. GROUP BY cs.class_date_
  631. </select>
  632. <select id="getCourseScheduleDate" resultType="java.util.Date">
  633. SELECT
  634. cs.class_date_
  635. FROM
  636. music_group mg
  637. LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
  638. LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
  639. WHERE
  640. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  641. AND mg.organ_id_ = #{organId} AND cs.id_ IS NOT NULL
  642. <if test="month==null">
  643. AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  644. </if>
  645. <if test="month!=null">
  646. AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
  647. </if>
  648. GROUP BY
  649. cs.class_date_
  650. </select>
  651. <select id="findClassSubjects" resultType="string">
  652. SELECT
  653. CONCAT(cg.id_,'-',IF(GROUP_CONCAT(s.name_) IS NULL,'',GROUP_CONCAT(s.name_)))
  654. FROM
  655. class_group cg
  656. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,cg.subject_id_list_)
  657. WHERE cg.id_ IN
  658. <foreach collection="list" item="id" open="(" close=")" separator=",">
  659. #{id}
  660. </foreach>
  661. GROUP BY cg.id_
  662. </select>
  663. <sql id="queryStudentCourseScheduleRecordCondition">
  664. <where>
  665. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  666. AND sa.user_id_=#{userId}
  667. AND cs.status_='OVER'
  668. <if test="teachMode!=null and teachMode!=''">
  669. AND cs.teach_mode_=#{teachMode}
  670. </if>
  671. <if test="type!=null and type!=''">
  672. AND cs.type_=#{type}
  673. </if>
  674. <if test="status!=null and status!=''">
  675. AND sa.status_=#{status}
  676. </if>
  677. </where>
  678. </sql>
  679. <select id="findStudentCourseScheduleRecords" resultMap="studentCourseScheduleRecord">
  680. SELECT
  681. sa.id_,
  682. sa.status_,
  683. sa.teacher_id_,
  684. su.username_,
  685. cs.id_ course_schedule_id_,
  686. cs.name_,
  687. cs.class_date_,
  688. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  689. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  690. cs.teacher_id_,
  691. cs.teach_mode_
  692. FROM
  693. student_attendance sa
  694. LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
  695. LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
  696. <include refid="queryStudentCourseScheduleRecordCondition"/>
  697. ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
  698. <include refid="global.limit"/>
  699. </select>
  700. <select id="countStudentCourseScheduleRecords" resultType="int">
  701. SELECT
  702. count(*)
  703. FROM
  704. student_attendance sa
  705. LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
  706. LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
  707. <include refid="queryStudentCourseScheduleRecordCondition"/>
  708. </select>
  709. <select id="findStudentCourseScheduleNotStartRecords" resultMap="studentCourseScheduleRecord">
  710. SELECT
  711. cs.teacher_id_,
  712. su.username_ teacher_name_,
  713. cs.id_ course_schedule_id_,
  714. cs.name_,
  715. cs.class_date_,
  716. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  717. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  718. cs.teach_mode_,
  719. (cg.total_class_times_-cg.current_class_times_) rest_of_class_
  720. FROM
  721. class_group_student_mapper cgsm
  722. LEFT JOIN course_schedule cs ON cs.class_group_id_=cgsm.class_group_id_
  723. LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
  724. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  725. WHERE
  726. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  727. AND cs.status_='NOT_START' AND cgsm.user_id_=#{userId}
  728. AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d') AND cgsm.status_ != 'QUIT'
  729. ORDER BY cs.class_date_,cs.start_class_time_
  730. </select>
  731. <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
  732. SELECT
  733. cs.*
  734. FROM
  735. class_group cg
  736. LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
  737. WHERE
  738. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  739. AND cg.music_group_id_=#{musicGroupId}
  740. </select>
  741. <select id="countClassTimes" resultType="int">
  742. SELECT
  743. COUNT( * )
  744. FROM
  745. course_schedule
  746. WHERE
  747. class_group_id_ = #{classGroupId}
  748. AND CONCAT( class_date_, ' ', end_class_time_ ) &lt;= #{startClassTime}
  749. </select>
  750. <select id="getCourseSchedules" resultMap="courseScheduleDto">
  751. SELECT
  752. cs.type_,
  753. cs.id_,
  754. cs.id_ seal_class_id_,
  755. cs.class_date_,
  756. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  757. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  758. cs.status_,
  759. sc.paran_value_
  760. FROM
  761. course_schedule cs
  762. LEFT JOIN sys_config sc ON sc.param_name_="vip_appeal_days_range"
  763. WHERE
  764. cs.id_=#{courseScheduleId}
  765. </select>
  766. <select id="findStudentNamesByCourseSchedule" resultType="string">
  767. SELECT
  768. su.username_
  769. FROM
  770. student_attendance sa
  771. LEFT JOIN sys_user su ON sa.user_id_=su.id_
  772. WHERE sa.course_schedule_id_=#{courseScheduleId} AND status_ = 'NORMAL'
  773. </select>
  774. <select id="findVipGroupCourseSchedules" resultMap="CourseSchedule">
  775. SELECT
  776. cs.id_,
  777. cs.group_type_,
  778. cs.music_group_id_,
  779. cs.class_group_id_,
  780. cs.status_,
  781. cs.subsidy_,
  782. cs.class_date_,
  783. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  784. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  785. cs.start_class_time_ start_class_time_str_,
  786. cs.end_class_time_ end_class_time_str_,
  787. cs.teacher_id_,
  788. cs.create_time_,
  789. cs.update_time_,
  790. cs.teach_mode_,
  791. cs.type_,
  792. cs.name_,
  793. cs.student_num_,
  794. cs.leave_student_num_,
  795. cs.schoole_id_,
  796. s.name_ schoole_name_
  797. FROM
  798. course_schedule cs
  799. LEFT JOIN school s ON cs.schoole_id_=s.id_
  800. WHERE
  801. cs.music_group_id_ =#{vipGroupId} AND cs.group_type_ = 'VIP'
  802. ORDER BY start_class_time_
  803. </select>
  804. <select id="findByClassGroupAndDate" resultMap="CourseSchedule">
  805. SELECT
  806. id_,
  807. class_group_id_,
  808. status_,
  809. subsidy_,
  810. class_date_,
  811. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  812. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  813. teacher_id_,
  814. actual_teacher_id_,
  815. create_time_,
  816. update_time_,
  817. type_,name_,
  818. teach_mode_
  819. FROM
  820. course_schedule
  821. <where>
  822. <if test="classGroupId!=null">
  823. AND class_group_id_ = #{classGroupId}
  824. </if>
  825. <if test="classDates!=null">
  826. AND class_date_ IN
  827. <foreach collection="classDates" item="classDate" open="(" close=")" separator=",">
  828. #{classDate}
  829. </foreach>
  830. </if>
  831. </where>
  832. </select>
  833. <select id="findClassTypeByCourse" resultType="string">
  834. SELECT
  835. cg.type_
  836. FROM
  837. course_schedule cs
  838. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  839. WHERE cs.id_=#{courseScheduleId}
  840. </select>
  841. <select id="queryVipGroupTeachereClassTimesByMonth" resultType="map" parameterType="map">
  842. SELECT vp.organ_id_ organ_id_,cs.actual_teacher_id_ teacher_id_,count(cs.id_) times,t.is_support_course_schedule_rewards_rules_ FROM course_schedule cs left join vip_group vp on cs.music_group_id_ = vp.id_ left join teacher t on cs.actual_teacher_id_ = t.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_
  843. </select>
  844. <select id="queryFinishedWithNoUpdateStatus" resultMap="CourseSchedule">
  845. select * from course_schedule where CONCAT(class_date_,' ',end_class_time_) &lt;= now() and status_ != 'OVER'
  846. </select>
  847. <update id="batchUpdate" parameterType="java.util.List">
  848. <foreach collection="list" item="item" index="index" open="" close="" separator=";">
  849. UPDATE course_schedule
  850. <set>
  851. <if test="item.classDate != null">
  852. class_date_ = #{item.classDate},
  853. </if>
  854. <if test="item.endClassTime != null">
  855. end_class_time_ = #{item.endClassTime},
  856. </if>
  857. <if test="item.status != null">
  858. status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  859. </if>
  860. <if test="item.type != null">
  861. type_ = #{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  862. </if>
  863. <if test="item.actualTeacherId != null">
  864. actual_teacher_id_ = #{item.actualTeacherId},
  865. </if>
  866. <if test="item.subsidy != null">
  867. subsidy_ = #{item.subsidy},
  868. </if>
  869. <if test="item.classGroupId != null">
  870. class_group_id_ = #{item.classGroupId},
  871. </if>
  872. <if test="item.startClassTime != null">
  873. start_class_time_ = #{item.startClassTime},
  874. </if>
  875. <if test="item.teacherId != null">
  876. teacher_id_ = #{item.teacherId},
  877. </if>
  878. <if test="item.updateTime != null">
  879. update_time_ = #{item.updateTime},
  880. </if>
  881. <if test="item.studentNum != null">
  882. student_num_ = #{item.studentNum},
  883. </if>
  884. <if test="item.leaveStudentNum != null">
  885. leave_student_num_ = #{item.leaveStudentNum},
  886. </if>
  887. <if test="item.schoolId != null">
  888. schoole_id_ = #{item.schoolId},
  889. </if>
  890. </set>
  891. WHERE id_ = #{item.id}
  892. </foreach>
  893. </update>
  894. <update id="updateByMusicGroupId">
  895. UPDATE course_schedule cs SET cs.schoole_id_ = #{schoolId}
  896. WHERE cs.class_group_id_ IN (SELECT cg.id_ FROM class_group cg WHERE cg.music_group_id_ = #{musicGroupId} AND cg.group_type_ = 'MUSIC' )
  897. </update>
  898. <update id="updateCourscheduleStatus">
  899. UPDATE course_schedule SET status_ = #{status}
  900. WHERE id_=#{courseScheduleId}
  901. </update>
  902. <select id="queryNoSignInListByBeforeMinutes" resultMap="CourseSchedule">
  903. 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()
  904. </select>
  905. <resultMap id="teacherClassCourseSchedule" type="com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto">
  906. <result property="classGroupId" column="class_group_id_"/>
  907. <result property="courseScheduleId" column="course_schedule_id_"/>
  908. <result property="courseScheduleName" column="course_schedule_name_"/>
  909. <result property="status" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  910. <result property="classDate" column="class_date_"/>
  911. <result property="startClassTime" column="start_class_time_"/>
  912. <result property="endClassTime" column="end_class_time_"/>
  913. <result property="actualTeacherId" column="actual_teacher_id_"/>
  914. <result property="actualTeacherName" column="username_"/>
  915. <result property="type" column="type_"/>
  916. <result property="studentNum" column="student_num_"/>
  917. <result property="leaveStudentNum" column="leave_student_num_"/>
  918. <result property="currentClassTimes" column="current_class_times_"/>
  919. <result property="totalClassTimes" column="total_class_times_"/>
  920. <result property="studentNames" column="student_names_"/>
  921. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  922. </resultMap>
  923. <sql id="teacherClassCourseScheduleQueryCondition">
  924. <where>
  925. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  926. AND cs.class_group_id_ = #{classGroupId}
  927. AND csts.user_id_ = #{userId}
  928. <if test="onlyHistory!=null and onlyHistory==1">
  929. AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ )&lt;now()
  930. </if>
  931. </where>
  932. </sql>
  933. <select id="queryTeacherClassCourseSchedule" resultMap="teacherClassCourseSchedule">
  934. SELECT
  935. cs.class_group_id_,
  936. cs.id_ course_schedule_id_,
  937. cs.class_date_,
  938. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) start_class_time_,
  939. CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
  940. cs.name_ course_schedule_name_,
  941. cs.student_num_,
  942. cs.leave_student_num_,
  943. cs.type_,
  944. cs.status_,
  945. cs.actual_teacher_id_,
  946. cs.teach_mode_,
  947. su.username_,
  948. cg.total_class_times_
  949. FROM
  950. course_schedule_teacher_salary csts
  951. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  952. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  953. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  954. <include refid="teacherClassCourseScheduleQueryCondition"/>
  955. ORDER BY start_class_time_
  956. <include refid="global.limit"/>
  957. </select>
  958. <select id="queryTeacherHistoryClassCourseSchedule" resultMap="teacherClassCourseSchedule">
  959. SELECT
  960. cs.class_group_id_,
  961. cs.id_ course_schedule_id_,
  962. cs.class_date_,
  963. CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) start_class_time_,
  964. CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
  965. cs.name_ course_schedule_name_,
  966. cs.student_num_,
  967. cs.leave_student_num_,
  968. cs.type_,
  969. cs.status_,
  970. cs.actual_teacher_id_,
  971. cs.teach_mode_,
  972. su.username_,
  973. cg.total_class_times_,
  974. GROUP_CONCAT(IF(sa.status_='NORMAL',ssu.username_,NULL)) student_names_,
  975. MAX(sa.current_class_times_) current_class_times_
  976. FROM
  977. student_attendance sa
  978. LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
  979. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  980. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  981. LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
  982. WHERE
  983. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  984. AND sa.class_group_id_=#{classGroupId} AND sa.teacher_id_=#{userId}
  985. GROUP BY sa.course_schedule_id_
  986. ORDER BY cs.id_
  987. <include refid="global.limit"/>
  988. </select>
  989. <select id="countTeacherClassCourseSchedule" resultType="int">
  990. SELECT
  991. COUNT(cs.id_)
  992. FROM
  993. course_schedule_teacher_salary csts
  994. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  995. <include refid="teacherClassCourseScheduleQueryCondition"/>
  996. </select>
  997. <select id="countTeacherHistoryClassCourseSchedule" resultType="int">
  998. SELECT
  999. COUNT(DISTINCT sa.class_group_id_)
  1000. FROM
  1001. student_attendance sa
  1002. LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
  1003. WHERE
  1004. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  1005. AND sa.class_group_id_=#{classGroupId} AND sa.teacher_id_=#{userId}
  1006. </select>
  1007. <select id="countClassCourseNumByMusicGroup" resultType="java.util.Map">
  1008. SELECT
  1009. cg.id_ as 'key',
  1010. COUNT(cs.id_) as 'value'
  1011. FROM
  1012. class_group cg
  1013. LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
  1014. WHERE
  1015. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  1016. AND music_group_id_ = #{musicGroupId}
  1017. GROUP BY cg.id_
  1018. </select>
  1019. <select id="findCourseScheduleCurrentTimes" resultType="java.util.Map">
  1020. SELECT
  1021. course_schedule_id_ AS 'key',
  1022. MAX(current_class_times_) AS 'value'
  1023. FROM
  1024. student_attendance sa
  1025. WHERE sa.course_schedule_id_ IN
  1026. <foreach collection="list" item="id" open="(" close=")" separator=",">
  1027. #{id}
  1028. </foreach>
  1029. GROUP BY course_schedule_id_
  1030. </select>
  1031. <!-- 获取班级某时间后对应节数的课程 -->
  1032. <select id="findCourseScheduleByClassGroupIdAndDate" resultMap="CourseSchedule">
  1033. SELECT * FROM course_schedule WHERE class_group_id_=#{classGroupId} AND class_date_ >= #{startDate} ORDER BY class_date_ ASC LIMIT #{times}
  1034. </select>
  1035. <select id="queryTeacherCourseScheduleListByTimeRangeAndType" resultMap="CourseSchedule" parameterType="map">
  1036. SELECT
  1037. id_,
  1038. class_group_id_,
  1039. status_,
  1040. subsidy_,
  1041. class_date_,
  1042. CONCAT(class_date_,' ',start_class_time_) start_class_time_,
  1043. CONCAT(class_date_,' ',end_class_time_) end_class_time_,
  1044. teacher_id_,
  1045. actual_teacher_id_,
  1046. create_time_,
  1047. update_time_,
  1048. teach_mode_,
  1049. type_,
  1050. name_,
  1051. student_num_,
  1052. leave_student_num_,
  1053. schoole_id_
  1054. FROM course_schedule WHERE teacher_id_=#{teacherId} and CONCAT( class_date_, ' ', start_class_time_ ) between #{startTime} and #{endTime}
  1055. <if test="type != null">
  1056. and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  1057. </if>
  1058. </select>
  1059. <!-- 查找班级未开始的课程 -->
  1060. <select id="findNoStartCoursesByClassGroupId" resultMap="CourseSchedule">
  1061. SELECT * FROM course_schedule WHERE class_group_id_ = #{classGroupId} AND status_ = 'NOT_START' AND group_type_ = 'MUSIC'
  1062. </select>
  1063. <resultMap id="CourseAttendanceDetailHeadInfoDto" type="com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto">
  1064. <result property="courseScheduleId" column="course_schedule_id_"/>
  1065. <result property="classGroupId" column="class_group_id_"/>
  1066. <result property="classGroupName" column="class_group_name_"/>
  1067. <result property="teacherId" column="user_id_"/>
  1068. <result property="teacherName" column="username_"/>
  1069. <result property="classDate" column="class_date_"/>
  1070. <result property="startClassTime" column="start_class_time_"/>
  1071. <result property="endClassTime" column="end_class_time_"/>
  1072. <result property="studentNum" column="student_num_"/>
  1073. <result property="leaveStudentNum" column="leave_student_num_"/>
  1074. <result property="totalStudentNum" column="total_student_num_"/>
  1075. </resultMap>
  1076. <select id="findByCourse" resultMap="CourseAttendanceDetailHeadInfoDto">
  1077. SELECT
  1078. cs.id_ course_schedule_id_,
  1079. cg.id_ class_group_id_,
  1080. cg.name_ class_group_name_,
  1081. csts.user_id_,
  1082. su.username_,
  1083. cs.student_num_,
  1084. cg.student_num_ total_student_num_,
  1085. cs.leave_student_num_,
  1086. cs.class_date_,
  1087. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1088. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_
  1089. FROM
  1090. course_schedule cs
  1091. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_ AND csts.teacher_role_='BISHOP'
  1092. LEFT JOIN sys_user su ON csts.user_id_=su.id_
  1093. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  1094. WHERE cs.id_=#{courseScheduleId}
  1095. </select>
  1096. <select id="queryMusicGroupIds" resultType="java.lang.String">
  1097. SELECT DISTINCT spo.music_group_id_ FROM student_payment_order spo
  1098. LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_ = cgsm.music_group_id_
  1099. WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
  1100. AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
  1101. <include refid="global.limit"/>
  1102. </select>
  1103. <select id="queryMusicGroupIdsWithoutOverGroup" resultType="java.lang.String">
  1104. SELECT DISTINCT spo.music_group_id_ FROM student_payment_order spo
  1105. LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_ = cgsm.music_group_id_
  1106. LEFT JOIN vip_group vg ON vg.id_=spo.music_group_id_ AND spo.group_type_='VIP'
  1107. WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
  1108. AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
  1109. AND IF(spo.group_type_ = 'VIP', (vg.status_ = 4 OR vg.status_ = 3),0)=0
  1110. <include refid="global.limit"/>
  1111. </select>
  1112. <select id="countExistRepeatInDateZone" resultType="int">
  1113. SELECT
  1114. COUNT(csts.course_schedule_id_)
  1115. FROM
  1116. course_schedule_teacher_salary csts
  1117. LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
  1118. WHERE
  1119. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  1120. AND csts.user_id_=#{teacherId}
  1121. AND cs.class_date_ = DATE_FORMAT( #{classDate}, '%Y-%m-%d' )
  1122. AND DATE_FORMAT( #{startTime}, '%H:%i:%S' ) &lt;= DATE_FORMAT( cs.end_class_time_, '%H:%i:%S' )
  1123. AND DATE_FORMAT( #{endTime}, '%H:%i:%S' ) &gt;= DATE_FORMAT( cs.start_class_time_, '%H:%i:%S' )
  1124. </select>
  1125. <select id="findByDateZone" resultMap="CourseSchedule">
  1126. SELECT
  1127. cs.id_,
  1128. cs.class_group_id_,
  1129. cs.status_,
  1130. cs.subsidy_,
  1131. cs.class_date_,
  1132. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1133. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1134. cs.teacher_id_,
  1135. cs.actual_teacher_id_,
  1136. cs.create_time_,
  1137. cs.update_time_,
  1138. cs.teach_mode_,
  1139. cs.type_,
  1140. cs.name_,
  1141. cs.student_num_,
  1142. cs.leave_student_num_,
  1143. cs.schoole_id_
  1144. FROM
  1145. course_schedule cs
  1146. WHERE (cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d'))
  1147. AND cs.status_='NOT_START'
  1148. </select>
  1149. <select id="findAllCourseByDateZone" resultMap="CourseSchedule">
  1150. SELECT
  1151. cs.id_,
  1152. cs.music_group_id_,
  1153. cs.group_type_,
  1154. cs.class_group_id_,
  1155. cs.status_,
  1156. cs.subsidy_,
  1157. cs.class_date_,
  1158. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1159. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1160. cs.teacher_id_,
  1161. cs.actual_teacher_id_,
  1162. cs.create_time_,
  1163. cs.update_time_,
  1164. cs.teach_mode_,
  1165. cs.type_,
  1166. cs.name_,
  1167. cs.student_num_,
  1168. cs.leave_student_num_,
  1169. cs.schoole_id_
  1170. FROM
  1171. course_schedule cs
  1172. WHERE (cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d'))
  1173. </select>
  1174. <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
  1175. 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_
  1176. </select>
  1177. <select id="queryStudentNotStartCourseScheduleIn90Mins" resultMap="Mapper">
  1178. 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 6 HOUR) and cs.status_ = 'NOT_START'
  1179. </select>
  1180. <select id="queryTeacherCoursesTimesOfTomorrow" resultMap="Mapper">
  1181. select cssp.user_id_ key_,u.real_name_ value_ from course_schedule cs right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_ left join sys_user u on u.id_ = cssp.user_id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by cssp.user_id_
  1182. </select>
  1183. <select id="queryTeacherNotStartCourseScheduleIn30Mins" resultMap="Mapper">
  1184. select cssp.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 30 MINUTE) and cs.status_ = 'NOT_START'
  1185. </select>
  1186. <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
  1187. <result property="id" column="id_"/>
  1188. <collection property="ids" ofType="int" javaType="list">
  1189. <result column="relate_ids"/>
  1190. </collection>
  1191. </resultMap>
  1192. <select id="findCourseScheduleIdAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
  1193. select
  1194. course_schedule_id_ id_,
  1195. user_id_ relate_ids
  1196. from course_schedule_teacher_salary
  1197. where 1=1
  1198. <if test="teacherRole!=null and teacherRole!=''">
  1199. AND teacher_role_=#{teacherRole}
  1200. </if>
  1201. AND course_schedule_id_ IN
  1202. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  1203. #{courseScheduleId}
  1204. </foreach>
  1205. </select>
  1206. <select id="findClassGroupAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
  1207. SELECT
  1208. class_group_id_ id_,
  1209. user_id_ relate_ids
  1210. FROM
  1211. class_group_teacher_mapper
  1212. WHERE 1=1
  1213. <if test="teacherRole!=null and teacherRole!=''">
  1214. AND teacher_role_=#{teacherRole}
  1215. </if>
  1216. AND class_group_id_ IN
  1217. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  1218. #{classGroupId}
  1219. </foreach>
  1220. </select>
  1221. <select id="findCourseScheduleWithDate" resultMap="CourseSchedule">
  1222. SELECT
  1223. cs.id_,
  1224. cs.class_group_id_,
  1225. cs.status_,
  1226. cs.subsidy_,
  1227. cs.class_date_,
  1228. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1229. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1230. cs.teacher_id_,
  1231. cs.actual_teacher_id_,
  1232. cs.create_time_,
  1233. cs.update_time_,
  1234. cs.teach_mode_,
  1235. cs.type_,
  1236. cs.name_,
  1237. cs.student_num_,
  1238. cs.leave_student_num_,
  1239. cs.schoole_id_
  1240. FROM
  1241. course_schedule cs
  1242. WHERE cs.class_date_=DATE_FORMAT(#{date},'%Y-%m-%d')
  1243. AND cs.group_type_='MUSIC'
  1244. </select>
  1245. <select id="findByClassGroup" resultMap="CourseSchedule">
  1246. select
  1247. cs.id_,
  1248. cs.class_group_id_,
  1249. cs.status_,
  1250. cs.subsidy_,
  1251. cs.class_date_,
  1252. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1253. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1254. cs.start_class_time_ start_class_time_str_,
  1255. cs.end_class_time_ end_class_time_str_,
  1256. cs.teacher_id_,
  1257. csts.user_id_ actual_teacher_id_,
  1258. cs.create_time_,
  1259. cs.update_time_,
  1260. cs.teach_mode_,
  1261. cs.type_,
  1262. cs.name_,
  1263. cs.student_num_,
  1264. cs.leave_student_num_,
  1265. cs.schoole_id_
  1266. from course_schedule cs
  1267. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  1268. where cs.class_group_id_=#{classGroupId}
  1269. </select>
  1270. <select id="findByClassGroupAndStatus" resultMap="CourseSchedule">
  1271. select
  1272. cs.id_,
  1273. cs.group_type_,
  1274. cs.music_group_id_,
  1275. cs.class_group_id_,
  1276. cs.status_,
  1277. cs.subsidy_,
  1278. cs.class_date_,
  1279. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1280. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1281. cs.start_class_time_ start_class_time_str_,
  1282. cs.end_class_time_ end_class_time_str_,
  1283. cs.teacher_id_,
  1284. csts.user_id_ actual_teacher_id_,
  1285. cs.create_time_,
  1286. cs.update_time_,
  1287. cs.teach_mode_,
  1288. cs.type_,
  1289. cs.name_,
  1290. cs.student_num_,
  1291. cs.leave_student_num_,
  1292. cs.schoole_id_
  1293. from course_schedule cs
  1294. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  1295. where cs.class_group_id_=#{classGroupId} AND cs.status_=#{status}
  1296. </select>
  1297. <select id="findByClassGroups" resultMap="CourseSchedule">
  1298. select
  1299. cs.id_,
  1300. cs.class_group_id_,
  1301. cs.status_,
  1302. cs.subsidy_,
  1303. cs.class_date_,
  1304. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1305. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1306. cs.start_class_time_ start_class_time_str_,
  1307. cs.end_class_time_ end_class_time_str_,
  1308. cs.teacher_id_,
  1309. cs.actual_teacher_id_,
  1310. cs.create_time_,
  1311. cs.update_time_,
  1312. cs.teach_mode_,
  1313. cs.type_,
  1314. cs.name_,
  1315. cs.student_num_,
  1316. cs.leave_student_num_,
  1317. cs.schoole_id_,
  1318. cg.name_ class_group_name_
  1319. from course_schedule cs
  1320. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  1321. where cs.class_group_id_ IN
  1322. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  1323. #{classGroupId}
  1324. </foreach>
  1325. ORDER BY start_class_time_
  1326. </select>
  1327. <select id="findStudentMap" resultType="java.util.Map">
  1328. SELECT cs.user_id_ 'key',cs.user_id_ 'value' FROM course_schedule_student_payment cs
  1329. WHERE cs.course_schedule_id_ = #{courseScheduleId}
  1330. GROUP BY user_id_
  1331. </select>
  1332. <select id="findAllCourseSches" resultMap="CourseSchedule">
  1333. select
  1334. cs.id_,
  1335. cs.class_group_id_,
  1336. cs.status_,
  1337. cs.subsidy_,
  1338. cs.class_date_,
  1339. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1340. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1341. cs.start_class_time_ start_class_time_str_,
  1342. cs.end_class_time_ end_class_time_str_,
  1343. cs.teacher_id_,
  1344. cs.actual_teacher_id_,
  1345. cs.create_time_,
  1346. cs.update_time_,
  1347. cs.teach_mode_,
  1348. cs.type_,
  1349. cs.name_,
  1350. cs.student_num_,
  1351. cs.leave_student_num_,
  1352. cs.schoole_id_
  1353. from course_schedule cs
  1354. </select>
  1355. <select id="findOneCourseScheduleByClassGroupId" resultMap="CourseSchedule">
  1356. SELECT * FROM course_schedule WHERE class_group_id_=#{classGroupId} LIMIT 1
  1357. </select>
  1358. <select id="countClassGroupCourseTimes" resultType="map">
  1359. SELECT
  1360. class_group_id_ AS 'key',
  1361. COUNT(id_) AS 'value'
  1362. FROM
  1363. course_schedule
  1364. <where>
  1365. <if test="classGroupIds!=null">
  1366. class_group_id_ IN
  1367. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  1368. #{classGroupId}
  1369. </foreach>
  1370. </if>
  1371. </where>
  1372. GROUP BY class_group_id_
  1373. </select>
  1374. <select id="findMusicGroupCourseSchedules" resultMap="CourseSchedule">
  1375. SELECT
  1376. cs.*
  1377. FROM
  1378. course_schedule cs
  1379. LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
  1380. WHERE
  1381. cg.music_group_id_=#{musicGroupId}
  1382. AND cs.group_type_=#{groupType}
  1383. AND status_ = #{status}
  1384. AND cs.type_!='HIGH'
  1385. </select>
  1386. <select id="findMusicGroupCourseSchedulesWithStudent" resultMap="CourseSchedule">
  1387. SELECT
  1388. cs.*
  1389. FROM
  1390. course_schedule_student_payment cssp
  1391. LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
  1392. WHERE
  1393. (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
  1394. AND cssp.music_group_id_=#{musicGroupId}
  1395. AND cssp.group_type_=#{groupType}
  1396. AND cs.status_ = #{status}
  1397. AND cssp.user_id_ = #{userId}
  1398. </select>
  1399. <delete id="deleteMusicGroupCourseSchedulesWithStudent">
  1400. DELETE
  1401. FROM
  1402. course_schedule_student_payment
  1403. WHERE user_id_ =#{userId} AND course_schedule_id_ IN
  1404. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  1405. #{courseScheduleId}
  1406. </foreach>
  1407. </delete>
  1408. <delete id="deleteCourseSchedulesByClassGroupIds">
  1409. DELETE FROM course_schedule WHERE id_ IN
  1410. <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
  1411. #{courseScheduleId}
  1412. </foreach>
  1413. </delete>
  1414. <select id="queryUnsignedStudentList" resultMap="StudentAttendance">
  1415. SELECT a.*,cg.current_class_times_,sa.id_ FROM (SELECT cgsm.user_id_,cs.actual_teacher_id_ teacher_id_,
  1416. cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_
  1417. FROM class_group_student_mapper cgsm
  1418. right JOIN course_schedule cs ON cgsm.class_group_id_ = cs.class_group_id_
  1419. WHERE cgsm.status_ = 'NORMAL' AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now()) a
  1420. LEFT JOIN class_group cg ON a.class_group_id_ = cg.id_
  1421. LEFT JOIN student_attendance sa ON sa.user_id_ = a.user_id_ AND a.teacher_id_ = sa.teacher_id_
  1422. AND sa.class_group_id_ = a.class_group_id_ AND sa.course_schedule_id_ = a.course_schedule_id_
  1423. WHERE sa.id_ IS NULL
  1424. </select>
  1425. <select id="getNextCourseSchedule" resultMap="CourseSchedule">
  1426. SELECT
  1427. cs.id_,
  1428. cs.class_group_id_,
  1429. cs.status_,
  1430. cs.subsidy_,
  1431. cs.class_date_,
  1432. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  1433. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  1434. cs.start_class_time_ start_class_time_str_,
  1435. cs.end_class_time_ end_class_time_str_,
  1436. cs.teacher_id_,
  1437. cs.actual_teacher_id_,
  1438. cs.create_time_,
  1439. cs.update_time_,
  1440. cs.teach_mode_,
  1441. cs.type_,
  1442. cs.name_,
  1443. cs.student_num_,
  1444. cs.leave_student_num_,
  1445. cs.schoole_id_
  1446. FROM
  1447. course_schedule cs
  1448. WHERE
  1449. cs.class_group_id_=#{classGroupId}
  1450. AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &gt; NOW()
  1451. ORDER BY CONCAT( cs.class_date_, ' ', cs.start_class_time_ )
  1452. LIMIT 1
  1453. </select>
  1454. <select id="countCurrentTimes" resultType="int">
  1455. SELECT COUNT(*) FROM course_schedule WHERE class_group_id_=#{classGroupId} AND CONCAT(class_date_,' ',end_class_time_)&lt;#{currentCourseDate}
  1456. </select>
  1457. </mapper>