From aae95b8bc25edfa97d6f90b8371a63be45869f55 Mon Sep 17 00:00:00 2001 From: chenjiale Date: Wed, 24 Dec 2025 16:17:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(alert):=20=E4=B8=BA=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=B7=BB=E5=8A=A0=E7=B3=BB=E7=BB=9F=E5=92=8C?= =?UTF-8?q?=E6=9C=BA=E7=BB=84=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 UnitCfg 相关依赖注入和数据查询 - 实现系统名称和机组名称的关联查询功能 - 重构模型列表构建逻辑,支持批量获取系统和机组信息 - 在 ModelSimpleVO 中新增系统名称和机组名称字段 - 本地配置文件中算法服务地址改为本地地址 - 优化查询性能,避免 N+1 查询问题 --- .../admin/model/vo/ModelSimpleVO.java | 10 ++++ .../service/model/impl/ModelServiceImpl.java | 51 ++++++++++++++----- .../src/main/resources/application-local.yaml | 2 +- 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java index 844bc4c..65c831b 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java @@ -40,6 +40,16 @@ public class ModelSimpleVO { */ private String version; + /** + * 系统名称 + */ + private String systemName; + + /** + * 机组名称 + */ + private String unitName; + /** * 模型状态 */ 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 a3afeeb..9b38c51 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 @@ -18,10 +18,12 @@ import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg; import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg; import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg; +import cn.iocoder.yudao.module.alert.dao.domain.UnitCfg; import cn.iocoder.yudao.module.alert.dao.mapper.AssessReportCfgMapper; import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService; import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService; import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService; +import cn.iocoder.yudao.module.alert.dao.service.UnitCfgService; import cn.iocoder.yudao.module.alert.param.AnnTestParam; import cn.iocoder.yudao.module.alert.param.AnnTrainParam; import cn.iocoder.yudao.module.alert.param.ModelTestParam; @@ -57,6 +59,8 @@ public class ModelServiceImpl implements ModelService { private final SystemCfgService systemCfgService; + private final UnitCfgService unitCfgService; + private final ModelVersionService modelVersionService; private final AssessReportCfgMapper assessReportCfgMapper; @@ -88,21 +92,43 @@ public class ModelServiceImpl implements ModelService { .like(StringUtils.hasLength(modelName), ModelCfg::getModelName, modelName); 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()); + List records = buildModelSimpleList(list); 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() + List list = buildModelSimpleList(page.getRecords()); + return PagedResponse.of(page.getTotal(), query.getPageNo(), query.getPageSize(), list); + } + + private List buildModelSimpleList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + List systemIds = list.stream() + .map(ModelCfg::getSystemId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + List systemCfgList = systemIds.isEmpty() + ? Collections.emptyList() + : systemCfgService.list(Wrappers.lambdaQuery().in(SystemCfg::getSystemId, systemIds)); + Map systemNameMap = systemCfgList.stream() + .collect(Collectors.toMap(SystemCfg::getSystemId, SystemCfg::getSystemName, (a, b) -> a)); + Map systemUnitMap = systemCfgList.stream() + .collect(Collectors.toMap(SystemCfg::getSystemId, SystemCfg::getUnitId, (a, b) -> a)); + + List unitIds = systemCfgList.stream() + .map(SystemCfg::getUnitId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + Map unitNameMap = unitIds.isEmpty() + ? Collections.emptyMap() + : unitCfgService.list(Wrappers.lambdaQuery().in(UnitCfg::getUnitId, unitIds)) + .stream() + .collect(Collectors.toMap(UnitCfg::getUnitId, UnitCfg::getUnitName, (a, b) -> a)); + return list.stream().map(modelCfg -> ModelSimpleVO.builder() .id(modelCfg.getId()) .name(modelCfg.getModelName() == null ? null : modelCfg.getModelName().trim()) .creator(modelCfg.getCreator()) @@ -110,9 +136,10 @@ public class ModelServiceImpl implements ModelService { .version(modelCfg.getCurVersion()) .status(modelCfg.getStatus()) .algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString()) + .systemName(systemNameMap.get(modelCfg.getSystemId())) + .unitName(unitNameMap.get(systemUnitMap.get(modelCfg.getSystemId()))) .build()) .collect(Collectors.toList()); - return PagedResponse.of(page.getTotal(), query.getPageNo(), query.getPageSize(), list); } @Override diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index a5b1e18..75f2b28 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -276,7 +276,7 @@ EXA: point: head: XN. algorithm: - host: 120.26.116.243:8082 + host: 127.0.0.1:8082 assess-report: host: 120.26.116.243:8098 PCA: