|
@@ -8,6 +8,7 @@ import com.qmth.themis.business.annotation.ApiJsonProperty;
|
|
|
import com.qmth.themis.business.base.BasePage;
|
|
|
import com.qmth.themis.business.cache.RedisKeyHelper;
|
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
|
+import com.qmth.themis.business.dto.AuthDto;
|
|
|
import com.qmth.themis.business.dto.ExamPropCountDto;
|
|
|
import com.qmth.themis.business.dto.MqDto;
|
|
|
import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
|
|
@@ -348,21 +349,28 @@ public class TEExamController {
|
|
|
if (Objects.isNull(tbSession)) {
|
|
|
throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
|
|
|
}
|
|
|
- //首先查询当前监考老师所要监控的roomCode
|
|
|
+ //首先查询当前用户所要监控的roomCode
|
|
|
QueryWrapper<TBExamInvigilateUser> examInvigilateUserQueryWrapper = new QueryWrapper<>();
|
|
|
- examInvigilateUserQueryWrapper.lambda().in(TBExamInvigilateUser::getUserId, tbUser.getId()).eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId());
|
|
|
+ AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + tbUser.getId());
|
|
|
+ //如果有监考员角色,只能查看自己所监考的考场,巡考员则可以查看全部考场
|
|
|
+ examInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId());
|
|
|
+ if (authDto.getRoleCodes().toString().contains(RoleEnum.INVIGILATE.name())) {
|
|
|
+ examInvigilateUserQueryWrapper.lambda().in(TBExamInvigilateUser::getUserId, tbUser.getId());
|
|
|
+ }
|
|
|
List<TBExamInvigilateUser> tbExamInvigilateUserList = tbExamInvigilateUserService.list(examInvigilateUserQueryWrapper);
|
|
|
Set<String> roomCodeSet = null;
|
|
|
if (Objects.nonNull(tbExamInvigilateUserList) && tbExamInvigilateUserList.size() > 0) {
|
|
|
roomCodeSet = tbExamInvigilateUserList.stream().map(s -> s.getRoomCode()).collect(Collectors.toSet());
|
|
|
}
|
|
|
- if (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0) {
|
|
|
+ if (authDto.getRoleCodes().toString().contains(RoleEnum.INVIGILATE.name()) && (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0)) {
|
|
|
throw new BusinessException("当前监考老师未设置任何监考考场");
|
|
|
+ } else if (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0) {
|
|
|
+ throw new BusinessException("当前考试批次未设置任何监考考场");
|
|
|
}
|
|
|
//根据roomCode获取当前老师所要监考的全部应考学生数
|
|
|
- QueryWrapper<TEExamStudent> teExamStudentServiceQueryWrapper = new QueryWrapper<>();
|
|
|
- teExamStudentServiceQueryWrapper.lambda().in(TEExamStudent::getRoomCode, roomCodeSet);
|
|
|
- List<TEExamStudent> teExamStudentList = teExamStudentService.list(teExamStudentServiceQueryWrapper);
|
|
|
+ QueryWrapper<TEExamStudent> teExamStudentQueryWrapper = new QueryWrapper<>();
|
|
|
+ teExamStudentQueryWrapper.lambda().in(TEExamStudent::getRoomCode, roomCodeSet);
|
|
|
+ List<TEExamStudent> teExamStudentList = teExamStudentService.list(teExamStudentQueryWrapper);
|
|
|
Set<String> studentSet = null;
|
|
|
Set<Long> examActivityIdSet = null;
|
|
|
Integer allCount = 0;
|