diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/CheckDuplicate.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/CheckDuplicate.java new file mode 100644 index 00000000..0134e5cf --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/CheckDuplicate.java @@ -0,0 +1,12 @@ +package com.ruoyi.platform.annotations; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface CheckDuplicate { + String value() default ""; + String message() default "不能重复"; +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java index b306f7f7..b38e186c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java @@ -77,7 +77,7 @@ public class DatasetController { */ @PostMapping @ApiOperation("添加数据集") - public AjaxResult add(@RequestBody Dataset dataset) { + public AjaxResult add(@RequestBody Dataset dataset) throws Exception { return AjaxResult.success(this.datasetService.insert(dataset)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java index 9f6f5912..636425a8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java @@ -75,7 +75,7 @@ public class DatasetVersionController { */ @PostMapping @ApiOperation("添加数据集版本") - public AjaxResult add(@RequestBody DatasetVersion datasetVersion) { + public AjaxResult add(@RequestBody DatasetVersion datasetVersion) throws Exception { return AjaxResult.success(this.datasetVersionService.insert(datasetVersion)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Dataset.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Dataset.java index e633fe9b..0ad5df4e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Dataset.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Dataset.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.annotations.CheckDuplicate; import io.swagger.annotations.ApiModelProperty; import java.util.Date; @@ -13,11 +14,14 @@ import java.io.Serializable; * @author Xidaray * @since 2023-11-28 11:51:22 */ + @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class Dataset implements Serializable { private static final long serialVersionUID = 918442714458737041L; @ApiModelProperty(name = "id") private Integer id; + + @CheckDuplicate @ApiModelProperty(name = "name") private String name; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java index 74d57d65..e1e9b36c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.annotations.CheckDuplicate; import io.swagger.annotations.ApiModelProperty; import java.util.Date; @@ -27,6 +28,7 @@ public class DatasetVersion implements Serializable { * 版本 */ @ApiModelProperty(name = "version") + @CheckDuplicate private String version; /** * 数据集存储地址 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetDao.java index aba5a35b..f08112a3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetDao.java @@ -80,5 +80,6 @@ public interface DatasetDao { */ int deleteById(Integer id); + Dataset findByName(String name); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java index bf60956b..e0b445bd 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java @@ -89,6 +89,6 @@ public interface DatasetVersionDao { List queryAllByDatasetVersion(@Param("datasetId") Integer datasetId, @Param("version") String version); - + DatasetVersion findByDatasetAndVersion(Integer datasetId, String version); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index 1e729070..7713f092 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -46,7 +46,7 @@ public interface DatasetService { * @param dataset 实例对象 * @return 实例对象 */ - Dataset insert(Dataset dataset); + Dataset insert(Dataset dataset) throws Exception; @@ -77,4 +77,5 @@ public interface DatasetService { Map getDatasetVersions(Integer datasetId) throws Exception; String insertDatasetAndVersion(DatasetVo datasetVo) throws Exception; + public void checkDeclaredName(Dataset insert) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java index 8efa1260..309a84db 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.service; +import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetVersion; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -41,7 +42,7 @@ public interface DatasetVersionService { * @param datasetVersion 实例对象 * @return 实例对象 */ - DatasetVersion insert(DatasetVersion datasetVersion); + DatasetVersion insert(DatasetVersion datasetVersion) throws Exception; /** * 修改数据 @@ -63,11 +64,11 @@ public interface DatasetVersionService { List queryByDatasetId(Integer datasetId); - DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion); - DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); List queryByDatasetIdAndVersion(Integer datasetId, String version); Map deleteDatasetVersion(Integer datasetId, String version); + + void checkDeclaredVersion(DatasetVersion insert) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index fcfb5a98..0f43eee0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.Models; @@ -34,6 +35,7 @@ import javax.annotation.Resource; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; +import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -111,7 +113,9 @@ public class DatasetServiceImpl implements DatasetService { * @return 实例对象 */ @Override - public Dataset insert(Dataset dataset) { + public Dataset insert(Dataset dataset) throws Exception { + + checkDeclaredName(dataset); LoginUser loginUser = SecurityUtils.getLoginUser(); dataset.setCreateBy(loginUser.getUsername()); @@ -349,4 +353,18 @@ public class DatasetServiceImpl implements DatasetService { private String extractFileName(String urlStr) { return urlStr.substring(urlStr.lastIndexOf('/') + 1); } + + + public void checkDeclaredName(Dataset insert) throws Exception { + Dataset dataset = datasetDao.findByName(insert.getName()); + if (dataset != null) { + Field[] fields = Dataset.class.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(CheckDuplicate.class)) { + CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); + throw new Exception(annotation.value() + "不能重复"); + } + } + } + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java index b13b7148..f69eee20 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.annotations.CheckDuplicate; +import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.domain.Workflow; @@ -14,6 +16,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.lang.reflect.Field; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -61,8 +64,8 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { * @return 实例对象 */ @Override - public DatasetVersion insert(DatasetVersion datasetVersion) { - + public DatasetVersion insert(DatasetVersion datasetVersion) throws Exception { + checkDeclaredVersion(datasetVersion); LoginUser loginUser = SecurityUtils.getLoginUser(); datasetVersion.setCreateBy(loginUser.getUsername()); datasetVersion.setUpdateBy(loginUser.getUsername()); @@ -127,22 +130,6 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { return datasetVersionDao.queryByDatasetId(datasetId); } - - /** - * 复制数据集版本 - * - * @param oldDatasetVersion 待更新的数据集版本 - * @return 新的数据集版本记录 - */ - public DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion) { - DatasetVersion newDatasetVersion = new DatasetVersion(); - newDatasetVersion.setDatasetId(oldDatasetVersion.getDatasetId()); - newDatasetVersion.setVersion(oldDatasetVersion.getVersion()); - newDatasetVersion.setAvailableCluster(oldDatasetVersion.getAvailableCluster()); - newDatasetVersion.setStatus(oldDatasetVersion.getStatus()); - return this.insert(newDatasetVersion); - } - @Override public DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion) { return datasetVersionDao.queryByDatasetVersion(datasetVersion); @@ -167,4 +154,17 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { return results; } + @Override + public void checkDeclaredVersion(DatasetVersion insert) throws Exception { + DatasetVersion datasetVersion = datasetVersionDao.findByDatasetAndVersion(insert.getDatasetId(),insert.getVersion()); + if (datasetVersion != null) { + Field[] fields = Dataset.class.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(CheckDuplicate.class)) { + CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); + throw new Exception(annotation.value() + "不能重复"); + } + } + } + } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetDaoMapper.xml index 9d714974..c7380588 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetDaoMapper.xml @@ -24,6 +24,13 @@ where id = #{id} and state = 1 + + - +