|
@@ -1,19 +1,16 @@
|
|
|
package com.qmth.themis.admin.api;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-//import com.qmth.themis.business.annotation.RedisLimitAnnotation;
|
|
|
import com.qmth.themis.business.bean.admin.InvigilateListWarningBean;
|
|
|
import com.qmth.themis.business.constant.SystemConstant;
|
|
|
import com.qmth.themis.business.dto.AuthDto;
|
|
|
import com.qmth.themis.business.dto.params.WarnInfoParams;
|
|
|
import com.qmth.themis.business.dto.response.TIeWarningNotifyDto;
|
|
|
-import com.qmth.themis.business.entity.TBUser;
|
|
|
-import com.qmth.themis.business.entity.TIeInvigilateWarnInfo;
|
|
|
+import com.qmth.themis.business.entity.*;
|
|
|
import com.qmth.themis.business.enums.RoleEnum;
|
|
|
-import com.qmth.themis.business.service.TIeInvigilateWarnInfoService;
|
|
|
-import com.qmth.themis.business.service.TOeExamRecordService;
|
|
|
-import com.qmth.themis.business.service.ThemisCacheService;
|
|
|
+import com.qmth.themis.business.service.*;
|
|
|
import com.qmth.themis.business.util.ServletUtil;
|
|
|
import com.qmth.themis.common.exception.BusinessException;
|
|
|
import com.qmth.themis.common.util.Result;
|
|
@@ -53,6 +50,15 @@ public class TIeInvigilateWarnInfoController {
|
|
|
@Resource
|
|
|
ThemisCacheService themisCacheService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TBExamInvigilateUserService tbExamInvigilateUserService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ TEExamSummaryService teExamSummaryService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ TEExamActivityService teExamActivityService;
|
|
|
+
|
|
|
@ApiOperation(value = "预警提醒接口")
|
|
|
@RequestMapping(value = "/notify", method = RequestMethod.POST)
|
|
|
@ApiResponses({@ApiResponse(code = 200, message = "{\"count\":1}", response = Result.class)})
|
|
@@ -63,11 +69,27 @@ public class TIeInvigilateWarnInfoController {
|
|
|
TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
|
|
|
AuthDto authDto = themisCacheService.addAccountAuthCache(tbUser.getId());
|
|
|
//如果有监考员角色,只能查看自己所监考的考场,巡考员和管理员则可以查看全部考场
|
|
|
+ Integer count = null;
|
|
|
Long userId = null;
|
|
|
if (authDto.getRoleCodes().toString().contains(RoleEnum.INVIGILATE.name())) {
|
|
|
userId = tbUser.getId();
|
|
|
+ List<TBExamInvigilateUser> tbExamInvigilateUserList = tbExamInvigilateUserService.list(new QueryWrapper<TBExamInvigilateUser>().lambda()
|
|
|
+ .eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId())
|
|
|
+ .eq(TBExamInvigilateUser::getUserId, userId));
|
|
|
+ if (!CollectionUtils.isEmpty(tbExamInvigilateUserList)) {
|
|
|
+ List<TEExamSummary> teExamSummaryAllList = new ArrayList<>();
|
|
|
+ for (TBExamInvigilateUser t : tbExamInvigilateUserList) {
|
|
|
+ List<TEExamActivity> teExamActivityList = teExamActivityService.list(new QueryWrapper<TEExamActivity>().lambda().eq(TEExamActivity::getExamId, t.getExamId()));
|
|
|
+ for (TEExamActivity teExamActivity : teExamActivityList) {
|
|
|
+ teExamSummaryService.examSummary(t.getExamId(), teExamActivity.getId(), new HashSet<>(Arrays.asList(t.getRoomCode())));
|
|
|
+ teExamSummaryAllList.addAll(themisCacheService.addExamSummaryCache(t.getExamId(), teExamActivity.getId(), t.getRoomCode()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ count = teExamSummaryAllList.stream().mapToInt(s -> s.getWarningUnread()).sum();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ count = tIeInvigilateWarnInfoService.warningCount(examId, examActivityId, roomCode, userId, tbUser.getOrgId());
|
|
|
}
|
|
|
- Integer count = tIeInvigilateWarnInfoService.warningCount(examId, examActivityId, roomCode, userId, tbUser.getOrgId());
|
|
|
return ResultUtil.ok(Collections.singletonMap(SystemConstant.COUNT, count));
|
|
|
}
|
|
|
|
|
@@ -185,4 +207,35 @@ public class TIeInvigilateWarnInfoController {
|
|
|
}
|
|
|
return ResultUtil.ok(true);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 预警通知公用
|
|
|
+ *
|
|
|
+ * @param admin
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected Integer warnNotifyCommon(boolean admin) {
|
|
|
+ Integer count = null;
|
|
|
+ TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
|
|
|
+ QueryWrapper<TBExamInvigilateUser> tbExamInvigilateUserQueryWrapper = new QueryWrapper<>();
|
|
|
+ tbExamInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId());
|
|
|
+ if (!admin) {
|
|
|
+ tbExamInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getUserId, tbUser.getId());
|
|
|
+ }
|
|
|
+ List<TBExamInvigilateUser> tbExamInvigilateUserList = tbExamInvigilateUserService.list(tbExamInvigilateUserQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(tbExamInvigilateUserList)) {
|
|
|
+ List<TEExamSummary> teExamSummaryAllList = new ArrayList<>();
|
|
|
+ for (TBExamInvigilateUser t : tbExamInvigilateUserList) {
|
|
|
+ List<TEExamActivity> teExamActivityList = teExamActivityService.list(new QueryWrapper<TEExamActivity>().lambda().eq(TEExamActivity::getExamId, t.getExamId()));
|
|
|
+ for (TEExamActivity teExamActivity : teExamActivityList) {
|
|
|
+ teExamSummaryService.examSummary(t.getExamId(), teExamActivity.getId(), new HashSet<>(Arrays.asList(t.getRoomCode())));
|
|
|
+ teExamSummaryAllList.addAll(themisCacheService.addExamSummaryCache(t.getExamId(), teExamActivity.getId(), t.getRoomCode()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(teExamSummaryAllList)) {
|
|
|
+ count = teExamSummaryAllList.stream().mapToInt(s -> s.getWarningUnread()).sum();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return count;
|
|
|
+ }
|
|
|
}
|