龚焕茏
2024-06-26 541e77765ef787c48c4b0f694b499a4fc5196d6e
feat:考试监控
8个文件已修改
136 ■■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/ExamController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ExamService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamSubmitTempMapper.xml 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
@@ -1,21 +1,20 @@
package com.ycl.jxkg.controller.admin;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ycl.jxkg.service.ExamService;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.domain.form.ExamForm;
import com.ycl.jxkg.domain.query.ExamQuery;
import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.service.ExamService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
 * 考试 前端控制器
@@ -94,4 +93,12 @@
    public Result getMarkPaperInfo(@PathVariable("examId") Integer examId, @PathVariable("userId") Integer userId) {
        return examService.getMarkPaperInfo(examId, userId);
    }
    @GetMapping("/monitor/list")
    @PreAuthorize("hasAuthority('exam:monitor:list')")
    @ApiOperation(value = "考试监控列表", notes = "考试监控列表")
    public Result monitorList(ExamQuery query) {
        return examService.monitorList(query);
    }
}
src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
@@ -1,12 +1,7 @@
package com.ycl.jxkg.domain.query;
import com.ycl.jxkg.domain.base.AbsQuery;
import java.util.List;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -22,6 +17,12 @@
    /** 考试名称 */
    private String examName;
    /** 考试id */
    private Integer examId;
    /** 关键字 */
    private String keyword;
    /** 班级 */
    private Integer classesId;
src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java
@@ -2,14 +2,10 @@
import com.ycl.jxkg.domain.base.AbsVo;
import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
import java.util.List;
import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import java.util.Date;
/**
@@ -21,11 +17,13 @@
@Data
public class ExamSubmitTempVO extends AbsVo {
    /**  */
    private Integer examId;
    /**  */
    private String examName;
    private Integer userId;
    private String userName;
    /** 做题耗时   秒 */
    private Integer doTime;
@@ -33,7 +31,6 @@
    /** 提交的试卷内容 */
    private String examSubmit;
    /**  */
    private Date createTime;
    /** 状态:临时、保存 */
src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java
@@ -1,10 +1,12 @@
package com.ycl.jxkg.mapper;
import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
import com.ycl.jxkg.domain.query.ExamQuery;
import com.ycl.jxkg.domain.vo.ExamSubmitTempVO;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 提交试卷临时保存 Mapper 接口
@@ -22,4 +24,11 @@
     */
    ExamSubmitTempVO getById(Integer id);
    /**
     * 根据考试id获取监控列表
     * @param query 考试id
     * @return 监控列表
     */
    IPage<ExamSubmitTempVO> monitorList(IPage<ExamSubmitTempVO> page, @Param("query") ExamQuery query);
}
src/main/java/com/ycl/jxkg/service/ExamService.java
@@ -113,4 +113,11 @@
     * @return
     */
    Result getMarkPaperInfo(Integer examId, Integer userId);
    /**
     * 根据考试id获取监控列表
     * @param query 考试id
     * @return 监控列表
     */
    Result monitorList(ExamQuery query);
}
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -3,29 +3,30 @@
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.domain.entity.*;
import com.ycl.jxkg.domain.entity.Exam;
import com.ycl.jxkg.domain.entity.ExamPaper;
import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
import com.ycl.jxkg.domain.entity.Question;
import com.ycl.jxkg.domain.exam.PaperFixQuestionDTO;
import com.ycl.jxkg.domain.exam.PaperQuestionSettingDTO;
import com.ycl.jxkg.domain.form.ExamForm;
import com.ycl.jxkg.domain.query.ExamQuery;
import com.ycl.jxkg.domain.question.QuestionObject;
import com.ycl.jxkg.domain.vo.*;
import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO;
import com.ycl.jxkg.enums.ExamPaperTypeEnum;
import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.general.ExamStatusEnum;
import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum;
import com.ycl.jxkg.mapper.*;
import com.ycl.jxkg.service.ExamPaperService;
import com.ycl.jxkg.service.ExamService;
import com.ycl.jxkg.base.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.jxkg.domain.form.ExamForm;
import com.ycl.jxkg.domain.query.ExamQuery;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import com.ycl.jxkg.utils.PageUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -426,4 +427,10 @@
        }
        return Result.ok(vo);
    }
    @Override
    public Result monitorList(ExamQuery query) {
        IPage<ExamSubmitTempVO> page = PageUtil.getPage(query, ExamSubmitTempVO.class);
        return Result.ok().data(examSubmitTempMapper.monitorList(page, query));
    }
}
src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -96,7 +96,7 @@
        IFNULL(COUNT(DISTINCT f.id), 0) AS personTotalNum,
        t.exam_name
        FROM t_exam_paper a
        INNER JOIN t_exam t ON a.id = t.exam_paper_id AND t.status = 'finished' AND t.deleted = 0
        INNER JOIN t_exam t ON a.id = t.exam_paper_id AND t.deleted = 0
        LEFT JOIN t_subject b ON a.subject_id = b.id
        LEFT JOIN t_user c ON t.teacher_id = c.id
        LEFT JOIN t_exam_paper_answer d ON a.id = d.exam_paper_id
src/main/resources/mapper/ExamSubmitTempMapper.xml
@@ -12,12 +12,6 @@
        <result column="status" property="status" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TEST.exam_id,
@@ -33,7 +27,6 @@
            TEST.id = #{id} AND TEST.deleted = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TEST.exam_id,
@@ -49,4 +42,29 @@
            TEST.deleted = 0
    </select>
    <select id="monitorList" resultType="com.ycl.jxkg.domain.vo.ExamSubmitTempVO">
        SELECT
            TEST.exam_id,
            TEST.user_id,
            TEST.do_time,
            TEST.exam_submit,
            TEST.create_time,
            TEST.status,
            TEST.id,
            TE.exam_name,
            TU.real_name
        FROM
            t_exam_submit_temp TEST
        INNER JOIN t_user TU ON TU.id = TEST.user_id AND TU.deleted = 0
        INNER JOIN t_exam TE ON TE.id = TEST.exam_id AND TE.deleted = 0
        WHERE
            TEST.deleted = 0
        <if test="query.examId != null">
            AND TEST.exam_id = #{query.examId}
        </if>
        <if test="query.keyword != null and query.keyword != ''">
            AND (INSTR(TU.real_name, #{query.keyword})) OR (INSTR(TE.exam_name, #{query.keyword})
        </if>
    </select>
</mapper>