ExamRoomStudentRelationMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  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.keao.edu.user.dao.ExamRoomStudentRelationDao">
  8. <resultMap type="com.keao.edu.user.api.entity.ExamRoomStudentRelation" id="ExamRoomStudentRelation" extends="com.keao.edu.user.dao.ExamRoomDao.ExamRoom">
  9. <result column="id_" property="id" />
  10. <result column="examination_basic_id_" property="examinationBasicId" />
  11. <result column="exam_registration_id_" property="examRegistrationId" />
  12. <result column="exam_room_id_" property="examRoomId" />
  13. <result column="student_id_" property="studentId" />
  14. <result column="classroom_switch_" property="classroomSwitch"/>
  15. <result column="sign_in_time_" property="signInTime" />
  16. <result column="create_time_" property="createTime" />
  17. <result column="update_time_" property="updateTime" />
  18. <result column="call_time_" property="callTime" />
  19. <result column="tenant_id_" property="tenantId" />
  20. </resultMap>
  21. <resultMap id="ExamRoomStudentRelationDto" type="com.keao.edu.user.dto.ExamRoomStudentRelationDto" extends="ExamRoomStudentRelation">
  22. <association property="studentInfo" columnPrefix="sys_user_" resultMap="com.keao.edu.user.dao.SysUserDao.SysUser"/>
  23. <association property="subject" columnPrefix="subject_" resultMap="com.keao.edu.user.dao.SubjectDao.Subject"/>
  24. <association property="examRegistration" columnPrefix="regist_" resultMap="com.keao.edu.user.dao.ExamRegistrationDao.ExamRegistration"/>
  25. </resultMap>
  26. <!-- 根据主键查询一条记录 -->
  27. <select id="get" resultMap="ExamRoomStudentRelation" >
  28. SELECT * FROM exam_room_student_relation WHERE id_ = #{id}
  29. </select>
  30. <!-- 全查询 -->
  31. <select id="findAll" resultMap="ExamRoomStudentRelation">
  32. SELECT * FROM exam_room_student_relation ORDER BY id_
  33. </select>
  34. <!-- 向数据库增加一条记录 -->
  35. <insert id="insert" parameterType="com.keao.edu.user.api.entity.ExamRoomStudentRelation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  36. INSERT INTO exam_room_student_relation (id_,examination_basic_id_,exam_registration_id_,
  37. exam_room_id_,student_id_,create_time_,update_time_,tenant_id_,sign_in_time_)
  38. VALUES(#{id},#{examinationBasicId},#{examRegistrationId},#{examRoomId},
  39. #{studentId},NOW(),NOW(),#{tenantId},#{signInTime})
  40. </insert>
  41. <insert id="batchInsert" parameterType="com.keao.edu.user.api.entity.ExamRoomStudentRelation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  42. INSERT INTO exam_room_student_relation (examination_basic_id_,exam_registration_id_,
  43. exam_room_id_,student_id_,create_time_,update_time_,tenant_id_,sign_in_time_)
  44. VALUES
  45. <foreach collection="roomStudents" item="roomStudent" separator=",">
  46. (#{roomStudent.examinationBasicId},#{roomStudent.examRegistrationId},
  47. #{roomStudent.examRoomId},#{roomStudent.studentId},NOW(),NOW(),#{roomStudent.tenantId},#{roomStudent.signInTime})
  48. </foreach>
  49. </insert>
  50. <!-- 根据主键查询一条记录 -->
  51. <update id="update" parameterType="com.keao.edu.user.api.entity.ExamRoomStudentRelation">
  52. UPDATE exam_room_student_relation
  53. <set>
  54. <if test="examinationBasicId != null">
  55. examination_basic_id_ = #{examinationBasicId},
  56. </if>
  57. <if test="signInTime != null">
  58. sign_in_time_ = #{signInTime},
  59. </if>
  60. <if test="examRegistrationId != null">
  61. exam_registration_id_ = #{examRegistrationId},
  62. </if>
  63. <if test="classroomSwitch != null">
  64. classroom_switch_ = #{classroomSwitch},
  65. </if>
  66. <if test="tenantId != null and tenantId != 0">
  67. tenant_id_ = #{tenantId},
  68. </if>
  69. <if test="examRoomId != null">
  70. exam_room_id_ = #{examRoomId},
  71. </if>
  72. <if test="studentId != null">
  73. student_id_ = #{studentId},
  74. </if>
  75. <if test="callTime != null">
  76. call_time_ = #{callTime},
  77. </if>
  78. update_time_ = NOW()
  79. </set> WHERE id_ = #{id}
  80. </update>
  81. <update id="switchClassRoom">
  82. UPDATE exam_room_student_relation SET classroom_switch_ = #{openFlag},update_time_ = NOW()
  83. WHERE examination_basic_id_ = #{examinationBasicId} AND student_id_ = #{studentId}
  84. </update>
  85. <update id="cleanSignInTime">
  86. UPDATE exam_room_student_relation SET sign_in_time_ = NULL,update_time_ = NOW()
  87. WHERE exam_registration_id_ = #{examRegistrationId}
  88. </update>
  89. <!-- 根据主键删除一条记录 -->
  90. <delete id="delete" >
  91. DELETE FROM exam_room_student_relation WHERE id_ = #{id}
  92. </delete>
  93. <delete id="deleteStudentsFromExamRoom">
  94. DELETE FROM exam_room_student_relation WHERE exam_room_id_=#{examRoomId}
  95. AND exam_registration_id_ IN
  96. <foreach collection="registIds" item="registId" separator="," open="(" close=")">
  97. #{registId}
  98. </foreach>
  99. </delete>
  100. <delete id="deleteWithExamRooms">
  101. DELETE FROM exam_room_student_relation
  102. WHERE exam_room_id_ IN
  103. <foreach collection="examRoomIds" item="examRoomId" separator="," open="(" close=")">
  104. #{examRoomId}
  105. </foreach>
  106. </delete>
  107. <delete id="deleteStudentRoomRegistRelations">
  108. DELETE FROM exam_room_student_relation WHERE exam_registration_id_ IN
  109. <foreach collection="registIds" item="registId" separator="," open="(" close=")">
  110. #{registId}
  111. </foreach>
  112. </delete>
  113. <!-- 分页查询 -->
  114. <select id="queryPage" resultMap="ExamRoomStudentRelation" parameterType="map">
  115. SELECT * FROM exam_room_student_relation ORDER BY id_ <include refid="global.limit"/>
  116. </select>
  117. <!-- 查询当前表的总记录数 -->
  118. <select id="queryCount" resultType="int">
  119. SELECT COUNT(*) FROM exam_room_student_relation
  120. </select>
  121. <sql id="queryCondition">
  122. <where>
  123. er.status_ IN ('AUDIT_PASS')
  124. <if test="organIds!=null">
  125. AND er.organ_id_ IN
  126. <foreach collection="organIds" item="organI" separator="," open="(" close=")">
  127. #{organI}
  128. </foreach>
  129. </if>
  130. <if test="examId!=null">
  131. AND er.examination_basic_id_ = #{examId}
  132. </if>
  133. <if test="inRoom!=null and inRoom==0">
  134. AND ersr.id_ IS NULL AND FIND_IN_SET(er.subject_id_, #{subjectIds})
  135. </if>
  136. <if test="inRoom!=null and inRoom==1">
  137. AND ersr.exam_room_id_ =#{examRoomId}
  138. </if>
  139. <if test="search!=null and search!=''">
  140. AND (er.student_id_ = #{search} OR su.real_name_ LIKE CONCAT('%', #{search}, '%'))
  141. </if>
  142. </where>
  143. </sql>
  144. <select id="findExamRoomStudents" resultMap="ExamRoomStudentRelationDto" parameterType="map">
  145. SELECT
  146. ersr.id_,
  147. ersr.exam_registration_id_,
  148. ersr.examination_basic_id_,
  149. er.id_ regist_id_,
  150. er.student_id_ regist_student_id_,
  151. er.subject_id_ regist_subject_id_,
  152. er.level_ regist_level_,
  153. er.create_time_ regist_create_time_
  154. FROM
  155. exam_registration er
  156. LEFT JOIN exam_room_student_relation ersr ON ersr.exam_registration_id_ = er.id_
  157. LEFT JOIN sys_user su ON er.student_id_=su.id_
  158. <include refid="queryCondition"/>
  159. ORDER BY er.id_ DESC <include refid="global.limit"/>
  160. </select>
  161. <select id="countExamRoomStudents" resultType="int">
  162. SELECT
  163. COUNT(er.id_)
  164. FROM
  165. exam_registration er
  166. LEFT JOIN exam_room_student_relation ersr ON ersr.exam_registration_id_ = er.id_
  167. LEFT JOIN sys_user su ON er.student_id_=su.id_
  168. <include refid="queryCondition"/>
  169. </select>
  170. <select id="findStudentsWithExamRoom" resultMap="ExamRoomStudentRelation">
  171. SELECT id_, exam_registration_id_, examination_basic_id_, exam_room_id_, student_id_
  172. FROM exam_room_student_relation WHERE exam_room_id_=#{examRoomId}
  173. </select>
  174. <select id="findStudentsWithExamRooms" resultMap="ExamRoomStudentRelation">
  175. SELECT id_, exam_registration_id_, examination_basic_id_, exam_room_id_, student_id_
  176. FROM exam_room_student_relation WHERE exam_room_id_ IN
  177. <foreach collection="examRoomIds" item="examRoomId" separator="," open="(" close=")">
  178. #{examRoomId}
  179. </foreach>
  180. </select>
  181. <select id="getExamRoomStudentRelations" resultMap="ExamRoomStudentRelation">
  182. SELECT * FROM exam_room_student_relation
  183. WHERE examination_basic_id_ = #{basicId}
  184. <if test="roomId!=null">
  185. AND exam_room_id_ = #{roomId}
  186. </if>
  187. <if test="studentId">
  188. AND student_id_ = #{studentId}
  189. </if>
  190. </select>
  191. <select id="getStudentExamRoom" resultMap="ExamRoomStudentRelation">
  192. SELECT * FROM exam_room_student_relation WHERE exam_registration_id_ = #{registId} LIMIT 1 FOR UPDATE
  193. </select>
  194. <select id="findByStudentIdAndRoomId" resultMap="ExamRoomStudentRelation">
  195. SELECT ersr.* FROM exam_room_student_relation ersr
  196. WHERE ersr.exam_room_id_ = #{roomId} AND ersr.student_id_ = #{currentUserId} LIMIT 1
  197. </select>
  198. <resultMap id="RoomStudentListDtoMap" type="com.keao.edu.user.dto.RoomStudentListDto">
  199. <result property="subjectName" column="subject_name_"/>
  200. <result property="examRegistrationId" column="exam_registration_id_"/>
  201. <result property="studentId" column="student_id_"/>
  202. <result property="level" column="level_"/>
  203. <result property="realName" column="real_name_"/>
  204. <result property="examRoomId" column="exam_room_id_"/>
  205. <result property="signInTime" column="sign_in_time_"/>
  206. <result property="examRoomStudentRelationId" column="exam_room_student_relation_id_"/>
  207. <result property="finishedExam" column="is_finished_exam_"/>
  208. <result property="tenantId" column="tenant_id_"/>
  209. </resultMap>
  210. <select id="queryStudentList" resultMap="RoomStudentListDtoMap">
  211. SELECT ersr.id_ exam_room_student_relation_id_,ersr.exam_registration_id_,su.real_name_,ersr.sign_in_time_,
  212. s.name_ subject_name_,ec.level_,ersr.exam_room_id_,ersr.student_id_,ser.is_finished_exam_,ser.tenant_id_
  213. FROM exam_room_student_relation ersr
  214. LEFT JOIN exam_certification ec ON ec.exam_registration_id_ = ersr.exam_registration_id_
  215. LEFT JOIN `subject` s ON s.id_ = ec.subject_id_
  216. LEFT JOIN sys_user su ON ersr.student_id_ = su.id_
  217. LEFT JOIN student_exam_result ser ON ser.exam_registration_id_ = ersr.exam_registration_id_
  218. WHERE ersr.exam_room_id_ = #{roomId} AND ser.is_finished_exam_ != 5
  219. ORDER BY ersr.sign_in_time_ IS NULL,ser.is_finished_exam_ ASC,ersr.sign_in_time_ ASC,ersr.id_ ASC
  220. </select>
  221. <select id="queryTotalNum" resultType="java.lang.Integer">
  222. SELECT COUNT(ersr.id_) FROM exam_room_student_relation ersr
  223. WHERE ersr.exam_room_id_ = #{roomId}
  224. </select>
  225. <select id="queryEndNum" resultType="java.lang.Integer">
  226. SELECT COUNT(ser.id_) FROM student_exam_result ser
  227. WHERE ser.is_finished_exam_ = 5 AND ser.exam_room_id_ = #{roomId}
  228. </select>
  229. <select id="sumWaitNum" resultType="java.lang.Integer">
  230. SELECT COUNT(DISTINCT ersr.id_)
  231. FROM exam_room_student_relation ersr
  232. LEFT JOIN student_exam_result ser ON ser.exam_registration_id_ = ersr.exam_registration_id_
  233. WHERE ersr.exam_room_id_ = #{examRoomId} AND ersr.sign_in_time_ IS NOT NULL
  234. AND ser.is_finished_exam_ IN (0,1,2)
  235. <if test="signInTime != null and signInTime != ''">
  236. AND (ersr.sign_in_time_ &lt; #{signInTime} OR (ersr.sign_in_time_ = #{signInTime} AND ersr.id_ &lt; #{ersrId}))
  237. </if>
  238. </select>
  239. <select id="getStudentIds" resultType="java.lang.String">
  240. SELECT GROUP_CONCAT(DISTINCT student_id_) FROM exam_room_student_relation WHERE exam_room_id_ = #{examRoomId}
  241. </select>
  242. <select id="getStuRegistrationMap" resultType="java.util.Map">
  243. SELECT student_id_ 'key',GROUP_CONCAT(exam_registration_id_) 'value' FROM exam_room_student_relation
  244. WHERE exam_room_id_ = #{examRoomId}
  245. GROUP BY student_id_
  246. </select>
  247. <select id="getNoSendExamPlanRooms" resultMap="ExamRoomStudentRelation">
  248. SELECT
  249. *
  250. FROM
  251. exam_room_student_relation ersr
  252. LEFT JOIN exam_room er ON ersr.exam_room_id_ = er.id_
  253. WHERE er.exam_plan_push_flag_=0
  254. AND ersr.examination_basic_id_ = #{examId}
  255. <if test="organIds!=null">
  256. AND er.organ_id_ IN
  257. <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
  258. #{organId}
  259. </foreach>
  260. </if>
  261. </select>
  262. <select id="getTomorrowExamStudents" resultMap="ExamRoomStudentRelation">
  263. SELECT
  264. *
  265. FROM
  266. exam_room_student_relation ersr
  267. LEFT JOIN exam_room er ON ersr.exam_room_id_ = er.id_
  268. WHERE er.exam_plan_push_flag_=1 AND DATE_FORMAT(er.exam_start_time_,'%Y-%m-%d') = #{day}
  269. </select>
  270. <select id="getStudentNumMap" resultType="java.util.Map">
  271. SELECT ersr.exam_room_id_ 'key',COUNT(DISTINCT ersr.student_id_) 'value'
  272. FROM exam_room_student_relation ersr
  273. WHERE ersr.exam_room_id_ IN
  274. <foreach collection="roomIds" open="(" close=")" separator="," item="item">
  275. #{item}
  276. </foreach>
  277. GROUP BY ersr.exam_room_id_
  278. </select>
  279. <select id="countSignInNum" resultType="java.lang.Integer">
  280. SELECT COUNT(DISTINCT id_) FROM student_exam_result WHERE is_finished_exam_ = 2 AND exam_room_id_ = #{examRoomId}
  281. </select>
  282. <select id="countStudentsWithRoom" resultType="int">
  283. SELECT COUNT(DISTINCT exam_registration_id_) FROM exam_room_student_relation WHERE exam_room_id_=#{examRoomId}
  284. </select>
  285. <select id="getWithExamAndRoomSubjects" resultMap="ExamRoomStudentRelation">
  286. SELECT
  287. ersr.*
  288. FROM
  289. exam_room_student_relation ersr
  290. LEFT JOIN exam_room er ON ersr.exam_room_id_ = er.id_
  291. WHERE
  292. ersr.examination_basic_id_ = #{examId}
  293. AND er.subject_id_list_ IN
  294. <foreach collection="subjectIds" item="subjectId" separator="," open="(" close=")">
  295. #{subjectId}
  296. </foreach>
  297. </select>
  298. <select id="getWithExamRooms" resultMap="ExamRoomStudentRelation">
  299. SELECT
  300. *
  301. FROM
  302. exam_room_student_relation
  303. WHERE
  304. exam_room_id_ IN
  305. <foreach collection="examRoomIds" item="examRoomId" separator="," open="(" close=")">
  306. #{examRoomId}
  307. </foreach>
  308. </select>
  309. <select id="findNoFinishedExamRegistIdsWIthExamRooms" resultType="long">
  310. SELECT
  311. DISTINCT ser.exam_registration_id_
  312. FROM
  313. student_exam_result ser
  314. LEFT JOIN exam_room er ON ser.exam_room_id_ = er.id_
  315. LEFT JOIN examination_basic eb ON ser.examination_basic_id_ = eb.id_
  316. WHERE
  317. ser.is_finished_exam_ != 5
  318. AND eb.status_ != 'RESULT_CONFIRM'
  319. AND er.exam_end_time_ &lt; NOW( )
  320. AND ser.result_ IS NULL
  321. </select>
  322. <select id="findNoFinishedExamRegistsWIthExamRooms" resultMap="ExamRoomStudentRelation">
  323. SELECT
  324. DISTINCT ser.*
  325. FROM
  326. student_exam_result ser
  327. LEFT JOIN exam_room er ON ser.exam_room_id_ = er.id_
  328. LEFT JOIN examination_basic eb ON ser.examination_basic_id_ = eb.id_
  329. WHERE
  330. ser.is_finished_exam_ != 5
  331. AND eb.status_ != 'RESULT_CONFIRM'
  332. AND er.exam_end_time_ &lt; NOW( )
  333. AND ser.result_ IS NULL
  334. </select>
  335. </mapper>