xiangpei
2024-05-15 fe29db7a08e9da70ca3c78db27a11e48fa5f6f43
src/main/resources/mapper/ExamPaperMapper.xml
@@ -17,11 +17,13 @@
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="deleted" jdbcType="BIT" property="deleted" />
    <result column="task_exam_id" jdbcType="INTEGER" property="taskExamId" />
    <result column="type" jdbcType="VARCHAR" property="type" />
    <result column="user_ids" jdbcType="VARCHAR" property="userIds" />
  </resultMap>
  <sql id="Base_Column_List">
    id, name, subject_id, paper_type, grade_level, score, question_count, suggest_time,
    limit_start_time, limit_end_time, frame_text_content_id, create_user, create_time,
    deleted, task_exam_id
    deleted, task_exam_id, type, user_ids
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select
@@ -38,13 +40,14 @@
      paper_type, grade_level, score,
      question_count, suggest_time, limit_start_time,
      limit_end_time, frame_text_content_id, create_user,
      create_time, deleted, task_exam_id
      create_time, deleted, task_exam_id, type, user_ids
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{subjectId,jdbcType=INTEGER},
      #{paperType,jdbcType=INTEGER}, #{gradeLevel,jdbcType=INTEGER}, #{score,jdbcType=INTEGER},
      #{questionCount,jdbcType=INTEGER}, #{suggestTime,jdbcType=INTEGER}, #{limitStartTime,jdbcType=TIMESTAMP},
      #{limitEndTime,jdbcType=TIMESTAMP}, #{frameTextContentId,jdbcType=INTEGER}, #{createUser,jdbcType=INTEGER},
      #{createTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}, #{taskExamId,jdbcType=INTEGER}
      #{createTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}, #{taskExamId,jdbcType=INTEGER},
      #{type,jdbcType=VARCHAR}, #{userIds,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.mindskip.xzs.domain.ExamPaper" useGeneratedKeys="true" keyProperty="id">
@@ -95,6 +98,12 @@
      <if test="taskExamId != null">
        task_exam_id,
      </if>
      <if test="type != null">
        type,
      </if>
      <if test="userIds != null">
        user_ids,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
@@ -141,6 +150,12 @@
      </if>
      <if test="taskExamId != null">
        #{taskExamId,jdbcType=INTEGER},
      </if>
      <if test="type != null">
        #{type,jdbcType=VARCHAR},
      </if>
      <if test="userIds != null">
        #{userIds,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
@@ -189,6 +204,9 @@
      <if test="taskExamId != null">
        task_exam_id = #{taskExamId,jdbcType=INTEGER},
      </if>
      <if test="userIds != null">
        user_ids = #{userIds,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
@@ -233,18 +251,21 @@
    left join t_exam_paper_department d on e.id = d.exam_paper_id
    left join t_exam_paper_subject s on e.id = s.exam_paper_id
    <where>
        and e.deleted=0 and d.deleted = 0
        and e.deleted=0
      <if test="id != null ">
        and e.id= #{id}
      </if>
      <if test="level != null ">
        and d.department_id= #{level}
        and d.department_id= #{level} and d.deleted = 0
      </if>
      <if test="subjectId != null ">
        and s.subject_id= #{subjectId}
        and s.subject_id= #{subjectId} and s.deleted = 0
      </if>
      <if test="paperType != null ">
        and e.paper_type= #{paperType}
      </if>
      <if test="type != null ">
        and e.type= #{type}
      </if>
    </where>
    group by e.id
@@ -256,48 +277,92 @@
  <select id="taskExamPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.exam.ExamPaperPageRequestVM">
    SELECT
    <include refid="Base_Column_List"/>
    FROM t_exam_paper
    e.*
    FROM t_exam_paper e
    LEFT JOIN t_exam_paper_department s on s.exam_paper_id = e.id
    <where>
      and deleted=0
      and task_exam_id is null
      and grade_level= #{level}
      and paper_type=#{paperType}
      and e.deleted=0
      and e.task_exam_id is null
      and e.paper_type=#{paperType}
    </where>
    group by e.id
  </select>
  <select id="studentPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageVM">
    SELECT
    <include refid="Base_Column_List"/>
    FROM t_exam_paper
    e.*
    FROM t_exam_paper e
    LEFT JOIN t_exam_paper_subject s on e.id = s.exam_paper_id
    <where>
       and deleted=0
       and e.deleted=0 and s.deleted = 0
      <if test="subjectId != null ">
        and subject_id=#{subjectId}
        and s.subject_id=#{subjectId}
      </if>
      <if test="levelId != null ">
        and grade_level=#{levelId}
        and e.grade_level=#{levelId}
      </if>
       and paper_type=#{paperType}
      <if test="paperType == 1">
        and e.paper_type in (1,7)
      </if>
      <if test="paperType == 4">
        and e.paper_type = #{paperType}
      </if>
      <if test="type != null and type != ''">
        and e.type = #{type}
      </if>
    </where>
    group by e.id
  </select>
  <select id="indexPaper" resultMap="PaperInfoResultMap" parameterType="com.mindskip.xzs.viewmodel.student.dashboard.PaperFilter">
    SELECT e.id,e.name,e.limit_start_time,e.limit_end_time
    FROM t_exam_paper e
    LEFT JOIN t_exam_paper_department d on d.exam_paper_id = e.id
    <where>
      and e.deleted=0 and d.deleted = 0
      and e.paper_type= #{examPaperType}
      and d.department_id=#{gradeLevel}
      <if test="examPaperType == 3 ">
      </if>
      <if test="examPaperType == 4 ">
        and  #{dateTime} between e.limit_start_time  and e.limit_end_time
      </if>
    </where>
    ORDER BY e.id  desc limit 5
      select * from(
      SELECT e.id,e.name,e.limit_start_time,e.limit_end_time
      FROM t_exam_paper e
      LEFT JOIN t_exam_paper_department d on d.exam_paper_id = e.id
      <where>
          and e.deleted=0 and d.deleted = 0 and e.type = 0
          and e.paper_type in
          <foreach item="examPaperType" collection="examPaperType" open="(" separator=","
                   close=")">
              #{examPaperType}
          </foreach>
          <if test="gradeLevel != '' and gradeLevel != null">
              and d.department_id=#{gradeLevel}
          </if>
          <if test="examPaperType == 3 ">
          </if>
        <foreach item="examPaperType" collection="examPaperType">
          <if test="examPaperType == 4 ">
            and #{dateTime} between e.limit_start_time and e.limit_end_time
          </if>
        </foreach>
          <if test="examPaperType == 4 ">
              and #{dateTime} between e.limit_start_time and e.limit_end_time
          </if>
      </where>
      ORDER BY e.id desc ) t
      union all
      select * from (
      SELECT e.id,e.name,e.limit_start_time,e.limit_end_time
      FROM t_exam_paper e
      LEFT JOIN t_exam_paper_user u on u.exam_paper_id = e.id
      <where>
      e.deleted=0 and u.deleted = 0 and e.type = 0
      and u.user_id = #{userId}
        and e.paper_type in
        <foreach item="examPaperType" collection="examPaperType" open="(" separator=","
                 close=")">
          #{examPaperType}
        </foreach>
        <foreach item="examPaperType" collection="examPaperType">
          <if test="examPaperType == 4 ">
            and #{dateTime} between e.limit_start_time and e.limit_end_time
          </if>
        </foreach>
      </where>
      ORDER BY e.id desc ) t
  </select>
@@ -341,4 +406,25 @@
    </foreach>
  </delete>
  <select id="gets" resultMap="BaseResultMap">
    select * from t_exam_paper
    where id in
    <foreach item="id" collection="ids" open="(" separator=","
             close=")">
      #{id}
    </foreach>
    and deleted = 0
  </select>
  <select id="getPaperExcelById" resultType="com.mindskip.xzs.domain.vo.PaperExcelVO" parameterType="java.lang.Integer">
    select u.real_name as name,a.create_user as userId,a.user_score as userScore,a.paper_score as paperScore
    from t_exam_paper_answer a
    left join t_user u on u.id = a.create_user
    where a.exam_paper_id = #{id}
  </select>
    <select id="list" resultType="com.mindskip.xzs.domain.ExamPaper">
    select id, name from t_exam_paper order by create_time desc
    </select>
</mapper>