diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java index 3e90b11..9f987ea 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java @@ -73,7 +73,7 @@ public class DatasetApplicationService { Dataset dataset = DatasetConverter.INSTANCE.convertToDataset(createDatasetRequest); Dataset parentDataset = resolveParentDataset(createDatasetRequest.getParentDatasetId(), dataset.getId()); dataset.setParentDatasetId(parentDataset == null ? null : parentDataset.getId()); - dataset.initCreateParam(datasetBasePath, parentDataset == null ? null : parentDataset.getPath()); + dataset.initCreateParam(datasetBasePath); // 处理标签 Set processedTags = Optional.ofNullable(createDatasetRequest.getTags()) .filter(CollectionUtils::isNotEmpty) @@ -291,7 +291,9 @@ public class DatasetApplicationService { private void handleParentChange(Dataset dataset, String parentDatasetId) { String normalized = normalizeParentId(parentDatasetId); - if (Objects.equals(dataset.getParentDatasetId(), normalized)) { + String expectedPath = buildDatasetPath(datasetBasePath, dataset.getId()); + if (Objects.equals(dataset.getParentDatasetId(), normalized) + && Objects.equals(dataset.getPath(), expectedPath)) { return; } long childCount = datasetRepository.countByParentId(dataset.getId()); @@ -299,8 +301,7 @@ public class DatasetApplicationService { throw BusinessException.of(DataManagementErrorCode.DATASET_HAS_CHILDREN); } Dataset parent = normalized == null ? null : resolveParentDataset(normalized, dataset.getId()); - String newPath = buildDatasetPath(parent == null ? datasetBasePath : parent.getPath(), dataset.getId()); - moveDatasetPath(dataset, newPath); + moveDatasetPath(dataset, expectedPath); dataset.setParentDatasetId(parent == null ? null : parent.getId()); } diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java index eeebc37..cf5375f 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java @@ -114,9 +114,9 @@ public class Dataset extends BaseEntity { this.updatedAt = LocalDateTime.now(); } - public void initCreateParam(String datasetBasePath, String parentPath) { + public void initCreateParam(String datasetBasePath) { this.id = UUID.randomUUID().toString(); - String basePath = normalizeBasePath(parentPath != null && !parentPath.isBlank() ? parentPath : datasetBasePath); + String basePath = normalizeBasePath(datasetBasePath); this.path = basePath + File.separator + this.id; if (this.status == null) { this.status = DatasetStatusType.DRAFT; diff --git a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/exception/DataManagementErrorCode.java b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/exception/DataManagementErrorCode.java index 8312975..4955d1f 100644 --- a/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/exception/DataManagementErrorCode.java +++ b/backend/services/data-management-service/src/main/java/com/datamate/datamanagement/infrastructure/exception/DataManagementErrorCode.java @@ -42,9 +42,9 @@ public enum DataManagementErrorCode implements ErrorCode { */ DIRECTORY_NOT_FOUND("data_management.0007", "目录不存在"), /** - * 存在子数据集 + * 存在关联数据集 */ - DATASET_HAS_CHILDREN("data_management.0008", "存在子数据集,禁止删除或移动"), + DATASET_HAS_CHILDREN("data_management.0008", "存在关联数据集,禁止删除或移动"), /** * 数据集文件不存在 */ diff --git a/frontend/src/pages/DataManagement/Create/EditDataset.tsx b/frontend/src/pages/DataManagement/Create/EditDataset.tsx index 1dac677..cabc524 100644 --- a/frontend/src/pages/DataManagement/Create/EditDataset.tsx +++ b/frontend/src/pages/DataManagement/Create/EditDataset.tsx @@ -96,7 +96,7 @@ export default function EditDataset({