xiangpei
2024-03-15 71bc21abbfd1cf7665593fe8efff8965811373ad
成绩统计增加数据权限、增加时间查询
4个文件已修改
1个文件已添加
160 ■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/UserMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
@@ -1,16 +1,24 @@
package com.mindskip.xzs.controller.admin;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.context.WebContext;
import com.mindskip.xzs.domain.ExamPaperAnswer;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.ScoreTemplatesCountVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.repository.UserMapper;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.utility.minio.DateUtils;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,36 +27,26 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@RestController("AdminExamPaperGradeController")
@RequestMapping(value = "/api/admin/examPaperGrade")
@RequiredArgsConstructor
public class ExamPaperGradeController extends BaseApiController {
    private final ExamPaperAnswerService examPaperAnswerService;
    private final SubjectService subjectService;
    private final UserService userService;
    private final UserMapper userMapper;
    private final ExamPaperSubjectService examPaperSubjectService;
    private final ScoreTemplatesUserCountService scoreTemplatesUserCountService;
    private final ExamPaperUserService examPaperUserService;
    private final UserDepartMentService userDepartMentService;
    private final UserDepartmentMapper userDepartmentMapper;
    private final ExamPaperAnswerMapper examPaperAnswerMapper;
    private final WebContext webContext;
    private final DepartmentMapper departmentMapper;
    @Autowired
    public ExamPaperGradeController(ExamPaperAnswerService examPaperAnswerService, SubjectService subjectService, UserService userService, ExamPaperSubjectService examPaperSubjectService, ScoreTemplatesUserCountService scoreTemplatesUserCountService, ExamPaperUserService examPaperUserService, UserDepartMentService userDepartMentService, ExamPaperAnswerMapper examPaperAnswerMapper) {
        this.examPaperAnswerService = examPaperAnswerService;
        this.subjectService = subjectService;
        this.userService = userService;
        this.examPaperSubjectService = examPaperSubjectService;
        this.scoreTemplatesUserCountService = scoreTemplatesUserCountService;
        this.examPaperUserService = examPaperUserService;
        this.userDepartMentService = userDepartMentService;
        this.examPaperAnswerMapper = examPaperAnswerMapper;
    }
//    @RequestMapping(value = "/page", method = RequestMethod.POST)
@@ -106,27 +104,20 @@
//    }
    @RequestMapping(value = "/page", method = RequestMethod.POST)
    public RestResponse<PageInfo<ExamPaperAnswer>> pageJudgeList(@RequestBody ExamPaperGradePageRequestVM grade) {
        List<ExamPaperAnswer> filteredList9 = new ArrayList<>();
        PageInfo<User> info = PageHelper.startPage(grade.getPageIndex(), grade.getPageSize(), "id desc").doSelectPageInfo(() ->
                userService.getUsers());
        for (User user : info.getList()) {
            if("管理员".equals(user.getRealName())){
                continue;
    public RestResponse<PageInfo<ExamPaperAnswer>> pageJudgeList(@RequestBody ExamPaperGradeQuery query) {
        // 查出用户(并做数据权限)
        User currentUser = webContext.getCurrentUser();
        if (Objects.nonNull(currentUser)) {
            // 如果是部门管理员,需要做数据权限
            if ("1".equals(currentUser.getDeptAdmin())) {
                query.setDeptId(departmentMapper.selectByAdminId(currentUser.getId()));
            }
            ExamPaperAnswer answer = new ExamPaperAnswer();
            answer.setCreateUser(user.getId());
            answer.setUserName(user.getRealName());
            ScoreTemplatesCountVO vo = new ScoreTemplatesCountVO();
            vo.setCreateUser(user.getId());
            List<ExamPaperAnswer> byCreatUser = examPaperAnswerMapper.getByCreatUser(vo);
            answer.setCounts(byCreatUser.size());
            filteredList9.add(answer);
        }
        PageHelper.startPage(grade.getPageIndex(), grade.getPageSize());
        PageInfo<ExamPaperAnswer> pageInfoPageInfo = new PageInfo<>(filteredList9);
        pageInfoPageInfo.setTotal(info.getTotal());
        return RestResponse.ok(pageInfoPageInfo);
        query.setFullTime();
        // 查询
        PageInfo<ExamPaperAnswer> info = PageHelper.startPage(query.getPageIndex(), query.getPageSize()).doSelectPageInfo(() ->
                userMapper.getUserByDept(query));
        return RestResponse.ok(info);
    }
    @RequestMapping(value = "/details", method = RequestMethod.POST)
src/main/java/com/mindskip/xzs/repository/UserMapper.java
@@ -1,7 +1,10 @@
package com.mindskip.xzs.repository;
import com.mindskip.xzs.domain.ExamPaperAnswer;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
import com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -142,4 +145,7 @@
     * @param deptAdmin
     */
    void updateDeptAdmin(Integer id, String deptAdmin);
    List<ExamPaperAnswer> getUserByDept(@Param("query") ExamPaperGradeQuery query);
}
src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java
@@ -1,12 +1,15 @@
package com.mindskip.xzs.utility.minio;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.lang.Nullable;
import java.lang.management.ManagementFactory;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.util.Date;
import java.util.Objects;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils{
@@ -179,4 +182,35 @@
        ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
        return Date.from(zdt.toInstant());
    }
    /**
     * 获取某天的开始时间
     *
     * @param date
     * @return 2023-01-01 00:00:00
     */
    public static Date getDayStart(@Nullable Date date) {
        if (Objects.isNull(date)) {
            date = new Date();
        }
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.of("GMT+8"));
        LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0);
        return Timestamp.valueOf(of);
    }
    /**
     * 获取某天的结束时间
     *
     * @param date
     * @return 2023-01-01 23:59:59
     */
    public static Date getDayEnd(@Nullable Date date) {
        if (Objects.isNull(date)) {
            date = new Date();
        }
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        LocalDateTime of = LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59);
        return Timestamp.valueOf(of);
    }
}
src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java
New file
@@ -0,0 +1,39 @@
package com.mindskip.xzs.viewmodel.admin.paper;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mindskip.xzs.base.BasePage;
import com.mindskip.xzs.utility.minio.DateUtils;
import lombok.Data;
import java.util.Date;
import java.util.Objects;
/**
 * @author:xp
 * @date:2024/3/15 14:45
 */
@Data
public class ExamPaperGradeQuery extends BasePage {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date start;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date end;
    /**
     * 部门ID
     */
    private Integer deptId;
    public void setFullTime() {
        // 完善时间范围
        if (Objects.nonNull(start)) {
            start = DateUtils.getDayStart(start);
        }
        if (Objects.nonNull(end)) {
            end = DateUtils.getDayEnd(end);
        }
    }
}
src/main/resources/mapper/UserMapper.xml
@@ -444,4 +444,24 @@
    UPDATE t_user SET dept_admin = #{deptAdmin} WHERE id = #{id} AND deleted = 0
  </update>
  <select id="getUserByDept" resultType="com.mindskip.xzs.domain.ExamPaperAnswer">
    SELECT
        tu.id as createUser, tu.real_name as userName, count(tepa.id) as counts
    FROM
         t_user tu INNER JOIN t_user_department tud ON tu.id = tud.user_id AND tu.deleted = 0
                   LEFT JOIN t_exam_paper_answer tepa ON tepa.create_user = tu.id
    <where>
      <if test="query.deptId != null">
        AND tud.department_id = #{query.deptId}
      </if>
      <if test="query.start != null and query.end != null">
        AND tepa.create_time between #{query.start} and #{query.end}
      </if>
    </where>
    group by
        createUser, userName
    ORDER BY
        tu.id desc
  </select>
</mapper>