wangliang 4 anni fa
parent
commit
d3cb6fa6f7

+ 33 - 29
themis-admin/src/main/java/com/qmth/themis/admin/api/TEExamController.java

@@ -485,42 +485,46 @@ public class TEExamController {
                             ExamStudentCacheBean examStudentCacheBean = teExamStudentService
                                     .getExamStudentCacheBean(examActivityRecordCacheBean.getExamStudentId());
                             if (Objects.nonNull(examStudentCacheBean)
-                                    && examStudentCacheBean.getEnable().intValue() == 1 && Objects
-                                    .nonNull(examRecordStatusEnum) && !Objects
-                                    .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED) && !Objects
-                                    .equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED)) {
+                                    && examStudentCacheBean.getEnable().intValue() == 1) {
                                 //客户端通讯状态
                                 WebsocketStatusEnum clientStatus = Objects
                                         .isNull(ExamRecordCacheUtil.getClientWebsocketStatus(recordId)) ?
                                         null :
                                         ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
-                                if (Objects.nonNull(clientStatus) && Objects
-                                        .equals(clientStatus, WebsocketStatusEnum.OFF_LINE)) {
-                                    clientWebsocketStatusCount.getAndSet(clientWebsocketStatusCount.get() + 1);
+                                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.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());
                                 }
-                            }
-                            //已待考
-                            if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FIRST_PREPARE)) {
-                                prepareCount.getAndSet(prepareCount.get() + 1);
-                            }
-                            //考试中
-                            else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.ANSWERING)) {
-                                examCount.getAndSet(examCount.get() + 1);
-                            }
-                            //已完成
-                            else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED) || Objects
-                                    .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED)) {
-                                finalAlreadyComplete.add(examActivityRecordCacheBean.getExamStudentId());
                             }
                         });
                     }

+ 6 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TIeReportServiceImpl.java

@@ -446,7 +446,10 @@ public class TIeReportServiceImpl implements TIeReportService {
                                 null :
                                 ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
                         // 在线人数
-                        if (Objects.nonNull(clientStatus) && Objects
+                        if (Objects
+                                .nonNull(examRecordStatusEnum) && !Objects
+                                .equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED) && !Objects
+                                .equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED) && Objects.nonNull(clientStatus) && Objects
                                 .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
                             onlineCount.getAndSet(onlineCount.get() + 1);
                         }
@@ -461,7 +464,8 @@ public class TIeReportServiceImpl implements TIeReportService {
                             prepareCount.getAndSet(prepareCount.get() + 1);
                         }
                         // 考试人数
-                        else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.ANSWERING)) {
+                        else if (Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.ANSWERING) && Objects.nonNull(clientStatus) && Objects
+                                .equals(clientStatus, WebsocketStatusEnum.ON_LINE)) {
                             examingCount.getAndSet(examingCount.get() + 1);
                         }
                     }