CourseScheduleMapper.xml 57 KB

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