DzClassesMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ruoyi.dz.mapper.DzClassesMapper">
  6. <resultMap type="DzClasses" id="DzClassesResult">
  7. <result property="classId" column="class_id" />
  8. <result property="deptId" column="dept_id" />
  9. <result property="schoolId" column="school_id" />
  10. <result property="year" column="year" />
  11. <result property="name" column="name" />
  12. <result property="online" column="online" />
  13. <result property="status" column="status" />
  14. <result property="stats" column="stats" />
  15. <result property="createTime" column="create_time" />
  16. <result property="updateTime" column="update_time" />
  17. <result property="isDefault" column="is_default" />
  18. <association property="school" javaType="DzSchool" resultMap="DzSchoolResult" />
  19. </resultMap>
  20. <resultMap type="DzSchool" id="DzSchoolResult">
  21. <result property="id" column="id" />
  22. <result property="name" column="school_name" />
  23. <result property="deptId" column="dept_id" />
  24. <result property="location" column="location" />
  25. <result property="pro" column="pro" />
  26. <result property="city" column="city" />
  27. <result property="area" column="area" />
  28. </resultMap>
  29. <select id="selectClassesDirectedBuildStats" resultType="com.alibaba.fastjson2.JSONObject">
  30. SELECT c.`class_id` classId, c.`name` className, lt.`batch_id` batchId, lt.`name` batchName, count(*) `total`, SUM(if(ls.`major_plan_id` IS NULL, 1, 0)) unexact,
  31. SUM(IF(ls.`major_plan_id` IS not NULL and ts.`student_id` IS NULL, 1, 0)) unsend,
  32. SUM(IF(ls.`major_plan_id` IS not NULL and ts.`student_id` IS NOT NULL and ts.`status` != 4 , 1, 0)) unfinish,
  33. sum(if(ls.`major_plan_id` IS NOT NULL and ts.`student_id` is not null AND ts.`status` = 4 , 1, 0)) send
  34. FROM `dz_teacher_class` tc
  35. join `learn_student` ls on tc.`class_id` = ls.`class_id`
  36. join `dz_classes` c on ls.`class_id` = c.`class_id`
  37. JOIN `sys_user` u ON ls.`student_id` = u.`user_id`
  38. join `learn_test` lt on lt.`year` = #{year} <if test="batchId != null"> and lt.`batch_id` = #{batchId} </if>
  39. LEFT JOIN `learn_test_student` ts ON ts.`student_id` = ls.`student_id` AND ts.`batch_id` = lt.`batch_id` AND ts.`class_id` = tc.`class_id`
  40. <if test="buildType != null"> AND ts.`build_type` = #{buildType} </if>
  41. <if test="subjectId != null"> and ts.`subject_id` = #{subjectId} </if>
  42. <where>tc.`teacher_id` = #{teacherId}
  43. <if test="classId != null"> AND ls.`class_id` = #{classId}</if>
  44. <if test="universityId != null"> AND ls.`university_id` = #{universityId}</if>
  45. <if test="majorGroup != null"> AND ls.`major_group` = #{majorGroup}</if>
  46. <if test="majorPlanId != null"> AND ls.`major_plan_id` = #{majorPlanId}</if>
  47. <if test="examType != null and examType != ''"> AND u.`exam_type` = #{examType}</if>
  48. </where>
  49. group by c.`class_id`, c.`name`, lt.`batch_id`, lt.`name`
  50. order by c.`class_id`, c.`name`, lt.`batch_id`, lt.`name`
  51. </select>
  52. <select id="selectClassesBuildStats" resultType="com.alibaba.fastjson2.JSONObject">
  53. SELECT c.`class_id` classId, c.`name` className, lt.`batch_id` batchId, lt.`name` batchName, count(*) `total`,
  54. SUM(IF(ts.`student_id` IS NULL, 1, 0)) unsend,
  55. SUM(IF(ts.`student_id` IS NOT NULL and ts.`status` != 4 , 1, 0)) unfinish,
  56. sum(if(ts.`student_id` is not null AND ts.`status` = 4 , 1, 0)) send
  57. FROM `dz_teacher_class` tc
  58. join `learn_student` ls on tc.`class_id` = ls.`class_id`
  59. JOIN sys_user u ON ls.`student_id` = u.`user_id`
  60. join `dz_classes` c on ls.`class_id` = c.`class_id`
  61. join `learn_test` lt on lt.`year` = #{year} <if test="batchId != null"> and lt.`batch_id` = #{batchId} </if>
  62. LEFT JOIN `learn_test_student` ts ON ts.`student_id` = ls.`student_id` AND ts.`class_id` = tc.`class_id`
  63. <if test="batchId != null"> and ts.`batch_id` = #{batchId} </if>
  64. <if test="buildType != null"> AND ts.`build_type` = #{buildType} </if>
  65. <if test="subjectId != null"> and ts.`subject_id` = #{subjectId} </if>
  66. <where>tc.`teacher_id` = #{teacherId}
  67. <if test="classId != null"> AND ls.`class_id` = #{classId}</if>
  68. <if test="universityId != null"> AND ls.`university_id` = #{universityId}</if>
  69. <if test="majorGroup != null"> AND ls.`major_group` = #{majorGroup}</if>
  70. <if test="majorPlanId != null"> AND ls.`major_plan_id` = #{majorPlanId}</if>
  71. <if test="examType != null and examType != ''"> AND u.`exam_type` = #{examType}</if>
  72. </where>
  73. group by c.`class_id`, c.`name`, lt.`batch_id`, lt.`name`
  74. order by c.`class_id`, c.`name`, lt.`batch_id`, lt.`name`
  75. </select>
  76. <select id="getPaperStudentRecords" resultType="com.alibaba.fastjson2.JSONObject">
  77. SELECT ts.examinee_id examineeId, ls.`student_id` studentId, u.`nick_name` studentName, dc.`name` className, u.`phonenumber` mobile, ts.`batch_id` batchId, ts.`subject_id` subjectId, ts.`paper_id` paperId, lp.`paperName`, lp.`fenshu` total, le.`score`, le.`score_rate` rate,
  78. lt.`name` batchName, ds.`subject_name` subjectName,
  79. CASE WHEN ls.`major_plan_id` IS NULL AND #{buildType} IN ('ExactHand', 'ExactIntelligent') THEN '10' WHEN ts.`student_id` IS NULL THEN '20' WHEN ts.`status` != 4 THEN '30' ELSE '40' END state
  80. FROM `learn_student` ls
  81. JOIN `sys_user` u ON ls.`student_id` = u.`user_id`
  82. JOIN `learn_test_student` ts ON ts.`student_id` = ls.`student_id`
  83. JOIN `dz_classes` dc on dc.`class_id` = ls.`class_id`
  84. JOIN `dz_subject` ds on ds.`subject_id` = ts.`subject_id`
  85. join `learn_test` lt on lt.`batch_id` = ts.`batch_id`
  86. <if test="batchId != null"> and ts.`batch_id` = #{batchId} </if>
  87. <if test="buildType != null"> AND ts.`build_type` = #{buildType} </if>
  88. <if test="subjectId != null"> and ts.`subject_id` = #{subjectId} </if>
  89. LEFT JOIN `learn_examinee` le ON le.examinee_id = ts.examinee_id
  90. LEFT JOIN `learn_paper` lp ON ts.`paper_id` = lp.`id`
  91. <where> ls.`class_id` = #{classId}
  92. <if test="universityId != null"> AND ls.`university_id` = #{universityId}</if>
  93. <if test="majorGroup != null"> AND ls.`major_group` = #{majorGroup}</if>
  94. <if test="majorPlanId != null"> AND ls.`major_plan_id` = #{majorPlanId}</if>
  95. <if test="examType != null and examType != ''"> AND u.`exam_type` = #{examType}</if>
  96. </where>
  97. </select>
  98. <sql id="selectDzClassesVo">
  99. select t1.class_id, t1.dept_id, t1.school_id, t1.year, t1.name, t1.online, t1.status, t1.stats, t1.create_time, t1.update_time,t1.is_default,
  100. t2.id, t2.name school_name, t2.dept_id, t2.pro, t2.city, t2.area
  101. from dz_classes t1
  102. left join dz_school t2 on t1.school_id=t2.id
  103. </sql>
  104. <select id="selectDzClassesList" parameterType="DzClasses" resultMap="DzClassesResult">
  105. <include refid="selectDzClassesVo"/>
  106. <where>
  107. <if test="schoolId != null "> and t1.school_id = #{schoolId}</if>
  108. <if test="deptId != null and deptId > 0 "> and t1.dept_id = #{deptId}</if>
  109. <if test="deptId == 0 "> and t1.dept_id is null </if>
  110. <if test="year != null "> and t1.year = #{year}</if>
  111. <if test="name != null and name != ''"> and t1.name like concat('%', #{name}, '%')</if>
  112. <if test="online != null "> and t1.online = #{online}</if>
  113. <if test="status != null "> and t1.status = #{status}</if>
  114. <if test="isDefault != null "> and t1.is_default = #{isDefault}</if>
  115. <if test="stats != null and stats != ''"> and t1.stats = #{stats}</if>
  116. </where>
  117. </select>
  118. <select id="selectClassesForTeacher" parameterType="Long" resultMap="DzClassesResult">
  119. SELECT c.* FROM `dz_teacher_class` tc
  120. JOIN `dz_classes` c ON tc.`class_id` = c.`class_id`
  121. WHERE tc.`teacher_id` = #{teacherId} AND NOW() &lt; tc.`out_date`
  122. </select>
  123. <select id="selectClassesByIds" resultMap="DzClassesResult">
  124. <include refid="selectDzClassesVo"/>
  125. where t1.class_id in <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
  126. </select>
  127. <select id="selectDzClassesListBySchoolId" resultMap="DzClassesResult">
  128. select * from dz_classes t1
  129. where t1.school_id = #{schoolId}
  130. </select>
  131. <select id="selectDzClassesListByCampusId" resultMap="DzClassesResult">
  132. select * from dz_classes t1
  133. where t1.school_id = #{campusId}
  134. </select>
  135. <select id="selectDzClassesBySchoolIds" resultMap="DzClassesResult">
  136. <include refid="selectDzClassesVo"/>
  137. where t1.school_id in
  138. <foreach collection="schoolIds" item="schoolId" open="(" separator="," close=")">
  139. #{schoolId}
  140. </foreach>
  141. </select>
  142. <select id="selectDzClassesByClassId" parameterType="Long" resultMap="DzClassesResult">
  143. <include refid="selectDzClassesVo"/>
  144. where t1.class_id = #{classId}
  145. </select>
  146. <insert id="insertDzClasses" parameterType="DzClasses" useGeneratedKeys="true" keyProperty="classId">
  147. insert into dz_classes
  148. <trim prefix="(" suffix=")" suffixOverrides=",">
  149. <if test="deptId != null">dept_id,</if>
  150. <if test="schoolId != null">school_id,</if>
  151. <if test="year != null">year,</if>
  152. <if test="name != null and name != ''">name,</if>
  153. <if test="online != null">online,</if>
  154. <if test="status != null">status,</if>
  155. <if test="stats != null">stats,</if>
  156. <if test="createTime != null">create_time,</if>
  157. <if test="updateTime != null">update_time,</if>
  158. <if test="isDefault != null">is_default,</if>
  159. </trim>
  160. <trim prefix="values (" suffix=")" suffixOverrides=",">
  161. <if test="deptId != null">#{deptId},</if>
  162. <if test="schoolId != null">#{schoolId},</if>
  163. <if test="year != null">#{year},</if>
  164. <if test="name != null and name != ''">#{name},</if>
  165. <if test="online != null">#{online},</if>
  166. <if test="status != null">#{status},</if>
  167. <if test="stats != null">#{stats},</if>
  168. <if test="createTime != null">#{createTime},</if>
  169. <if test="updateTime != null">#{updateTime},</if>
  170. <if test="isDefault != null">#{isDefault},</if>
  171. </trim>
  172. </insert>
  173. <update id="updateDzClasses" parameterType="DzClasses">
  174. update dz_classes
  175. <trim prefix="SET" suffixOverrides=",">
  176. <if test="deptId != null">dept_id = #{deptId},</if>
  177. <if test="schoolId != null">school_id = #{schoolId},</if>
  178. <if test="year != null">year = #{year},</if>
  179. <if test="name != null and name != ''">name = #{name},</if>
  180. <if test="online != null">online = #{online},</if>
  181. <if test="status != null">status = #{status},</if>
  182. <if test="stats != null">stats = #{stats},</if>
  183. <if test="createTime != null">create_time = #{createTime},</if>
  184. <if test="updateTime != null">update_time = #{updateTime},</if>
  185. <if test="isDefault != null">is_default = #{isDefault},</if>
  186. </trim>
  187. where class_id = #{classId}
  188. </update>
  189. <delete id="deleteDzClassesByClassId" parameterType="Long">
  190. delete from dz_classes where class_id = #{classId}
  191. </delete>
  192. <delete id="deleteDzClassesByClassIds" parameterType="String">
  193. delete from dz_classes where class_id in
  194. <foreach item="classId" collection="array" open="(" separator="," close=")">
  195. #{classId}
  196. </foreach>
  197. </delete>
  198. <!-- 校验班级名称在同一学校下是否唯一 -->
  199. <select id="checkClassName" resultType="int">
  200. select count(1) from dz_classes where school_id = #{schoolId} and name = #{name}
  201. <if test="classId != null">
  202. and class_id != #{classId}
  203. </if>
  204. </select>
  205. </mapper>