From 541e77765ef787c48c4b0f694b499a4fc5196d6e Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 26 六月 2024 16:13:16 +0800
Subject: [PATCH] feat:考试监控

---
 src/main/resources/mapper/ExamSubmitTempMapper.xml              |   32 ++++++++--
 src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java          |   11 ++-
 src/main/java/com/ycl/jxkg/service/ExamService.java             |    7 ++
 src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java     |   13 +++
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java    |   25 +++++---
 src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java      |   17 ++---
 src/main/resources/mapper/ExamPaperAnswerMapper.xml             |    2 
 src/main/java/com/ycl/jxkg/controller/admin/ExamController.java |   29 ++++++---
 8 files changed, 91 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
index f9d5deb..77c04b8 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
+++ b/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);
+    }
+
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
index 0a39117..dbe51a5 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
+++ b/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;
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java
index c844d63..5223c50 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java
+++ b/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;
 
     /** 鐘舵�侊細涓存椂銆佷繚瀛� */
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java
index 039ac76..cb87083 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java
+++ b/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);
+
 }
diff --git a/src/main/java/com/ycl/jxkg/service/ExamService.java b/src/main/java/com/ycl/jxkg/service/ExamService.java
index 47492f4..0dcb219 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamService.java
+++ b/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);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
index f677a78..33c5843 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/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));
+    }
 }
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index e40180e..aa22944 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/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
diff --git a/src/main/resources/mapper/ExamSubmitTempMapper.xml b/src/main/resources/mapper/ExamSubmitTempMapper.xml
index 43017bc..4bbf61e 100644
--- a/src/main/resources/mapper/ExamSubmitTempMapper.xml
+++ b/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>

--
Gitblit v1.8.0