diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/RayDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/RayDao.java index dad71b0f..d7dd4014 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/RayDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/RayDao.java @@ -18,4 +18,12 @@ public interface RayDao { int save(@Param("ray") Ray ray); int edit(@Param("ray") Ray ray); + + List queryByDatasetId(@Param("datasetId") String datasetId); + + List queryByModelId(@Param("modelId") String modelId); + + List queryByImageId(@Param("imageId") String imageId); + + List queryByCodeConfig(@Param("codeConfig") String codeConfig); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java index 9e791c55..b27e9df6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.AssetWorkflow; @@ -13,9 +14,12 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import com.ruoyi.platform.domain.Ray; +import com.ruoyi.platform.mapper.RayDao; import javax.annotation.Resource; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -26,6 +30,8 @@ public class CodeConfigServiceImpl implements CodeConfigService { private CodeConfigDao codeConfigDao; @Resource private AssetWorkflowDao assetWorkflowDao; + @Resource + private RayDao rayDao; @Override public Page queryByPage(CodeConfig codeConfig, PageRequest pageRequest) { @@ -88,6 +94,14 @@ public class CodeConfigServiceImpl implements CodeConfigService { throw new Exception("该代码配置被流水线:" + workflows + "使用,不能删除,请先删除流水线。"); } + HashMap map = new HashMap<>(); + map.put("code_path", codeConfig.getGitUrl()); + List rayList = rayDao.queryByCodeConfig(JSON.toJSONString(map)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该代码配置被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createBy = codeConfig.getCreateBy(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index 3520c398..22b2ed75 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -1,16 +1,11 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.util.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; -import com.ruoyi.platform.domain.AssetWorkflow; -import com.ruoyi.platform.domain.DevEnvironment; -import com.ruoyi.platform.domain.Image; -import com.ruoyi.platform.domain.ImageVersion; -import com.ruoyi.platform.mapper.AssetWorkflowDao; -import com.ruoyi.platform.mapper.DevEnvironmentDao; -import com.ruoyi.platform.mapper.ImageDao; -import com.ruoyi.platform.mapper.ImageVersionDao; +import com.ruoyi.platform.domain.*; +import com.ruoyi.platform.mapper.*; import com.ruoyi.platform.service.ImageService; import com.ruoyi.platform.service.ImageVersionService; import com.ruoyi.platform.service.MinioService; @@ -53,10 +48,10 @@ public class ImageServiceImpl implements ImageService { private ImageVersionDao imageVersionDao; @Resource private DevEnvironmentDao devEnvironmentDao; - @Resource private AssetWorkflowDao assetWorkflowDao; - + @Resource + private RayDao rayDao; @Resource private ImageVersionService imageVersionService; @@ -182,6 +177,14 @@ public class ImageServiceImpl implements ImageService { throw new Exception("该镜像被流水线:" + workflows + "使用,不能删除,请先删除流水线。"); } + HashMap map = new HashMap<>(); + map.put("id", String.valueOf(id)); + List rayList = rayDao.queryByImageId(JSON.toJSONString(map)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该镜像被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + //判断权限,只有admin和创建者本身可以删除该数据集 LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageVersionServiceImpl.java index 551a330c..4b913351 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageVersionServiceImpl.java @@ -1,23 +1,25 @@ package com.ruoyi.platform.service.impl; +import com.alibaba.fastjson2.JSON; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.AssetWorkflow; import com.ruoyi.platform.domain.ImageVersion; +import com.ruoyi.platform.domain.Ray; import com.ruoyi.platform.mapper.AssetWorkflowDao; -import com.ruoyi.platform.mapper.ImageDao; import com.ruoyi.platform.mapper.ImageVersionDao; -import com.ruoyi.platform.domain.ModelsVersion; +import com.ruoyi.platform.mapper.RayDao; import com.ruoyi.platform.service.ImageVersionService; 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 org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -31,9 +33,10 @@ import java.util.stream.Collectors; public class ImageVersionServiceImpl implements ImageVersionService { @Resource private ImageVersionDao imageVersionDao; - @Resource private AssetWorkflowDao assetWorkflowDao; + @Resource + private RayDao rayDao; /** * 通过ID查询单条数据 @@ -50,7 +53,7 @@ public class ImageVersionServiceImpl implements ImageVersionService { * 分页查询 * * @param imageVersion 筛选条件 - * @param pageRequest 分页对象 + * @param pageRequest 分页对象 * @return 查询结果 */ @Override @@ -60,14 +63,14 @@ public class ImageVersionServiceImpl implements ImageVersionService { } @Override - public List queryByImageId(Integer imageId){ + public List queryByImageId(Integer imageId) { return imageVersionDao.queryByImageId(imageId); } @Override public String removeById(Integer id) throws Exception { ImageVersion imageVersion = this.imageVersionDao.queryById(id); - if (imageVersion == null){ + if (imageVersion == null) { return "该版本下模型文件信息不存在"; } @@ -77,16 +80,24 @@ public class ImageVersionServiceImpl implements ImageVersionService { throw new Exception("该镜像版本被流水线:" + workflows + "使用,不能删除,请先删除流水线。"); } + HashMap map = new HashMap<>(); + map.put("version", String.valueOf(id)); + List rayList = rayDao.queryByImageId(JSON.toJSONString(map)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该镜像版本被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + //判断权限,只有admin和创建者本身可以删除该数据集 LoginUser loginUser = SecurityUtils.getLoginUser(); String username = loginUser.getUsername(); String createdBy = imageVersion.getCreateBy(); - if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ + if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { return "无权限删除该版本下模型信息"; } imageVersion.setState(0); - return this.imageVersionDao.update(imageVersion)>0?"删除成功":"删除失败"; + return this.imageVersionDao.update(imageVersion) > 0 ? "删除成功" : "删除失败"; } @@ -117,7 +128,7 @@ public class ImageVersionServiceImpl implements ImageVersionService { @Override public ImageVersion update(ImageVersion imageVersion) { int currentState = imageVersion.getState(); - if(currentState == 0){ + if (currentState == 0) { throw new RuntimeException("镜像版本已被删除,无法更新。"); } LoginUser loginUser = SecurityUtils.getLoginUser(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 9f9bd757..1cafc87d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -9,10 +9,7 @@ import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.*; import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency; -import com.ruoyi.platform.mapper.AssetWorkflowDao; -import com.ruoyi.platform.mapper.ModelDependency1Dao; -import com.ruoyi.platform.mapper.ModelsDao; -import com.ruoyi.platform.mapper.ModelsVersionDao; +import com.ruoyi.platform.mapper.*; import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.*; @@ -67,7 +64,8 @@ public class ModelsServiceImpl implements ModelsService { private ModelsDao modelsDao; @Resource private ModelsVersionDao modelsVersionDao; - + @Resource + private RayDao rayDao; @Resource private ModelsVersionService modelsVersionService; @@ -1154,6 +1152,14 @@ public class ModelsServiceImpl implements ModelsService { throw new Exception("该模型被流水线:" + workflows + "使用,不能删除,请先删除流水线。"); } + HashMap queryMap = new HashMap<>(); + queryMap.put("id", String.valueOf(repoId)); + List rayList = rayDao.queryByModelId(JSON.toJSONString(queryMap)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该模型被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + String token = gitService.checkoutToken(); gitService.deleteProject(token, owner, identifier); //删除模型依赖 @@ -1177,6 +1183,15 @@ public class ModelsServiceImpl implements ModelsService { throw new Exception("该模型版本被流水线:" + workflows + "使用,不能删除,请先删除流水线。"); } + HashMap queryMap = new HashMap<>(); + queryMap.put("id", String.valueOf(repoId)); + queryMap.put("version", version); + List rayList = rayDao.queryByModelId(JSON.toJSONString(queryMap)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该数据集版本被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + String token = gitService.checkoutToken(); String rootPath = Paths.get(localPath + "/" + relativePath).getParent().toString(); gitService.deleteBranch(token, owner, identifier, version, rootPath); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index d6dbe494..ceba3677 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -4,12 +4,10 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.constant.Constant; -import com.ruoyi.platform.domain.AssetWorkflow; -import com.ruoyi.platform.domain.AutoMl; -import com.ruoyi.platform.domain.Dataset; -import com.ruoyi.platform.domain.DatasetTempStorage; +import com.ruoyi.platform.domain.*; import com.ruoyi.platform.mapper.AssetWorkflowDao; import com.ruoyi.platform.mapper.AutoMlDao; +import com.ruoyi.platform.mapper.RayDao; import com.ruoyi.platform.service.DatasetTempStorageService; import com.ruoyi.platform.service.GitService; import com.ruoyi.platform.service.NewDatasetService; @@ -56,6 +54,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { private AssetWorkflowDao assetWorkflowDao; @Resource private AutoMlDao autoMlDao; + @Resource + private RayDao rayDao; @Value("${spring.redis.host}") private String redisHost; @@ -421,6 +421,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { throw new Exception("该数据集被自动机器学习:" + autoMls + "使用,不能删除,请先删除自动机器学习。"); } + List rayList = rayDao.queryByDatasetId(JSON.toJSONString(map)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该数据集被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + String token = gitService.checkoutToken(); gitService.deleteProject(token, owner, repo); @@ -446,6 +452,12 @@ public class NewDatasetServiceImpl implements NewDatasetService { throw new Exception("该数据集版本被自动机器学习:" + autoMls + "使用,不能删除,请先删除自动机器学习。"); } + List rayList = rayDao.queryByDatasetId(JSON.toJSONString(map)); + if (rayList != null && !rayList.isEmpty()) { + String rays = String.join(",", rayList.stream().map(Ray::getName).collect(Collectors.toSet())); + throw new Exception("该数据集版本被超参数自动寻优:" + rays + "使用,不能删除,请先删除超参数自动寻优。"); + } + String token = gitService.checkoutToken(); String rootPath = Paths.get(localPathlocal + "/" + relativePath).getParent().toString(); gitService.deleteBranch(token, owner, repo, version, rootPath); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/RayDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/RayDaoMapper.xml index 72aebb6e..7355d286 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/RayDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/RayDaoMapper.xml @@ -109,6 +109,34 @@ where id = #{id} + + + + + + + + state = 1