条件分页排序模板

╰半夏微凉° 2024-03-22 16:16 125阅读 0赞
  1. @Override
  2. public PageVO<ProjectDTO> queryProjects(ProjectQueryDTO projectQueryDTO, String order, Integer pageNo, Integer pageSize, String sortBy) {
  3. QueryWrapper<Project> queryWrapper = new QueryWrapper<>();
  4. //搜索条件是标的状态
  5. queryWrapper.lambda().eq(Objects.nonNull(projectQueryDTO.getProjectStatus()),Project::getProjectStatus, projectQueryDTO.getProjectStatus());
  6. //搜索条件是标的名称
  7. queryWrapper.lambda().eq(Objects.nonNull(projectQueryDTO.getName()),Project::getName, projectQueryDTO.getName());
  8. //搜索条件是标的类型
  9. queryWrapper.lambda().eq(StringUtils.isNotBlank(projectQueryDTO.getType()),Project::getType, projectQueryDTO.getType());
  10. //搜索条件是年化利率区间
  11. if (Objects.nonNull(projectQueryDTO.getStartAnnualRate())){
  12. queryWrapper.lambda().ge(Project::getAnnualRate, projectQueryDTO.getStartAnnualRate());
  13. }
  14. if (Objects.nonNull(projectQueryDTO.getEndAnnualRate())){
  15. queryWrapper.lambda().le(Project::getAnnualRate, projectQueryDTO.getEndAnnualRate());
  16. }
  17. //搜索条件是借款期限区间
  18. if (Objects.nonNull(projectQueryDTO.getStartPeriod())){
  19. queryWrapper.lambda().ge(Project::getPeriod, projectQueryDTO.getStartPeriod());
  20. }
  21. if (Objects.nonNull(projectQueryDTO.getEndPeriod())){
  22. queryWrapper.lambda().le(Project::getPeriod, projectQueryDTO.getEndPeriod());
  23. }
  24. //构造分页对象
  25. Page<Project> objectPage = new Page<>(pageNo, pageSize);
  26. //排序
  27. if (StringUtils.isNotBlank(sortBy)&&StringUtils.isNotBlank(order)) {
  28. if (order.toLowerCase().equals("desc")) {
  29. queryWrapper.orderByDesc(sortBy);
  30. }
  31. if (order.toLowerCase().equals("asc")) {
  32. queryWrapper.orderByAsc(sortBy);
  33. }
  34. }else {//如果客户不打算排序,都按照时间倒叙排序
  35. queryWrapper.lambda().orderByDesc(Project::getCreateDate);
  36. }
  37. //分页查询
  38. IPage<Project> projectIPage = page(objectPage, queryWrapper);
  39. //将查询结果转换为DTO
  40. IPage<ProjectDTO> convert = projectIPage.convert(project -> {
  41. ProjectDTO projectDTO = new ProjectDTO();
  42. BeanUtils.copyProperties(project, projectDTO);
  43. return projectDTO;
  44. });
  45. //将查询结果封装到PageVO中
  46. PageVO<ProjectDTO> projectDTOS = new PageVO<>(convert.getRecords(), convert.getTotal(), pageNo, pageSize);
  47. return projectDTOS;
  48. }

下面是controller

  1. @ApiOperation("查询标的列表")
  2. @ApiImplicitParams({
  3. @ApiImplicitParam(name = "projectQueryDTO", value = "标的信息", required = true,
  4. dataType = "ProjectQueryDTO", paramType = "body"),
  5. @ApiImplicitParam(name = "order", value = "排序方式", required = true,
  6. dataType = "String", paramType = "query"),
  7. @ApiImplicitParam(name = "pageNo", value = "页码", required = true,
  8. dataType = "Integer", paramType = "query"),
  9. @ApiImplicitParam(name = "pageSize", value = "每页显示条数", required = true,
  10. dataType = "Integer", paramType = "query"),
  11. @ApiImplicitParam(name = "sortBy", value = "排序字段", required = true,
  12. dataType = "String", paramType = "query")
  13. })
  14. @PostMapping(value = "/projects/q")
  15. @Override
  16. public RestResponse<PageVO<ProjectDTO>> queryProjects(@RequestBody ProjectQueryDTO projectQueryDTO, String order, Integer pageNo, Integer pageSize, String sortBy) {
  17. //执行查询
  18. PageVO<ProjectDTO> pageVO = projectService.queryProjects(projectQueryDTO, order, pageNo, pageSize, sortBy);
  19. return RestResponse.success(pageVO);
  20. }

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读