| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package com.water.common.controller;
-
- import com.water.common.entity.R;
- import com.water.common.entity.query.PageQuery;
- import com.water.common.entity.query.PageResult;
- import com.water.common.entity.query.QueryCondition;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.Parameter;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import lombok.RequiredArgsConstructor;
- import org.springframework.web.bind.annotation.*;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- /**
- * 分页查询控制器
- */
- @RestController
- @RequestMapping("/api/page")
- @RequiredArgsConstructor
- @Tag(name = "分页查询", description = "通用分页查询接口")
- public class PageController {
-
- @PostMapping("/query")
- @Operation(summary = "通用分页查询", description = "支持过滤、排序、分页的通用查询接口")
- public R<PageResult<Map<String, Object>>> query(
- @Parameter(description = "查询条件")
- @RequestBody QueryCondition queryCondition) {
-
- try {
- // 这里应该根据查询条件查询数据库,简化示例中返回模拟数据
- PageQuery page = queryCondition.getPage();
- List<Map<String, Object>> records = new ArrayList<>();
-
- // 生成模拟数据
- for (int i = 0; i < page.getSize(); i++) {
- Map<String, Object> record = new HashMap<>();
- record.put("id", (page.getCurrent() - 1) * page.getSize() + i + 1);
- record.put("name", "测试数据 " + ((page.getCurrent() - 1) * page.getSize() + i + 1));
- record.put("createTime", "2026-06-15");
- records.add(record);
- }
-
- // 创建分页结果
- PageResult<Map<String, Object>> result = new PageResult<>();
- result.setCurrent(page.getCurrent());
- result.setSize(page.getSize());
- result.setTotal(100L); // 模拟总记录数
- result.setRecords(records);
- result.calculatePages();
-
- return R.success("查询成功", result);
-
- } catch (Exception e) {
- return R.error("查询失败: " + e.getMessage());
- }
- }
-
- @GetMapping("/list")
- @Operation(summary = "简单分页查询", description = "简单的分页查询接口")
- public R<PageResult<Map<String, Object>>> list(
- @Parameter(description = "当前页码")
- @RequestParam(defaultValue = "1") Integer current,
- @Parameter(description = "每页数量")
- @RequestParam(defaultValue = "10") Integer size,
- @Parameter(description = "查询关键词")
- @RequestParam(required = false) String keyword) {
-
- try {
- // 创建分页查询条件
- PageQuery pageQuery = new PageQuery();
- pageQuery.setCurrent(current);
- pageQuery.setSize(size);
-
- // 查询条件
- QueryCondition queryCondition = new QueryCondition();
- queryCondition.setPage(pageQuery);
-
- // 如果有关键词,添加过滤条件
- if (keyword != null && !keyword.trim().isEmpty()) {
- List<QueryCondition.Filter> filters = new ArrayList<>();
- QueryCondition.Filter nameFilter = new QueryCondition.Filter();
- nameFilter.setField("name");
- nameFilter.setOperator("like");
- nameFilter.setValue("%" + keyword + "%");
- filters.add(nameFilter);
- queryCondition.setFilters(filters);
- }
-
- // 调用通用查询方法
- return query(queryCondition);
-
- } catch (Exception e) {
- return R.error("查询失败: " + e.getMessage());
- }
- }
-
- @GetMapping("/export")
- @Operation(summary = "导出查询结果", description = "导出查询结果到Excel")
- public R<String> export(
- @Parameter(description = "当前页码")
- @RequestParam(defaultValue = "1") Integer current,
- @Parameter(description = "每页数量")
- @RequestParam(defaultValue = "10000") Integer size,
- @Parameter(description = "查询关键词")
- @RequestParam(required = false) String keyword) {
-
- try {
- // 这里应该根据条件查询数据并导出到Excel
- return R.success("导出成功", "data_export_" + System.currentTimeMillis() + ".xlsx");
- } catch (Exception e) {
- return R.error("导出失败: " + e.getMessage());
- }
- }
- }
|