From 36bbaf09954ce6d86df762dd2662a1827fffe64e Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Tue, 16 Apr 2024 18:09:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=AD=A3=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正分页与查询接口 --- .../jsl/oa/controllers/ReviewController.java | 9 + .../com/jsl/oa/model/vodata/ReviewDataVO.java | 2 +- .../com/jsl/oa/services/ReviewService.java | 2 + .../oa/services/impl/ReviewServiceImpl.java | 193 +++++++++++++++++- 4 files changed, 203 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index a7c229d..e5c225d 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -92,6 +92,15 @@ public class ReviewController { } + @GetMapping("/review/search") + public BaseResponse searchReview(String content, + Short statue, + HttpServletRequest request, + @RequestParam Integer page, + @RequestParam Integer pageSize) { + log.info("请求接口[GET]: /review/search"); + return reviewService.searchReview(content, statue, request, page, pageSize); + } } diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java index e22dacc..7700711 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java @@ -10,7 +10,7 @@ public class ReviewDataVO { private Integer dataTotal; - private List data; + private List reviews; } diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java index 89c2447..bbcfc39 100644 --- a/src/main/java/com/jsl/oa/services/ReviewService.java +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -16,4 +16,6 @@ public interface ReviewService { BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request); BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVOVO, HttpServletRequest request); + + BaseResponse searchReview(String content, Short statue, HttpServletRequest request, Integer page, Integer pageSize); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 5e3613a..28d1f99 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -1,6 +1,8 @@ package com.jsl.oa.services.impl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.jsl.oa.common.constant.ReviewConstants; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ReviewDAO; @@ -12,6 +14,7 @@ import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.ReviewDO; import com.jsl.oa.model.vodata.ReviewAddVO; +import com.jsl.oa.model.vodata.ReviewDataVO; import com.jsl.oa.model.vodata.ReviewUpdateResultVO; import com.jsl.oa.model.vodata.ReviewVO; import com.jsl.oa.services.ReviewService; @@ -107,7 +110,13 @@ public class ReviewServiceImpl implements ReviewService { //封装对应VO类 List result = encapsulateArrayClass(reviewData); - return ResultUtil.success(result); + //封装结果类与数据总数 + int total = result.size(); + ReviewDataVO reviewDataVO = new ReviewDataVO(); + reviewDataVO.setReviews(result); + reviewDataVO.setDataTotal(total); + + return ResultUtil.success(reviewDataVO); } @@ -172,7 +181,13 @@ public class ReviewServiceImpl implements ReviewService { //封装对应VO类 List result = encapsulateArrayClass(reviewData); - return ResultUtil.success(result); + //封装结果类与数据总数 + int total = result.size(); + ReviewDataVO reviewDataVO = new ReviewDataVO(); + reviewDataVO.setReviews(result); + reviewDataVO.setDataTotal(total); + + return ResultUtil.success(reviewDataVO); } @@ -229,6 +244,116 @@ public class ReviewServiceImpl implements ReviewService { } + + @Override + public BaseResponse searchReview(String content, + Short statue, + HttpServletRequest request, + Integer page, Integer pageSize) { + + List reviewVOS = new ArrayList<>(); + +// 根据判断结果筛选 + if (statue == null || statue.equals("")) { + List reviewVOs = getReview(request); + reviewVOS.addAll(reviewVOs); + } else { + List reviewVOs = getReviewsByResult(request, statue); + reviewVOS.addAll(reviewVOs); + } + +// 根据内容筛选 + if (content == null || content.equals("")) { + // 使用PageHelper进行分页 + PageHelper.startPage(page, pageSize); + PageInfo pageInfo1 = new PageInfo<>(reviewVOS); + int total = reviewVOS.size(); + ReviewDataVO reviewDataVO = new ReviewDataVO(); + reviewDataVO.setReviews(pageInfo1.getList()); + reviewDataVO.setDataTotal(total); + return ResultUtil.success(reviewDataVO); + } else { + reviewVOS = reviewVOS.stream() + .filter(reviewVO -> reviewVO.getName().contains(content) || reviewVO.getContent().contains(content)) + .collect(Collectors.toList()); + } + + // 使用PageHelper进行分页 + PageHelper.startPage(page, pageSize); + PageInfo pageInfo = new PageInfo<>(reviewVOS); + + + //封装结果类与数据总数 + int total = (int) pageInfo.getTotal(); + ReviewDataVO reviewDataVO = new ReviewDataVO(); + reviewDataVO.setReviews(pageInfo.getList()); + reviewDataVO.setDataTotal(total); + + return ResultUtil.success(reviewDataVO); + } + + + + private List getReview(HttpServletRequest request) { + //获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //存储审核数据的数组 + List reviewData = new ArrayList<>(); + + //先获取用户为项目负责人的项目列表 + projectDAO.getProjectByPrincipalUser(userId); + + //先从用户为 项目负责人 的项目中获取对应 审核信息 + for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewDAO. + selectAllReviewFromProject(projectDO.getId()); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + //在从用户为 子系统负责人 的项目中获取对应 审核信息 + for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewDAO. + selectReviewFromSubsystem(projectChildDO.getId()); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + + //在从用户为 子模块负责人 的项目中获取对应 审核信息 + for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewDAO. + selectReviewFromSubmodule(projectModuleDO.getId()); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + //根据id进行去重 + reviewData = reviewData.stream() + .collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing)) + .values() + .stream() + .collect(Collectors.toList()); + + //按照申请时间降序排序 + Collections.sort(reviewData, new Comparator() { + @Override + public int compare(ReviewDO review1, ReviewDO review2) { + return review2.getApplicationTime().compareTo(review1.getApplicationTime()); + } + }); + + //封装对应VO类 + List result = encapsulateArrayClass(reviewData); + + return result; + } + + /** * @Description: 封装审核的VO类 * @Date: 2024/4/11 @@ -267,6 +392,70 @@ public class ReviewServiceImpl implements ReviewService { } + public List getReviewsByResult( + HttpServletRequest request, + Short result) { + +// 获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //存储审核数据的数组 + List reviewData = new ArrayList<>(); + + //先获取用户为项目负责人的项目列表 + projectDAO.getProjectByPrincipalUser(userId); + + //先从用户为 项目负责人 的项目中获取对应 审核信息 + for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewDAO. + selectApprovedResultReviewFromProject(projectDO.getId(), + result); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + //在从用户为 子系统负责人 的项目中获取对应 审核信息 + for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) { + //查询每个项目下状态为2的审核信息 + List reviewDOS = reviewDAO. + selectApprovedResultReviewsFromSubsystem(projectChildDO.getId(), + result); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + + //在从用户为 子模块负责人 的项目中获取对应 审核信息 + for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewDAO. + selectApprovedResultReviewsFromSubModule(projectModuleDO.getId(), + result); + //封装VO类 + reviewData.addAll(reviewDOS); + } + + + //根据id进行去重 + reviewData = reviewData.stream() + .collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing)) + .values() + .stream() + .collect(Collectors.toList()); + + + //按照申请时间降序排序 + Collections.sort(reviewData, new Comparator() { + @Override + public int compare(ReviewDO review1, ReviewDO review2) { + return review2.getApplicationTime().compareTo(review1.getApplicationTime()); + } + }); + + return encapsulateArrayClass(reviewData); + } + }