|
@@ -4,11 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.qmth.themis.business.annotation.ApiJsonObject;
|
|
|
import com.qmth.themis.business.annotation.ApiJsonProperty;
|
|
|
-import com.qmth.themis.business.cache.ExamRecordCacheUtil;
|
|
|
-import com.qmth.themis.business.cache.RedisKeyHelper;
|
|
|
-import com.qmth.themis.business.cache.bean.ExamActivityRecordCacheBean;
|
|
|
import com.qmth.themis.business.cache.bean.ExamCacheBean;
|
|
|
-import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
|
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
|
import com.qmth.themis.business.dto.AuthDto;
|
|
|
import com.qmth.themis.business.dto.ExamPropCountDto;
|
|
@@ -474,60 +470,60 @@ public class TEExamController {
|
|
|
alreadyComplete = new HashSet<>();
|
|
|
//获取已待考、考试中、已完成学生
|
|
|
Set<Long> finalAlreadyComplete = alreadyComplete;
|
|
|
- examActivityIdSet.forEach(s -> {
|
|
|
- Map<String, Object> objectMap = redisUtil
|
|
|
- .getHashEntries(RedisKeyHelper.examActivityRecordCacheKey(s));
|
|
|
- if (Objects.nonNull(objectMap) && objectMap.size() > 0) {
|
|
|
- objectMap.forEach((k, v) -> {
|
|
|
- Long recordId = Long.parseLong(k);
|
|
|
- ExamActivityRecordCacheBean examActivityRecordCacheBean = (ExamActivityRecordCacheBean) v;
|
|
|
- ExamRecordStatusEnum examRecordStatusEnum = examActivityRecordCacheBean.getStatus();
|
|
|
- ExamStudentCacheBean examStudentCacheBean = teExamStudentService
|
|
|
- .getExamStudentCacheBean(examActivityRecordCacheBean.getExamStudentId());
|
|
|
- if (Objects.nonNull(examStudentCacheBean)
|
|
|
- && examStudentCacheBean.getEnable().intValue() == 1) {
|
|
|
- //客户端通讯状态
|
|
|
- WebsocketStatusEnum clientStatus = Objects
|
|
|
- .isNull(ExamRecordCacheUtil.getClientWebsocketStatus(recordId)) ?
|
|
|
- null :
|
|
|
- ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
|
|
|
- if (Objects
|
|
|
- .nonNull(examRecordStatusEnum) && !Objects
|
|
|
- .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED) && !Objects
|
|
|
- .equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED)) {
|
|
|
- if (Objects.nonNull(clientStatus) && Objects
|
|
|
- .equals(clientStatus, WebsocketStatusEnum.OFF_LINE)) {
|
|
|
- clientWebsocketStatusCount.getAndSet(clientWebsocketStatusCount.get() + 1);
|
|
|
- }
|
|
|
- //监控端通讯状态
|
|
|
- if (Objects.nonNull(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_CAMERA)) && Objects.equals(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_CAMERA), MonitorStatusSourceEnum.STOP)) {
|
|
|
- monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
- } else if (Objects.nonNull(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_SCREEN)) && Objects.equals(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_SCREEN), MonitorStatusSourceEnum.STOP)) {
|
|
|
- monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
- } else if (Objects.nonNull(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.MOBILE_FIRST)) && Objects.equals(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.MOBILE_FIRST), MonitorStatusSourceEnum.STOP)) {
|
|
|
- monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
- } else if (Objects.nonNull(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.MOBILE_SECOND)) && Objects.equals(ExamRecordCacheUtil.getMonitorStatus(recordId, MonitorVideoSourceEnum.MOBILE_SECOND), MonitorStatusSourceEnum.STOP)) {
|
|
|
- monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
- }
|
|
|
- }
|
|
|
- //已待考
|
|
|
- if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FIRST_PREPARE) && Objects.nonNull(clientStatus) && Objects
|
|
|
- .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
|
|
|
- prepareCount.getAndSet(prepareCount.get() + 1);
|
|
|
- }
|
|
|
- //考试中
|
|
|
- else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.ANSWERING) && Objects.nonNull(clientStatus) && Objects
|
|
|
- .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
|
|
|
- examCount.getAndSet(examCount.get() + 1);
|
|
|
- }
|
|
|
- //已完成
|
|
|
- else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED) || Objects
|
|
|
- .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED)) {
|
|
|
- finalAlreadyComplete.add(examActivityRecordCacheBean.getExamStudentId());
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ QueryWrapper<TOeExamRecord> tOeExamRecordQueryWrapper = new QueryWrapper<>();
|
|
|
+ tOeExamRecordQueryWrapper.lambda().in(TOeExamRecord::getExamActivityId, examActivityIdSet);
|
|
|
+ List<TOeExamRecord> examRecordList = tOeExamRecordService.list(tOeExamRecordQueryWrapper);
|
|
|
+ examRecordList.forEach(s -> {
|
|
|
+// Map<String, Object> objectMap = redisUtil
|
|
|
+// .getHashEntries(RedisKeyHelper.examActivityRecordCacheKey(s));
|
|
|
+// if (Objects.nonNull(objectMap) && objectMap.size() > 0) {
|
|
|
+// objectMap.forEach((k, v) -> {
|
|
|
+// Long recordId = Long.parseLong(k);
|
|
|
+// ExamActivityRecordCacheBean examActivityRecordCacheBean = (ExamActivityRecordCacheBean) v;
|
|
|
+ ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
|
|
|
+// ExamStudentCacheBean examStudentCacheBean = teExamStudentService
|
|
|
+// .getExamStudentCacheBean(examActivityRecordCacheBean.getExamStudentId());
|
|
|
+// if (Objects.nonNull(examStudentCacheBean)
|
|
|
+// && examStudentCacheBean.getEnable().intValue() == 1) {
|
|
|
+ //客户端通讯状态
|
|
|
+ WebsocketStatusEnum clientStatus = Objects.isNull(s.getClientWebsocketStatus()) ? null : s.getClientWebsocketStatus();
|
|
|
+ if (Objects
|
|
|
+ .nonNull(examRecordStatusEnum) && !Objects
|
|
|
+ .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED) && !Objects
|
|
|
+ .equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED)) {
|
|
|
+ if (Objects.nonNull(clientStatus) && Objects
|
|
|
+ .equals(clientStatus, WebsocketStatusEnum.OFF_LINE)) {
|
|
|
+ clientWebsocketStatusCount.getAndSet(clientWebsocketStatusCount.get() + 1);
|
|
|
+ }
|
|
|
+ //监控端通讯状态
|
|
|
+ if (Objects.nonNull(s.getCameraMonitorStatus()) && Objects.equals(s.getCameraMonitorStatus(), MonitorStatusSourceEnum.STOP)) {
|
|
|
+ monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
+ } else if (Objects.nonNull(s.getScreenMonitorStatus()) && Objects.equals(s.getScreenMonitorStatus(), MonitorStatusSourceEnum.STOP)) {
|
|
|
+ monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
+ } else if (Objects.nonNull(s.getMobileFirstMonitorStatus()) && Objects.equals(s.getMobileFirstMonitorStatus(), MonitorStatusSourceEnum.STOP)) {
|
|
|
+ monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
+ } else if (Objects.nonNull(s.getMobileSecondMonitorStatus()) && Objects.equals(s.getMobileSecondMonitorStatus(), MonitorStatusSourceEnum.STOP)) {
|
|
|
+ monitorStatusSourceCount.getAndSet(monitorStatusSourceCount.get() + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已待考
|
|
|
+ if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FIRST_PREPARE) && Objects.nonNull(clientStatus) && Objects
|
|
|
+ .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
|
|
|
+ prepareCount.getAndSet(prepareCount.get() + 1);
|
|
|
+ }
|
|
|
+ //考试中
|
|
|
+ else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.ANSWERING) && Objects.nonNull(clientStatus) && Objects
|
|
|
+ .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
|
|
|
+ examCount.getAndSet(examCount.get() + 1);
|
|
|
+ }
|
|
|
+ //已完成
|
|
|
+ else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED) || Objects
|
|
|
+ .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED)) {
|
|
|
+ finalAlreadyComplete.add(s.getExamStudentId());
|
|
|
}
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }
|
|
|
});
|
|
|
}
|
|
|
notComplete = allCount - alreadyComplete.size();
|