From 71bc21abbfd1cf7665593fe8efff8965811373ad Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 15 三月 2024 15:15:55 +0800 Subject: [PATCH] 成绩统计增加数据权限、增加时间查询 --- src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java | 39 +++++++++++++ src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java | 34 +++++++++++ src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java | 61 ++++++++----------- src/main/java/com/mindskip/xzs/repository/UserMapper.java | 6 ++ src/main/resources/mapper/UserMapper.xml | 20 ++++++ 5 files changed, 125 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java index 0469737..e82e2ed 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java +++ b/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) diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java index 89aaf6f..d0e9942 100644 --- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java +++ b/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); } diff --git a/src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java b/src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java index f4482c6..c6066e3 100644 --- a/src/main/java/com/mindskip/xzs/utility/minio/DateUtils.java +++ b/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); + } } diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java new file mode 100644 index 0000000..2d16b9f --- /dev/null +++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java @@ -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锛歺p + * @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); + } + } + +} diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 2afc008..bd9950c 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/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> -- Gitblit v1.8.0