Skip to content

Commit de7b896

Browse files
committed
fix: resolve the annotation task bug
1 parent c83d995 commit de7b896

6 files changed

Lines changed: 1075 additions & 1041 deletions

File tree

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
import com.datamate.datamanagement.infrastructure.persistence.repository.DatasetRepository;
1919
import com.datamate.datamanagement.interfaces.converter.DatasetConverter;
2020
import com.datamate.datamanagement.interfaces.dto.*;
21+
import com.fasterxml.jackson.core.JsonProcessingException;
22+
import com.fasterxml.jackson.databind.ObjectMapper;
23+
import com.fasterxml.jackson.databind.SerializationFeature;
24+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
2125
import lombok.RequiredArgsConstructor;
2226
import lombok.extern.slf4j.Slf4j;
2327
import org.apache.commons.collections4.CollectionUtils;
@@ -64,11 +68,7 @@ public Dataset createDataset(CreateDatasetRequest createDatasetRequest) {
6468
Dataset dataset = DatasetConverter.INSTANCE.convertToDataset(createDatasetRequest);
6569
dataset.initCreateParam(datasetBasePath);
6670
// 处理标签
67-
Set<Tag> processedTags = Optional.ofNullable(createDatasetRequest.getTags())
68-
.filter(CollectionUtils::isNotEmpty)
69-
.map(this::processTagNames)
70-
.orElseGet(HashSet::new);
71-
dataset.setTags(processedTags);
71+
dataset.setTags(processTagNames(createDatasetRequest.getTags()));
7272
datasetRepository.save(dataset);
7373

7474
//todo 需要解耦这块逻辑
@@ -146,7 +146,7 @@ public PagedResponse<DatasetResponse> getDatasets(DatasetPagingQuery query) {
146146
/**
147147
* 处理标签名称,创建或获取标签
148148
*/
149-
private Set<Tag> processTagNames(List<String> tagNames) {
149+
private String processTagNames(List<String> tagNames) {
150150
Set<Tag> tags = new HashSet<>();
151151
for (String tagName : tagNames) {
152152
Tag tag = tagMapper.findByName(tagName);
@@ -161,7 +161,16 @@ private Set<Tag> processTagNames(List<String> tagNames) {
161161
tagMapper.updateUsageCount(tag.getId(), tag.getUsageCount());
162162
tags.add(tag);
163163
}
164-
return tags;
164+
ObjectMapper mapper = new ObjectMapper();
165+
try {
166+
mapper.registerModule(new JavaTimeModule());
167+
// 可选:配置日期时间格式
168+
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
169+
return mapper.writeValueAsString(tags);
170+
} catch (JsonProcessingException e) {
171+
log.warn("Parse tags to json error.");
172+
return null;
173+
}
165174
}
166175

167176
/**

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.baomidou.mybatisplus.annotation.TableField;
44
import com.baomidou.mybatisplus.annotation.TableName;
5-
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
65
import com.datamate.common.domain.model.base.BaseEntity;
76
import com.datamate.datamanagement.common.enums.DatasetStatusType;
87
import com.datamate.datamanagement.common.enums.DatasetType;
@@ -67,8 +66,7 @@ public class Dataset extends BaseEntity<String> {
6766
/**
6867
* 标签列表, JSON格式
6968
*/
70-
@TableField(typeHandler = JacksonTypeHandler.class)
71-
private Collection<Tag> tags = new HashSet<>();
69+
private String tags;
7270
/**
7371
* 额外元数据,JSON格式
7472
*/

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/converter/DatasetConverter.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@
44
import com.datamate.datamanagement.domain.model.dataset.Dataset;
55
import com.datamate.datamanagement.domain.model.dataset.DatasetFile;
66
import com.datamate.datamanagement.domain.model.dataset.FileTag;
7-
import com.datamate.datamanagement.interfaces.dto.CreateDatasetRequest;
8-
import com.datamate.datamanagement.interfaces.dto.DatasetFileResponse;
9-
import com.datamate.datamanagement.interfaces.dto.DatasetResponse;
10-
import com.datamate.datamanagement.interfaces.dto.UploadFileRequest;
7+
import com.datamate.datamanagement.domain.model.dataset.Tag;
8+
import com.datamate.datamanagement.interfaces.dto.*;
9+
import com.fasterxml.jackson.core.JsonProcessingException;
10+
import com.fasterxml.jackson.core.type.TypeReference;
11+
import com.fasterxml.jackson.databind.ObjectMapper;
12+
import com.fasterxml.jackson.databind.SerializationFeature;
13+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
1114
import org.apache.commons.collections4.CollectionUtils;
15+
import org.apache.commons.lang3.StringUtils;
1216
import org.mapstruct.Mapper;
1317
import org.mapstruct.Mapping;
1418
import org.mapstruct.Named;
1519
import org.mapstruct.factory.Mappers;
1620

17-
import java.util.HashMap;
18-
import java.util.List;
19-
import java.util.Map;
21+
import java.util.*;
2022

2123
/**
2224
* 数据集文件转换器
@@ -32,6 +34,7 @@ public interface DatasetConverter {
3234
@Mapping(source = "sizeBytes", target = "totalSize")
3335
@Mapping(source = "path", target = "targetLocation")
3436
@Mapping(source = "files", target = "distribution", qualifiedByName = "getDistribution")
37+
@Mapping(source = "tags", target = "tags", qualifiedByName = "getDatasetTags")
3538
DatasetResponse convertToResponse(Dataset dataset);
3639

3740
/**
@@ -88,4 +91,28 @@ default Map<String, Map<String, Long>> getDistribution(List<DatasetFile> dataset
8891
}
8992
return distribution;
9093
}
94+
95+
/**
96+
* 获取数据集标签
97+
*
98+
* @param datasetTag 数据集标签
99+
* @return 标签
100+
*/
101+
@Named("getDatasetTags")
102+
default List<TagResponse> getDatasetTags(String datasetTag) {
103+
List<TagResponse> tagResponses = new ArrayList<>();
104+
if (StringUtils.isBlank(datasetTag)) {
105+
return tagResponses;
106+
}
107+
ObjectMapper mapper = new ObjectMapper();
108+
try {
109+
mapper.registerModule(new JavaTimeModule());
110+
// 可选:配置日期时间格式
111+
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
112+
return mapper.readValue(datasetTag, new TypeReference<List<Tag>>() {
113+
}).stream().map(TagConverter.INSTANCE::convertToResponse).toList();
114+
} catch (Exception e) {
115+
return Collections.emptyList();
116+
}
117+
}
91118
}

0 commit comments

Comments
 (0)