From 66cf368e7e88ee7f0cb2c5a712dd3385695f7bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Wed, 29 May 2024 16:22:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=A8=A1=E5=9E=8B=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E8=A1=A8=E5=9F=BA=E6=9C=AC=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ModelDependencyController.java | 92 +++++++ .../platform/domain/ModelDependency.java | 161 ++++++++++++ .../platform/mapper/ModelDependencyDao.java | 85 +++++++ .../service/ModelDependencyService.java | 57 +++++ .../impl/ModelDependencyServiceImpl.java | 116 +++++++++ .../ModelDependencyDaoMapper.xml | 239 ++++++++++++++++++ 6 files changed, 750 insertions(+) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java create mode 100644 ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java new file mode 100644 index 00000000..3daa6b8e --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java @@ -0,0 +1,92 @@ +package com.ruoyi.platform.controller.model; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.platform.domain.ModelDependency; +import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.service.ModelDependencyService; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * (ModelDependency)表控制层 + * + * @author Xidaray + * @since 2024-05-29 13:51:23 + */ +@RestController +@RequestMapping("modelDependency") +public class ModelDependencyController extends BaseController { + /** + * 服务对象 + */ + @Resource + private ModelDependencyService modelDependencyService; + + /** + * 分页查询 + * + * @param modelDependency 筛选条件 + * @param page 分页对象 + * @param size 分页对象 + * @return 查询结果 + */ + @GetMapping + @ApiOperation("分页查询") + public GenericsAjaxResult> queryByPage(ModelDependency modelDependency, int page ,int size) { + PageRequest pageRequest = PageRequest.of(page,size); + return genericsSuccess(this.modelDependencyService.queryByPage(modelDependency, pageRequest)); + } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("{id}") + @ApiOperation("根据id查询") + public GenericsAjaxResult queryById(@PathVariable("id") Integer id) { + return genericsSuccess(this.modelDependencyService.queryById(id)); + } + + /** + * 新增数据 + * + * @param modelDependency 实体 + * @return 新增结果 + */ + @PostMapping + public GenericsAjaxResult add(ModelDependency modelDependency) { + return genericsSuccess(this.modelDependencyService.insert(modelDependency)); + } + + /** + * 编辑数据 + * + * @param modelDependency 实体 + * @return 编辑结果 + */ + @PutMapping + public GenericsAjaxResult edit(ModelDependency modelDependency) { + return genericsSuccess(this.modelDependencyService.update(modelDependency)); + } + + /** + * 删除数据 + * + * @param id 主键 + * @return 删除是否成功 + */ + @DeleteMapping + public GenericsAjaxResult deleteById(Integer id) { + return genericsSuccess(this.modelDependencyService.removeById(id)); + } + +} + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java new file mode 100644 index 00000000..6cb082cb --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java @@ -0,0 +1,161 @@ +package com.ruoyi.platform.domain; + +import java.util.Date; +import java.io.Serializable; + +/** + * (ModelDependency)实体类 + * + * @author Xidaray + * @since 2024-05-29 13:51:23 + */ +public class ModelDependency implements Serializable { + private static final long serialVersionUID = -86753423714028539L; +/** + * 主键 + */ + private Integer id; +/** + * 当前模型id + */ + private Integer currentModelId; +/** + * 父模型id + */ + private Integer parentModelId; +/** + * 引用项目 + */ + private String refItem; +/** + * 训练任务 + */ + private String trainTask; +/** + * 训练数据集 + */ + private String trainDataset; +/** + * 测试数据集 + */ + private String testDataset; +/** + * 创建者 + */ + private String createBy; +/** + * 创建时间 + */ + private Date createTime; +/** + * 更新者 + */ + private String updateBy; +/** + * 更新时间 + */ + private Date updateTime; +/** + * 状态,0失效1生效 + */ + private Integer state; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getCurrentModelId() { + return currentModelId; + } + + public void setCurrentModelId(Integer currentModelId) { + this.currentModelId = currentModelId; + } + + public Integer getParentModelId() { + return parentModelId; + } + + public void setParentModelId(Integer parentModelId) { + this.parentModelId = parentModelId; + } + + public String getRefItem() { + return refItem; + } + + public void setRefItem(String refItem) { + this.refItem = refItem; + } + + public String getTrainTask() { + return trainTask; + } + + public void setTrainTask(String trainTask) { + this.trainTask = trainTask; + } + + public String getTrainDataset() { + return trainDataset; + } + + public void setTrainDataset(String trainDataset) { + this.trainDataset = trainDataset; + } + + public String getTestDataset() { + return testDataset; + } + + public void setTestDataset(String testDataset) { + this.testDataset = testDataset; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + +} + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java new file mode 100644 index 00000000..ca2d18bd --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java @@ -0,0 +1,85 @@ +package com.ruoyi.platform.mapper; + +import com.ruoyi.platform.domain.ModelDependency; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; +import java.util.List; + +/** + * (ModelDependency)表数据库访问层 + * + * @author Xidaray + * @since 2024-05-29 13:51:23 + */ +public interface ModelDependencyDao { + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + ModelDependency queryById(Integer id); + + /** + * 查询指定行数据 + * + * @param modelDependency 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(@Param("modelDependency") ModelDependency modelDependency, @Param("pageable") Pageable pageable); + + + + /** + * 统计总行数 + * + * @param modelDependency 查询条件 + * @return 总行数 + */ + long count(@Param("modelDependency") ModelDependency modelDependency); + + /** + * 新增数据 + * + * @param modelDependency 实例对象 + * @return 影响行数 + */ + int insert(@Param("modelDependency") ModelDependency modelDependency); + + /** + * 批量新增数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + */ + int insertBatch(@Param("entities") List entities); + + /** + * 批量新增或按主键更新数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参 + */ + int insertOrUpdateBatch(@Param("entities") List entities); + + /** + * 修改数据 + * + * @param modelDependency 实例对象 + * @return 影响行数 + */ + int update(@Param("modelDependency") ModelDependency modelDependency); + + /** + * 通过主键删除数据 + * + * @param id 主键 + * @return 影响行数 + */ + int deleteById(Integer id); + +} + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java new file mode 100644 index 00000000..08e9c7aa --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java @@ -0,0 +1,57 @@ +package com.ruoyi.platform.service; + +import com.ruoyi.platform.domain.ModelDependency; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; + +/** + * (ModelDependency)表服务接口 + * + * @author Xidaray + * @since 2024-05-29 13:51:23 + */ +public interface ModelDependencyService { + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + ModelDependency queryById(Integer id); + + /** + * 分页查询 + * + * @param modelDependency 筛选条件 + * @param pageRequest 分页对象 + * @return 查询结果 + */ + Page queryByPage(ModelDependency modelDependency, PageRequest pageRequest); + + /** + * 新增数据 + * + * @param modelDependency 实例对象 + * @return 实例对象 + */ + ModelDependency insert(ModelDependency modelDependency); + + /** + * 修改数据 + * + * @param modelDependency 实例对象 + * @return 实例对象 + */ + ModelDependency update(ModelDependency modelDependency); + + /** + * 通过主键删除数据 + * + * @param id 主键 + * @return 是否成功 + */ + boolean deleteById(Integer id); + + String removeById(Integer id); +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java new file mode 100644 index 00000000..32b80519 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java @@ -0,0 +1,116 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.domain.ModelDependency; +import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.mapper.ModelDependencyDao; +import com.ruoyi.platform.service.ModelDependencyService; +import com.ruoyi.system.api.model.LoginUser; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * (ModelDependency)表服务实现类 + * + * @author Xidaray + * @since 2024-05-29 13:51:23 + */ +@Service("modelDependencyService") +public class ModelDependencyServiceImpl implements ModelDependencyService { + @Resource + private ModelDependencyDao modelDependencyDao; + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + @Override + public ModelDependency queryById(Integer id) { + return this.modelDependencyDao.queryById(id); + } + + /** + * 分页查询 + * + * @param modelDependency 筛选条件 + * @param pageRequest 分页对象 + * @return 查询结果 + */ + @Override + public Page queryByPage(ModelDependency modelDependency, PageRequest pageRequest) { + long total = this.modelDependencyDao.count(modelDependency); + return new PageImpl<>(this.modelDependencyDao.queryAllByLimit(modelDependency, pageRequest), pageRequest, total); + } + + /** + * 新增数据 + * + * @param modelDependency 实例对象 + * @return 实例对象 + */ + @Override + public ModelDependency insert(ModelDependency modelDependency) { + //插入预备,此时不需要判断版本重复 + LoginUser loginUser = SecurityUtils.getLoginUser(); + modelDependency.setCreateBy(loginUser.getUsername()); + modelDependency.setUpdateBy(loginUser.getUsername()); + modelDependency.setUpdateTime(new Date()); + modelDependency.setCreateTime(new Date()); + modelDependency.setState(1); + this.modelDependencyDao.insert(modelDependency); + return modelDependency; + } + + /** + * 修改数据 + * + * @param modelDependency 实例对象 + * @return 实例对象 + */ + @Override + public ModelDependency update(ModelDependency modelDependency) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + modelDependency.setUpdateBy(loginUser.getUsername()); + modelDependency.setUpdateTime(new Date()); + this.modelDependencyDao.update(modelDependency); + return this.queryById(modelDependency.getId()); + } + + /** + * 通过主键删除数据 + * + * @param id 主键 + * @return 是否成功 + */ + @Override + public boolean deleteById(Integer id) { + return this.modelDependencyDao.deleteById(id) > 0; + } + + @Override + public String removeById(Integer id) { + ModelDependency modelDependency = this.modelDependencyDao.queryById(id); + if (modelDependency == null){ + return "模型依赖信息不存在"; + } + + //判断权限,只有admin和创建者本身可以删除该数据集 + LoginUser loginUser = SecurityUtils.getLoginUser(); + String username = loginUser.getUsername(); + String createdBy = modelDependency.getCreateBy(); + if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + return "无权限删除"; + } + + modelDependency.setState(0); + return this.modelDependencyDao.update(modelDependency)>0?"删除成功":"删除失败"; + } +} diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml new file mode 100644 index 00000000..c34b8a0d --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into model_dependency ( + current_model_id, + parent_model_id, + ref_item, + train_task, + train_dataset, + test_dataset, + create_by, + create_time, + update_by, + update_time, + state + ) + values ( + #{currentModelId}, + #{parentModelId}, + #{refItem}, + #{trainTask}, + #{trainDataset}, + #{testDataset}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{state} + ) + + + + + insert into model_dependency ( + current_model_id, + parent_model_id, + ref_item, + train_task, + train_dataset, + test_dataset, + create_by, + create_time, + update_by, + update_time, + state + ) + values + + ( + #{entity.currentModelId}, + #{entity.parentModelId}, + #{entity.refItem}, + #{entity.trainTask}, + #{entity.trainDataset}, + #{entity.testDataset}, + #{entity.createBy}, + #{entity.createTime}, + #{entity.updateBy}, + #{entity.updateTime}, + #{entity.state} + ) + + + + + + insert into model_dependency(current_model_idparent_model_idref_itemtrain_tasktrain_datasettest_datasetcreate_bycreate_timeupdate_byupdate_timestate) + values + + (#{entity.currentModelId}#{entity.parentModelId}#{entity.refItem}#{entity.trainTask}#{entity.trainDataset}#{entity.testDataset}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) + + on duplicate key update +current_model_id = values(current_model_id)parent_model_id = values(parent_model_id)ref_item = values(ref_item)train_task = values(train_task)train_dataset = values(train_dataset)test_dataset = values(test_dataset)create_by = values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time)state = values(state) + + + + + update model_dependency + + + current_model_id = #{modelDependency.currentModelId}, + + + parent_model_id = #{modelDependency.parentModelId}, + + + ref_item = #{modelDependency.refItem}, + + + train_task = #{modelDependency.trainTask}, + + + train_dataset = #{modelDependency.trainDataset}, + + + test_dataset = #{modelDependency.testDataset}, + + + create_by = #{modelDependency.createBy}, + + + create_time = #{modelDependency.createTime}, + + + update_by = #{modelDependency.updateBy}, + + + update_time = #{modelDependency.updateTime}, + + + state = #{modelDependency.state}, + + + where id = #{id} + + + + + delete from model_dependency where id = #{id} + + + +