StudentExtracurricularExercisesSituationMapper.xml 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  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.StudentExtracurricularExercisesSituationDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
  9. id="StudentExtracurricularExercisesSituation">
  10. <result column="id_" property="id"/>
  11. <result column="student_id_" property="studentId"/>
  12. <result column="week_of_year_" property="weekOfYear"/>
  13. <result column="monday_" property="monday"/>
  14. <result column="sunday_" property="sunday"/>
  15. <result column="teacher_id_" property="teacherId"/>
  16. <result column="expect_exercises_num_" property="expectExercisesNum"/>
  17. <result column="actual_exercises_num_" property="actualExercisesNum"/>
  18. <result column="exercises_reply_num_" property="exercisesReplyNum"/>
  19. <result column="exercises_message_num_" property="exercisesMessageNum"/>
  20. <result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum"/>
  21. <result column="create_time_" property="createTime"/>
  22. <result column="update_time_" property="updateTime"/>
  23. <result column="last_submit_time_" property="lastSubmitTime"/>
  24. <result column="serve_type_" property="serveType"/>
  25. <result column="course_ids_" property="courseIds"/>
  26. <result column="not_over_course_ids_" property="notOverCourseIds"/>
  27. <result column="not_over_course_num_" property="notOverCourseNum"/>
  28. <result column="tenant_id_" property="tenantId"/>
  29. </resultMap>
  30. <resultMap id="StudentExercisesSituationDto" type="com.ym.mec.biz.dal.dto.StudentExercisesSituationDto"
  31. extends="StudentExtracurricularExercisesSituation">
  32. <result column="student_name_" property="studentName"/>
  33. <result column="teacher_name_" property="teacherName"/>
  34. <result column="organ_name_" property="organName"/>
  35. <result column="exist_vip_course_" property="existVipCourse"/>
  36. </resultMap>
  37. <!-- 根据主键查询一条记录 -->
  38. <select id="get" resultMap="StudentExtracurricularExercisesSituation">
  39. SELECT *
  40. FROM student_extracurricular_exercises_situation_
  41. WHERE id_ = #{id}
  42. </select>
  43. <!-- 全查询 -->
  44. <select id="findAll" resultMap="StudentExtracurricularExercisesSituation">
  45. SELECT *
  46. FROM student_extracurricular_exercises_situation_
  47. where tenant_id_ = #{tenantId}
  48. ORDER BY id_
  49. </select>
  50. <!-- 向数据库增加一条记录 -->
  51. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
  52. useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  53. <!--
  54. <selectKey resultClass="int" keyProperty="id" >
  55. SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
  56. </selectKey>
  57. -->
  58. INSERT INTO student_extracurricular_exercises_situation_
  59. (id_,student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
  60. actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
  61. exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
  62. serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
  63. VALUES(#{id},#{studentId},#{weekOfYear},#{monday},#{sunday},#{teacherId},#{expectExercisesNum},#{actualExercisesNum},#{exercisesReplyNum},
  64. #{exercisesMessageNum},#{exercisesMessageTimelyNum},NOW(),NOW(),#{lastSubmitTime},#{serveType},#{courseIds},#{notOverCourseIds},#{notOverCourseNum},#{tenantId})
  65. </insert>
  66. <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation"
  67. useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  68. INSERT INTO student_extracurricular_exercises_situation_
  69. (student_id_,week_of_year_,monday_,sunday_,teacher_id_,expect_exercises_num_,
  70. actual_exercises_num_,exercises_reply_num_,exercises_message_num_,
  71. exercises_message_timely_num_,create_time_,update_time_,last_submit_time_,
  72. serve_type_,course_ids_,not_over_course_ids_,not_over_course_num_,tenant_id_)
  73. VALUES
  74. <foreach collection="situations" item="situation" separator=",">
  75. (#{situation.studentId},#{situation.weekOfYear},#{situation.monday},#{situation.sunday},#{situation.teacherId},#{situation.expectExercisesNum},
  76. #{situation.actualExercisesNum},#{situation.exercisesReplyNum},#{situation.exercisesMessageNum},#{situation.exercisesMessageTimelyNum},
  77. NOW(),NOW(),#{situation.lastSubmitTime},#{situation.serveType},#{situation.courseIds},#{situation.notOverCourseIds},#{situation.notOverCourseNum},#{situation.tenantId})
  78. </foreach>
  79. </insert>
  80. <!-- 根据主键查询一条记录 -->
  81. <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
  82. UPDATE student_extracurricular_exercises_situation_
  83. <set>
  84. <if test="exercisesReplyNum != null">
  85. exercises_reply_num_ = #{exercisesReplyNum},
  86. </if>
  87. <if test="monday != null">
  88. monday_ = #{monday},
  89. </if>
  90. <if test="id != null">
  91. id_ = #{id},
  92. </if>
  93. <if test="weekOfYear != null">
  94. week_of_year_ = #{weekOfYear},
  95. </if>
  96. <if test="exercisesMessageNum != null">
  97. exercises_message_num_ = #{exercisesMessageNum},
  98. </if>
  99. <if test="createTime != null">
  100. create_time_ = #{createTime},
  101. </if>
  102. <if test="teacherId != null">
  103. teacher_id_ = #{teacherId},
  104. </if>
  105. <if test="actualExercisesNum != null">
  106. actual_exercises_num_ = #{actualExercisesNum},
  107. </if>
  108. <if test="exercisesMessageTimelyNum != null">
  109. exercises_message_timely_num_ = #{exercisesMessageTimelyNum},
  110. </if>
  111. <if test="studentId != null">
  112. student_id_ = #{studentId},
  113. </if>
  114. <if test="expectExercisesNum != null">
  115. expect_exercises_num_ = #{expectExercisesNum},
  116. </if>
  117. <if test="sunday != null">
  118. sunday_ = #{sunday},
  119. </if>
  120. <if test="lastSubmitTime!=null">
  121. last_submit_time_=#{lastSubmitTime},
  122. </if>
  123. <if test="serveType!=null">
  124. serve_type_=#{serveType},
  125. </if>
  126. <if test="courseIds!=null and courseIds!=''">
  127. course_ids_=#{courseIds},
  128. </if>
  129. <if test="notOverCourseIds!=null and notOverCourseIds!=''">
  130. not_over_course_ids_=#{notOverCourseIds},
  131. </if>
  132. <if test="notOverCourseNum!=null">
  133. not_over_course_num_=#{notOverCourseNum},
  134. </if>
  135. update_time_ = #{updateTime}
  136. </set>
  137. WHERE id_ = #{id} and tenant_id_ = #{tenantId}
  138. </update>
  139. <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
  140. <foreach collection="situations" item="situation" separator=";">
  141. UPDATE student_extracurricular_exercises_situation_
  142. <set>
  143. <if test="situation.exercisesReplyNum != null">
  144. exercises_reply_num_ = #{situation.exercisesReplyNum},
  145. </if>
  146. <if test="situation.monday != null">
  147. monday_ = #{situation.monday},
  148. </if>
  149. <if test="situation.weekOfYear != null">
  150. week_of_year_ = #{situation.weekOfYear},
  151. </if>
  152. <if test="situation.exercisesMessageNum != null">
  153. exercises_message_num_ = #{situation.exercisesMessageNum},
  154. </if>
  155. <if test="situation.teacherId != null">
  156. teacher_id_ = #{situation.teacherId},
  157. </if>
  158. <if test="situation.actualExercisesNum != null">
  159. actual_exercises_num_ = #{situation.actualExercisesNum},
  160. </if>
  161. <if test="situation.exercisesMessageTimelyNum != null">
  162. exercises_message_timely_num_ = #{situation.exercisesMessageTimelyNum},
  163. </if>
  164. <if test="situation.studentId != null">
  165. student_id_ = #{situation.studentId},
  166. </if>
  167. <if test="situation.expectExercisesNum != null">
  168. expect_exercises_num_ = #{situation.expectExercisesNum},
  169. </if>
  170. <if test="situation.sunday != null">
  171. sunday_ = #{situation.sunday},
  172. </if>
  173. <if test="situation.lastSubmitTime!=null">
  174. last_submit_time_=#{situation.lastSubmitTime},
  175. </if>
  176. <if test="situation.serveType!=null">
  177. serve_type_=#{situation.serveType},
  178. </if>
  179. <if test="situation.courseIds!=null">
  180. course_ids_=#{situation.courseIds},
  181. </if>
  182. <if test="situation.notOverCourseIds!=null and situation.notOverCourseIds!=''">
  183. not_over_course_ids_=#{situation.notOverCourseIds},
  184. </if>
  185. <if test="situation.notOverCourseNum!=null">
  186. not_over_course_num_=#{situation.notOverCourseNum},
  187. </if>
  188. update_time_ = NOW()
  189. </set>
  190. WHERE id_ = #{situation.id} and tenant_id_ = #{situation.tenantId}
  191. </foreach>
  192. </update>
  193. <!-- 根据主键删除一条记录 -->
  194. <delete id="delete">
  195. DELETE
  196. FROM student_extracurricular_exercises_situation_
  197. WHERE id_ = #{id}
  198. </delete>
  199. <delete id="deleteByMonday">
  200. DELETE FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
  201. <if test="studentIds!=null and studentIds.size()>0">
  202. AND student_id_ IN
  203. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  204. #{studentId}
  205. </foreach>
  206. </if>
  207. </delete>
  208. <select id="selectByMonday" resultMap="StudentExtracurricularExercisesSituation">
  209. SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE monday_ = #{monday}
  210. <if test="studentIds!=null and studentIds.size()>0">
  211. AND student_id_ IN
  212. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  213. #{studentId}
  214. </foreach>
  215. </if>
  216. </select>
  217. <delete id="deleteByStudent">
  218. DELETE FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
  219. <if test="monday!=null and monday!=''">
  220. AND monday_=#{monday}
  221. </if>
  222. </delete>
  223. <delete id="batchDelete">
  224. DELETE FROM student_extracurricular_exercises_situation_ WHERE id_ IN
  225. <foreach collection="situationIds" item="id" open="(" close=")" separator=",">
  226. #{id}
  227. </foreach>
  228. </delete>
  229. <select id="selectByStudent" resultMap="StudentExtracurricularExercisesSituation">
  230. SELECT id_,course_ids_ FROM student_extracurricular_exercises_situation_ WHERE student_id_ = #{studentId}
  231. <if test="monday!=null and monday!=''">
  232. AND monday_=#{monday}
  233. </if>
  234. </select>
  235. <!-- 分页查询 -->
  236. <select id="queryPage" resultMap="StudentExtracurricularExercisesSituation" parameterType="map">
  237. SELECT * FROM student_extracurricular_exercises_situation_ where tenant_id_ = #{tenantId} ORDER BY id_
  238. <include refid="global.limit"/>
  239. </select>
  240. <!-- 查询当前表的总记录数 -->
  241. <select id="queryCount" resultType="int">
  242. SELECT COUNT(*)
  243. FROM student_extracurricular_exercises_situation_
  244. where tenant_id_ = #{tenantId}
  245. </select>
  246. <select id="findExercisesSituations" resultMap="StudentExercisesSituationDto">
  247. SELECT
  248. sees.id_ id_,
  249. student_id_,
  250. stu.username_ student_name_,
  251. tea.real_name_ teacher_name_,
  252. o.name_ organ_name_,
  253. sees.monday_,
  254. sees.sunday_,
  255. sees.serve_type_,
  256. sees.course_ids_,
  257. expect_exercises_num_ expect_exercises_num_,
  258. actual_exercises_num_ actual_exercises_num_,
  259. <if test="submitStartDate==null or submitEndDate==null">
  260. exercises_reply_num_ exercises_reply_num_,
  261. exercises_message_num_ exercises_message_num_,
  262. exercises_message_timely_num_ exercises_message_timely_num_,
  263. last_submit_time_ last_submit_time_
  264. </if>
  265. <if test="submitStartDate!=null and submitEndDate!=null">
  266. IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  267. #{submitEndDate},exercises_reply_num_,0) exercises_reply_num_,
  268. IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  269. #{submitEndDate},exercises_message_num_,0) exercises_message_num_,
  270. IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  271. #{submitEndDate},exercises_message_timely_num_,0) exercises_message_timely_num_,
  272. IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  273. #{submitEndDate},last_submit_time_, NULL) last_submit_time_
  274. </if>
  275. FROM
  276. student_extracurricular_exercises_situation_ sees
  277. LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
  278. LEFT JOIN teacher t ON t.id_=sees.teacher_id_
  279. LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
  280. LEFT JOIN organization o ON stu.organ_id_=o.id_
  281. WHERE
  282. sees.monday_ &gt;= #{monday}
  283. AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
  284. <if test="teacherId!=null">
  285. AND sees.teacher_id_ = #{teacherId}
  286. </if>
  287. <if test="search!=null">
  288. AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
  289. </if>
  290. <if test="organId != null and organId != ''">
  291. AND FIND_IN_SET(t.organ_id_,#{organId})
  292. </if>
  293. <if test="existVipCourse!=null and existVipCourse==1">
  294. AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  295. cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
  296. class_date_ BETWEEN #{monday} AND #{sunday})
  297. </if>
  298. <if test="existVipCourse!=null and existVipCourse==0">
  299. AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  300. cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
  301. class_date_ BETWEEN #{monday} AND #{sunday})
  302. </if>
  303. <if test="existPracticeCourse!=null and existPracticeCourse==1">
  304. AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  305. cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
  306. cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
  307. #{monday} AND #{sunday})
  308. </if>
  309. <if test="existPracticeCourse!=null and existPracticeCourse==0">
  310. AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  311. cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
  312. cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
  313. #{monday} AND #{sunday})
  314. </if>
  315. <if test="expectExercisesNum!=null">
  316. AND expect_exercises_num_ = #{expectExercisesNum}
  317. </if>
  318. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
  319. AND actual_exercises_num_ &lt; expect_exercises_num_
  320. </if>
  321. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
  322. AND actual_exercises_num_ &gt;= expect_exercises_num_
  323. </if>
  324. <if test="submitStartDate==null or submitEndDate==null">
  325. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  326. AND exercises_reply_num_ &lt; actual_exercises_num_
  327. </if>
  328. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  329. AND exercises_reply_num_ &gt;= actual_exercises_num_
  330. </if>
  331. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  332. AND exercises_message_num_ &lt; exercises_reply_num_
  333. </if>
  334. <if test="serviceIsError!=null and serviceIsError">
  335. AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt;
  336. exercises_reply_num_)
  337. </if>
  338. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  339. AND exercises_message_num_ &gt;= exercises_reply_num_
  340. </if>
  341. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  342. AND exercises_message_timely_num_ &lt; exercises_message_num_
  343. </if>
  344. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  345. AND exercises_message_timely_num_ &gt;= exercises_message_num_
  346. </if>
  347. </if>
  348. <if test="submitStartDate!=null and submitEndDate!=null">
  349. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  350. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  351. #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
  352. </if>
  353. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  354. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  355. #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
  356. </if>
  357. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  358. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  359. #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
  360. </if>
  361. <if test="serviceIsError!=null and serviceIsError">
  362. AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d')
  363. BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
  364. </if>
  365. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  366. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  367. #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
  368. </if>
  369. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  370. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  371. #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
  372. </if>
  373. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  374. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  375. #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
  376. </if>
  377. </if>
  378. ORDER BY student_id_
  379. <include refid="global.limit"/>
  380. </select>
  381. <select id="countExercisesSituations" resultType="int">
  382. SELECT COUNT(1) FROM (
  383. SELECT
  384. 1
  385. FROM
  386. student_extracurricular_exercises_situation_ sees
  387. LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
  388. LEFT JOIN teacher t ON t.id_=sees.teacher_id_
  389. LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
  390. LEFT JOIN organization o ON stu.organ_id_=o.id_
  391. WHERE
  392. sees.monday_ &gt;= #{monday}
  393. AND sees.sunday_ &lt;= #{sunday} and sees.tenant_id_ = #{tenantId}
  394. <if test="teacherId!=null">
  395. AND sees.teacher_id_ = #{teacherId}
  396. </if>
  397. <if test="search!=null">
  398. AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
  399. </if>
  400. <if test="organId != null and organId != ''">
  401. AND FIND_IN_SET(t.organ_id_, #{organId})
  402. </if>
  403. <if test="existVipCourse!=null and existVipCourse==1">
  404. AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  405. cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
  406. class_date_ BETWEEN #{monday} AND #{sunday})
  407. </if>
  408. <if test="existVipCourse!=null and existVipCourse==0">
  409. AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  410. cs.id_=cssp.course_schedule_id_ WHERE cssp.user_id_=sees.student_id_ AND cssp.group_type_='VIP' AND
  411. class_date_ BETWEEN #{monday} AND #{sunday})
  412. </if>
  413. <if test="existPracticeCourse!=null and existPracticeCourse==1">
  414. AND EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  415. cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
  416. cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
  417. #{monday} AND #{sunday})
  418. </if>
  419. <if test="existPracticeCourse!=null and existPracticeCourse==0">
  420. AND NOT EXISTS (SELECT cssp.id_ FROM course_schedule_student_payment cssp LEFT JOIN course_schedule cs ON
  421. cs.id_=cssp.course_schedule_id_ LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_ WHERE
  422. cssp.user_id_=sees.student_id_ AND cssp.group_type_='PRACTICE' AND pg.type_='CHARGE' AND class_date_ BETWEEN
  423. #{monday} AND #{sunday})
  424. </if>
  425. <if test="expectExercisesNum!=null">
  426. AND expect_exercises_num_ = #{expectExercisesNum}
  427. </if>
  428. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
  429. AND actual_exercises_num_ &lt; expect_exercises_num_
  430. </if>
  431. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
  432. AND actual_exercises_num_ &gt;= expect_exercises_num_
  433. </if>
  434. <if test="submitStartDate==null or submitEndDate==null">
  435. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  436. AND exercises_reply_num_ &lt; actual_exercises_num_
  437. </if>
  438. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  439. AND exercises_reply_num_ &gt;= actual_exercises_num_
  440. </if>
  441. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  442. AND exercises_message_num_ &lt; exercises_reply_num_
  443. </if>
  444. <if test="serviceIsError!=null and serviceIsError">
  445. AND (actual_exercises_num_ &lt; expect_exercises_num_ OR exercises_message_num_ &lt;
  446. exercises_reply_num_)
  447. </if>
  448. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  449. AND exercises_message_num_ &gt;= exercises_reply_num_
  450. </if>
  451. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  452. AND exercises_message_timely_num_ &lt; exercises_message_num_
  453. </if>
  454. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  455. AND exercises_message_timely_num_ &gt;= exercises_message_num_
  456. </if>
  457. </if>
  458. <if test="submitStartDate!=null and submitEndDate!=null">
  459. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  460. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  461. #{submitEndDate},exercises_reply_num_,0) &lt; actual_exercises_num_
  462. </if>
  463. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  464. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  465. #{submitEndDate},exercises_reply_num_,0) &gt;= actual_exercises_num_
  466. </if>
  467. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  468. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  469. #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_
  470. </if>
  471. <if test="serviceIsError!=null and serviceIsError">
  472. AND (actual_exercises_num_ &lt; expect_exercises_num_ OR IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d')
  473. BETWEEN #{submitStartDate} AND #{submitEndDate},exercises_message_num_,0) &lt; exercises_reply_num_)
  474. </if>
  475. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  476. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  477. #{submitEndDate},exercises_message_num_,0) &gt;= exercises_reply_num_
  478. </if>
  479. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  480. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  481. #{submitEndDate},exercises_message_timely_num_,0) &lt; exercises_message_num_
  482. </if>
  483. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  484. AND IF(DATE_FORMAT(last_submit_time_, '%Y-%m-%d') BETWEEN #{submitStartDate} AND
  485. #{submitEndDate},exercises_message_timely_num_,0) &gt;= exercises_message_num_
  486. </if>
  487. </if>
  488. ) tmp
  489. </select>
  490. <select id="findExercisesSituationsById" resultMap="StudentExtracurricularExercisesSituation">
  491. SELECT * FROM student_extracurricular_exercises_situation_ WHERE id_ IN
  492. <foreach collection="ids" item="id" separator="," open="(" close=")">
  493. #{id}
  494. </foreach>
  495. </select>
  496. <select id="findTeacherExercisesServiceSituations" resultType="com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto">
  497. SELECT
  498. teacher_id_ teacherId,
  499. COUNT( exercises_reply_num_ ) expectExercisesNum,
  500. COUNT( CASE WHEN actual_exercises_num_ = 1 THEN 1 ELSE NULL END ) actualExercisesNum
  501. FROM
  502. student_extracurricular_exercises_situation_
  503. FORCE INDEX(monday_)
  504. WHERE monday_ = #{monday}
  505. AND teacher_id_ IN
  506. <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
  507. #{teacherId}
  508. </foreach>
  509. GROUP BY
  510. teacher_id_;
  511. </select>
  512. <select id="findLastWeekTodayUpdateNum" resultType="int">
  513. SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE sunday_=#{sunday} AND
  514. DATE_FORMAT(update_time_,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')
  515. <if test="tenantId != null">
  516. and tenant_id_ = #{tenantId}
  517. </if>
  518. </select>
  519. <select id="findStudentExercisesSituationsWithMonDay" resultMap="StudentExtracurricularExercisesSituation">
  520. SELECT *
  521. FROM student_extracurricular_exercises_situation_
  522. WHERE monday_ = #{monday}
  523. AND student_id_ = #{studentId}
  524. </select>
  525. <select id="getNoFinishedServiceTeacher" resultType="java.util.Map">
  526. SELECT teacher_id_ AS 'key', COUNT( student_id_ ) AS 'value'
  527. FROM student_extracurricular_exercises_situation_
  528. WHERE actual_exercises_num_ = 0
  529. AND serve_type_ = 'EXERCISE'
  530. AND monday_ = #{monday}
  531. AND teacher_id_ IS NOT NULL
  532. GROUP BY teacher_id_
  533. </select>
  534. <select id="countWeekServiceNum" resultType="int">
  535. SELECT COUNT(id_) FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday}
  536. <if test="tenantId != null">
  537. and tenant_id_ = #{tenantId}
  538. </if>
  539. </select>
  540. <select id="findWeekServiceWithStudents" resultMap="StudentExtracurricularExercisesSituation">
  541. SELECT * FROM student_extracurricular_exercises_situation_
  542. <where>
  543. teacher_id_=#{teacherId}
  544. <if test="monday != null and monday != ''">
  545. AND monday_ = #{monday}
  546. </if>
  547. <if test="studentIds!=null and studentIds.size()>0">
  548. AND student_id_ IN
  549. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  550. #{studentId}
  551. </foreach>
  552. </if>
  553. </where>
  554. </select>
  555. <select id="findTeacherNoStartServices" resultMap="StudentExtracurricularExercisesSituation">
  556. SELECT *
  557. FROM student_extracurricular_exercises_situation_
  558. WHERE teacher_id_ = #{teacherId}
  559. AND actual_exercises_num_ &lt;= 0
  560. AND serve_type_ = 'HOMEWORK';
  561. </select>
  562. <select id="getTeacherHomeworkCourseIdsWithMonday" resultType="string">
  563. SELECT course_ids_ FROM student_extracurricular_exercises_situation_
  564. WHERE teacher_id_=#{teacherId}
  565. AND serve_type_='HOMEWORK'
  566. <if test="monday!=null and monday!=''">
  567. AND monday_=#{monday}
  568. </if>
  569. </select>
  570. <select id="findServiceWithCourse"
  571. resultMap="StudentExtracurricularExercisesSituation">
  572. SELECT *
  573. FROM student_extracurricular_exercises_situation_
  574. WHERE monday_ = #{monday}
  575. AND FIND_IN_SET(#{courseId}, course_ids_)
  576. </select>
  577. <resultMap id="TeacherServeDto" type="com.ym.mec.biz.dal.dto.TeacherServeDto">
  578. <result column="organ_name_" property="organName"/>
  579. <result column="monday_" property="monday"/>
  580. <result column="sunday_" property="sunday"/>
  581. <result column="teacher_id_" property="teacherId"/>
  582. <result column="teacher_name_" property="teacherName"/>
  583. <result column="homework_num_" property="homeworkNum"/>
  584. <result column="exercise_num_" property="exerciseNum"/>
  585. <result column="un_done_" property="unDone"/>
  586. <result column="remind_time_" property="remindDate"/>
  587. <result column="operator_name_" property="operatorName"/>
  588. <result column="job_nature_" property="jobNature" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  589. <result column="expect_exercises_num_" property="expectExercisesNum"/>
  590. <result column="actual_exercises_num_" property="actualExercisesNum"/>
  591. <result column="exercises_reply_num_" property="exercisesReplyNum"/>
  592. <result column="exercises_message_num_" property="exercisesMessageNum"/>
  593. <result column="exercises_message_timely_num_" property="exercisesMessageTimelyNum"/>
  594. </resultMap>
  595. <sql id="queryTeacherServeInfoCondition">
  596. <where>
  597. sees.tenant_id_ = #{tenantId}
  598. <if test="organIds != null and organIds.size()>0">
  599. AND tea.organ_id_ IN
  600. <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
  601. #{organId}
  602. </foreach>
  603. </if>
  604. <if test="monday!=null and monday!='' and sunday!=null and sunday!=''">
  605. AND sees.monday_ BETWEEN #{monday} AND #{sunday}
  606. </if>
  607. <if test="teacherId!=null">
  608. AND sees.teacher_id_ = #{teacherId}
  609. </if>
  610. <if test="reminded!=null and reminded==0">
  611. AND NOT EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ =
  612. sees.monday_ AND type_='SERVICE')
  613. </if>
  614. <if test="reminded!=null and reminded==1">
  615. AND EXISTS (SELECT id_ FROM teacher_remind WHERE teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_
  616. AND type_='SERVICE')
  617. </if>
  618. <if test="operatorId!=null">
  619. AND EXISTS (SELECT id_ FROM teacher_remind WHERE operator_id_=#{operatorId} AND
  620. teacher_id_=sees.teacher_id_ AND monday_ = sees.monday_ AND type_='SERVICE')
  621. </if>
  622. <if test="jobNature!=null">
  623. AND tea.job_nature_=#{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  624. </if>
  625. </where>
  626. </sql>
  627. <select id="queryTeacherServeInfo" resultMap="TeacherServeDto">
  628. SELECT
  629. organ.name_ organ_name_,
  630. sees.monday_,
  631. sees.sunday_,
  632. sees.teacher_id_,
  633. su.real_name_ teacher_name_,
  634. tea.job_nature_,
  635. SUM(expect_exercises_num_) expect_exercises_num_,
  636. SUM(actual_exercises_num_) actual_exercises_num_,
  637. SUM(exercises_reply_num_) exercises_reply_num_,
  638. SUM(exercises_message_num_) exercises_message_num_,
  639. SUM(exercises_message_timely_num_) exercises_message_timely_num_,
  640. SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
  641. SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
  642. SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
  643. FROM
  644. student_extracurricular_exercises_situation_ sees
  645. LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
  646. LEFT JOIN organization organ ON organ.id_=tea.organ_id_
  647. LEFT JOIN sys_user su ON tea.id_=su.id_
  648. <include refid="queryTeacherServeInfoCondition"/>
  649. GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
  650. <trim prefix="HAVING" prefixOverrides="AND">
  651. <if test="unDone!=null">
  652. <if test="unDone==1">
  653. AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_
  654. )
  655. </if>
  656. <if test="unDone==0">
  657. AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM(
  658. sees.actual_exercises_num_ )
  659. </if>
  660. </if>
  661. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
  662. AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
  663. </if>
  664. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
  665. AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
  666. </if>
  667. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  668. AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
  669. </if>
  670. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  671. AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
  672. </if>
  673. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  674. AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
  675. </if>
  676. <if test="serviceIsError!=null and serviceIsError">
  677. AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt;
  678. SUM(exercises_reply_num_))
  679. </if>
  680. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  681. AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
  682. </if>
  683. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  684. AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
  685. </if>
  686. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  687. AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
  688. </if>
  689. </trim>
  690. ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
  691. <include refid="global.limit"></include>
  692. </select>
  693. <select id="countTeacherServeInfo" resultType="int">
  694. SELECT COUNT(1) FROM (
  695. SELECT
  696. sees.id_
  697. FROM
  698. student_extracurricular_exercises_situation_ sees
  699. LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
  700. <include refid="queryTeacherServeInfoCondition"/>
  701. GROUP BY sees.monday_,sees.sunday_,sees.teacher_id_
  702. <trim prefix="HAVING" prefixOverrides="AND">
  703. <if test="unDone!=null">
  704. <if test="unDone==1">
  705. AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &gt; SUM( sees.actual_exercises_num_
  706. )
  707. </if>
  708. <if test="unDone==0">
  709. AND SUM( sees.expect_exercises_num_-sees.not_over_course_num_ ) &lt;= SUM(
  710. sees.actual_exercises_num_ )
  711. </if>
  712. </if>
  713. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==0">
  714. AND SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_)
  715. </if>
  716. <if test="actualExercisesNumIsAchieve!=null and actualExercisesNumIsAchieve==1">
  717. AND SUM(actual_exercises_num_) &gt;= SUM(expect_exercises_num_)
  718. </if>
  719. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
  720. AND SUM(exercises_reply_num_) &lt; SUM(actual_exercises_num_)
  721. </if>
  722. <if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
  723. AND SUM(exercises_reply_num_) &gt;= SUM(actual_exercises_num_)
  724. </if>
  725. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==0">
  726. AND SUM(exercises_message_num_) &lt; SUM(exercises_reply_num_)
  727. </if>
  728. <if test="serviceIsError!=null and serviceIsError">
  729. AND (SUM(actual_exercises_num_) &lt; SUM(expect_exercises_num_) OR SUM(exercises_message_num_) &lt;
  730. SUM(exercises_reply_num_))
  731. </if>
  732. <if test="exercisesMessageNumIsAchieve!=null and exercisesMessageNumIsAchieve==1">
  733. AND SUM(exercises_message_num_) &gt;= SUM(exercises_reply_num_)
  734. </if>
  735. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==0">
  736. AND SUM(exercises_message_timely_num_) &lt; SUM(exercises_message_num_)
  737. </if>
  738. <if test="exercisesMessageTimelyNumIsAchieve!=null and exercisesMessageTimelyNumIsAchieve==1">
  739. AND SUM(exercises_message_timely_num_) &gt;= SUM(exercises_message_num_)
  740. </if>
  741. </trim>
  742. ORDER BY sees.monday_,sees.sunday_,sees.teacher_id_
  743. ) e
  744. </select>
  745. <select id="findTeacherServeWithDate" resultMap="StudentExtracurricularExercisesSituation">
  746. SELECT * FROM student_extracurricular_exercises_situation_
  747. WHERE monday_ BETWEEN #{monday} AND #{sunday}
  748. <if test="serveType!=null and serveType!=''">
  749. AND serve_type_=#{serveType}
  750. </if>
  751. AND teacher_id_ IN
  752. <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
  753. #{teacherId}
  754. </foreach>
  755. </select>
  756. <select id="getHomeworkData" resultMap="com.ym.mec.biz.dal.dao.IndexBaseMonthDataDao.IndexBaseMonthData">
  757. SELECT
  758. sees.monday_ month_,
  759. <choose>
  760. <when test="type == 'submit'">
  761. SUM(sees.actual_exercises_num_) total_num_,
  762. SUM(sees.exercises_reply_num_) activate_num_,
  763. TRUNCATE(SUM(sees.exercises_reply_num_)/SUM(sees.actual_exercises_num_)*100, 2) percent_
  764. </when>
  765. <when test="type == 'comment'">
  766. SUM(sees.exercises_reply_num_) total_num_,
  767. SUM(sees.exercises_message_num_) activate_num_,
  768. TRUNCATE(SUM(sees.exercises_message_num_)/SUM(sees.exercises_reply_num_)*100, 2) percent_
  769. </when>
  770. <otherwise>
  771. SUM(sees.expect_exercises_num_-sees.not_over_course_num_) total_num_,
  772. SUM(sees.actual_exercises_num_) activate_num_,
  773. TRUNCATE(SUM(sees.actual_exercises_num_)/SUM(sees.expect_exercises_num_-sees.not_over_course_num_)*100,
  774. 2) percent_
  775. </otherwise>
  776. </choose>
  777. FROM student_extracurricular_exercises_situation_ sees
  778. LEFT JOIN teacher tea ON sees.teacher_id_=tea.id_
  779. WHERE tea.job_nature_='FULL_TIME'
  780. AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&gt;=#{startDay}
  781. AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&lt;=#{endDay}
  782. AND (sees.serve_type_ = 'EXERCISE' OR EXISTS (SELECT id_ FROM course_schedule WHERE group_type_='MUSIC' AND
  783. music_group_id_=#{musicGroupId} AND FIND_IN_SET(id_, sees.course_ids_)))
  784. AND sees.student_id_ IN
  785. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  786. #{studentId}
  787. </foreach>
  788. GROUP BY sees.monday_
  789. </select>
  790. <select id="queryCourseIdByClassDate" resultType="java.lang.Long">
  791. SELECT DISTINCT csts.course_schedule_id_
  792. FROM course_schedule_teacher_salary csts
  793. LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
  794. LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
  795. WHERE csts.user_id_ = #{teacherId}
  796. AND cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
  797. AND FIND_IN_SET(cs.id_, se.course_ids_)
  798. AND se.serve_type_ = 'HOMEWORK'
  799. </select>
  800. <select id="countWaitCreateHomeworkNum" resultType="java.lang.Integer">
  801. SELECT COUNT(id_)
  802. FROM student_extracurricular_exercises_situation_
  803. WHERE teacher_id_ = #{teacherId}
  804. AND expect_exercises_num_ > actual_exercises_num_
  805. AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN monday_ AND sunday_
  806. AND serve_type_ = 'EXERCISE'
  807. </select>
  808. <select id="countWaitCreateHomeworkNum1" resultType="java.lang.Integer">
  809. SELECT SUM(t.num_)
  810. FROM (
  811. SELECT COUNT(se.id_) num_
  812. FROM student_extracurricular_exercises_situation_ se
  813. LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, se.course_ids_)
  814. WHERE se.teacher_id_ = #{teacherId}
  815. AND se.expect_exercises_num_ > se.actual_exercises_num_
  816. AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
  817. AND se.serve_type_ = 'HOMEWORK'
  818. AND cs.group_type_ = 'MUSIC'
  819. AND cs.class_date_ = DATE_FORMAT(NOW(), '%Y-%m-%d')
  820. UNION ALL
  821. SELECT COUNT(se.id_) num_
  822. FROM student_extracurricular_exercises_situation_ se
  823. LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, se.course_ids_)
  824. WHERE se.teacher_id_ = #{teacherId}
  825. AND se.expect_exercises_num_ > se.actual_exercises_num_
  826. AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
  827. AND se.serve_type_ = 'HOMEWORK'
  828. AND cs.group_type_ != 'MUSIC' AND cs.class_date_ &lt;= DATE_FORMAT(NOW(), '%Y-%m-%d')) t
  829. </select>
  830. <select id="queryTeacherPerformanceIndicator" resultMap="TeacherServeDto">
  831. SELECT
  832. organ.name_ organ_name_,
  833. sees.monday_,
  834. sees.sunday_,
  835. sees.teacher_id_,
  836. su.real_name_ teacher_name_,
  837. tea.job_nature_,
  838. SUM(expect_exercises_num_) expect_exercises_num_,
  839. SUM(actual_exercises_num_) actual_exercises_num_,
  840. SUM(exercises_reply_num_) exercises_reply_num_,
  841. SUM(exercises_message_num_) exercises_message_num_,
  842. SUM(exercises_message_timely_num_) exercises_message_timely_num_,
  843. SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
  844. SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
  845. SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
  846. FROM
  847. student_extracurricular_exercises_situation_ sees
  848. LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
  849. LEFT JOIN organization organ ON organ.id_=tea.organ_id_
  850. LEFT JOIN sys_user su ON tea.id_=su.id_
  851. <include refid="queryTeacherServeInfoCondition"/>
  852. GROUP BY sees.teacher_id_
  853. ORDER BY sees.teacher_id_
  854. <include refid="global.limit"></include>
  855. </select>
  856. <select id="getHomeworkSituations" resultType="java.util.Date">
  857. SELECT cs.class_date_
  858. FROM student_extracurricular_exercises_situation_ sees
  859. LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_, sees.course_ids_)
  860. WHERE sees.serve_type_ = #{serveType}
  861. AND cs.id_ != #{courseScheduleId}
  862. AND cs.music_group_id_ = #{musicGroupId}
  863. AND sees.monday_ = #{month}
  864. AND sees.student_id_ = #{userId}
  865. </select>
  866. <resultMap id="StudentServeDto" type="com.ym.mec.biz.dal.dto.StudentServeDto">
  867. <result column="student_id_" property="userId"/>
  868. <result column="username_" property="username"/>
  869. <result column="music_group_name_" property="musicGroupName"/>
  870. <result column="organ_name_" property="organName"/>
  871. <result column="serve_period_" property="servePeriod"/>
  872. <result column="serve_num_" property="serveNum"/>
  873. <result column="actual_exercises_num_" property="actualExercisesNum"/>
  874. <result column="exercises_reply_num_" property="exercisesReplyNum"/>
  875. <result column="exercises_message_num_" property="exercisesMessageNum"/>
  876. <result column="sign_rate_" property="signRate"/>
  877. <result column="pass_rate_" property="passRate"/>
  878. </resultMap>
  879. <!-- 还差出勤率和达标率 -->
  880. <select id="queryStudentServeInfo" resultMap="StudentServeDto">
  881. select
  882. t.student_id_,
  883. t.music_group_name_,
  884. concat(#{params.monday},'至', #{params.sunday}) as serve_period_,
  885. t.username_,
  886. t.organ_name_,
  887. sees.serve_num_,
  888. sees.actual_exercises_num_,
  889. sees.exercises_reply_num_,
  890. sees.exercises_message_num_,
  891. a.sign_rate_,
  892. a.pass_rate_
  893. from (
  894. select
  895. a.user_id_ as student_id_,
  896. group_concat(distinct b.name_) as music_group_name_,
  897. u.username_,
  898. organ.name_ as organ_name_
  899. from student_registration a
  900. left join music_group b on a.music_group_id_ = b.id_
  901. left join sys_user u ON a.user_id_ = u.id_
  902. LEFT JOIN organization organ ON organ.id_=u.organ_id_ and organ.del_flag_ = 0
  903. where payment_status_ = 1 and b.status_ = 'PROGRESS'
  904. <if test="params.tenantId != null and params.tenantId > 0">
  905. AND a.tenant_id_ = #{params.tenantId}
  906. </if>
  907. <if test="params.organId != null and params.organId != ''">
  908. AND FIND_IN_SET(u.organ_id_,#{params.organId})
  909. </if>
  910. group by a.user_id_
  911. ) t
  912. left join
  913. (
  914. select
  915. sees.student_id_,
  916. sum(sees.expect_exercises_num_) as serve_num_,
  917. sum(sees.actual_exercises_num_) as actual_exercises_num_,
  918. sum(sees.exercises_reply_num_) as exercises_reply_num_,
  919. sum(sees.exercises_message_num_) as exercises_message_num_
  920. from student_extracurricular_exercises_situation_ sees
  921. left join sys_user u ON sees.student_id_ = u.id_
  922. <where>
  923. <if test="params.tenantId != null and params.tenantId > 0">
  924. AND sees.tenant_id_ = #{params.tenantId}
  925. </if>
  926. <if test="params.monday != null and params.monday != ''">
  927. AND DATE_FORMAT(sees.monday_, '%Y-%m-%d') &gt;= #{params.monday}
  928. </if>
  929. <if test="params.sunday != null and params.sunday != ''">
  930. AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d') &lt;= #{params.sunday}
  931. </if>
  932. <if test="params.organId != null and params.organId != ''">
  933. AND FIND_IN_SET(u.organ_id_,#{params.organId})
  934. </if>
  935. </where>
  936. group by sees.student_id_
  937. ) sees on t.student_id_ = sees.student_id_
  938. left join (
  939. select
  940. cssp.user_id_,
  941. ifnull(sum(if(sa.status_ = 'NORMAL',1,0))/count(sa.id_),0) as sign_rate_,
  942. ifnull(sum(sa.qualified_flag_)/count(sa.id_),0) as pass_rate_
  943. from course_schedule cs
  944. left join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_
  945. left join sys_user u ON cssp.user_id_ = u.id_
  946. left join student_attendance sa on cssp.user_id_ = sa.user_id_ and cs.id_ = sa.course_schedule_id_
  947. <where>
  948. cs.group_type_ = 'MUSIC' and cs.id_ is not null
  949. <if test="params.tenantId != null and params.tenantId > 0">
  950. AND cs.tenant_id_ = #{params.tenantId}
  951. </if>
  952. <if test="params.monday != null and params.monday != ''">
  953. AND DATE_FORMAT(cs.start_class_time_, '%Y-%m-%d') &gt;= #{params.monday}
  954. </if>
  955. <if test="params.sunday != null and params.sunday != ''">
  956. AND DATE_FORMAT(cs.end_class_time_, '%Y-%m-%d') &lt;= #{params.sunday}
  957. </if>
  958. <if test="params.organId != null and params.organId != ''">
  959. AND FIND_IN_SET(u.organ_id_,#{params.organId})
  960. </if>
  961. </where>
  962. group by cssp.user_id_
  963. ) a on sees.student_id_ = a.user_id_
  964. </select>
  965. </mapper>