wangliang пре 4 година
родитељ
комит
45fa786d94

+ 11 - 2
themis-backend/src/main/java/com/qmth/themis/backend/api/SysController.java

@@ -18,7 +18,6 @@ import com.qmth.themis.business.service.*;
 import com.qmth.themis.business.util.EhcacheUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.ServletUtil;
-import com.qmth.themis.business.util.TencentYunUtil;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
@@ -35,6 +34,7 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -313,7 +313,16 @@ public class SysController {
         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());
+            Map<String, TBExamInvigilateUser> tbExamInvigilateUserMap = tbExamInvigilateUserList.stream()
+                    .collect(Collectors.toMap(TBExamInvigilateUser::getRoomCode, Function.identity(), (dto1, dto2) -> dto1));
+            roomCodeSet = new HashSet<>();
+            tbExamInvigilateUserList.clear();
+            Set<String> finalRoomCodeSet = roomCodeSet;
+            List<TBExamInvigilateUser> finalTbExamInvigilateUserList = tbExamInvigilateUserList;
+            tbExamInvigilateUserMap.forEach((k, v) -> {
+                finalRoomCodeSet.add(k);
+                finalTbExamInvigilateUserList.add(v);
+            });
         } else {
             tbExamInvigilateUserList = null;
         }

+ 5 - 2
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java

@@ -7,6 +7,7 @@ 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.ExamStudentCacheBean;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
 import com.qmth.themis.business.dto.ExamPropCountDto;
@@ -160,6 +161,7 @@ public class TEExamController {
                         //新增quartz任务,发送mq消息end
                     }
                     teExamActivityList.forEach(s -> {
+                    	log.debug("updateExamActivityCacheBean "+s.getId());
                         teExamActivityService.updateExamActivityCacheBean(s.getId());
                     });
                 } else {
@@ -376,7 +378,7 @@ public class TEExamController {
             //根据roomCode获取当前老师所要监考的全部应考学生数
             QueryWrapper<TEExamStudent> teExamStudentQueryWrapper = new QueryWrapper<>();
             teExamStudentQueryWrapper.lambda().eq(TEExamStudent::getExamId, examId)
-                    .in(TEExamStudent::getRoomCode, roomCodeSet);
+                    .in(TEExamStudent::getRoomCode, roomCodeSet).eq(TEExamStudent::getEnable, 1);
             List<TEExamStudent> teExamStudentList = teExamStudentService.list(teExamStudentQueryWrapper);
             Set<String> studentSet = null;
             Set<Long> examActivityIdSet = null;
@@ -410,7 +412,8 @@ public class TEExamController {
                             Long recordId = Long.parseLong(k);
                             ExamActivityRecordCacheBean examActivityRecordCacheBean = (ExamActivityRecordCacheBean) v;
                             ExamRecordStatusEnum examRecordStatusEnum = examActivityRecordCacheBean.getStatus();
-                            if (Objects.nonNull(examRecordStatusEnum) && !Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.PERSISTED) && !Objects.equals(examRecordStatusEnum, ExamRecordStatusEnum.FINISHED)) {
+                            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)) {
                                 //客户端通讯状态
                                 WebsocketStatusEnum clientStatus = Objects.isNull(ExamRecordCacheUtil.getClientWebsocketStatus(recordId)) ? null : ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
                                 if (Objects.nonNull(clientStatus) && Objects.equals(clientStatus, WebsocketStatusEnum.OFF_LINE)) {

+ 10 - 0
themis-business/src/main/java/com/qmth/themis/business/cache/bean/ExamStudentCacheBean.java

@@ -50,6 +50,16 @@ public class ExamStudentCacheBean implements Serializable {
 
     private String name;//考生姓名
 
+    private Integer enable;
+
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
     public String getName() {
         return name;
     }

+ 29 - 30
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamStudentServiceImpl.java

@@ -1,16 +1,5 @@
 package com.qmth.themis.business.service.impl;
 
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.CachePut;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.themis.business.cache.bean.ExamStudentCacheBean;
@@ -19,6 +8,15 @@ import com.qmth.themis.business.dto.response.RoomCodeQueryDto;
 import com.qmth.themis.business.dto.response.TEExamStudentDto;
 import com.qmth.themis.business.entity.TEExamStudent;
 import com.qmth.themis.business.service.TEExamStudentService;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 考生库 服务实现类
@@ -49,8 +47,8 @@ public class TEExamStudentServiceImpl extends ServiceImpl<TEExamStudentMapper, T
      * @return
      */
     @Override
-    public IPage<TEExamStudentDto> examStudentQuery(IPage<Map> iPage, Long examId, Long activityId, String identity, String name, String roomCode, String courseCode, String grade, Integer enable, String classNo,Integer hasPhoto) {
-        return teExamStudentMapper.examStudentQuery(iPage, examId, activityId, identity, name, roomCode, courseCode, grade, enable, classNo,hasPhoto);
+    public IPage<TEExamStudentDto> examStudentQuery(IPage<Map> iPage, Long examId, Long activityId, String identity, String name, String roomCode, String courseCode, String grade, Integer enable, String classNo, Integer hasPhoto) {
+        return teExamStudentMapper.examStudentQuery(iPage, examId, activityId, identity, name, roomCode, courseCode, grade, enable, classNo, hasPhoto);
     }
 
     @Cacheable(value = "exam_student", key = "#examStudentId", unless = "#result == null")
@@ -121,26 +119,27 @@ public class TEExamStudentServiceImpl extends ServiceImpl<TEExamStudentMapper, T
         ret.setCurrentRecordId(es.getCurrentRecordId());
         ret.setIdentity(es.getIdentity());
         ret.setName(es.getName());
+        ret.setEnable(es.getEnable());
         return ret;
     }
 
-	@Override
-	public List<TEExamStudentDto> examStudentList(Long examId, Long activityId, String identity, String name,
-			String roomCode, String courseCode, String grade, Integer enable, String classNo, Integer hasPhoto) {
-		return teExamStudentMapper.examStudentList(examId, activityId, identity, name, roomCode, courseCode, grade, enable, classNo,hasPhoto);
-	}
-	
-	@Transactional
-	@Override
-	public void updateByMqMsg(Map<String, Object> param) {
-        Long examStudentId=(Long)param.get("examStudentId");
-        Integer alreadyExamCount=(Integer)param.get("alreadyExamCount");
-        Long currentRecordId=(Long)param.get("currentRecordId");
-        if(alreadyExamCount!=null) {
-        	teExamStudentMapper.updateAlreadyExamCount(examStudentId,alreadyExamCount);
+    @Override
+    public List<TEExamStudentDto> examStudentList(Long examId, Long activityId, String identity, String name,
+                                                  String roomCode, String courseCode, String grade, Integer enable, String classNo, Integer hasPhoto) {
+        return teExamStudentMapper.examStudentList(examId, activityId, identity, name, roomCode, courseCode, grade, enable, classNo, hasPhoto);
+    }
+
+    @Transactional
+    @Override
+    public void updateByMqMsg(Map<String, Object> param) {
+        Long examStudentId = (Long) param.get("examStudentId");
+        Integer alreadyExamCount = (Integer) param.get("alreadyExamCount");
+        Long currentRecordId = (Long) param.get("currentRecordId");
+        if (alreadyExamCount != null) {
+            teExamStudentMapper.updateAlreadyExamCount(examStudentId, alreadyExamCount);
         }
-        if(currentRecordId!=null) {
-        	teExamStudentMapper.updateCurrentRecordId(examStudentId,currentRecordId);
+        if (currentRecordId != null) {
+            teExamStudentMapper.updateCurrentRecordId(examStudentId, currentRecordId);
         }
-	}
+    }
 }