fix:修正查询接口
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 19s

修正分页与查询接口
This commit is contained in:
xiangZr-hhh 2024-04-16 18:09:16 +08:00
parent 8ab59b5a1d
commit 36bbaf0995
4 changed files with 203 additions and 3 deletions

View File

@ -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);
}
}

View File

@ -10,7 +10,7 @@ public class ReviewDataVO {
private Integer dataTotal;
private List<ReviewVO> data;
private List<ReviewVO> reviews;
}

View File

@ -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);
}

View File

@ -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<ReviewVO> 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<ReviewVO> 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<ReviewVO> reviewVOS = new ArrayList<>();
// 根据判断结果筛选
if (statue == null || statue.equals("")) {
List<ReviewVO> reviewVOs = getReview(request);
reviewVOS.addAll(reviewVOs);
} else {
List<ReviewVO> reviewVOs = getReviewsByResult(request, statue);
reviewVOS.addAll(reviewVOs);
}
// 根据内容筛选
if (content == null || content.equals("")) {
// 使用PageHelper进行分页
PageHelper.startPage(page, pageSize);
PageInfo<ReviewVO> 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<ReviewVO> 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<ReviewVO> getReview(HttpServletRequest request) {
//获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
//存储审核数据的数组
List<ReviewDO> reviewData = new ArrayList<>();
//先获取用户为项目负责人的项目列表
projectDAO.getProjectByPrincipalUser(userId);
//先从用户为 项目负责人 的项目中获取对应 审核信息
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectAllReviewFromProject(projectDO.getId());
//封装VO类
reviewData.addAll(reviewDOS);
}
//在从用户为 子系统负责人 的项目中获取对应 审核信息
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectReviewFromSubsystem(projectChildDO.getId());
//封装VO类
reviewData.addAll(reviewDOS);
}
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> 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<ReviewDO>() {
@Override
public int compare(ReviewDO review1, ReviewDO review2) {
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
}
});
//封装对应VO类
List<ReviewVO> result = encapsulateArrayClass(reviewData);
return result;
}
/**
* @Description: 封装审核的VO类
* @Date: 2024/4/11
@ -267,6 +392,70 @@ public class ReviewServiceImpl implements ReviewService {
}
public List<ReviewVO> getReviewsByResult(
HttpServletRequest request,
Short result) {
// 获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
//存储审核数据的数组
List<ReviewDO> reviewData = new ArrayList<>();
//先获取用户为项目负责人的项目列表
projectDAO.getProjectByPrincipalUser(userId);
//先从用户为 项目负责人 的项目中获取对应 审核信息
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewFromProject(projectDO.getId(),
result);
//封装VO类
reviewData.addAll(reviewDOS);
}
//在从用户为 子系统负责人 的项目中获取对应 审核信息
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
//查询每个项目下状态为2的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewsFromSubsystem(projectChildDO.getId(),
result);
//封装VO类
reviewData.addAll(reviewDOS);
}
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> 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<ReviewDO>() {
@Override
public int compare(ReviewDO review1, ReviewDO review2) {
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
}
});
return encapsulateArrayClass(reviewData);
}
}