Explorar el Código

监考端接口

wangliang hace 4 años
padre
commit
d635e7a78c

+ 3 - 2
themis-backend/src/main/java/com/qmth/themis/backend/api/TIeInvigilateController.java

@@ -7,6 +7,7 @@ import com.qmth.themis.business.annotation.ApiJsonObject;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.base.BasePage;
 import com.qmth.themis.business.bean.backend.InvigilateListBean;
+import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
@@ -105,8 +106,8 @@ public class TIeInvigilateController {
         if (Objects.isNull(examId) || Objects.equals(examId, "")) {
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_IS_NULL);
         }
-        IPage<InvigilateListBean> invigilateListBeanIPage = tOeExamRecordService.invigilatePageList(new Page<>(pageNumber, pageSize), examId, examActivityId, roomCode, paperDownload, status, name, identity, minWarningCount, maxWarningCount, clientWebsocketStatus, monitorStatusSource);
-        BasePage basePage = new BasePage(invigilateListBeanIPage.getRecords(), invigilateListBeanIPage.getCurrent(), invigilateListBeanIPage.getSize(), invigilateListBeanIPage.getTotal());
+        IPage<InvigilateListVideoBean> invigilateListVideoBeanIPage = tOeExamRecordService.invigilatePageListVideo(new Page<>(pageNumber, pageSize), examId, examActivityId, roomCode, paperDownload, status, name, identity, minWarningCount, maxWarningCount, clientWebsocketStatus, monitorStatusSource);
+        BasePage basePage = new BasePage(invigilateListVideoBeanIPage.getRecords(), invigilateListVideoBeanIPage.getCurrent(), invigilateListVideoBeanIPage.getSize(), invigilateListVideoBeanIPage.getTotal());
         Map map = new HashMap<>();
         map.put(SystemConstant.RECORDS, basePage);
         return ResultUtil.ok(map);

+ 9 - 6
themis-business/src/main/java/com/qmth/themis/business/bean/backend/InvigilateListBean.java

@@ -6,8 +6,11 @@ import com.qmth.themis.business.enums.WebsocketStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.io.Serializable;
+
 @ApiModel("实时监控台返回对象")
-public class InvigilateListBean {
+public class InvigilateListBean implements Serializable {
+
     @ApiModelProperty(name = "考试id")
     private Long examId;
 
@@ -18,7 +21,7 @@ public class InvigilateListBean {
     private Long examStudentId;
 
     @ApiModelProperty(name = "考试记录id")
-    private Long recordId;
+    private Long examRecordId;
 
     @ApiModelProperty(name = "证件号")
     private String identity;
@@ -86,12 +89,12 @@ public class InvigilateListBean {
         this.examStudentId = examStudentId;
     }
 
-    public Long getRecordId() {
-        return recordId;
+    public Long getExamRecordId() {
+        return examRecordId;
     }
 
-    public void setRecordId(Long recordId) {
-        this.recordId = recordId;
+    public void setExamRecordId(Long examRecordId) {
+        this.examRecordId = examRecordId;
     }
 
     public String getIdentity() {

+ 155 - 0
themis-business/src/main/java/com/qmth/themis/business/bean/backend/InvigilateListVideoBean.java

@@ -0,0 +1,155 @@
+package com.qmth.themis.business.bean.backend;
+
+import com.qmth.themis.business.enums.ExamRecordStatusEnum;
+import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
+import com.qmth.themis.business.enums.WebsocketStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 实时监控台视频返回对象
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/8/22
+ */
+@ApiModel("实时监控台视频返回对象")
+public class InvigilateListVideoBean implements Serializable {
+
+    @ApiModelProperty(name = "考试id")
+    private Long examId;
+
+    @ApiModelProperty(name = "场次id")
+    private Long examActivityId;
+
+    @ApiModelProperty(name = "考生id")
+    private Long examStudentId;
+
+    @ApiModelProperty(name = "考试记录id")
+    private Long examRecordId;
+
+    @ApiModelProperty(name = "证件号")
+    private String identity;
+
+    @ApiModelProperty(name = "虚拟考场代码")
+    private String roomCode;
+
+    @ApiModelProperty(name = "姓名")
+    private String name;
+
+    @ApiModelProperty(name = "考生状态")
+    private String status;
+
+    @ApiModelProperty(name = "考生状态值")
+    private ExamRecordStatusEnum statusCode;
+
+    @ApiModelProperty(name = "预警量")
+    private Integer warningCount;
+
+    @ApiModelProperty(name = "是否违纪")
+    private Integer breachStatus;
+
+    @ApiModelProperty(name = "监控观看地址")
+    private String monitorLiveUrl;
+
+    public String getMonitorLiveUrl() {
+        return monitorLiveUrl;
+    }
+
+    public void setMonitorLiveUrl(String monitorLiveUrl) {
+        this.monitorLiveUrl = monitorLiveUrl;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getExamActivityId() {
+        return examActivityId;
+    }
+
+    public void setExamActivityId(Long examActivityId) {
+        this.examActivityId = examActivityId;
+    }
+
+    public Long getExamStudentId() {
+        return examStudentId;
+    }
+
+    public void setExamStudentId(Long examStudentId) {
+        this.examStudentId = examStudentId;
+    }
+
+    public Long getExamRecordId() {
+        return examRecordId;
+    }
+
+    public void setExamRecordId(Long examRecordId) {
+        this.examRecordId = examRecordId;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public String getRoomCode() {
+        return roomCode;
+    }
+
+    public void setRoomCode(String roomCode) {
+        this.roomCode = roomCode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStatus() {
+        if (statusCode != null) {
+            return statusCode.getCode();
+        }
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public ExamRecordStatusEnum getStatusCode() {
+        return statusCode;
+    }
+
+    public void setStatusCode(ExamRecordStatusEnum statusCode) {
+        this.statusCode = statusCode;
+    }
+
+    public Integer getWarningCount() {
+        return warningCount;
+    }
+
+    public void setWarningCount(Integer warningCount) {
+        this.warningCount = warningCount;
+    }
+
+    public Integer getBreachStatus() {
+        return breachStatus;
+    }
+
+    public void setBreachStatus(Integer breachStatus) {
+        this.breachStatus = breachStatus;
+    }
+}

+ 31 - 1
themis-business/src/main/java/com/qmth/themis/business/dao/TOeExamRecordMapper.java

@@ -3,6 +3,7 @@ package com.qmth.themis.business.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.themis.business.bean.backend.InvigilateListBean;
+import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
 import com.qmth.themis.business.dto.response.TEExamUnFinishDto;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import org.apache.ibatis.annotations.Mapper;
@@ -56,7 +57,7 @@ public interface TOeExamRecordMapper extends BaseMapper<TOeExamRecord> {
      * @param monitorStatusSource
      * @return
      */
-    public IPage<InvigilateListBean> invigilatePageQuery(IPage<Map> iPage, @Param("examId") Long examId,
+    public IPage<InvigilateListBean> invigilatePageList(IPage<Map> iPage, @Param("examId") Long examId,
                                                          @Param("examActivityId") Long examActivityId,
                                                          @Param("roomCode") String roomCode,
                                                          @Param("paperDownload") Integer paperDownload,
@@ -67,4 +68,33 @@ public interface TOeExamRecordMapper extends BaseMapper<TOeExamRecord> {
                                                          @Param("maxWarningCount") Integer maxWarningCount,
                                                          @Param("clientWebsocketStatus") String clientWebsocketStatus,
                                                          @Param("monitorStatusSource") String monitorStatusSource);
+
+    /**
+     * 查询实时监控台视频列表
+     *
+     * @param iPage
+     * @param examId
+     * @param examActivityId
+     * @param roomCode
+     * @param paperDownload
+     * @param status
+     * @param name
+     * @param identity
+     * @param minWarningCount
+     * @param maxWarningCount
+     * @param clientWebsocketStatus
+     * @param monitorStatusSource
+     * @return
+     */
+    public IPage<InvigilateListVideoBean> invigilatePageListVideo(IPage<Map> iPage, @Param("examId") Long examId,
+                                                                  @Param("examActivityId") Long examActivityId,
+                                                                  @Param("roomCode") String roomCode,
+                                                                  @Param("paperDownload") Integer paperDownload,
+                                                                  @Param("status") String status,
+                                                                  @Param("name") String name,
+                                                                  @Param("identity") String identity,
+                                                                  @Param("minWarningCount") Integer minWarningCount,
+                                                                  @Param("maxWarningCount") Integer maxWarningCount,
+                                                                  @Param("clientWebsocketStatus") String clientWebsocketStatus,
+                                                                  @Param("monitorStatusSource") String monitorStatusSource);
 }

+ 30 - 0
themis-business/src/main/java/com/qmth/themis/business/service/TOeExamRecordService.java

@@ -3,6 +3,7 @@ package com.qmth.themis.business.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.themis.business.bean.backend.InvigilateListBean;
+import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.ExamTypeEnum;
 import com.qmth.themis.business.enums.LivenessTypeEnum;
@@ -121,4 +122,33 @@ public interface TOeExamRecordService extends IService<TOeExamRecord> {
                                                         Integer maxWarningCount,
                                                         String clientWebsocketStatus,
                                                         String monitorStatusSource);
+
+    /**
+     * 查询实时监控台列表
+     *
+     * @param iPage
+     * @param examId
+     * @param examActivityId
+     * @param roomCode
+     * @param paperDownload
+     * @param status
+     * @param name
+     * @param identity
+     * @param minWarningCount
+     * @param maxWarningCount
+     * @param clientWebsocketStatus
+     * @param monitorStatusSource
+     * @return
+     */
+    public IPage<InvigilateListVideoBean> invigilatePageListVideo(IPage<Map> iPage, Long examId,
+                                                                       Long examActivityId,
+                                                                       String roomCode,
+                                                                       Integer paperDownload,
+                                                                       String status,
+                                                                       String name,
+                                                                       String identity,
+                                                                       Integer minWarningCount,
+                                                                       Integer maxWarningCount,
+                                                                       String clientWebsocketStatus,
+                                                                       String monitorStatusSource);
 }

+ 24 - 7
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.themis.business.bean.backend.InvigilateListBean;
+import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.*;
@@ -63,12 +64,6 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
     @Resource
     TEExamService examService;
 
-    @Resource
-    TEExamService teExamService;
-
-    @Resource
-    SystemConfig systemConfig;
-
     @Resource
     TOeExamAnswerService examAnswerService;
 
@@ -442,6 +437,28 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                                                         Integer maxWarningCount,
                                                         String clientWebsocketStatus,
                                                         String monitorStatusSource) {
-        return tOeExamRecordMapper.invigilatePageQuery(iPage, examId, examActivityId, roomCode, paperDownload, status, name, identity, minWarningCount, maxWarningCount, clientWebsocketStatus, monitorStatusSource);
+        return tOeExamRecordMapper.invigilatePageList(iPage, examId, examActivityId, roomCode, paperDownload, status, name, identity, minWarningCount, maxWarningCount, clientWebsocketStatus, monitorStatusSource);
+    }
+
+    /**
+     * 查询实时监控台视频列表
+     *
+     * @param iPage
+     * @param examId
+     * @param examActivityId
+     * @param roomCode
+     * @param paperDownload
+     * @param status
+     * @param name
+     * @param identity
+     * @param minWarningCount
+     * @param maxWarningCount
+     * @param clientWebsocketStatus
+     * @param monitorStatusSource
+     * @return
+     */
+    @Override
+    public IPage<InvigilateListVideoBean> invigilatePageListVideo(IPage<Map> iPage, Long examId, Long examActivityId, String roomCode, Integer paperDownload, String status, String name, String identity, Integer minWarningCount, Integer maxWarningCount, String clientWebsocketStatus, String monitorStatusSource) {
+        return tOeExamRecordMapper.invigilatePageListVideo(iPage, examId, examActivityId, roomCode, paperDownload, status, name, identity, minWarningCount, maxWarningCount, clientWebsocketStatus, monitorStatusSource);
     }
 }

+ 19 - 3
themis-business/src/main/resources/mapper/TOeExamRecordMapper.xml

@@ -80,12 +80,12 @@
 		t.${colName}=#{colValue} where t.id=#{recordId}
 	</update>
 
-    <select id="invigilatePageQuery" resultType="com.qmth.themis.business.bean.backend.InvigilateListBean">
+    <sql id="invigilatePageHead">
         select
             t.exam_id examId,
             t.exam_activity_id examActivityId,
             t.exam_student_id examStudentId,
-            t.id recordId,
+            t.id examRecordId,
             s.identity identity,
             s.room_code roomCode,
             s.name name,
@@ -96,7 +96,12 @@
             t.answer_progress progress,
             t.client_current_ip clientCurrentIp,
             t.warning_count warningCount,
-            t.breach_status breachStatus
+            t.breach_status breachStatus,
+            t.client_websocket_status as clientWebsocketStatus,
+            t.monitor_status_source as monitorStatusSource
+    </sql>
+
+    <sql id="invigilatePageFoot">
         from t_oe_exam_record t
         left join t_e_exam_student s on t.exam_student_id = s.id
         <where>
@@ -135,5 +140,16 @@
             </if>
             and t.status = 'ANSWERING'
         </where>
+    </sql>
+
+    <select id="invigilatePageList" resultType="com.qmth.themis.business.bean.backend.InvigilateListBean">
+        <include refid="invigilatePageHead" />
+        <include refid="invigilatePageFoot" />
+    </select>
+
+    <select id="invigilatePageListVideo" resultType="com.qmth.themis.business.bean.backend.InvigilateListVideoBean">
+        <include refid="invigilatePageHead" />
+        ,t.monitor_live_url as monitorLiveUrl
+        <include refid="invigilatePageFoot" />
     </select>
 </mapper>

+ 0 - 6
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -153,9 +153,6 @@ public class TEExamController {
     @RequestMapping(value = "/student_paper_struct/upload", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
     public Result studentPaperStruct(@RequestBody StudentPaperStructParamBean param) {
-        if (Objects.nonNull(param)) {
-            log.info("studentPaperStruct:{}", JacksonUtil.parseJson(param));
-        }
         TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
         if (param.getRecordId() == null) {
             throw new BusinessException("考试记录id不能为空");
@@ -171,9 +168,6 @@ public class TEExamController {
     @RequestMapping(value = "/answer/submit", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
     public Result answerSubmit(@RequestBody AnswerSubmitParamBean param) {
-        if (Objects.nonNull(param)) {
-            log.info("answerSubmit:{}", JacksonUtil.parseJson(param));
-        }
         TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
         if (param.getRecordId() == null) {
             throw new BusinessException("考试记录id不能为空");