From fb69f03a1fc6c2ed30c805020ea596017633adb8 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 17 五月 2024 22:18:12 +0800
Subject: [PATCH] feat:随机试卷补考
---
src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java | 5 ++
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java | 12 ++++++
src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java | 4 ++
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java | 10 +++++
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 15 +++++++
src/main/java/com/mindskip/xzs/repository/UserMapper.java | 2 +
src/main/java/com/mindskip/xzs/service/ExamPaperService.java | 3 +
src/main/resources/mapper/UserMapper.xml | 15 +++++++
src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java | 3 +
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java | 7 +++
src/main/resources/mapper/ExamPaperMapper.xml | 4 ++
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java | 29 ++++++++++++++
src/main/java/com/mindskip/xzs/service/UserService.java | 2 +
13 files changed, 111 insertions(+), 0 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 9f1e521..6e85feb 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -118,6 +118,35 @@
return RestResponse.ok(res);
}
+ @RequestMapping(value = "/getDepartmentUserByTemplateId", method = RequestMethod.POST)
+ public RestResponse<List<DepartmentVO>> getDepartmentUserByTemplateId(Integer templateId){
+ List<DepartmentVO> res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null)
+ .stream().map(e->{
+ DepartmentVO departmentVO = new DepartmentVO();
+ List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
+ List<User> list = new ArrayList<>();
+ for (UserDepartment userDepartment : userDepartments) {
+ User user;
+ // 閫夋嫨琛ヨ�冪敤鎴锋椂鏌ヨ绗﹀悎琛ヨ�冩潯浠剁殑鐢ㄦ埛
+ if (templateId != null) {
+ ExamPaper examPaper = new ExamPaper();
+ examPaper.setCreateUser(userDepartment.getUserId());
+ examPaper.setId(templateId);
+ user = userService.getUserByExamByTemplateId(examPaper);
+ } else {
+ user = userService.getUserById(userDepartment.getUserId());
+ }
+ if (ObjectUtils.isNotEmpty(user)) {
+ list.add(user);
+ }
+ }
+ departmentVO.setUserList(list);
+ departmentVO.setDepartment(e);
+ return departmentVO;
+ }).collect(Collectors.toList());
+ return RestResponse.ok(res);
+ }
+
@RequestMapping(value = "/getDeptAdmins", method = RequestMethod.GET)
public RestResponse<List<Department>> getDeptAdmins(){
return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getCurrentUser().getId() : null));
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 f721253..af682fd 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
@@ -5,6 +5,7 @@
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.ExamPaperSubject;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.service.ExamPaperDepartmentService;
@@ -108,6 +109,17 @@
return RestResponse.ok("鎿嶄綔鎴愬姛");
}
+ /**
+ * 琛ヨ��
+ * @param model 鏁版嵁
+ * @return 鎿嶄綔缁撴灉
+ */
+ @RequestMapping(value = "/missExamByTemplateId", method = RequestMethod.POST)
+ public RestResponse<String> missExamByTemplateId(@RequestBody ExamTemplatesVO model) {
+ examPaperService.missExamByTemplateId(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/domain/vo/ExamTemplatesVO.java b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
index ef83213..7debb9e 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
@@ -24,4 +24,8 @@
*/
private List<Integer> deptId;
+ private List<Integer> userIds;
+
+ private List<Integer> paperIds;
+
}
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 4f18d9c..06e76c1 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -5,6 +5,7 @@
import com.mindskip.xzs.domain.ScoreTemplatesUserCount;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
@@ -50,8 +51,14 @@
void setMissExam(ExamPaperEditRequestVM model);
+ void setMissExam(ExamTemplatesVO model);
+
+ void setMissExamByTemplate(ExamTemplatesVO model);
+
void insertDefault(ExamPaperEditRequestVM model);
+ void insertDefaultByTemplate(ExamTemplatesVO model);
+
Map<String, Object> histogram(ExamPaperStatisticVO examPaperStatisticVO);
Map<String, Object> pieChart(ExamPaperStatisticVO examPaperStatisticVO);
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
index 42b7744..2191fbf 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
@@ -2,6 +2,7 @@
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.other.KeyValue;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperPageRequestVM;
@@ -42,4 +43,6 @@
List<ExamPaper> list(List<Integer> deptIds);
List<UserVO> selectStudent(UserVO userVO);
+
+ List<Integer> getExamPaperByTemplateId(ExamTemplatesVO model);
}
diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
index 9aecd97..6ba4984 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
@@ -170,4 +170,6 @@
List<Integer> getDeptAdminIds(Integer id);
List<Department> getDeptAdmins(Integer id);
+
+ User getUserByExamByTemplateId(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 38f9bdb..56dc960 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
@@ -3,6 +3,7 @@
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.User;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
@@ -50,4 +51,6 @@
* @return
*/
PageInfo<UserVO> selectStudent(UserVO userVO, List<Integer> adminDeptIds);
+
+ void missExamByTemplateId(ExamTemplatesVO model);
}
diff --git a/src/main/java/com/mindskip/xzs/service/UserService.java b/src/main/java/com/mindskip/xzs/service/UserService.java
index c2c44ba..833fb39 100644
--- a/src/main/java/com/mindskip/xzs/service/UserService.java
+++ b/src/main/java/com/mindskip/xzs/service/UserService.java
@@ -142,4 +142,6 @@
List<Integer> getDeptAdminIds(Integer id);
List<Department> getDeptAdmins(Integer id);
+
+ User getUserByExamByTemplateId(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 8001bb0..e8584a5 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -9,6 +9,7 @@
import com.mindskip.xzs.domain.exam.ExamPaperQuestionItemObject;
import com.mindskip.xzs.domain.exam.ExamPaperTitleItemObject;
import com.mindskip.xzs.domain.other.KeyValue;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
@@ -626,6 +627,15 @@
}
@Override
+ @Transactional
+ public void missExamByTemplateId(ExamTemplatesVO model) {
+ List<Integer> id = examPaperMapper.getExamPaperByTemplateId(model);
+ model.setPaperIds(id);
+ // 鏍规嵁鑰冭瘯id灏嗛�夋嫨鐨勮ˉ鑰冭�冪敓鐨勮�冭瘯鎴愮哗璁剧疆涓烘棤鏁�
+ examPaperAnswerMapper.setMissExamByTemplate(model);
+ }
+
+ @Override
public List<ExamPaper> list(List<Integer> deptIds) {
return examPaperMapper.list(deptIds);
}
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 0282db7..156f7f9 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
@@ -194,4 +194,9 @@
public List<Department> getDeptAdmins(Integer id) {
return userMapper.getDeptAdmins(id);
}
+
+ @Override
+ public User getUserByExamByTemplateId(ExamPaper examPaper) {
+ return userMapper.getUserByExamByTemplateId(examPaper);
+ }
}
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 5f0bb90..7b059bf 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -242,6 +242,21 @@
)
</update>
+ <update id="setMissExamByTemplate">
+ update t_exam_paper_answer
+ set invalid = 1
+ where exam_paper_id
+ in
+ <foreach collection="paperIds" item="item" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ 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
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 6b14e1a..8cb496a 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -471,4 +471,8 @@
order by a.id
</select>
+ <select id="getExamPaperByTemplateId" resultType="java.lang.Integer" parameterType="com.mindskip.xzs.domain.vo.ExamTemplatesVO">
+ select exam_paper_id from t_exam_templates_user_count where exam_templates_id = #{id}
+ </select>
+
</mapper>
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index d7252e5..4dcedde 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -554,4 +554,19 @@
</if>
</select>
+ <select id="getUserByExamByTemplateId" resultType="com.mindskip.xzs.domain.User" parameterType="com.mindskip.xzs.domain.ExamPaper">
+ <![CDATA[
+ SELECT DISTINCT
+ d.*
+ FROM
+ t_exam_templates a
+ INNER JOIN t_exam_templates_user_count b ON a.id = b.exam_templates_id and a.id = ${id}
+ LEFT JOIN t_exam_paper_answer c ON b.exam_paper_id = c.exam_paper_id AND c.create_user = b.user_id and invalid = 0
+ LEFT JOIN t_user d ON b.user_id = d.id
+ WHERE
+ ( c.id IS NULL OR ( user_score / paper_score ) < 0.6 )
+ AND b.user_id = #{createUser}
+ ]]>
+ </select>
+
</mapper>
--
Gitblit v1.8.0