feat(ai): 添加样本文件后缀支持和标签分组功能
- 在AiSampleDO中新增suffix字段存储文件后缀 - 在AiSampleRespVO中添加suffix响应字段 - 修改文件上传逻辑分离文件名和后缀并分别存储 - 新增根据标签ID获取分组列表的API接口 - 在标签服务中实现分组关联查询功能 - 修复标签分组关联关系创建和更新逻辑 - 优化标签分页查询添加软删除过滤条件
This commit is contained in:
@@ -2,6 +2,7 @@ package com.tashow.cloud.ai.controller.admin.aisample;
|
||||
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagListRespVO;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagPageReqVO;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagGroupRespVO;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagSaveReqVO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagDO;
|
||||
import com.tashow.cloud.ai.service.aisample.AiSampleTagService;
|
||||
@@ -66,6 +67,14 @@ public class AiSampleTagController {
|
||||
return success(BeanUtils.toBean(aiSampleTagService.getAiSampleTagList(), AiSampleTagListRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/group-list-by-tag-id")
|
||||
@Operation(summary = "根据标签 id 获取分组")
|
||||
@Parameter(name = "tagId", description = "标签 id", required = true)
|
||||
@PermitAll
|
||||
public CommonResult<List<AiSampleTagGroupRespVO>> getGroupListByTagId(@RequestParam("tagId") Long tagId) {
|
||||
return success(BeanUtils.toBean(aiSampleTagService.getGroupListByTagId(tagId), AiSampleTagGroupRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得样本标签库分页")
|
||||
// @PreAuthorize("@ss.hasPermission('ai:sampleTag:query')")
|
||||
|
||||
@@ -47,4 +47,10 @@ public class AiSampleRespVO {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
@Schema(description = "文件后缀")
|
||||
private String suffix;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -59,5 +59,9 @@ public class AiSampleDO extends BaseDO {
|
||||
* 样本注释
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
*后缀)
|
||||
*/
|
||||
private String suffix;
|
||||
|
||||
}
|
||||
@@ -28,6 +28,7 @@ public interface AiSampleTagMapper extends BaseMapperX<AiSampleTagDO> {
|
||||
"FROM tz_ai_sample_tag t " +
|
||||
"INNER JOIN tz_ai_sample_tag_group_relate r ON t.id = r.sample_tag_id " +
|
||||
"<where>" +
|
||||
"AND t.deleted =0"+
|
||||
" <if test=\"pageReqVO.groupId != null\">" +
|
||||
" AND r.sample_tag_group_id = #{pageReqVO.groupId}" +
|
||||
" </if>" +
|
||||
|
||||
@@ -65,11 +65,14 @@ public class AiSampleServiceImpl implements AiSampleService {
|
||||
//保存样本信息
|
||||
AiSampleDO aiSampleDO = new AiSampleDO();
|
||||
aiSampleDO.setSampleFilePath(filePath);
|
||||
aiSampleDO.setSampleName(file.getOriginalFilename());
|
||||
String filename = file.getOriginalFilename();
|
||||
String displayName = filename.substring(0, filename.lastIndexOf('.'));
|
||||
aiSampleDO.setSampleName(displayName);
|
||||
aiSampleDO.setSuffix(filename.substring(filename.lastIndexOf('.') + 1));
|
||||
aiSampleDO.setSampleMineType(file.getContentType());
|
||||
aiSampleDO.setSampleSize(file.getSize());
|
||||
aiSampleMapper.insert(aiSampleDO);
|
||||
urls.add(new AiSampleFileRespVO().setFileUrl(filePath).setFileName(file.getOriginalFilename()));
|
||||
urls.add(new AiSampleFileRespVO().setFileUrl(filePath).setFileName(filename).setDisplayName(displayName));
|
||||
}
|
||||
// 返回
|
||||
return urls;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.tashow.cloud.ai.service.aisample;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagPageReqVO;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagSaveReqVO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagDO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagGroupDO;
|
||||
import com.tashow.cloud.common.pojo.PageResult;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
@@ -58,4 +59,12 @@ public interface AiSampleTagService {
|
||||
* @return
|
||||
*/
|
||||
List<AiSampleTagDO> getAiSampleTagList();
|
||||
|
||||
/**
|
||||
* 根据标签 id 获取关联分组列表
|
||||
*
|
||||
* @param tagId 标签 id
|
||||
* @return 分组列表
|
||||
*/
|
||||
List<AiSampleTagGroupDO> getGroupListByTagId(Long tagId);
|
||||
}
|
||||
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagPageReqVO;
|
||||
import com.tashow.cloud.ai.controller.admin.aisample.vo.AiSampleTagSaveReqVO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagDO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagGroupDO;
|
||||
import com.tashow.cloud.ai.dal.dataobject.aisample.AiSampleTagGroupRelateDO;
|
||||
import com.tashow.cloud.ai.dal.mysql.aisample.AiSampleTagGroupMapper;
|
||||
import com.tashow.cloud.ai.dal.mysql.aisample.AiSampleTagGroupRelateMapper;
|
||||
import com.tashow.cloud.ai.dal.mysql.aisample.AiSampleTagMapper;
|
||||
import com.tashow.cloud.common.pojo.PageResult;
|
||||
@@ -17,6 +19,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 样本标签库 Service 实现类
|
||||
@@ -30,6 +33,8 @@ public class AiSampleTagServiceImpl implements AiSampleTagService {
|
||||
@Resource
|
||||
private AiSampleTagMapper aiSampleTagMapper;
|
||||
@Resource
|
||||
private AiSampleTagGroupMapper aiSampleTagGroupMapper;
|
||||
@Resource
|
||||
private AiSampleTagGroupRelateMapper tagGroupRelateMapper;
|
||||
|
||||
@Override
|
||||
@@ -41,7 +46,6 @@ public class AiSampleTagServiceImpl implements AiSampleTagService {
|
||||
List<AiSampleTagGroupRelateDO> tagGroupRelateDOS = new ArrayList<>();
|
||||
for (Long groupId : createReqVO.getGroupIds()) {
|
||||
AiSampleTagGroupRelateDO tagGroupRelateDO = new AiSampleTagGroupRelateDO();
|
||||
tagGroupRelateDO.setSampleTagId(createReqVO.getId());
|
||||
tagGroupRelateDO.setSampleTagGroupId(groupId);
|
||||
tagGroupRelateDO.setSampleTagId(aiSampleTag.getId());
|
||||
tagGroupRelateDOS.add(tagGroupRelateDO);
|
||||
@@ -58,11 +62,13 @@ public class AiSampleTagServiceImpl implements AiSampleTagService {
|
||||
// 更新
|
||||
AiSampleTagDO updateObj = BeanUtils.toBean(updateReqVO, AiSampleTagDO.class);
|
||||
aiSampleTagMapper.updateById(updateObj);
|
||||
//删除所有关联
|
||||
tagGroupRelateMapper.delete(new LambdaQueryWrapper<AiSampleTagGroupRelateDO>().eq(AiSampleTagGroupRelateDO::getSampleTagId, updateReqVO.getId()));
|
||||
List<Long> groupIds = updateReqVO.getGroupIds();
|
||||
// 删除该标签的所有旧关联
|
||||
tagGroupRelateMapper.delete(new LambdaQueryWrapper<AiSampleTagGroupRelateDO>()
|
||||
.eq(AiSampleTagGroupRelateDO::getSampleTagId, updateReqVO.getId()));
|
||||
//插入关联
|
||||
List<AiSampleTagGroupRelateDO> tagGroupRelateDOS = new ArrayList<>();
|
||||
for (Long groupId : updateReqVO.getGroupIds()) {
|
||||
for (Long groupId : groupIds) {
|
||||
AiSampleTagGroupRelateDO tagGroupRelateDO = new AiSampleTagGroupRelateDO();
|
||||
tagGroupRelateDO.setSampleTagId(updateReqVO.getId());
|
||||
tagGroupRelateDO.setSampleTagGroupId(groupId);
|
||||
@@ -100,4 +106,17 @@ public class AiSampleTagServiceImpl implements AiSampleTagService {
|
||||
public List<AiSampleTagDO> getAiSampleTagList() {
|
||||
return aiSampleTagMapper.selectList(new LambdaQueryWrapper<AiSampleTagDO>().orderByDesc(AiSampleTagDO::getId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AiSampleTagGroupDO> getGroupListByTagId(Long tagId) {
|
||||
List<AiSampleTagGroupRelateDO> relateList = tagGroupRelateMapper.selectList(
|
||||
new LambdaQueryWrapper<AiSampleTagGroupRelateDO>()
|
||||
.eq(AiSampleTagGroupRelateDO::getSampleTagId, tagId));
|
||||
List<Long> groupIds = relateList.stream()
|
||||
.map(AiSampleTagGroupRelateDO::getSampleTagGroupId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
return aiSampleTagGroupMapper.selectList(
|
||||
new LambdaQueryWrapper<AiSampleTagGroupDO>().in(AiSampleTagGroupDO::getId, groupIds));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user