From 05d651ca0168025ec451702f1df88dab4f2a9559 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 10 五月 2024 17:58:19 +0800
Subject: [PATCH] feat:新增补考按钮

---
 src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java                |    5 ++
 src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java            |    5 +-
 src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java       |   14 ++++++-
 src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java        |   11 +++++
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java           |   21 ++++++++++
 src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java |    1 
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                             |   14 +++++-
 src/main/java/com/mindskip/xzs/repository/UserMapper.java                       |    3 +
 src/main/java/com/mindskip/xzs/service/ExamPaperService.java                    |    1 
 src/main/java/com/mindskip/xzs/service/UserService.java                         |    3 +
 src/main/resources/mapper/UserMapper.xml                                        |   14 +++++++
 11 files changed, 83 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
index 5228899..1d3da20 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -4,6 +4,7 @@
 import com.mindskip.xzs.base.BaseApiController;
 import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.domain.Department;
+import com.mindskip.xzs.domain.ExamPaper;
 import com.mindskip.xzs.domain.User;
 import com.mindskip.xzs.domain.UserDepartment;
 import com.mindskip.xzs.domain.vo.BaseSelect;
@@ -93,7 +94,7 @@
     }
 
     @RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST)
-    public RestResponse<List<DepartmentVO>> getUserDepartment(){
+    public RestResponse<List<DepartmentVO>> getUserDepartment(Integer examPaperId){
         User currentUser = webContext.getCurrentUser();
         Integer deptId = null;
         if (Objects.nonNull(currentUser)) {
@@ -108,7 +109,16 @@
                     List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
                     List<User> list = new ArrayList<>();
                     for (UserDepartment userDepartment : userDepartments) {
-                        User user = userService.getUserById(userDepartment.getUserId());
+                        User user;
+                        // 閫夋嫨琛ヨ�冪敤鎴锋椂鏌ヨ绗﹀悎琛ヨ�冩潯浠剁殑鐢ㄦ埛
+                        if (examPaperId != null) {
+                            ExamPaper examPaper = new ExamPaper();
+                            examPaper.setCreateUser(userDepartment.getUserId());
+                            examPaper.setId(examPaperId);
+                            user = userService.getUserByExam(examPaper);
+                        } else {
+                            user = userService.getUserById(userDepartment.getUserId());
+                        }
                         if (ObjectUtils.isNotEmpty(user)) {
                             list.add(user);
                         }
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
index 1eb4861..662afdb 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
@@ -90,6 +90,17 @@
         return RestResponse.ok(newVM);
     }
 
+    /**
+     * 琛ヨ��
+     * @param model 鏁版嵁
+     * @return 鎿嶄綔缁撴灉
+     */
+    @RequestMapping(value = "/missExam", method = RequestMethod.POST)
+    public RestResponse<String> missExam(@RequestBody ExamPaperEditRequestVM model) {
+        examPaperService.missExam(model);
+        return RestResponse.ok("鎿嶄綔鎴愬姛");
+    }
+
     @RequestMapping(value = "/select/{id}", method = RequestMethod.POST)
     public RestResponse<ExamPaperEditRequestVO> select(@PathVariable Integer id) {
         ExamPaperEditRequestVO vm = examPaperService.examPaperToVM(id);
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 8c6d5ec..7b3072d 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -6,6 +6,7 @@
 import com.mindskip.xzs.domain.other.KeyValue;
 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.paper.ExamPaperGradePageRequestVM;
 import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
 import com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM;
@@ -46,7 +47,5 @@
 
     List<TeamplatesUserExcelVO> getByTimeOne();
 
-
-
-
+    void setMissExam(ExamPaperEditRequestVM model);
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
index 1895320..4ae498b 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserMapper.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.other.KeyValue;
 import com.mindskip.xzs.domain.User;
@@ -158,4 +159,6 @@
      * @param deptId
      */
     void clearDeptAdmin(List<Integer> userIds, @Param("deptId") Integer deptId);
+
+    User getUserByExam(ExamPaper examPaper);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
index 015aa52..ba50cd5 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
@@ -38,4 +38,5 @@
 
     List<PaperExcelVO> getPaperExcelById(Integer id);
 
+    void missExam(ExamPaperEditRequestVM model);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/UserService.java b/src/main/java/com/mindskip/xzs/service/UserService.java
index ab61ec6..6fc577d 100644
--- a/src/main/java/com/mindskip/xzs/service/UserService.java
+++ b/src/main/java/com/mindskip/xzs/service/UserService.java
@@ -1,5 +1,6 @@
 package com.mindskip.xzs.service;
 
+import com.mindskip.xzs.domain.ExamPaper;
 import com.mindskip.xzs.domain.other.KeyValue;
 import com.mindskip.xzs.domain.User;
 import com.mindskip.xzs.domain.vo.UserVO;
@@ -135,4 +136,6 @@
     User getUserByRealName(String realName);
 
     void setStatus(UserVO user);
+
+    User getUserByExam(ExamPaper examPaper);
 }
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 cb4ac16..8db064e 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -10,6 +10,7 @@
 import com.mindskip.xzs.domain.exam.ExamPaperTitleItemObject;
 import com.mindskip.xzs.domain.other.KeyValue;
 import com.mindskip.xzs.domain.vo.PaperExcelVO;
+import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
 import com.mindskip.xzs.repository.ExamPaperMapper;
 import com.mindskip.xzs.repository.QuestionMapper;
 import com.mindskip.xzs.repository.UserDepartmentMapper;
@@ -25,11 +26,13 @@
 import com.mindskip.xzs.viewmodel.student.dashboard.PaperFilter;
 import com.mindskip.xzs.viewmodel.student.dashboard.PaperInfo;
 import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageVM;
+import org.apache.commons.lang3.ObjectUtils;
 import org.modelmapper.ModelMapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -40,6 +43,7 @@
 
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
     private final ExamPaperMapper examPaperMapper;
+    private final ExamPaperAnswerMapper examPaperAnswerMapper;
     private final QuestionMapper questionMapper;
     private final TextContentService textContentService;
     private final QuestionService questionService;
@@ -55,9 +59,10 @@
 
 
     @Autowired
-    public ExamPaperServiceImpl(ExamPaperMapper examPaperMapper, QuestionMapper questionMapper, TextContentService textContentService, QuestionService questionService, SubjectService subjectService, ExamPaperDepartmentService examPaperDepartmentService, ExamPaperSubjectService examPaperSubjectService, QuestionSubjectService questionSubjectService, ExamPaperUserService examPaperUserService, UserService userService, UserDepartmentMapper userDepartmentMapper, DepartmentService departmentService) {
+    public ExamPaperServiceImpl(ExamPaperMapper examPaperMapper, ExamPaperAnswerMapper examPaperAnswerMapper, QuestionMapper questionMapper, TextContentService textContentService, QuestionService questionService, SubjectService subjectService, ExamPaperDepartmentService examPaperDepartmentService, ExamPaperSubjectService examPaperSubjectService, QuestionSubjectService questionSubjectService, ExamPaperUserService examPaperUserService, UserService userService, UserDepartmentMapper userDepartmentMapper, DepartmentService departmentService) {
         super(examPaperMapper);
         this.examPaperMapper = examPaperMapper;
+        this.examPaperAnswerMapper = examPaperAnswerMapper;
         this.questionMapper = questionMapper;
         this.textContentService = textContentService;
         this.questionService = questionService;
@@ -596,4 +601,18 @@
         return randomNumber;
     }
 
+    @Override
+    @Transactional
+    public void missExam(ExamPaperEditRequestVM model) {
+        // 淇敼鍘熸潵鐨勮瘯鍗锋椂闂�
+        if (ObjectUtils.isNotEmpty(model.getLimitDateTime())) {
+            ExamPaper examPaper = new ExamPaper();
+            examPaper.setId(model.getExamPaperId());
+            examPaper.setLimitStartTime(DateTimeUtil.parse(model.getLimitDateTime().get(0), DateTimeUtil.STANDER_FORMAT));
+            examPaper.setLimitEndTime(DateTimeUtil.parse(model.getLimitDateTime().get(1), DateTimeUtil.STANDER_FORMAT));
+            examPaperMapper.updateByPrimaryKeySelective(examPaper);
+        }
+        // 鏍规嵁鑰冭瘯id灏嗛�夋嫨鐨勮ˉ鑰冭�冪敓鐨勮�冭瘯鎴愮哗璁剧疆涓烘棤鏁�
+        examPaperAnswerMapper.setMissExam(model);
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
index b7c4452..b470504 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
 package com.mindskip.xzs.service.impl;
 
+import com.mindskip.xzs.domain.ExamPaper;
 import com.mindskip.xzs.domain.other.KeyValue;
 import com.mindskip.xzs.domain.vo.UserVO;
 import com.mindskip.xzs.exception.BusinessException;
@@ -178,4 +179,8 @@
         userMapper.setStatus(user);
     }
 
+    @Override
+    public User getUserByExam(ExamPaper examPaper) {
+        return userMapper.getUserByExam(examPaper);
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java
index 5fc0d0a..67fc687 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperEditRequestVM.java
@@ -54,5 +54,6 @@
     private String type;
     private String status;
     private String menuIds;
+    private Integer examPaperId;
 
 }
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 4cf7b6d..afaa892 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -231,11 +231,19 @@
     where id = #{id,jdbcType=INTEGER}
   </update>
 
+  <update id="setMissExam">
+    update t_exam_paper_answer
+    set invalid = 1
+    where exam_paper_id = #{examPaperId}
+    and create_user in (
+    <foreach collection="userIds" item="item" index="index" separator=",">
+      #{item}
+    </foreach>
+    )
+  </update>
 
 
-
-
-  <select id="studentPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM">
+    <select id="studentPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageVM">
     SELECT
     <include refid="Base_Column_List"/>
     FROM t_exam_paper_answer
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index bf9ec38..62be0a3 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -494,4 +494,18 @@
         tu.id desc
     </select>
 
+    <select id="getUserByExam" resultType="com.mindskip.xzs.domain.User">
+        <![CDATA[
+        SELECT
+        d.*
+        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
+        left join t_user d on b.user_id = d.id
+        WHERE a.id = #{id}
+        and (c.id is null or (user_score / paper_score) < 0.6)
+        and b.user_id = #{createUser}
+        ]]>
+    </select>
+
 </mapper>

--
Gitblit v1.8.0