From e12db17bb85b85b938bcda5d86ef7be3292ef0d7 Mon Sep 17 00:00:00 2001 From: Jiale Date: Fri, 11 Jul 2025 18:57:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(module-alert):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E4=B8=8B=E6=9E=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ModelController 中添加 bottomModel 方法处理模型下架请求 - 在 ModelService 接口中定义 bottomModel 方法 - 实现在 ModelServiceImpl 中的 bottomModel 方法逻辑 - 新增 ModelVersion 实体类用于保存模型版本信息 - 创建 ModelVersionMapper 及其 XML 文件进行数据库操作 - 新增 ModelVersionService 接口及其实现类 - 优化 Point 类中的 limit 字段类型 --- .../admin/model/ModelController.java | 5 ++ .../controller/admin/model/model/Point.java | 2 +- .../module/alert/dao/domain/ModelVersion.java | 72 +++++++++++++++++++ .../alert/dao/mapper/ModelVersionMapper.java | 18 +++++ .../dao/service/ModelVersionService.java | 13 ++++ .../service/impl/ModelVersionServiceImpl.java | 22 ++++++ .../alert/service/model/ModelService.java | 2 + .../service/model/impl/ModelServiceImpl.java | 32 ++++++++- .../resources/mapper/ModelVersionMapper.xml | 48 +++++++++++++ 9 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml 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 e9f2999..ea241a0 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 @@ -67,4 +67,9 @@ public class ModelController { ModelTestData modelTestData = modelService.getModelTestData(param); return CommonResult.success(modelTestData); } + + @PostMapping("/bottom/{id}") + public CommonResult bottomModel(@PathVariable Integer id) { + return CommonResult.success(modelService.bottomModel(id)); + } } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java index 29d9695..5d360f9 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java @@ -24,7 +24,7 @@ public class Point { @JsonProperty("Upper") private BigDecimal Upper; private Boolean dead; - private String limit; + private Boolean limit; private Boolean lock; /** * 残差下限 diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java new file mode 100644 index 0000000..f54eeda --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.alert.dao.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * @TableName model_version + */ +@TableName(value ="model_version") +@Data +public class ModelVersion implements Serializable { + private Integer id; + + private Integer modelId; + + private Integer algorithmId; + + private String modelName; + + private String createName; + + private String modelInfo; + + private Integer status; + + private Integer visible; + + private String conditionInfo; + + private Integer trash; + + private String assessRes; + + private Integer needToAssess; + + private Double score; + + private String clearOrNot; + + private Integer effNumber; + + private Integer needToClean; + + private String origAssessRes; + + private Double loadCover; + + private String coverOutput; + + private String version; + + private String conditionName; + + private Integer isOnline; + + private String creator; + + private Date createTime; + + private String updater; + + private Date updateTime; + + private Boolean deleted; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java new file mode 100644 index 0000000..e71e457 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.alert.dao.mapper; + +import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 陈小黑 +* @description 针对表【model_version】的数据库操作Mapper +* @createDate 2025-07-10 16:23:38 +* @Entity cn.iocoder.yudao.module.alert.dao.domain.ModelVersion +*/ +public interface ModelVersionMapper extends BaseMapper { + +} + + + + diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java new file mode 100644 index 0000000..246ed07 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.alert.dao.service; + +import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 陈小黑 +* @description 针对表【model_version】的数据库操作Service +* @createDate 2025-07-10 16:23:38 +*/ +public interface ModelVersionService extends IService { + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java new file mode 100644 index 0000000..2805d0a --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.alert.dao.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; +import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService; +import cn.iocoder.yudao.module.alert.dao.mapper.ModelVersionMapper; +import org.springframework.stereotype.Service; + +/** +* @author 陈小黑 +* @description 针对表【model_version】的数据库操作Service实现 +* @createDate 2025-07-10 16:23:38 +*/ +@Service +public class ModelVersionServiceImpl extends ServiceImpl + implements ModelVersionService{ + +} + + + + 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 6bd1cce..4375a91 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 @@ -48,4 +48,6 @@ public interface ModelService { TrainInfo trainModel(TrainParam param); ModelTestData getModelTestData(ModelTestParam param); + + ModelInfoVO bottomModel(Integer id); } 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 961a9b7..2ba6a97 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 @@ -2,6 +2,7 @@ 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.util.http.HttpUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; @@ -12,21 +13,24 @@ import cn.iocoder.yudao.module.alert.common.enums.ModelVisible; import cn.iocoder.yudao.module.alert.controller.admin.model.model.ModelInfo; import cn.iocoder.yudao.module.alert.controller.admin.model.vo.*; 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.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.param.ModelTestParam; import cn.iocoder.yudao.module.alert.param.TrainParam; import cn.iocoder.yudao.module.alert.service.model.ModelService; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fasterxml.jackson.core.type.TypeReference; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.RequestBody; import java.util.*; import java.util.stream.Collectors; @@ -44,6 +48,8 @@ public class ModelServiceImpl implements ModelService { private final SystemCfgService systemCfgService; + private final ModelVersionService modelVersionService; + @Value("${algorithm.host}") private String algorithmHost; @@ -147,16 +153,36 @@ public class ModelServiceImpl implements ModelService { new TypeReference>() { }).get("error_msg")); } - return JsonUtils.parseObject(trainBody, new TypeReference() { + return JsonUtils.parseObject(trainBody, new TypeReference<>() { }); } - @Override public ModelTestData getModelTestData(ModelTestParam param) { String result = HttpUtils.post(algorithmHost + "/api/test/Test", null, JsonUtils.toJsonString(param)) .replace("NaN", "-1").replace("Infinity", "1"); return JsonUtils.parseObject(result, ModelTestData.class); } + + @Override + @Transactional(rollbackFor = Exception.class) + public ModelInfoVO bottomModel(Integer id) { + ModelCfg modelCfg = modelCfgService.getById(id); + ModelInfoVO modelInfo = JSON.parseObject(modelCfg.getModelInfo(), ModelInfoVO.class); + modelInfo.setBtmState(ModelStatus.FINISH.desc); + modelInfo.setVersion("v-" + DateUtil.now()); + modelInfo.setModifier(SecurityFrameworkUtils.getLoginUserNickname()); + modelInfo.setModifiedTime(new Date()); + modelCfg.setModelInfo(JSON.toJSONString(modelInfo)); + modelCfg.setUpdateTime(new Date()); + modelCfg.setStatus(ModelStatus.FINISH.code); + modelCfgService.updateById(modelCfg); + + ModelVersion modelVersion = BeanUtil.copyProperties(modelCfg, ModelVersion.class); + modelVersion.setId(null); + modelVersion.setModelId(id); + modelVersionService.save(modelVersion); + return modelInfo; + } } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml b/yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml new file mode 100644 index 0000000..943e0f8 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,model_id,algorithm_id, + model_name,create_name,model_info, + status,visible,condition_info, + trash,assess_res,need_to_assess, + score,clear_or_not,eff_number, + need_to_clean,orig_assess_res,load_cover, + cover_output,version,condition_name, + is_online,creator,create_time, + updater,update_time,deleted + +