|
@@ -7,19 +7,19 @@ import com.qmth.themis.business.annotation.ApiJsonObject;
|
|
import com.qmth.themis.business.annotation.ApiJsonProperty;
|
|
import com.qmth.themis.business.annotation.ApiJsonProperty;
|
|
import com.qmth.themis.business.base.BasePage;
|
|
import com.qmth.themis.business.base.BasePage;
|
|
import com.qmth.themis.business.bean.backend.InvigilateListBean;
|
|
import com.qmth.themis.business.bean.backend.InvigilateListBean;
|
|
|
|
+import com.qmth.themis.business.bean.backend.InvigilateListDetailBean;
|
|
import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
|
|
import com.qmth.themis.business.bean.backend.InvigilateListVideoBean;
|
|
import com.qmth.themis.business.cache.RedisKeyHelper;
|
|
import com.qmth.themis.business.cache.RedisKeyHelper;
|
|
|
|
+import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
import com.qmth.themis.business.dto.MqDto;
|
|
import com.qmth.themis.business.dto.MqDto;
|
|
import com.qmth.themis.business.entity.TBUser;
|
|
import com.qmth.themis.business.entity.TBUser;
|
|
import com.qmth.themis.business.entity.TEExamBreachLog;
|
|
import com.qmth.themis.business.entity.TEExamBreachLog;
|
|
import com.qmth.themis.business.entity.TOeExamRecord;
|
|
import com.qmth.themis.business.entity.TOeExamRecord;
|
|
-import com.qmth.themis.business.enums.BreachTypeEnum;
|
|
|
|
-import com.qmth.themis.business.enums.FinishTypeEnum;
|
|
|
|
-import com.qmth.themis.business.enums.MqTagEnum;
|
|
|
|
-import com.qmth.themis.business.enums.MqTopicEnum;
|
|
|
|
|
|
+import com.qmth.themis.business.enums.*;
|
|
import com.qmth.themis.business.service.MqDtoService;
|
|
import com.qmth.themis.business.service.MqDtoService;
|
|
import com.qmth.themis.business.service.TEExamBreachLogService;
|
|
import com.qmth.themis.business.service.TEExamBreachLogService;
|
|
|
|
+import com.qmth.themis.business.service.TEExamStudentService;
|
|
import com.qmth.themis.business.service.TOeExamRecordService;
|
|
import com.qmth.themis.business.service.TOeExamRecordService;
|
|
import com.qmth.themis.business.util.JacksonUtil;
|
|
import com.qmth.themis.business.util.JacksonUtil;
|
|
import com.qmth.themis.business.util.RedisUtil;
|
|
import com.qmth.themis.business.util.RedisUtil;
|
|
@@ -61,6 +61,9 @@ public class TIeInvigilateController {
|
|
@Resource
|
|
@Resource
|
|
TOeExamRecordService tOeExamRecordService;
|
|
TOeExamRecordService tOeExamRecordService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ TEExamStudentService teExamStudentService;
|
|
|
|
+
|
|
@ApiOperation(value = "实时监控台列表接口")
|
|
@ApiOperation(value = "实时监控台列表接口")
|
|
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListBean.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListBean.class)})
|
|
@@ -89,7 +92,7 @@ public class TIeInvigilateController {
|
|
|
|
|
|
@ApiOperation(value = "实时监控台视频列表接口")
|
|
@ApiOperation(value = "实时监控台视频列表接口")
|
|
@RequestMapping(value = "/list/video", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/list/video", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListBean.class)})
|
|
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListVideoBean.class)})
|
|
public Result listVideo(@ApiParam(value = "考试批次id") @RequestParam Long examId,
|
|
public Result listVideo(@ApiParam(value = "考试批次id") @RequestParam Long examId,
|
|
@ApiParam(value = "考试场次id", required = false) @RequestParam(required = false) Long examActivityId,
|
|
@ApiParam(value = "考试场次id", required = false) @RequestParam(required = false) Long examActivityId,
|
|
@ApiParam(value = "虚拟考场代码", required = false) @RequestParam(required = false) String roomCode,
|
|
@ApiParam(value = "虚拟考场代码", required = false) @RequestParam(required = false) String roomCode,
|
|
@@ -113,6 +116,30 @@ public class TIeInvigilateController {
|
|
return ResultUtil.ok(map);
|
|
return ResultUtil.ok(map);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @ApiOperation(value = "实时监控台列表明细接口")
|
|
|
|
+ @RequestMapping(value = "/list/detail", method = RequestMethod.POST)
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "监考监控信息", response = InvigilateListDetailBean.class)})
|
|
|
|
+ public Result listDetail(@ApiParam(value = "考试记录id") @RequestParam Long examRecordId) {
|
|
|
|
+ if (Objects.isNull(examRecordId) || Objects.equals(examRecordId, "")) {
|
|
|
|
+ throw new BusinessException(ExceptionResultEnum.EXAM_STUDENT_ID_IS_NULL);
|
|
|
|
+ }
|
|
|
|
+ //获取考试记录缓存
|
|
|
|
+ Map<String, Object> objectMap = redisUtil.getHashEntries(RedisKeyHelper.examRecordCacheKey(examRecordId));
|
|
|
|
+ Long examId = Long.parseLong(String.valueOf(objectMap.get("examId")));
|
|
|
|
+ Long examStudentId = Long.parseLong(String.valueOf(objectMap.get("examStudentId")));
|
|
|
|
+ Long examActivityId = Long.parseLong(String.valueOf(objectMap.get("examActivityId")));
|
|
|
|
+ ExamRecordStatusEnum status = (ExamRecordStatusEnum) objectMap.get("status");
|
|
|
|
+ ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
|
+ String identity = examStudentCacheBean.getIdentity();
|
|
|
|
+ String examStudentName = examStudentCacheBean.getName();
|
|
|
|
+ String courseNameCode = examStudentCacheBean.getCourseName() + "(" + examStudentCacheBean.getCourseCode() + ")";
|
|
|
|
+ String roomCode = examStudentCacheBean.getRoomCode();
|
|
|
|
+ InvigilateListDetailBean invigilateListDetailBean = new InvigilateListDetailBean(examId, examActivityId, examStudentId, examRecordId, identity, examStudentName, courseNameCode, status, roomCode);
|
|
|
|
+
|
|
|
|
+ //预警、异常、人脸
|
|
|
|
+ return ResultUtil.ok(invigilateListDetailBean);
|
|
|
|
+ }
|
|
|
|
+
|
|
@ApiOperation(value = "强制/手动交卷接口")
|
|
@ApiOperation(value = "强制/手动交卷接口")
|
|
@RequestMapping(value = "/finish", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/finish", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
|