Browse Source

feat:模型依赖表基本接口实现

pull/56/head
西大锐 1 year ago
parent
commit
66cf368e7e
6 changed files with 750 additions and 0 deletions
  1. +92
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java
  2. +161
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java
  3. +85
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java
  4. +57
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java
  5. +116
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java
  6. +239
    -0
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml

+ 92
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java View File

@@ -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<Page<ModelDependency>> 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<ModelDependency> queryById(@PathVariable("id") Integer id) {
return genericsSuccess(this.modelDependencyService.queryById(id));
}

/**
* 新增数据
*
* @param modelDependency 实体
* @return 新增结果
*/
@PostMapping
public GenericsAjaxResult<ModelDependency> add(ModelDependency modelDependency) {
return genericsSuccess(this.modelDependencyService.insert(modelDependency));
}

/**
* 编辑数据
*
* @param modelDependency 实体
* @return 编辑结果
*/
@PutMapping
public GenericsAjaxResult<ModelDependency> edit(ModelDependency modelDependency) {
return genericsSuccess(this.modelDependencyService.update(modelDependency));
}

/**
* 删除数据
*
* @param id 主键
* @return 删除是否成功
*/
@DeleteMapping
public GenericsAjaxResult<String> deleteById(Integer id) {
return genericsSuccess(this.modelDependencyService.removeById(id));
}

}


+ 161
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java View File

@@ -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;
}

}


+ 85
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java View File

@@ -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<ModelDependency> 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<ModelDependency> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<ModelDependency> entities);

/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<ModelDependency> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<ModelDependency> entities);

/**
* 修改数据
*
* @param modelDependency 实例对象
* @return 影响行数
*/
int update(@Param("modelDependency") ModelDependency modelDependency);

/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Integer id);

}


+ 57
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelDependencyService.java View File

@@ -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<ModelDependency> 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);
}

+ 116
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java View File

@@ -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<ModelDependency> 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?"删除成功":"删除失败";
}
}

+ 239
- 0
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml View File

@@ -0,0 +1,239 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.platform.mapper.ModelDependencyDao">

<resultMap type="com.ruoyi.platform.domain.ModelDependency" id="ModelDependencyMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="currentModelId" column="current_model_id" jdbcType="INTEGER"/>
<result property="parentModelId" column="parent_model_id" jdbcType="INTEGER"/>
<result property="refItem" column="ref_item" jdbcType="VARCHAR"/>
<result property="trainTask" column="train_task" jdbcType="VARCHAR"/>
<result property="trainDataset" column="train_dataset" jdbcType="VARCHAR"/>
<result property="testDataset" column="test_dataset" jdbcType="VARCHAR"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="state" column="state" jdbcType="INTEGER"/>
</resultMap>

<!--查询单个-->
<select id="queryById" resultMap="ModelDependencyMap">
select
id,current_model_id,parent_model_id,ref_item,train_task,train_dataset,test_dataset,create_by,create_time,update_by,update_time,state
from model_dependency
where id = #{id}
</select>

<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="ModelDependencyMap">
select
id,current_model_id,parent_model_id,ref_item,train_task,train_dataset,test_dataset,create_by,create_time,update_by,update_time,state
from model_dependency
<where>
<if test="modelDependency.id != null">
and id = #{modelDependency.id}
</if>
<if test="modelDependency.currentModelId != null">
and current_model_id = #{modelDependency.currentModelId}
</if>
<if test="modelDependency.parentModelId != null">
and parent_model_id = #{modelDependency.parentModelId}
</if>
<if test="modelDependency.refItem != null and modelDependency.refItem != ''">
and ref_item = #{modelDependency.refItem}
</if>
<if test="modelDependency.trainTask != null and modelDependency.trainTask != ''">
and train_task = #{modelDependency.trainTask}
</if>
<if test="modelDependency.trainDataset != null and modelDependency.trainDataset != ''">
and train_dataset = #{modelDependency.trainDataset}
</if>
<if test="modelDependency.testDataset != null and modelDependency.testDataset != ''">
and test_dataset = #{modelDependency.testDataset}
</if>
<if test="modelDependency.createBy != null and modelDependency.createBy != ''">
and create_by = #{modelDependency.createBy}
</if>
<if test="modelDependency.createTime != null">
and create_time = #{modelDependency.createTime}
</if>
<if test="modelDependency.updateBy != null and modelDependency.updateBy != ''">
and update_by = #{modelDependency.updateBy}
</if>
<if test="modelDependency.updateTime != null">
and update_time = #{modelDependency.updateTime}
</if>
<if test="modelDependency.state != null">
and state = #{modelDependency.state}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>

<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from model_dependency
<where>
<if test="modelDependency.id != null">
and id = #{modelDependency.id}
</if>
<if test="modelDependency.currentModelId != null">
and current_model_id = #{modelDependency.currentModelId}
</if>
<if test="modelDependency.parentModelId != null">
and parent_model_id = #{modelDependency.parentModelId}
</if>
<if test="modelDependency.refItem != null and modelDependency.refItem != ''">
and ref_item = #{modelDependency.refItem}
</if>
<if test="modelDependency.trainTask != null and modelDependency.trainTask != ''">
and train_task = #{modelDependency.trainTask}
</if>
<if test="modelDependency.trainDataset != null and modelDependency.trainDataset != ''">
and train_dataset = #{modelDependency.trainDataset}
</if>
<if test="modelDependency.testDataset != null and modelDependency.testDataset != ''">
and test_dataset = #{modelDependency.testDataset}
</if>
<if test="modelDependency.createBy != null and modelDependency.createBy != ''">
and create_by = #{modelDependency.createBy}
</if>
<if test="modelDependency.createTime != null">
and create_time = #{modelDependency.createTime}
</if>
<if test="modelDependency.updateBy != null and modelDependency.updateBy != ''">
and update_by = #{modelDependency.updateBy}
</if>
<if test="modelDependency.updateTime != null">
and update_time = #{modelDependency.updateTime}
</if>
<if test="modelDependency.state != null">
and state = #{modelDependency.state}
</if>
</where>
</select>

<!-- 新增所有列 -->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
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>


<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
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
<foreach collection="entities" item="entity" separator=",">
(
#{entity.currentModelId},
#{entity.parentModelId},
#{entity.refItem},
#{entity.trainTask},
#{entity.trainDataset},
#{entity.testDataset},
#{entity.createBy},
#{entity.createTime},
#{entity.updateBy},
#{entity.updateTime},
#{entity.state}
)
</foreach>
</insert>


<insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
insert into model_dependency(current_model_idparent_model_idref_itemtrain_tasktrain_datasettest_datasetcreate_bycreate_timeupdate_byupdate_timestate)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.currentModelId}#{entity.parentModelId}#{entity.refItem}#{entity.trainTask}#{entity.trainDataset}#{entity.testDataset}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state})
</foreach>
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)
</insert>

<!--通过主键修改数据-->
<update id="update">
update model_dependency
<set>
<if test="modelDependency.currentModelId != null">
current_model_id = #{modelDependency.currentModelId},
</if>
<if test="modelDependency.parentModelId != null">
parent_model_id = #{modelDependency.parentModelId},
</if>
<if test="modelDependency.refItem != null and modelDependency.refItem != ''">
ref_item = #{modelDependency.refItem},
</if>
<if test="modelDependency.trainTask != null and modelDependency.trainTask != ''">
train_task = #{modelDependency.trainTask},
</if>
<if test="modelDependency.trainDataset != null and modelDependency.trainDataset != ''">
train_dataset = #{modelDependency.trainDataset},
</if>
<if test="modelDependency.testDataset != null and modelDependency.testDataset != ''">
test_dataset = #{modelDependency.testDataset},
</if>
<if test="modelDependency.createBy != null and modelDependency.createBy != ''">
create_by = #{modelDependency.createBy},
</if>
<if test="modelDependency.createTime != null">
create_time = #{modelDependency.createTime},
</if>
<if test="modelDependency.updateBy != null and modelDependency.updateBy != ''">
update_by = #{modelDependency.updateBy},
</if>
<if test="modelDependency.updateTime != null">
update_time = #{modelDependency.updateTime},
</if>
<if test="modelDependency.state != null">
state = #{modelDependency.state},
</if>
</set>
where id = #{id}
</update>

<!--通过主键删除-->
<delete id="deleteById">
delete from model_dependency where id = #{id}
</delete>

</mapper>


Loading…
Cancel
Save