diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/DatasetController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/DatasetController.java similarity index 77% rename from bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/DatasetController.java rename to bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/DatasetController.java index 86f8409..b7ecc72 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/DatasetController.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/DatasetController.java @@ -1,7 +1,7 @@ -package com.bonus.ai.controller; +package com.bonus.ai.controller.dataset; +import com.bonus.ai.domain.DataSetBasicFileEntity; import com.bonus.ai.domain.dataset.DataSetEntity; -import com.bonus.ai.mapper.DataSetBasicFileMapper; import com.bonus.common.core.web.controller.BaseController; import com.bonus.ai.service.dataset.DatasetService; import com.bonus.common.core.web.domain.AjaxResult; @@ -12,8 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @@ -98,6 +98,37 @@ public class DatasetController extends BaseController { ajax.put(AjaxResult.DATA_TAG, dataset); return ajax; } + /** + * 根据数据集编号获取数据集详情 + * @param entity 筛选条件 + * @return 返回数据集详情 + */ + @GetMapping(value = "getDataSetBasicFile") + public TableDataInfo getDataSetBasicFile(DataSetBasicFileEntity entity) { + try { + startPage(); + List dataSetBasicFile = datasetService.getDataSetBasicFile(entity); + return getDataTable(dataSetBasicFile); + }catch (Exception e){ + return getDataTable(new ArrayList<>()); + } + } + + + /** + * 删除的数据集 + * @return 返回影响的行数或错误信 + */ + @PostMapping("/removeDataSetBasicFile") + public AjaxResult removeDataSetBasicFile(@RequestParam("datasetId") String datasetId,@RequestParam("fileIds") String fileIds) { + // 将字符串转换为 long[] 数组并输出 + long[] longArray = Arrays.stream(fileIds.split(",")) + .mapToLong(Long::parseLong) + .toArray(); + return toAjax(datasetService.removeDataSetBasicFile(datasetId,longArray)); + } + + /** * 设置或取消数据集的公共状态 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/ReleaseVersionController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/ReleaseVersionController.java index d84e15c..e748274 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/ReleaseVersionController.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/ReleaseVersionController.java @@ -1,24 +1,33 @@ package com.bonus.ai.controller.dataset; import com.bonus.ai.domain.dataset.ReleaseVersionEntity; +import com.bonus.ai.service.dataset.ReleaseVersionService; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + @RestController @RequestMapping("/version") @Slf4j public class ReleaseVersionController extends BaseController { + @Resource + private ReleaseVersionService releaseVersionService; + /**发布版本,可以针对数据集发布,也可以对标注任务发布 * @param version 发布数据集的版本信息 * @return 返回影响的行数或错误信 */ @PostMapping("/release") public AjaxResult release(@Validated @RequestBody ReleaseVersionEntity version) { - return AjaxResult.success(); + return releaseVersionService.release(version); } /**导出发布版本的数据集 @@ -30,13 +39,29 @@ public class ReleaseVersionController extends BaseController { return AjaxResult.success(); } + /** + * 删除版本发布 + * @param versionIds id 集合 + * @return + */ + @PostMapping(value = "/delete/{versionIds}") + public AjaxResult delete(@PathVariable Long[] versionIds) { + return releaseVersionService.delete(versionIds); + } + + /** * 查看发布的版本列表 * @return 返回满足条件的版本列表 */ @GetMapping("/list") - public AjaxResult list() { - return AjaxResult.success(); + public TableDataInfo list(ReleaseVersionEntity version) { + try { + List allReleaseVersions = releaseVersionService.getAllReleaseVersions(version); + return getDataTable(allReleaseVersions); + }catch (Exception e) { + return getDataTable(new ArrayList<>()); + } } } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/DataSetBasicFileEntity.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/DataSetBasicFileEntity.java index 2ab40fe..cb7e008 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/DataSetBasicFileEntity.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/DataSetBasicFileEntity.java @@ -67,4 +67,6 @@ public class DataSetBasicFileEntity extends BaseEntity { * 文件上传时间 */ private Date uploadTime; + + private Long dataSetId; } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/DataSetEntity.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/DataSetEntity.java index 57182af..94a5f78 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/DataSetEntity.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/DataSetEntity.java @@ -4,6 +4,7 @@ import com.bonus.ai.domain.enums.AnnotationFileStatus; import com.bonus.ai.domain.enums.AnnotationTaskStatus; import com.bonus.ai.domain.DataSetBasicFileEntity; import com.bonus.common.core.web.domain.BaseEntity; +import io.swagger.models.auth.In; import lombok.Data; import java.util.Date; @@ -51,4 +52,8 @@ public class DataSetEntity extends BaseEntity { /**数据集关联的文件id*/ private Long[] fileIds; + + private Integer annotatedCount; + + private Integer notAnnotatedCount; } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DataSetLabelsMapper.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DataSetLabelsMapper.java index 1d136c3..455017a 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DataSetLabelsMapper.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DataSetLabelsMapper.java @@ -43,13 +43,6 @@ public interface DataSetLabelsMapper */ public int updateDataSetLabels(DataSetLabels dataSetLabels); - /** - * 删除样本标签管理 - * - * @param labelId 样本标签管理主键 - * @return 结果 - */ - public int deleteDataSetLabelsByLabelId(Long labelId); /** * 批量删除样本标签管理 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DatasetMapper.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DatasetMapper.java index 4138026..14cf686 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DatasetMapper.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/DatasetMapper.java @@ -1,5 +1,6 @@ package com.bonus.ai.mapper; +import com.bonus.ai.domain.DataSetBasicFileEntity; import com.bonus.ai.domain.dataset.DataSetEntity; import org.apache.ibatis.annotations.Param; @@ -31,6 +32,10 @@ public interface DatasetMapper { */ DataSetEntity selectById(@Param("datasetId") Long datasetId); + /** + * 获取数据集文件详情 + */ + List getDataSetBasicFile(DataSetBasicFileEntity entity); /** * 根据UUID查询数据集 */ @@ -61,4 +66,5 @@ public interface DatasetMapper { public DataSetEntity checkDatasetNameUnique(String datasetName); + int removeDataSetBasicFile(@Param("datasetId") String dataSetId, @Param("fileIds") long[] fileIds); } \ No newline at end of file diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/ReleaseVersionMapper.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/ReleaseVersionMapper.java new file mode 100644 index 0000000..001bb63 --- /dev/null +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/ReleaseVersionMapper.java @@ -0,0 +1,34 @@ +package com.bonus.ai.mapper; + +import com.bonus.ai.domain.dataset.ReleaseVersionEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @author bonus + */ +@Mapper +public interface ReleaseVersionMapper { + + /** + * 获取数据集版本列表 + * @param entity 筛选条件 + * @return 集合 + */ + List getAllReleaseVersions(ReleaseVersionEntity entity); + + /** + * 发布版本 + * @param version 数据 + * @return 条数 + */ + int release(ReleaseVersionEntity version); + + /** + * 删除版本发布 + * @param versionIds 版本集合 + * @return 条数 + */ + int delete(Long[] versionIds); +} diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/DataSetLabelsServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/DataSetLabelsServiceImpl.java index 26cf852..e49e86a 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/DataSetLabelsServiceImpl.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/DataSetLabelsServiceImpl.java @@ -1,6 +1,8 @@ package com.bonus.ai.service.Impl; -import java.util.List; +import java.util.*; + +import com.bonus.ai.domain.DataSetBasicFileEntity; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; @@ -105,7 +107,14 @@ public class DataSetLabelsServiceImpl implements DataSetLabelsService public AjaxResult deleteDataSetLabelsByLabelIds(Long[] labelIds) { try{ - int rows = dataSetLabelsMapper.deleteDataSetLabelsByLabelIds(labelIds); + Set childIds = new HashSet<>(); + for (Long labelId : labelIds){ + childIds.addAll(getFileWithChildren(labelId)); + childIds.add(labelId); + } + // 转换 Set 为 Long[] + Long[] longArray = childIds.toArray(new Long[0]); + int rows = dataSetLabelsMapper.deleteDataSetLabelsByLabelIds(longArray); return rows>0?AjaxResult.success():AjaxResult.error(); }catch (Exception e){ return AjaxResult.error(); @@ -116,8 +125,50 @@ public class DataSetLabelsServiceImpl implements DataSetLabelsService public AjaxResult getLabelsTree(Long labelId) { DataSetLabels entity = new DataSetLabels(); List dataSetLabels = dataSetLabelsMapper.selectDataSetLabelsList(entity); + Set labelIds = getFileWithChildren(labelId); + for (Long id : labelIds){ + dataSetLabels.removeIf(item -> item.getLabelId().equals(id)); + } dataSetLabels.removeIf(item -> item.getLabelId().equals(labelId)); return AjaxResult.success(dataSetLabels); } + + /** + * 获取文件及其子节点 + * @param labelId ID + * @return 当前文件及其所有子节点 + */ + public Set getFileWithChildren(Long labelId) { + // 查询所有文件数据,假设你已经根据需求修改了查询方法 + DataSetLabels entity =new DataSetLabels(); + entity.setCreateBy(SecurityUtils.getUserId().toString()); + List allLabel = dataSetLabelsMapper.selectDataSetLabelsList(entity); + // 构建父子关系映射 + Map> parentToChildrenMap = new HashMap<>(); + for (DataSetLabels label : allLabel) { + parentToChildrenMap + .computeIfAbsent(label.getParentId(), k -> new ArrayList<>()) + .add(label.getLabelId()); + } + + // 使用递归或迭代方式获取所有子节点 + Set childIds = new HashSet<>(); + collectChildren(labelId, parentToChildrenMap, childIds); + return childIds; + } + + private void collectChildren(Long parentId, Map> parentToChildrenMap, Set childIds) { + // 获取当前父节点的所有子节点 + List children = parentToChildrenMap.get(parentId); + if (children != null) { + for (Long childId : children) { + // 将当前子节点 ID 添加到结果集中 + childIds.add(childId); + // 递归获取子节点的子节点 + collectChildren(childId, parentToChildrenMap, childIds); + } + } + } + } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/DatasetServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/DatasetServiceImpl.java index 9abc40b..02eaa6a 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/DatasetServiceImpl.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/DatasetServiceImpl.java @@ -135,6 +135,28 @@ public class DatasetServiceImpl implements DatasetService { return UserConstants.UNIQUE; } + /** + * 获取数据集文件详情 + * + * @param entity 筛选条件 + */ + @Override + public List getDataSetBasicFile(DataSetBasicFileEntity entity) { + return datasetMapper.getDataSetBasicFile(entity); + } + + /** + * 文件详情删除 + * + * @param dataSetId 数据集id + * @param fileIds 文件id集合 + * @return + */ + @Override + public int removeDataSetBasicFile(String dataSetId, long[] fileIds) { + return datasetMapper.removeDataSetBasicFile(dataSetId,fileIds); + } + /** * 插入数据集文件映射关系 * @param dataSet 数据集实体,包含数据集ID、输入ID、数据类型等信息 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/ReleaseVersionServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/ReleaseVersionServiceImpl.java new file mode 100644 index 0000000..88c5d15 --- /dev/null +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/ReleaseVersionServiceImpl.java @@ -0,0 +1,62 @@ +package com.bonus.ai.service.Impl.dataset; + +import com.bonus.ai.domain.dataset.ReleaseVersionEntity; +import com.bonus.ai.mapper.ReleaseVersionMapper; +import com.bonus.ai.service.dataset.ReleaseVersionService; +import com.bonus.common.core.web.domain.AjaxResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @author bonus + */ +@Service +public class ReleaseVersionServiceImpl implements ReleaseVersionService { + @Resource + private ReleaseVersionMapper mapper; + /** + * 获取数据集版本列表 + * + * @param entity 筛选条件 + * @return 集合 + */ + @Override + public List getAllReleaseVersions(ReleaseVersionEntity entity) { + return mapper.getAllReleaseVersions(entity); + } + + /** + * 发布版本 + * + * @param version 数据 + * @return 结果 + */ + @Override + public AjaxResult release(ReleaseVersionEntity version) { + try { + int num = mapper.release(version); + return num>0?AjaxResult.success():AjaxResult.error(); + }catch (Exception e) { + return AjaxResult.error(); + } + } + + /** + * 删除版本发布 + * + * @param versionIds 版本集合 + * @return 条数 + */ + @Override + public AjaxResult delete(Long[] versionIds) { + try { + int delete = mapper.delete(versionIds); + return delete>0?AjaxResult.success():AjaxResult.error(); + }catch (Exception e) { + return AjaxResult.error(); + } + } +} diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/DatasetService.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/DatasetService.java index eee5477..0b87dcc 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/DatasetService.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/DatasetService.java @@ -1,5 +1,6 @@ package com.bonus.ai.service.dataset; +import com.bonus.ai.domain.DataSetBasicFileEntity; import com.bonus.ai.domain.dataset.DataSetEntity; import java.util.List; @@ -50,4 +51,18 @@ public interface DatasetService { /**验证数据集名称的唯一性*/ boolean checkDatasetNameUnique(DataSetEntity dataSet); -} \ No newline at end of file + + + /** + * 获取数据集文件详情 + */ + List getDataSetBasicFile(DataSetBasicFileEntity entity); + + /** + * 文件详情删除 + * @param dataSetId 数据集id + * @param fileIds 文件id集合 + * @return + */ + int removeDataSetBasicFile(String dataSetId, long[] fileIds); +} \ No newline at end of file diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/ReleaseVersionService.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/ReleaseVersionService.java new file mode 100644 index 0000000..1b41885 --- /dev/null +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/ReleaseVersionService.java @@ -0,0 +1,34 @@ +package com.bonus.ai.service.dataset; + + +import com.bonus.ai.domain.dataset.ReleaseVersionEntity; +import com.bonus.common.core.web.domain.AjaxResult; + +import java.util.List; + +/** + * @author bonus + */ +public interface ReleaseVersionService { + /** + * 获取数据集版本列表 + * @param entity 筛选条件 + * @return 集合 + */ + List getAllReleaseVersions(ReleaseVersionEntity entity); + + /** + * 发布版本 + * @param version 数据 + * @return 结果 + */ + AjaxResult release(ReleaseVersionEntity version); + + + /** + * 删除版本发布 + * @param versionIds 版本集合 + * @return 条数 + */ + AjaxResult delete(Long[] versionIds); +} diff --git a/bonus-modules/bonus-ai/src/main/resources/mapper/DataSetLabelsMapper.xml b/bonus-modules/bonus-ai/src/main/resources/mapper/DataSetLabelsMapper.xml index 2c55949..cbdae10 100644 --- a/bonus-modules/bonus-ai/src/main/resources/mapper/DataSetLabelsMapper.xml +++ b/bonus-modules/bonus-ai/src/main/resources/mapper/DataSetLabelsMapper.xml @@ -23,6 +23,7 @@ select d.dataset_id, d.dataset_uuid, d.dataset_name, d.description, d.data_type, d.data_source, d.input_path, @@ -91,21 +120,21 @@ - + \ No newline at end of file diff --git a/bonus-modules/bonus-ai/src/main/resources/mapper/ReleaseVersionMapper.xml b/bonus-modules/bonus-ai/src/main/resources/mapper/ReleaseVersionMapper.xml new file mode 100644 index 0000000..84e03ae --- /dev/null +++ b/bonus-modules/bonus-ai/src/main/resources/mapper/ReleaseVersionMapper.xml @@ -0,0 +1,28 @@ + + + + + INSERT INTO ai_dataset_version (version_name, version_description, dataset_id, task_id, create_by) + VALUES (#{versionName}, #{versionDesc}, #{datasetId}, #{taskId}, #{createBy}); + + + + update ai_dataset_version set del_flag='1' where version_id in + + #{id} + + + + + \ No newline at end of file