wangliang 4 rokov pred
rodič
commit
6737aa09c6

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamStudentController.java

@@ -228,7 +228,7 @@ public class TEExamStudentController {
             if (Objects.nonNull(tbExamInvigilateUserList) && tbExamInvigilateUserList.size() > 0) {
                 Map<String, String> tbExamInvigilateUserMap = new HashMap();
                 tbExamInvigilateUserList.forEach(s -> {
-                    tbExamInvigilateUserMap.put(s.getRoomCode() + ":" + s.getRoomName(), s.getRoomCode() + ":" + s.getRoomName());
+                    tbExamInvigilateUserMap.put(s.getExamId() + ":" + s.getRoomCode() + ":" + s.getRoomName(), s.getRoomCode() + ":" + s.getRoomName());
                 });
                 transMap.put("tbExamInvigilateUserMap", tbExamInvigilateUserMap);
             }

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/templete/service/impl/TempleteLogicServiceImpl.java

@@ -187,7 +187,7 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
                             .eq(TEExamStudent::getIdentity, examStudentImportDto.getIdentity());
                     teExamStudentService.update(teExamStudentUpdateWrapper);
                     teExamStudentService.saveOrUpdate(teExamStudent);
-                    roomCodeAndNameSet.add(teExamStudent.getRoomCode() + ":" + teExamStudent.getRoomName());
+                    roomCodeAndNameSet.add(examId + ":" + teExamStudent.getRoomCode() + ":" + teExamStudent.getRoomName());
                     teExamStudentList.add(teExamStudent);
                 }
                 txtList = this.importProgress(max, min, size, txtList, tbTaskHistory, timeFormat);
@@ -210,7 +210,7 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
             roomCodeAndNameSet.forEach(s -> {
                 if (Objects.isNull(tbExamInvigilateUserMap) || (Objects.nonNull(tbExamInvigilateUserMap) && Objects.isNull(tbExamInvigilateUserMap.get(s)))) {
                     String[] strs = s.split(":");
-                    TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(examId, orgId, strs[0], strs[1]);
+                    TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(Long.parseLong(strs[0]), orgId, strs[1], strs[2]);
                     tbExamInvigilateUserService.save(tbExamInvigilateUser);
                     tbExamInvigilateUserList.add(tbExamInvigilateUser);
                     count.getAndIncrement();

+ 5 - 2
themis-business/src/main/resources/db/init.sql

@@ -498,7 +498,7 @@ INSERT INTO `t_b_privilege` VALUES (131, '报表-撤销违纪名单', '/api/admi
 INSERT INTO `t_b_privilege` VALUES (132, '报表-撤销违纪名单明细', '/api/admin/report/exam_revoke_breach_list_detail', 'LINK', 24, 10, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (133, '报表-考生日志', '/api/admin/report/exam_student_log_list', 'LINK', 25, 1, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (134, '报表-考生日志明细', '/api/admin/report/exam_student_log_list_detail', 'LINK', 25, 2, NULL, '2020-08-01 12:08:31');
-INSERT INTO `t_b_privilege` VALUES (135, '监考考试批次列表', '/api/admin/exam/list', 'LINK', 10, 5, NULL, '2020-08-01 12:08:31');
+INSERT INTO `t_b_privilege` VALUES (135, '监考端获取考试批次提醒', '/api/admin/exam/list/count', 'LINK', 10, 5, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (136, '进度查询导出', '/api/admin/invigilate/progress/export', 'LINK', 14, 11, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (137, '拍照/录音答题就绪', '/api/mobile/answer/ready', 'LINK', 60, 32, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (138, '拍照/录音提交', '/api/mobile/answer/submit', 'LINK', 60, 33, NULL, '2020-08-01 12:08:31');
@@ -506,9 +506,10 @@ INSERT INTO `t_b_privilege` VALUES (139, '监考端撤销通话申请', '/api/ad
 INSERT INTO `t_b_privilege` VALUES (140, '结束监考', '/api/admin/invigilate/exam/finish', 'LINK', 14, 12, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (141, '导入导出任务', 'ImportExportTask', 'MENU', 4, 7, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (142, '监考获取monitorKey', '/api/admin/monitor/getMonitorKey', 'LINK', 60, 28, NULL, '2020-08-01 12:08:31');
-INSERT INTO `t_b_privilege` VALUES (143, '监考监控通话提醒', '/api/admin/monitor/call/count', 'LINK', 60, 29, NULL, '2020-08-01 12:08:31');
+INSERT INTO `t_b_privilege` VALUES (143, '监考监控通话提醒接口', '/api/admin/monitor/call/count', 'LINK', 60, 29, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (144, '监考监控通话查询', '/api/admin/monitor/call/list', 'LINK', 60, 30, NULL, '2020-08-01 12:08:31');
 INSERT INTO `t_b_privilege` VALUES (145, '监考监控通话查询来源', '/api/admin/monitor/call/query', 'LINK', 60, 31, NULL, '2020-08-01 12:08:31');
+INSERT INTO `t_b_privilege` VALUES (146, '重考待审提醒', '/api/admin/invigilate/reexam/list_not_done_notify', 'LINK', 60, 32, NULL, '2020-08-01 12:08:31');
 COMMIT;
 
 -- ----------------------------
@@ -716,6 +717,8 @@ INSERT INTO `t_b_role_privilege` VALUES (169, 'ADMIN', 145);
 INSERT INTO `t_b_role_privilege` VALUES (170, 'INVIGILATE', 145);
 INSERT INTO `t_b_role_privilege` VALUES (171, 'INSPECTION', 145);
 INSERT INTO `t_b_role_privilege` VALUES (172, 'INVIGILATE', 107);
+INSERT INTO `t_b_role_privilege` VALUES (173, 'ADMIN', 146);
+INSERT INTO `t_b_role_privilege` VALUES (174, 'ADMIN', 135);
 COMMIT;
 
 -- ----------------------------

+ 2 - 2
themis-business/src/main/resources/mapper/TEExamActivityMapper.xml

@@ -121,8 +121,8 @@
             tee.opening_seconds as openingSeconds,
             teea.opening_seconds as activityOpeningSeconds,
             UNIX_TIMESTAMP(date_sub(teea.start_time, interval IFNULL(teea.prepare_seconds, tee.prepare_seconds) second)) * 1000 as prepareTime,
-            UNIX_TIMESTAMP(date_add(teea.start_time, interval tee.min_duration_seconds second)) * 1000 as minStartTime,
-            UNIX_TIMESTAMP(date_add(teea.start_time, interval IFNULL(teea.max_duration_seconds, tee.max_duration_seconds) second)) * 1000 as maxStartTime,
+            UNIX_TIMESTAMP(IFNULL(teea.start_time, tee.start_time)) * 1000 as minStartTime,
+            UNIX_TIMESTAMP(date_add(teea.start_time, interval IFNULL(teea.opening_seconds, tee.opening_seconds) second)) * 1000 as maxStartTime
             IF(tee.mode = 'TOGETHER', UNIX_TIMESTAMP(IFNULL(teea.finish_time , tee.end_time)) * 1000, null) as maxFinishTime,
             tee.monitor_video_source as monitorVideoSourceStr,
             tee.prepare_seconds as prepareSeconds,

+ 1 - 3
themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java

@@ -1,7 +1,6 @@
 package com.qmth.themis.exam.api;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.gson.Gson;
 import com.qmth.themis.business.annotation.ApiJsonObject;
 import com.qmth.themis.business.annotation.ApiJsonProperty;
@@ -21,7 +20,6 @@ import com.qmth.themis.business.dto.response.TEExamDto;
 import com.qmth.themis.business.dto.response.TEExamResultDto;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.entity.TEConfig;
-import com.qmth.themis.business.entity.TEExamStudent;
 import com.qmth.themis.business.entity.TEStudent;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.*;
@@ -219,7 +217,7 @@ public class TEStudentController {
             Integer leftBreakResumeCount = Objects.isNull(ExamRecordCacheUtil.getLeftBreakResumeCount(recordId)) ? 0 : ExamRecordCacheUtil.getLeftBreakResumeCount(recordId);
             //如果断点时间大于整体断点时间,则强制交卷
             if (Objects.equals(status, ExamRecordStatusEnum.ANSWERING) || Objects.equals(status, ExamRecordStatusEnum.BREAK_OFF) || Objects.equals(status, ExamRecordStatusEnum.RESUME_PREPARE)) {
-                if (Objects.nonNull(clientLastSyncTime) && (System.currentTimeMillis() - clientLastSyncTime.getTime() / 1000) > ec.getBreakExpireSeconds()) {
+                if (Objects.nonNull(clientLastSyncTime) && (System.currentTimeMillis() - clientLastSyncTime.getTime()) / 1000 > ec.getBreakExpireSeconds()) {
                     teExamService.finish(teStudentCacheDto.getId(), recordId, FinishTypeEnum.AUTO.name(), durationSeconds);
                     List<TEExamDto> list = teExamService.getWaitingExam(teStudent.getId(), examId, orgId);
                     if (Objects.nonNull(list) && list.size() > 0) {