智慧水务管理系统 - 精河县供水工程综合管理平台

PageController.java 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.water.common.controller;
  2. import com.water.common.entity.R;
  3. import com.water.common.entity.query.PageQuery;
  4. import com.water.common.entity.query.PageResult;
  5. import com.water.common.entity.query.QueryCondition;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import io.swagger.v3.oas.annotations.Parameter;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import lombok.RequiredArgsConstructor;
  10. import org.springframework.web.bind.annotation.*;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * 分页查询控制器
  17. */
  18. @RestController
  19. @RequestMapping("/api/page")
  20. @RequiredArgsConstructor
  21. @Tag(name = "分页查询", description = "通用分页查询接口")
  22. public class PageController {
  23. @PostMapping("/query")
  24. @Operation(summary = "通用分页查询", description = "支持过滤、排序、分页的通用查询接口")
  25. public R<PageResult<Map<String, Object>>> query(
  26. @Parameter(description = "查询条件")
  27. @RequestBody QueryCondition queryCondition) {
  28. try {
  29. // 这里应该根据查询条件查询数据库,简化示例中返回模拟数据
  30. PageQuery page = queryCondition.getPage();
  31. List<Map<String, Object>> records = new ArrayList<>();
  32. // 生成模拟数据
  33. for (int i = 0; i < page.getSize(); i++) {
  34. Map<String, Object> record = new HashMap<>();
  35. record.put("id", (page.getCurrent() - 1) * page.getSize() + i + 1);
  36. record.put("name", "测试数据 " + ((page.getCurrent() - 1) * page.getSize() + i + 1));
  37. record.put("createTime", "2026-06-15");
  38. records.add(record);
  39. }
  40. // 创建分页结果
  41. PageResult<Map<String, Object>> result = new PageResult<>();
  42. result.setCurrent(page.getCurrent());
  43. result.setSize(page.getSize());
  44. result.setTotal(100L); // 模拟总记录数
  45. result.setRecords(records);
  46. result.calculatePages();
  47. return R.success("查询成功", result);
  48. } catch (Exception e) {
  49. return R.error("查询失败: " + e.getMessage());
  50. }
  51. }
  52. @GetMapping("/list")
  53. @Operation(summary = "简单分页查询", description = "简单的分页查询接口")
  54. public R<PageResult<Map<String, Object>>> list(
  55. @Parameter(description = "当前页码")
  56. @RequestParam(defaultValue = "1") Integer current,
  57. @Parameter(description = "每页数量")
  58. @RequestParam(defaultValue = "10") Integer size,
  59. @Parameter(description = "查询关键词")
  60. @RequestParam(required = false) String keyword) {
  61. try {
  62. // 创建分页查询条件
  63. PageQuery pageQuery = new PageQuery();
  64. pageQuery.setCurrent(current);
  65. pageQuery.setSize(size);
  66. // 查询条件
  67. QueryCondition queryCondition = new QueryCondition();
  68. queryCondition.setPage(pageQuery);
  69. // 如果有关键词,添加过滤条件
  70. if (keyword != null && !keyword.trim().isEmpty()) {
  71. List<QueryCondition.Filter> filters = new ArrayList<>();
  72. QueryCondition.Filter nameFilter = new QueryCondition.Filter();
  73. nameFilter.setField("name");
  74. nameFilter.setOperator("like");
  75. nameFilter.setValue("%" + keyword + "%");
  76. filters.add(nameFilter);
  77. queryCondition.setFilters(filters);
  78. }
  79. // 调用通用查询方法
  80. return query(queryCondition);
  81. } catch (Exception e) {
  82. return R.error("查询失败: " + e.getMessage());
  83. }
  84. }
  85. @GetMapping("/export")
  86. @Operation(summary = "导出查询结果", description = "导出查询结果到Excel")
  87. public R<String> export(
  88. @Parameter(description = "当前页码")
  89. @RequestParam(defaultValue = "1") Integer current,
  90. @Parameter(description = "每页数量")
  91. @RequestParam(defaultValue = "10000") Integer size,
  92. @Parameter(description = "查询关键词")
  93. @RequestParam(required = false) String keyword) {
  94. try {
  95. // 这里应该根据条件查询数据并导出到Excel
  96. return R.success("导出成功", "data_export_" + System.currentTimeMillis() + ".xlsx");
  97. } catch (Exception e) {
  98. return R.error("导出失败: " + e.getMessage());
  99. }
  100. }
  101. }