From af08f24f0844960fbc38757b912f5178dfa8b052 Mon Sep 17 00:00:00 2001 From: chenjiale Date: Wed, 24 Dec 2025 13:54:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(model):=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=88=97=E8=A1=A8=E5=88=86=E9=A1=B5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Algorithm 枚举中添加 getAlgorithmIds 方法用于获取算法ID集合 - 在 ModelSelectQuery 查询类中继承 PageParam 实现分页参数功能 - 修改 ModelController 和 ModelService 接口返回 PagedResponse 分页结果 - 实现 ModelServiceImpl 中的分页查询逻辑,支持正常分页和不分页两种模式 - 新增 PagedResponse 通用分页响应类,包含总数、页码、大小和记录等字段 --- .../framework/common/pojo/PagedResponse.java | 40 +++++++++++++++++++ .../module/alert/common/enums/Algorithm.java | 5 +++ .../admin/model/ModelController.java | 5 ++- .../admin/model/vo/ModelSelectQuery.java | 5 ++- .../alert/service/model/ModelService.java | 3 +- .../service/model/impl/ModelServiceImpl.java | 26 ++++++++++-- 6 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PagedResponse.java diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PagedResponse.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PagedResponse.java new file mode 100644 index 0000000..1fd8ceb --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PagedResponse.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.framework.common.pojo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.Collections; +import java.util.List; + +@Schema(description = "分页结果") +@Data +@Builder +public class PagedResponse { + + @Schema(description = "总条数") + private long total; + + @Schema(description = "当前页码,从 1 开始") + private int current; + + @Schema(description = "分页大小") + private int size; + + @Schema(description = "当前页数据") + private List records; + + @Schema(description = "总页数") + private int pages; + + public static PagedResponse of(long total, int current, int size, List records) { + int pages = size <= 0 ? 0 : (int) ((total + size - 1) / size); + return PagedResponse.builder() + .total(total) + .current(current) + .size(size) + .pages(pages) + .records(records == null ? Collections.emptyList() : records) + .build(); + } +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java index 589b8d7..574faf2 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import java.util.Objects; +import java.util.Set; /** * @author chenjiale @@ -57,4 +58,8 @@ public enum Algorithm { } return ERROR; } + + public static Set getAlgorithmIds() { + return Set.of(PCA.code, ANN.code); + } } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java index 503d459..5fffd5c 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.alert.controller.admin.model; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PagedResponse; import cn.iocoder.yudao.module.alert.controller.admin.model.vo.*; import cn.iocoder.yudao.module.alert.param.AnnTestParam; import cn.iocoder.yudao.module.alert.param.AnnTrainParam; @@ -28,8 +29,8 @@ public class ModelController { @GetMapping("/card/list") - public CommonResult> getModelList(ModelSelectQuery query) { - List modelList = modelService.getModelList(query); + public CommonResult> getModelList(ModelSelectQuery query) { + PagedResponse modelList = modelService.getModelList(query); return CommonResult.success(modelList); } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java index d15c65b..0413fba 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.alert.controller.admin.model.vo; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import lombok.Data; +import lombok.EqualsAndHashCode; /** * @author chenjiale @@ -8,7 +10,8 @@ import lombok.Data; * @date 2023-08-19 13:25 */ @Data -public class ModelSelectQuery { +@EqualsAndHashCode(callSuper = true) +public class ModelSelectQuery extends PageParam { /** * 机组id */ diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java index 332e21c..93a92da 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.alert.service.model; +import cn.iocoder.yudao.framework.common.pojo.PagedResponse; import cn.iocoder.yudao.module.alert.controller.admin.model.vo.*; import cn.iocoder.yudao.module.alert.param.AnnTestParam; import cn.iocoder.yudao.module.alert.param.ModelTestParam; @@ -21,7 +22,7 @@ public interface ModelService { * @param query 请求参数 * @return model 列表 */ - List getModelList(ModelSelectQuery query); + PagedResponse getModelList(ModelSelectQuery query); /** * 获取模型信息 diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java index 8c362e0..a3afeeb 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.alert.service.model.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PagedResponse; import cn.iocoder.yudao.framework.common.util.http.HttpUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; @@ -29,6 +31,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.core.type.TypeReference; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -62,7 +65,7 @@ public class ModelServiceImpl implements ModelService { private String algorithmHost; @Override - public List getModelList(ModelSelectQuery query) { + public PagedResponse getModelList(ModelSelectQuery query) { Integer systemId = query.getSystemId(); String modelName = query.getName(); Integer status = query.getStatus(); @@ -81,9 +84,25 @@ public class ModelServiceImpl implements ModelService { .eq(Objects.nonNull(trash), ModelCfg::getTrash, trash) .eq(ModelCfg::getVisible, ModelVisible.VISIBLE.code) .in(CollUtil.isNotEmpty(systems), ModelCfg::getSystemId, systems) + .in(ModelCfg::getAlgorithmId, Algorithm.getAlgorithmIds()) .like(StringUtils.hasLength(modelName), ModelCfg::getModelName, modelName); - List list = modelCfgService.list(queryWrapper); - return list.stream().map(modelCfg -> ModelSimpleVO.builder() + if (Objects.equals(query.getPageSize(), PageParam.PAGE_SIZE_NONE)) { + List list = modelCfgService.list(queryWrapper); + List records = list.stream().map(modelCfg -> ModelSimpleVO.builder() + .id(modelCfg.getId()) + .name(modelCfg.getModelName() == null ? null : modelCfg.getModelName().trim()) + .creator(modelCfg.getCreator()) + .createTime(modelCfg.getCreateTime()) + .version(modelCfg.getCurVersion()) + .status(modelCfg.getStatus()) + .algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString()) + .build()) + .collect(Collectors.toList()); + return PagedResponse.of(list.size(), query.getPageNo(), query.getPageSize(), records); + } + + Page page = modelCfgService.page(new Page<>(query.getPageNo(), query.getPageSize()), queryWrapper); + List list = page.getRecords().stream().map(modelCfg -> ModelSimpleVO.builder() .id(modelCfg.getId()) .name(modelCfg.getModelName() == null ? null : modelCfg.getModelName().trim()) .creator(modelCfg.getCreator()) @@ -93,6 +112,7 @@ public class ModelServiceImpl implements ModelService { .algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString()) .build()) .collect(Collectors.toList()); + return PagedResponse.of(page.getTotal(), query.getPageNo(), query.getPageSize(), list); } @Override