deason 1 år sedan
förälder
incheckning
c54e3b1f7c

+ 2 - 0
examcloud-core-examwork-dao/src/main/java/cn/com/qmth/examcloud/core/examwork/dao/ExamSkipFaceRepo.java

@@ -11,6 +11,8 @@ import java.util.List;
 @Repository
 public interface ExamSkipFaceRepo extends JpaRepository<ExamSkipFaceEntity, Long>, JpaSpecificationExecutor<ExamSkipFaceEntity> {
 
+    List<ExamSkipFaceEntity> findByExamIdAndExamStudentIdIn(Long examId, List<Long> examStudentIds);
+
     @Transactional
     void deleteByExamIdAndExamStudentIdIn(Long examId, List<Long> examStudentIds);
 

+ 11 - 4
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/impl/ExamSkipFaceServiceImpl.java

@@ -20,10 +20,9 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @Service
 public class ExamSkipFaceServiceImpl implements ExamSkipFaceService {
@@ -124,7 +123,14 @@ public class ExamSkipFaceServiceImpl implements ExamSkipFaceService {
                 examId, examStudentIds, enabled, operateId);
 
         if (enabled) {
+            List<ExamSkipFaceEntity> exists = examSkipFaceRepo.findByExamIdAndExamStudentIdIn(examId, Arrays.asList(examStudentIds));
+            Map<Long, ExamSkipFaceEntity> maps = exists.stream().collect(Collectors.toMap(ExamSkipFaceEntity::getExamStudentId, Function.identity()));
+
             for (Long examStudentId : examStudentIds) {
+                if (maps.containsKey(examStudentId)) {
+                    continue;
+                }
+
                 ExamSkipFaceEntity entity = new ExamSkipFaceEntity();
                 entity.setExamId(examId);
                 entity.setExamStudentId(examStudentId);
@@ -133,6 +139,7 @@ public class ExamSkipFaceServiceImpl implements ExamSkipFaceService {
                 entity.setUpdateTime(new Date());
                 examSkipFaceRepo.save(entity);
             }
+
             return;
         }