龚焕茏
2024-05-17 fb69f03a1fc6c2ed30c805020ea596017633adb8
feat:随机试卷补考
13个文件已修改
111 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/UserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamPaperService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/UserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
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);
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;
}
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);
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);
}
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);
}
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);
}
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);
}
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);
    }
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);
    }
}
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
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>
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>