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