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