瀏覽代碼

监考明细加入考场时间、监考老师、考场信息

wangliang 2 年之前
父節點
當前提交
133b510cc7

+ 18 - 2
themis-admin/src/main/java/com/qmth/themis/admin/api/TIeInvigilateController.java

@@ -15,6 +15,7 @@ import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
+import com.qmth.themis.business.dto.response.TBExamInvigilateUserDto;
 import com.qmth.themis.business.entity.*;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.excel.ExportUtils;
@@ -30,6 +31,7 @@ import com.qmth.themis.common.util.ResultUtil;
 import io.swagger.annotations.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -38,6 +40,7 @@ import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.io.File;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 监考信息 前端控制器
@@ -86,6 +89,9 @@ public class TIeInvigilateController {
     @Resource
     ThemisCacheService themisCacheService;
 
+    @Resource
+    TBExamInvigilateUserService tbExamInvigilateUserService;
+
     @ApiOperation(value = "实时监控台视频列表接口")
     @RequestMapping(value = "/list/video", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListVideoBean.class)})
@@ -317,7 +323,17 @@ public class TIeInvigilateController {
         String roomName = examStudentCacheBean.getRoomName();
         ExamActivityCacheBean examActivityCacheBean = teExamActivityService.getExamActivityCacheBean(examActivityId);
         ExamCacheBean examCacheBean = teExamService.getExamCacheBean(examId);
-        InvigilateListDetailBean invigilateListDetailBean = new InvigilateListDetailBean(examCacheBean.getName(), examActivityCacheBean.getCode(), examId, examActivityId, examStudentId, examRecordId, identity, examStudentName, courseNameCode, status, roomCode, roomName, breachStatus, basePhotoPath);
+
+        IPage<TBExamInvigilateUserDto> tbExamInvigilateUserDtoIPage = tbExamInvigilateUserService.examInvigilateUserQuery(new Page<>(SystemConstant.PAGE_NUMBER_MIN, SystemConstant.SELECT_PAGE_SIZE_MAX), examId, roomCode, null, teStudent.getOrgId());
+        String invigilateUsers = null;
+        if (Objects.nonNull(tbExamInvigilateUserDtoIPage) && !CollectionUtils.isEmpty(tbExamInvigilateUserDtoIPage.getRecords())) {
+            invigilateUsers = tbExamInvigilateUserDtoIPage.getRecords().get(0).getName();
+        }
+
+        InvigilateListDetailBean invigilateListDetailBean = new InvigilateListDetailBean(examCacheBean.getName(),
+                examActivityCacheBean.getCode(), examId, examActivityId, examStudentId, examRecordId, identity,
+                examStudentName, courseNameCode, status, roomCode, roomName, breachStatus, basePhotoPath,
+                examActivityCacheBean.getStartTime(), examActivityCacheBean.getFinishTime(), invigilateUsers);
 
         //考生轨迹
         QueryWrapper<TEExamStudentLog> teExamStudentLogQueryWrapper = new QueryWrapper<>();
@@ -326,7 +342,7 @@ public class TIeInvigilateController {
 //                .ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_HANDLE.name())
 //                .ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_REVOKE.name())
                 .orderByAsc(TEExamStudentLog::getCreateTime);
-//                .and(w -> w.ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_HANDLE.name()).or().ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_REVOKE.name()));
+        //                .and(w -> w.ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_HANDLE.name()).or().ne(TEExamStudentLog::getType, SystemOperationEnum.BREACH_REVOKE.name()));
         List<TEExamStudentLog> teExamStudentLogList = teExamStudentLogService.list(teExamStudentLogQueryWrapper);
         invigilateListDetailBean.setExamStudentLogList(teExamStudentLogList);
 

+ 41 - 1
themis-business/src/main/java/com/qmth/themis/business/bean/admin/InvigilateListDetailBean.java

@@ -90,6 +90,39 @@ public class InvigilateListDetailBean implements Serializable {
     @ApiModelProperty(value = "是否允许考生发起语音通话,0:否,1:是")
     private Integer examStudentCallEnable = 1;
 
+    @ApiModelProperty(name = "场次开始时间")
+    private Long examActivityStartTime;
+
+    @ApiModelProperty(name = "场次结束时间")
+    private Long examActivityEndTime;
+
+    @ApiModelProperty(name = "监考老师")
+    private String invigilateUsers;
+
+    public Long getExamActivityStartTime() {
+        return examActivityStartTime;
+    }
+
+    public void setExamActivityStartTime(Long examActivityStartTime) {
+        this.examActivityStartTime = examActivityStartTime;
+    }
+
+    public Long getExamActivityEndTime() {
+        return examActivityEndTime;
+    }
+
+    public void setExamActivityEndTime(Long examActivityEndTime) {
+        this.examActivityEndTime = examActivityEndTime;
+    }
+
+    public String getInvigilateUsers() {
+        return invigilateUsers;
+    }
+
+    public void setInvigilateUsers(String invigilateUsers) {
+        this.invigilateUsers = invigilateUsers;
+    }
+
     public Integer getExamStudentCallEnable() {
         return examStudentCallEnable;
     }
@@ -122,7 +155,11 @@ public class InvigilateListDetailBean implements Serializable {
         this.examStudentLogList = examStudentLogList;
     }
 
-    public InvigilateListDetailBean(String examName, String examActivityCode, Long examId, Long examActivityId, Long examStudentId, Long examRecordId, String identity, String examStudentName, String courseNameCode, ExamRecordStatusEnum statusCode, String roomCode, String roomName, Integer breachStatus, String basePhotoPath) {
+    public InvigilateListDetailBean(String examName, String examActivityCode, Long examId, Long examActivityId,
+                                    Long examStudentId, Long examRecordId, String identity, String examStudentName,
+                                    String courseNameCode, ExamRecordStatusEnum statusCode, String roomCode, String roomName,
+                                    Integer breachStatus, String basePhotoPath, Long examActivityStartTime,
+                                    Long examActivityEndTime, String invigilateUsers) {
         this.examName = examName;
         this.examActivityCode = examActivityCode;
         this.examId = examId;
@@ -137,6 +174,9 @@ public class InvigilateListDetailBean implements Serializable {
         this.roomName = roomName;
         this.breachStatus = breachStatus;
         this.basePhotoPath = basePhotoPath;
+        this.examActivityStartTime = examActivityStartTime;
+        this.examActivityEndTime = examActivityEndTime;
+        this.invigilateUsers = invigilateUsers;
     }
 
     public String getMonitorRecord() {

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -1227,7 +1227,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         //更新未完成考试记录id
         TEStudentCacheDto teStudentCacheDto = themisCacheService.addStudentAccountCache(es.getStudentId());
         Map<String, Object> properties = new HashMap<>();
-        properties.put(SystemConstant.REMOVE_WEBSOCKET, true);
+//        properties.put(SystemConstant.REMOVE_WEBSOCKET, true);//客户端加入补救措施后后台可以不强制退出websocket
 
         MqDto clientMqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.OE_WEBSOCKET_EXAM_STOP.name(),
                 recordId, MqTagEnum.OE_WEBSOCKET_EXAM_STOP, String.valueOf(recordId), properties,