From 999fd82ccc2ad2058533a6c6e8c862eaa4a2bca4 Mon Sep 17 00:00:00 2001
From: NingHuan <2139614357@qq.com>
Date: Tue, 20 May 2025 17:14:09 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=9D=E7=95=99=E4=BB=8Emain=E5=88=86?=
=?UTF-8?q?=E6=94=AF=E6=9A=82=E5=AD=98=E7=9A=84=E6=89=80=E6=9C=89=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Conflicts:
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
# src/main/resources/mapper/ModelMapper.xml
# Conflicts:
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
# src/main/resources/mapper/ModelMapper.xml
---
.../controller/ModelController.java | 35 +++++++++++
.../mapper/ModelMapper.java | 24 ++++++++
.../pojo/ModelDTO.java | 20 +++++++
.../pojo/ModelVersion.java | 12 ++++
.../service/Impl/ModelServiceImpl.java | 58 +++++++++++++++++++
.../service/ModelService.java | 10 ++++
src/main/resources/mapper/ModelMapper.xml | 10 ++++
7 files changed, 169 insertions(+)
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
create mode 100644 src/main/resources/mapper/ModelMapper.xml
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
new file mode 100644
index 0000000..663b4ce
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
@@ -0,0 +1,35 @@
+package com.bipt.intelligentapplicationorchestrationservice.controller;
+
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult;
+import com.bipt.intelligentapplicationorchestrationservice.service.ModelService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@RequestMapping("/model")
+@Tag(name = "模型部分相关接口")
+public class ModelController {
+ @Autowired
+ private ModelService modelService;
+ @Operation(summary = "创建模型")
+ @PostMapping("/createModel")
+ public OptResult creatModel(@RequestBody ModelDTO dto){
+ log.info("创建模型");
+ modelService.createModel(dto);
+ return OptResult.success();
+ }
+
+ @Operation(summary = "新增模型版本")
+ @PostMapping("/createModelVersion")
+ public OptResult createModelVersion(@RequestBody ModelDTO dto){
+ log.info("新增模型版本");
+ modelService.createModelVersion(dto);
+ return OptResult.success();
+ }
+
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
new file mode 100644
index 0000000..97616a1
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
@@ -0,0 +1,24 @@
+package com.bipt.intelligentapplicationorchestrationservice.mapper;
+
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Options;
+
+public interface ModelMapper {
+
+ /**
+ * 插入模型基本信息
+ * @param modelInfo
+ */
+ @Options(useGeneratedKeys = true, keyProperty = "id") //能够拿到主键值,并设置给modelInfo对象
+ @Insert("insert into model_info(model_name) values(#{modelName})")
+ void insertModelInfo(ModelInfo modelInfo);
+
+ /**
+ * 插入模型版本信息
+ * @param modelVersion
+ */
+ void insertModelVersion(ModelVersion modelVersion);
+
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
new file mode 100644
index 0000000..bdb62b7
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
@@ -0,0 +1,20 @@
+package com.bipt.intelligentapplicationorchestrationservice.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ModelDTO {
+ private Long id; // 模型id
+ private String modelName; // 模型名称
+ private Integer datasetId; // 数据集id
+ private Integer modelSize; // 模型大小
+ private String dataPreHandleFile; // 数据预处理文件存储路
+
+ private String version; //模型版本
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
index 6297b43..b2ff94a 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
@@ -24,5 +24,17 @@ public class ModelVersion implements Serializable {
private String modelPath; // 模型存储路径
private Integer status; // 模型状态(1代表上线,0代表不上线)
private LocalDateTime createTime; // 创建时间
+ //补充更新时间字段
+ private LocalDateTime updateTime; // 更新时间
+ //创建模型部分补充的字段
+ private Integer modelSize; // 模型大小
+ private String dataPreHandleFile; // 数据预处理文件存储路径
+ //模型信息管理部分补充的字段
+ private String modelSuperArgs; // 模型超参数
+ private String modelArgsSize; // 模型参数量
+ private String modelSourceCodeUrl; // 模型源代码路径
+ private String modelFile; // 模型文件存储路径
+ private String modelDesignDocument; // 模型设计文档存储路径
+ private String lifeCycle; // 模型生命周期
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
new file mode 100644
index 0000000..0db4030
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
@@ -0,0 +1,58 @@
+package com.bipt.intelligentapplicationorchestrationservice.service.Impl;
+
+import com.bipt.intelligentapplicationorchestrationservice.mapper.ModelMapper;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
+import com.bipt.intelligentapplicationorchestrationservice.service.ModelService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+@Slf4j
+@Service
+public class ModelServiceImpl implements ModelService {
+ @Autowired
+ private ModelMapper modelMapper;
+ /**
+ * 创建模型
+ * @param dto
+ */
+ @Transactional //事务注解
+ @Override
+ public void createModel(ModelDTO dto) {
+ log.info("创建模型");
+ //1.插入模型基本信息
+ ModelInfo modelInfo = new ModelInfo();
+ BeanUtils.copyProperties(dto, modelInfo, "id");
+ modelMapper.insertModelInfo(modelInfo);
+ log.info("模型id: {}", modelInfo.getId());
+ //2.插入模型版本信息
+ ModelVersion modelVersion = new ModelVersion();
+ //使用工具类将dto属性复制给modelVersion
+ BeanUtils.copyProperties(dto, modelVersion, "id");
+ modelVersion.setModelId(modelInfo.getId());
+ modelVersion.setCreateTime(LocalDateTime.now());
+ modelVersion.setUpdateTime(LocalDateTime.now());
+ modelMapper.insertModelVersion(modelVersion);
+ }
+
+ /**
+ * 新增模型版本
+ * @param dto
+ */
+ @Override
+ public void createModelVersion(ModelDTO dto) {
+ log.info("新增模型版本");
+ ModelVersion modelVersion = new ModelVersion();
+ BeanUtils.copyProperties(dto, modelVersion, "id");
+ modelVersion.setModelId(dto.getId());
+ modelVersion.setCreateTime(LocalDateTime.now());
+ modelVersion.setUpdateTime(LocalDateTime.now());
+ modelMapper.insertModelVersion(modelVersion);
+ }
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
new file mode 100644
index 0000000..ea9f38f
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
@@ -0,0 +1,10 @@
+package com.bipt.intelligentapplicationorchestrationservice.service;
+
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
+
+public interface ModelService {
+ void createModel(ModelDTO dto);
+
+
+ void createModelVersion(ModelDTO dto);
+}
diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml
new file mode 100644
index 0000000..60de477
--- /dev/null
+++ b/src/main/resources/mapper/ModelMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ insert into model_version (model_id, dataset_id, model_size, data_pre_handle_file, create_time, update_time, version)
+ values (#{modelId}, #{datasetId}, #{modelSize}, #{dataPreHandleFile}, #{createTime}, #{updateTime}, #{version})
+
+
\ No newline at end of file
From 9f348280ea3bb379a61f8b59204cccc13ec33997 Mon Sep 17 00:00:00 2001
From: NingHuan <2139614357@qq.com>
Date: Sun, 25 May 2025 19:29:52 +0800
Subject: [PATCH 2/2] =?UTF-8?q?[=E5=86=B2=E7=AA=81]:=E8=A7=A3=E5=86=B3?=
=?UTF-8?q?=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Conflicts:
# src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java
# src/main/resources/application.properties
---
.../constant/MessageConstant.java | 8 ++
.../controller/ModelController.java | 48 +++++++++-
.../enumeration/ModelLifecycle.java | 51 ++++++++++
.../mapper/ModelMapper.java | 55 ++++++++++-
.../pojo/ModelDTO.java | 21 +++-
.../pojo/ModelVO.java | 24 +++++
.../pojo/ModelVersion.java | 6 ++
.../pojo/ModelVersionDTO.java | 31 ++++++
.../service/Impl/ModelServiceImpl.java | 96 ++++++++++++++++++-
.../service/ModelService.java | 16 +++-
src/main/resources/application.properties | 5 +
src/main/resources/mapper/ModelMapper.xml | 55 ++++++++++-
12 files changed, 400 insertions(+), 16 deletions(-)
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java
create mode 100644 src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java
index 3240df9..7347c95 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/constant/MessageConstant.java
@@ -3,4 +3,12 @@ package com.bipt.intelligentapplicationorchestrationservice.constant;
public class MessageConstant {
public static final String UNKNOWN_ERROR = "未知错误";
public static final String ALREADY_EXISTS = "已存在";
+
+ //生命周期相关常量
+ public static final String LifeCycle_No_Exist = "生命周期不存在";
+ public static final String LifeCycle_Undefined = "生命周期未定义";
+ public static final String ERROR_DEPLOYED_TO_DESIGNING = "已部署的模型不能直接调整成设计,需先下线再设计";
+ public static final String ERROR_ABANDONED_CANNOT_UPDATE = "已废弃的模型只能查看信息,不能更新生命周期";
+ public static final String ERROR_TRAINING_INVALID_TRANSITION = "训练中的模型只能调整成设计和评估";
+ public static final String UPDATE_FAILURE = "更新模型生命周期失败";
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
index 663b4ce..11012ae 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/controller/ModelController.java
@@ -1,7 +1,6 @@
package com.bipt.intelligentapplicationorchestrationservice.controller;
-import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
-import com.bipt.intelligentapplicationorchestrationservice.pojo.OptResult;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.*;
import com.bipt.intelligentapplicationorchestrationservice.service.ModelService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -9,10 +8,13 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
@Slf4j
@RestController
@RequestMapping("/model")
@Tag(name = "模型部分相关接口")
+@CrossOrigin(origins = "http://localhost:3000") // 生产环境指定具体域名
public class ModelController {
@Autowired
private ModelService modelService;
@@ -32,4 +34,46 @@ public class ModelController {
return OptResult.success();
}
+ @Operation(summary = "查询模型列表")
+ @GetMapping("list")
+ public OptResult list(){
+ log.info("查询模型列表");
+ List modelVOList = modelService.list();
+ return OptResult.success(modelVOList);
+ }
+
+ @Operation(summary = "查询模型详情")
+ @GetMapping("detail")
+ public OptResult detail(Long id){
+ log.info("查询模型详情");
+ ModelVersion modelVersion = modelService.detail(id);
+ return OptResult.success(modelVersion);
+ }
+
+ @Operation(summary = "模型更新")
+ @PutMapping("/updateModel")
+ public OptResult updateModel(@RequestBody ModelVersionDTO dto){
+ log.info("模型更新");
+ modelService.updateModel(dto);
+ return OptResult.success();
+ }
+
+
+ @Operation(summary = "模型版本删除")
+ @DeleteMapping("/deleteModelVersion")
+ public OptResult deleteModelVersion(Long id){
+ log.info("模型版本删除");
+ modelService.deleteModelVersion(id);
+ return OptResult.success();
+ }
+
+ @Operation(summary = "更新生命周期")
+ @PutMapping("/updateLifeCycle")
+ public OptResult updateLifeCycle(Long id,String lifeCycle){
+ log.info("更新生命周期");
+ modelService.updateLifeCycle(id,lifeCycle);
+ return OptResult.success();
+ }
+
+
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java
new file mode 100644
index 0000000..0e8b2f7
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/enumeration/ModelLifecycle.java
@@ -0,0 +1,51 @@
+package com.bipt.intelligentapplicationorchestrationservice.enumeration;
+
+import com.bipt.intelligentapplicationorchestrationservice.constant.MessageConstant;
+
+/**
+ * 模型生命周期状态枚举
+ */
+public enum ModelLifecycle {
+ DESIGNING("设计中"),
+ TRAINING("训练中"),
+ EVALUATING("评估中"),
+ DEPLOYED("已部署"),
+ OFFLINE("已下线"),
+ ABANDONED("已废弃");
+
+ private final String description;
+
+ private ModelLifecycle(String description) {
+ this.description = description;
+ }
+
+
+ public String getDescription() {
+ return description;
+ }
+
+ // 将枚举名称转换成数据库存储的字符串
+ public String getDbValue() {
+ return name();
+ }
+
+ // 将数据库存储的字符串转换为枚举实例
+ public static ModelLifecycle getDbValueFromDb(String dbValue) {
+ if(dbValue == null) return null;
+ try {
+ return ModelLifecycle.valueOf(dbValue);
+ } catch (IllegalArgumentException e) {
+ throw new IllegalArgumentException(MessageConstant.LifeCycle_No_Exist + ":" + dbValue);
+ }
+ }
+
+ // 从前端传的中文描述 -> 转换为枚举
+ public static ModelLifecycle fromDescription(String description) {
+ for (ModelLifecycle lifecycle : ModelLifecycle.values()) {
+ if (lifecycle.getDescription().equals(description)) {
+ return lifecycle;
+ }
+ }
+ throw new IllegalArgumentException("生命周期描述非法: " + description);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
index 97616a1..fb3106f 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/mapper/ModelMapper.java
@@ -1,9 +1,12 @@
package com.bipt.intelligentapplicationorchestrationservice.mapper;
import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVO;
import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
-import org.apache.ibatis.annotations.Insert;
-import org.apache.ibatis.annotations.Options;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersionDTO;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
public interface ModelMapper {
@@ -21,4 +24,52 @@ public interface ModelMapper {
*/
void insertModelVersion(ModelVersion modelVersion);
+ /*
+ * 查询模型列表
+ */
+ List list();
+
+ /**
+ * 根据id查询模型详情
+ * @param id 版本表id
+ * @return
+ */
+ ModelVersion selectById(Long id);
+
+ /**
+ * 更新模型信息
+ * @param dto
+ */
+ void update(ModelVersionDTO dto);
+
+ /**
+ * 删除模型版本
+ * @param id 版本表id
+ */
+ @Delete("delete from model_version where id=#{id}")
+ void deleteModelVersion(Long id);
+
+ /**
+ * 删除模型
+ * @param id 模型id
+ */
+ @Delete("delete from model_info where id= #{id}")
+ void deleteModel(Long id);
+
+ /**
+ * 查询模型生命周期
+ * @param id 模型版本表id
+ * 返回模型生命周期
+ */
+ @Select("select life_cycle from model_version where id=#{id}")
+ String selectLifeCycleById(Long id);
+
+ /**
+ * 更新模型生命周期
+ * @param id 模型版本表id
+ * @param dbValue 数据库中存储的生命周期
+ * @return
+ */
+ @Update("update model_version set life_cycle=#{dbValue} where id=#{id}")
+ int updateLifeCycleById(Long id, String dbValue);
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
index bdb62b7..7fd41b9 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelDTO.java
@@ -5,16 +5,27 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.time.LocalDateTime;
+
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModelDTO {
- private Long id; // 模型id
- private String modelName; // 模型名称
+ private Long id; // 模型id
+ private String modelName; // 模型名称
+ private String version; // 模型版本
private Integer datasetId; // 数据集id
+ private String modelConfig; // 模型配置信息
+ private String modelPath; // 模型存储路径
+ private Integer status; // 模型状态(1代表上线,0代表不上线)D
private Integer modelSize; // 模型大小
- private String dataPreHandleFile; // 数据预处理文件存储路
-
- private String version; //模型版本
+ private String dataPreHandleFile; // 数据预处理文件存储路径
+ private String modelSuperArgs; // 模型超参数
+ private String modelArgsSize; // 模型参数量
+ private String modelSourceCodeUrl; // 模型源代码路径
+ private String modelFile; // 模型文件存储路径
+ private String modelDesignDocument; // 模型设计文档存储路径
+ private String lifeCycle; // 模型生命周期
+ private String operateUser; // 操作人
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java
new file mode 100644
index 0000000..2142037
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVO.java
@@ -0,0 +1,24 @@
+package com.bipt.intelligentapplicationorchestrationservice.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ModelVO {
+ private Long id; // 模型id
+ private Long versionId; // 用于保证react的map中key的唯一性
+ private String modelName; // 模型名称
+ private String version; // 模型版本
+ private String dataPreHandleFile; // 数据预处理文件存储路径
+ private String operateUser; // 操作人
+ private LocalDateTime updateTime; // 修改时间
+ private Integer status; // 模型状态(1代表上线,0代表不上线)
+
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
index b2ff94a..90a907b 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersion.java
@@ -37,4 +37,10 @@ public class ModelVersion implements Serializable {
private String modelDesignDocument; // 模型设计文档存储路径
private String lifeCycle; // 模型生命周期
+
+ private String operateUser; // 操作人
+
+ private String modelName; //模型名称
+
+
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java
new file mode 100644
index 0000000..9180f7f
--- /dev/null
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/pojo/ModelVersionDTO.java
@@ -0,0 +1,31 @@
+package com.bipt.intelligentapplicationorchestrationservice.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ModelVersionDTO {
+ private Long id; // 模型id
+ private String version; // 模型版本
+ private Integer datasetId; // 数据集id
+ private String modelConfig; // 模型配置信息
+ private String modelPath; // 模型存储路径
+ private Integer status; // 模型状态(1代表上线,0代表不上线)
+ private LocalDateTime createTime; // 创建时间
+ private LocalDateTime updateTime; // 更新时间
+ private Integer modelSize; // 模型大小
+ private String dataPreHandleFile; // 数据预处理文件存储路径
+ private String modelSuperArgs; // 模型超参数
+ private String modelArgsSize; // 模型参数量
+ private String modelSourceCodeUrl; // 模型源代码路径
+ private String modelFile; // 模型文件存储路径
+ private String modelDesignDocument; // 模型设计文档存储路径
+ private String lifeCycle; // 模型生命周期
+ private String operateUser; // 操作人
+}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
index 0db4030..cc8d32a 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/Impl/ModelServiceImpl.java
@@ -1,9 +1,9 @@
package com.bipt.intelligentapplicationorchestrationservice.service.Impl;
+import com.bipt.intelligentapplicationorchestrationservice.constant.MessageConstant;
+import com.bipt.intelligentapplicationorchestrationservice.enumeration.ModelLifecycle;
import com.bipt.intelligentapplicationorchestrationservice.mapper.ModelMapper;
-import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
-import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelInfo;
-import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.*;
import com.bipt.intelligentapplicationorchestrationservice.service.ModelService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
+import java.util.List;
@Slf4j
@Service
@@ -38,6 +39,7 @@ public class ModelServiceImpl implements ModelService {
modelVersion.setModelId(modelInfo.getId());
modelVersion.setCreateTime(LocalDateTime.now());
modelVersion.setUpdateTime(LocalDateTime.now());
+ modelVersion.setOperateUser("zs");
modelMapper.insertModelVersion(modelVersion);
}
@@ -53,6 +55,94 @@ public class ModelServiceImpl implements ModelService {
modelVersion.setModelId(dto.getId());
modelVersion.setCreateTime(LocalDateTime.now());
modelVersion.setUpdateTime(LocalDateTime.now());
+ modelVersion.setOperateUser("zs");
modelMapper.insertModelVersion(modelVersion);
}
+
+ /**
+ * 查询模型列表
+ */
+ @Override
+ public List list() {
+ log.info("查询模型列表");
+ List modelVOList = modelMapper.list();
+ return modelVOList;
+ }
+
+ @Override
+ public ModelVersion detail(Long id) {
+ log.info("查询模型详情");
+ ModelVersion modelVersion = modelMapper.selectById(id);
+ return modelVersion;
+ }
+
+ @Override
+ public void updateModel(ModelVersionDTO dto) {
+ log.info("更新模型");
+ modelMapper.update(dto);
+ }
+
+ @Override
+ public void deleteModelVersion(Long id) {
+ log.info("删除模型版本");
+ modelMapper.deleteModelVersion(id);
+ }
+
+ /**
+ * 更新模型生命周期
+ * @param id 版本表id
+ * @param
+ */
+ @Override
+ public void updateLifeCycle(Long id, String lifeCycleDescription) {
+ log.info("更新模型生命周期");
+
+ // 1. 查询当前生命周期并转为枚举
+ String currentLifeCycleStr = modelMapper.selectLifeCycleById(id);
+ if (currentLifeCycleStr == null) {
+ log.error("未找到对应模型信息,无法更新生命周期");
+ throw new IllegalArgumentException(MessageConstant.LifeCycle_No_Exist);
+ }
+
+ ModelLifecycle currentLifeCycle;
+ ModelLifecycle targetLifeCycle;
+ try {
+ currentLifeCycle = ModelLifecycle.valueOf(currentLifeCycleStr.trim()); // 数据库中是英文
+ targetLifeCycle = ModelLifecycle.fromDescription((lifeCycleDescription).trim()); // 前端传中文
+ } catch (IllegalArgumentException e) {
+ log.error(MessageConstant.LifeCycle_Undefined + ":{}", e.getMessage());
+ throw e;
+ }
+
+ // 2. 业务逻辑校验
+ switch (currentLifeCycle) {
+ case DEPLOYED:
+ if (targetLifeCycle == ModelLifecycle.DESIGNING) {
+ log.error("已部署的模型不能直接调整成设计,需先下线再设计");
+ throw new IllegalArgumentException(MessageConstant.ERROR_DEPLOYED_TO_DESIGNING);
+ }
+ break;
+ case ABANDONED:
+ log.error("已废弃的模型只能查看信息,不能更新生命周期");
+ throw new IllegalArgumentException(MessageConstant.ERROR_ABANDONED_CANNOT_UPDATE);
+ case TRAINING:
+ if (targetLifeCycle != ModelLifecycle.DESIGNING && targetLifeCycle != ModelLifecycle.EVALUATING) {
+ log.error("训练中的模型只能调整成设计和评估");
+ throw new IllegalArgumentException(MessageConstant.ERROR_TRAINING_INVALID_TRANSITION);
+ }
+ break;
+ default:
+ break;
+ }
+
+ // 3. 执行更新
+ int affectedRows = modelMapper.updateLifeCycleById(id, targetLifeCycle.getDbValue());
+ if (affectedRows == 0) {
+ log.error("更新模型生命周期失败");
+ throw new RuntimeException(MessageConstant.UPDATE_FAILURE);
+ }
+
+ log.info("模型生命周期更新成功,新状态为: {}", targetLifeCycle);
+ }
+
}
diff --git a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
index ea9f38f..0933085 100644
--- a/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
+++ b/src/main/java/com/bipt/intelligentapplicationorchestrationservice/service/ModelService.java
@@ -1,10 +1,24 @@
package com.bipt.intelligentapplicationorchestrationservice.service;
import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelDTO;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVO;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersion;
+import com.bipt.intelligentapplicationorchestrationservice.pojo.ModelVersionDTO;
+
+import java.util.List;
public interface ModelService {
void createModel(ModelDTO dto);
-
void createModelVersion(ModelDTO dto);
+
+ List list();
+
+ ModelVersion detail(Long id);
+
+ void updateModel(ModelVersionDTO dto);
+
+ void deleteModelVersion(Long id);
+
+ void updateLifeCycle(Long id, String lifeCycle);
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2b97d0a..ae9c7f0 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -27,3 +27,8 @@ spring.data.redis.password=Jbjhhzstsl97@
spring.data.redis.database = 0
# 连接超时时间(毫秒)
spring.data.redis.timeout = 3000
+
+
+#SQL 语句日志输出配置
+logging.level.com.bipt.intelligentapplicationorchestrationservice.mapper=DEBUG
+mybatis.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
\ No newline at end of file
diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml
index 60de477..bdd7edd 100644
--- a/src/main/resources/mapper/ModelMapper.xml
+++ b/src/main/resources/mapper/ModelMapper.xml
@@ -2,9 +2,58 @@
-
+
- insert into model_version (model_id, dataset_id, model_size, data_pre_handle_file, create_time, update_time, version)
- values (#{modelId}, #{datasetId}, #{modelSize}, #{dataPreHandleFile}, #{createTime}, #{updateTime}, #{version})
+ insert into model_version (
+ model_id, version, dataset_id, model_config,
+ model_path, status, create_time, update_time, model_size,
+ data_pre_handle_file, model_super_args, model_args_size, model_source_code_url, model_file,
+ model_design_document, life_cycle, operate_user
+ )
+ values (
+ #{modelId}, #{version}, #{datasetId}, #{modelConfig},
+ #{modelPath}, #{status}, #{createTime}, #{updateTime}, #{modelSize},
+ #{dataPreHandleFile}, #{modelSuperArgs}, #{modelArgsSize}, #{modelSourceCodeUrl}, #{modelFile},
+ #{modelDesignDocument}, #{lifeCycle}, #{operateUser}
+ )
+
+
+
+
+
+
+
+
+
+ UPDATE model_version
+
+
+ model_size = #{modelSize},
+
+
+ model_super_args = #{modelSuperArgs},
+
+
+ model_args_size = #{modelArgsSize},
+
+
+ WHERE id = #{id
+
\ No newline at end of file