11package com .dataengine .datamanagement .application .service ;
22
33import com .dataengine .datamanagement .domain .model .dataset .Dataset ;
4- import com .dataengine .datamanagement .domain .model .dataset .StatusConstants ;
54import com .dataengine .datamanagement .domain .model .dataset .Tag ;
65import com .dataengine .datamanagement .infrastructure .persistence .mapper .DatasetFileMapper ;
76import com .dataengine .datamanagement .infrastructure .persistence .mapper .DatasetMapper ;
87import com .dataengine .datamanagement .infrastructure .persistence .mapper .TagMapper ;
8+ import com .dataengine .datamanagement .interfaces .converter .DatasetConverter ;
99import com .dataengine .datamanagement .interfaces .dto .AllDatasetStatisticsResponse ;
10+ import com .dataengine .datamanagement .interfaces .dto .CreateDatasetRequest ;
11+ import com .dataengine .datamanagement .interfaces .dto .DatasetPagingQuery ;
12+ import org .apache .commons .collections4 .CollectionUtils ;
1013import org .apache .ibatis .session .RowBounds ;
1114import org .springframework .beans .factory .annotation .Autowired ;
15+ import org .springframework .beans .factory .annotation .Value ;
1216import org .springframework .data .domain .Page ;
1317import org .springframework .data .domain .PageImpl ;
14- import org .springframework .data .domain .Pageable ;
18+ import org .springframework .data .domain .PageRequest ;
1519import org .springframework .stereotype .Service ;
1620import org .springframework .transaction .annotation .Transactional ;
1721
1822import java .time .LocalDateTime ;
1923import java .util .*;
20- import java .util .stream .Collectors ;
2124
2225/**
2326 * 数据集应用服务(对齐 DB schema,使用 UUID 字符串主键)
@@ -30,6 +33,9 @@ public class DatasetApplicationService {
3033 private final TagMapper tagMapper ;
3134 private final DatasetFileMapper datasetFileMapper ;
3235
36+ @ Value ("${dataset.base.path:/dataset}" )
37+ private String datasetBasePath ;
38+
3339 @ Autowired
3440 public DatasetApplicationService (DatasetMapper datasetMapper , TagMapper tagMapper , DatasetFileMapper datasetFileMapper ) {
3541 this .datasetMapper = datasetMapper ;
@@ -40,32 +46,21 @@ public DatasetApplicationService(DatasetMapper datasetMapper, TagMapper tagMappe
4046 /**
4147 * 创建数据集
4248 */
43- public Dataset createDataset (String name , String description , String datasetType ,
44- List <String > tagNames , Long dataSourceId ,
45- String path , String format , String createdBy ) {
46- if (datasetMapper .findByName (name ) != null ) {
47- throw new IllegalArgumentException ("Dataset with name '" + name + "' already exists" );
49+ @ Transactional
50+ public Dataset createDataset (CreateDatasetRequest createDatasetRequest ) {
51+ if (datasetMapper .findByName (createDatasetRequest .getName ()) != null ) {
52+ throw new IllegalArgumentException ("Dataset with name '" + createDatasetRequest .getName () + "' already exists" );
4853 }
4954
50- Dataset dataset = new Dataset ();
51- dataset .setId (UUID .randomUUID ().toString ());
52- dataset .setName (name );
53- dataset .setDescription (description );
54- dataset .setDatasetType (datasetType );
55- dataset .setDataSourceId (dataSourceId );
56- dataset .setPath (path );
57- dataset .setFormat (format );
58- dataset .setStatus (StatusConstants .DatasetStatuses .ACTIVE );
59- dataset .setCreatedBy (createdBy );
60- dataset .setUpdatedBy (createdBy );
61- dataset .setCreatedAt (LocalDateTime .now ());
62- dataset .setUpdatedAt (LocalDateTime .now ());
63- datasetMapper .insert (dataset ); // 手动设定 UUID 主键
55+ // 创建数据集对象
56+ Dataset dataset = DatasetConverter .INSTANCE .convertToDataset (createDatasetRequest );
57+ dataset .initCreateParam (datasetBasePath );
58+ datasetMapper .insert (dataset );
6459
6560 // 处理标签
6661 Set <Tag > processedTags = new HashSet <>();
67- if (tagNames != null && ! tagNames . isEmpty ( )) {
68- processedTags = processTagNames (tagNames );
62+ if (CollectionUtils . isNotEmpty ( createDatasetRequest . getTags () )) {
63+ processedTags = processTagNames (createDatasetRequest . getTags () );
6964 for (Tag t : processedTags ) {
7065 tagMapper .insertDatasetTag (dataset .getId (), t .getId ());
7166 }
@@ -150,23 +145,21 @@ public Dataset getDataset(String datasetId) {
150145 * 分页查询数据集
151146 */
152147 @ Transactional (readOnly = true )
153- public Page <Dataset > getDatasets (String typeCode , String status , String keyword ,
154- List < String > tagNames , Pageable pageable ) {
155- RowBounds bounds = new RowBounds ( pageable . getPageNumber () * pageable . getPageSize (), pageable . getPageSize () );
156- List < Dataset > content = datasetMapper .findByCriteria ( typeCode , status , keyword , tagNames , bounds );
148+ public Page <Dataset > getDatasets (DatasetPagingQuery query ) {
149+ RowBounds bounds = new RowBounds ( query . getPage () * query . getSize (), query . getSize ());
150+ List < Dataset > content = datasetMapper . findByCriteria ( query . getType (), query . getStatus (), query . getKeyword (), query . getTagList (), bounds );
151+ long total = datasetMapper .countByCriteria ( query . getType (), query . getStatus (), query . getKeyword (), query . getTagList () );
157152
158153 // 为每个数据集填充标签信息
159- if (content != null && ! content . isEmpty ( )) {
154+ if (CollectionUtils . isNotEmpty ( content )) {
160155 for (Dataset dataset : content ) {
161156 List <Tag > tags = tagMapper .findByDatasetId (dataset .getId ());
162157 if (tags != null ) {
163158 dataset .getTags ().addAll (tags );
164159 }
165160 }
166161 }
167-
168- long total = datasetMapper .countByCriteria (typeCode , status , keyword , tagNames );
169- return new PageImpl <>(content , pageable , total );
162+ return new PageImpl <>(content , PageRequest .of (query .getPage (), query .getSize ()), total );
170163 }
171164
172165 /**
0 commit comments