Browse Source

feat(model): 添加模型列表分页功能

- 在 Algorithm 枚举中添加 getAlgorithmIds 方法用于获取算法ID集合
- 在 ModelSelectQuery 查询类中继承 PageParam 实现分页参数功能
- 修改 ModelController 和 ModelService 接口返回 PagedResponse 分页结果
- 实现 ModelServiceImpl 中的分页查询逻辑,支持正常分页和不分页两种模式
- 新增 PagedResponse 通用分页响应类,包含总数、页码、大小和记录等字段
pull/57/head
chenjiale 3 weeks ago
parent
commit
af08f24f08
  1. 40
      yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PagedResponse.java
  2. 5
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java
  3. 5
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java
  4. 5
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java
  5. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java
  6. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java

40
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<T> {
@Schema(description = "总条数")
private long total;
@Schema(description = "当前页码,从 1 开始")
private int current;
@Schema(description = "分页大小")
private int size;
@Schema(description = "当前页数据")
private List<T> records;
@Schema(description = "总页数")
private int pages;
public static <T> PagedResponse<T> of(long total, int current, int size, List<T> records) {
int pages = size <= 0 ? 0 : (int) ((total + size - 1) / size);
return PagedResponse.<T>builder()
.total(total)
.current(current)
.size(size)
.pages(pages)
.records(records == null ? Collections.emptyList() : records)
.build();
}
}

5
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<Integer> getAlgorithmIds() {
return Set.of(PCA.code, ANN.code);
}
}

5
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<List<ModelSimpleVO>> getModelList(ModelSelectQuery query) {
List<ModelSimpleVO> modelList = modelService.getModelList(query);
public CommonResult<PagedResponse<ModelSimpleVO>> getModelList(ModelSelectQuery query) {
PagedResponse<ModelSimpleVO> modelList = modelService.getModelList(query);
return CommonResult.success(modelList);
}

5
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
*/

3
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<ModelSimpleVO> getModelList(ModelSelectQuery query);
PagedResponse<ModelSimpleVO> getModelList(ModelSelectQuery query);
/**
* 获取模型信息

26
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<ModelSimpleVO> getModelList(ModelSelectQuery query) {
public PagedResponse<ModelSimpleVO> 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<ModelCfg> list = modelCfgService.list(queryWrapper);
return list.stream().map(modelCfg -> ModelSimpleVO.builder()
if (Objects.equals(query.getPageSize(), PageParam.PAGE_SIZE_NONE)) {
List<ModelCfg> list = modelCfgService.list(queryWrapper);
List<ModelSimpleVO> 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<ModelCfg> page = modelCfgService.page(new Page<>(query.getPageNo(), query.getPageSize()), queryWrapper);
List<ModelSimpleVO> 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

Loading…
Cancel
Save