From 07523902413e2e06de6ae55f706f770590f94542 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期六, 11 五月 2024 11:03:49 +0800
Subject: [PATCH] fix:补考时未选择且未参加过考试的考生新增零分记录、开始考试时非空判断

---
 src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java  |    5 +++++
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java |   10 ++++++++--
 src/main/java/com/mindskip/xzs/domain/enums/UserConditionEnum.java    |    1 +
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                   |   16 ++++++++++++++++
 src/main/resources/mapper/UserMapper.xml                              |    2 +-
 5 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/domain/enums/UserConditionEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/UserConditionEnum.java
index fdcaf01..c1fa8c2 100644
--- a/src/main/java/com/mindskip/xzs/domain/enums/UserConditionEnum.java
+++ b/src/main/java/com/mindskip/xzs/domain/enums/UserConditionEnum.java
@@ -12,6 +12,7 @@
 @Getter
 public enum UserConditionEnum {
 
+    NORMAL("0", "姝e父"),
     SICK("1", "鐥呭亣"),
     BUSINESS_TRIP("2", "鍑哄樊"),
     OTHER("3", "鍏朵粬"),
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 7b3072d..a1ff9fa 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -1,5 +1,6 @@
 package com.mindskip.xzs.repository;
 
+import com.mindskip.xzs.domain.ExamPaper;
 import com.mindskip.xzs.domain.ExamPaperAnswer;
 import com.mindskip.xzs.domain.ExamTemplatesUserCount;
 import com.mindskip.xzs.domain.ScoreTemplatesUserCount;
@@ -7,6 +8,7 @@
 import com.mindskip.xzs.domain.vo.ScoreTemplatesCountVO;
 import com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO;
 import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
+import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVO;
 import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
 import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
 import com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM;
@@ -48,4 +50,7 @@
     List<TeamplatesUserExcelVO> getByTimeOne();
 
     void setMissExam(ExamPaperEditRequestVM model);
+
+    void insertDefault(ExamPaperEditRequestVM model);
+
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
index 8db064e..67543e5 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -205,8 +205,11 @@
         List<ExamPaperUser> examPaperUsers = examPaperUserService.getByExamPaperId(examPaper.getId());
         Integer[][] userIds = new Integer[examPaperUsers.size()][2];
         for (int i = 0; i < examPaperUsers.size(); i++) {
-            Integer[] userId = {userService.getUserById(examPaperUsers.get(i).getUserId()).getUserLevel(), examPaperUsers.get(i).getUserId()};
-            userIds[i] = userId;
+            User user = userService.getUserById(examPaperUsers.get(i).getUserId());
+            if (ObjectUtils.isNotEmpty(user)) {
+                Integer[] userId = {user.getUserLevel(), examPaperUsers.get(i).getUserId()};
+                userIds[i] = userId;
+            }
         }
         vm.setUserId(userIds);
         return vm;
@@ -614,5 +617,8 @@
         }
         // 鏍规嵁鑰冭瘯id灏嗛�夋嫨鐨勮ˉ鑰冭�冪敓鐨勮�冭瘯鎴愮哗璁剧疆涓烘棤鏁�
         examPaperAnswerMapper.setMissExam(model);
+
+        // 琛ヨ�冩椂灏嗘病鏈夐�夋嫨鐨勫苟涓旀病鏈夊弬鍔犺繃鑰冭瘯鐨勮�冪敓澧炲姞涓�鏉¢浂鍒嗚�冭瘯璁板綍锛屽惁鍒欐病鏈夊弬鍔犺繃鑰冭瘯鐨勫嵆浣夸笉琚�夋嫨涔熷彲浠ュ弬鍔犺ˉ鑰�
+        examPaperAnswerMapper.insertDefault(model);
     }
 }
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index afaa892..9f4e0bf 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -395,4 +395,20 @@
     where a.create_time
   </select>
 
+  <insert id="insertDefault">
+    INSERT INTO t_exam_paper_answer(exam_paper_id, paper_name, paper_type, system_score, user_score, paper_score, question_correct, question_count, do_time, status,
+    create_user, create_time, invalid)
+    SELECT
+    a.id, a.name, a.paper_type, 0, 0, a.score, 0,  a.question_count, 0, 2, b.user_id, NOW(), 0
+    FROM t_exam_paper a
+    left join t_exam_paper_user b on a.id = b.exam_paper_id and b.deleted = 0
+    left join t_exam_paper_answer c on a.id = c.exam_paper_id and c.create_user = b.user_id
+    WHERE a.id = #{examPaperId}
+    and c.id is null
+    and b.user_id not in
+    <foreach collection="userIds" item="item" open="(" close=")" separator=",">
+      #{item}
+    </foreach>
+  </insert>
+
 </mapper>
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index 62be0a3..45aa42a 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -268,7 +268,7 @@
     select
     <include refid="Base_Column_List"/>
     from t_user
-    where id=#{value} and status = 1 and deleted = 0
+    where id=#{value} and status = 1 and deleted = 0 and (`condition` = 0 or `condition` is null)
   </select>
 
     <select id="getUserByUserName" resultMap="BaseResultMap">

--
Gitblit v1.8.0