增加文件标注

This commit is contained in:
limin 2024-12-30 13:23:07 +08:00
parent 0ee4f9d26a
commit db01dc8782
20 changed files with 510 additions and 31 deletions

View File

@ -0,0 +1,97 @@
package cn.iocoder.yudao.module.llm.controller.admin.dataset;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
import cn.iocoder.yudao.module.llm.service.dataset.DatasetAnswerService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
/*@Tag(name = "管理后台 - 数据集数据问题标注内容")
@RestController
@RequestMapping("/llm/dataset-answer")
@Validated*/
public class DatasetAnswerController {
@Resource
private DatasetAnswerService datasetAnswerService;
@PostMapping("/create")
@Operation(summary = "创建数据集数据问题标注内容")
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:create')")
public CommonResult<Long> createDatasetAnswer(@Valid @RequestBody DatasetAnswerSaveReqVO createReqVO) {
return success(datasetAnswerService.createDatasetAnswer(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新数据集数据问题标注内容")
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:update')")
public CommonResult<Boolean> updateDatasetAnswer(@Valid @RequestBody DatasetAnswerSaveReqVO updateReqVO) {
datasetAnswerService.updateDatasetAnswer(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除数据集数据问题标注内容")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:delete')")
public CommonResult<Boolean> deleteDatasetAnswer(@RequestParam("id") Long id) {
datasetAnswerService.deleteDatasetAnswer(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得数据集数据问题标注内容")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:query')")
public CommonResult<DatasetAnswerRespVO> getDatasetAnswer(@RequestParam("id") Long id) {
DatasetAnswerDO datasetAnswer = datasetAnswerService.getDatasetAnswer(id);
return success(BeanUtils.toBean(datasetAnswer, DatasetAnswerRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得数据集数据问题标注内容分页")
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:query')")
public CommonResult<PageResult<DatasetAnswerRespVO>> getDatasetAnswerPage(@Valid DatasetAnswerPageReqVO pageReqVO) {
PageResult<DatasetAnswerDO> pageResult = datasetAnswerService.getDatasetAnswerPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DatasetAnswerRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出数据集数据问题标注内容 Excel")
@PreAuthorize("@ss.hasPermission('llm:dataset-answer:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDatasetAnswerExcel(@Valid DatasetAnswerPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<DatasetAnswerDO> list = datasetAnswerService.getDatasetAnswerPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "数据集数据问题标注内容.xls", "数据", DatasetAnswerRespVO.class,
BeanUtils.toBean(list, DatasetAnswerRespVO.class));
}
}

View File

@ -31,11 +31,11 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
/*
@Tag(name = "管理后台 - 数据集数据文件")
@RestController
@RequestMapping("/llm/dataset-files")
@Validated
@Validated*/
public class DatasetFilesController {
@Resource

View File

@ -40,48 +40,51 @@ public class DatasetQuestionController {
@Resource
private DatasetQuestionService datasetQuestionService;
@PostMapping("/create")
@Operation(summary = "创建数据集数据问题")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:create')")
public CommonResult<Long> createDatasetQuestion(@Valid @RequestBody DatasetQuestionSaveReqVO createReqVO) {
return success(datasetQuestionService.createDatasetQuestion(createReqVO));
@PutMapping("data-anno")
@Operation(summary = "保存标注接口")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:anno')")
public CommonResult<Boolean> updateDatasetQuestionDataAnno(@Valid @RequestBody List<DatasetQuestionSaveReqVO> updateReqVOS) {
datasetQuestionService.updateDatasetQuestionDataAnno(updateReqVOS);
return success(true);
}
@GetMapping("/page")
@Operation(summary = "获得数据集数据问题分页")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:query')")
public CommonResult<PageResult<DatasetQuestionRespVO>> getDatasetQuestionPage(@Valid DatasetQuestionPageReqVO pageReqVO) {
PageResult<DatasetQuestionRespVO> pageResult = datasetQuestionService.getDatasetQuestionPage(pageReqVO);
return success(pageResult);
}
@PutMapping("/update")
/* @PutMapping("/update")
@Operation(summary = "更新数据集数据问题")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:update')")
public CommonResult<Boolean> updateDatasetQuestion(@Valid @RequestBody DatasetQuestionSaveReqVO updateReqVO) {
datasetQuestionService.updateDatasetQuestion(updateReqVO);
return success(true);
}
}*/
@DeleteMapping("/delete")
/* @DeleteMapping("/delete")
@Operation(summary = "删除数据集数据问题")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('llm:dataset-question:delete')")
public CommonResult<Boolean> deleteDatasetQuestion(@RequestParam("id") Long id) {
datasetQuestionService.deleteDatasetQuestion(id);
return success(true);
}
}*/
@GetMapping("/get")
/* @GetMapping("/get")
@Operation(summary = "获得数据集数据问题")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:query')")
public CommonResult<DatasetQuestionRespVO> getDatasetQuestion(@RequestParam("id") Long id) {
DatasetQuestionDO datasetQuestion = datasetQuestionService.getDatasetQuestion(id);
return success(BeanUtils.toBean(datasetQuestion, DatasetQuestionRespVO.class));
}
}*/
@GetMapping("/page")
@Operation(summary = "获得数据集数据问题分页")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:query')")
public CommonResult<PageResult<DatasetQuestionRespVO>> getDatasetQuestionPage(@Valid DatasetQuestionPageReqVO pageReqVO) {
PageResult<DatasetQuestionDO> pageResult = datasetQuestionService.getDatasetQuestionPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DatasetQuestionRespVO.class));
}
@GetMapping("/export-excel")
/* @GetMapping("/export-excel")
@Operation(summary = "导出数据集数据问题 Excel")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:export')")
@ApiAccessLog(operateType = EXPORT)
@ -92,6 +95,13 @@ public class DatasetQuestionController {
// 导出 Excel
ExcelUtils.write(response, "数据集数据问题.xls", "数据", DatasetQuestionRespVO.class,
BeanUtils.toBean(list, DatasetQuestionRespVO.class));
}
}*/
/* @PostMapping("/create")
@Operation(summary = "创建数据集数据问题")
@PreAuthorize("@ss.hasPermission('llm:dataset-question:create')")
public CommonResult<Long> createDatasetQuestion(@Valid @RequestBody DatasetQuestionSaveReqVO createReqVO) {
return success(datasetQuestionService.createDatasetQuestion(createReqVO));
}*/
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.llm.controller.admin.dataset.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 数据集数据问题标注内容分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DatasetAnswerPageReqVO extends PageParam {
@Schema(description = "数据集ID", example = "31073")
private Long datasetId;
@Schema(description = "数据文件ID", example = "21597")
private Long datasetFilesId;
@Schema(description = "问题ID", example = "23725")
private Long questionId;
@Schema(description = "标注内容")
private String answer;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.llm.controller.admin.dataset.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 数据集数据问题标注内容 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DatasetAnswerRespVO {
@Schema(description = "数据集问题ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32153")
@ExcelProperty("数据集问题ID")
private Long id;
@Schema(description = "数据集ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31073")
@ExcelProperty("数据集ID")
private Long datasetId;
@Schema(description = "数据文件ID", example = "21597")
@ExcelProperty("数据文件ID")
private Long datasetFilesId;
@Schema(description = "问题ID", example = "23725")
@ExcelProperty("问题ID")
private Long questionId;
@Schema(description = "标注内容")
@ExcelProperty("标注内容")
private String answer;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.llm.controller.admin.dataset.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 数据集数据问题标注内容新增/修改 Request VO")
@Data
public class DatasetAnswerSaveReqVO {
@Schema(description = "数据集问题ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32153")
private Long id;
@Schema(description = "数据集ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31073")
@NotNull(message = "数据集ID不能为空")
private Long datasetId;
@Schema(description = "数据文件ID", example = "21597")
private Long datasetFilesId;
@Schema(description = "问题ID", example = "23725")
private Long questionId;
@Schema(description = "标注内容")
private String answer;
}

View File

@ -47,6 +47,6 @@ public class DatasetPageReqVO extends PageParam {
private Long dataLength;
@Schema(description = "标注进度", example = "20")
private Integer annotateProgress;
private String annotateProgress;
}

View File

@ -36,4 +36,7 @@ public class DatasetQuestionRespVO {
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "标注内容")
private List<DatasetAnswerRespVO> datasetAnswerRespVO;
}

View File

@ -24,5 +24,7 @@ public class DatasetQuestionSaveReqVO {
@Schema(description = "标注状态使用字典llm_dataset_mark_status", example = "1")
private Integer status;
@Schema(description = "标注内容")
private List<DatasetAnswerSaveReqVO> datasetAnswerSaveReqVO;
}

View File

@ -55,7 +55,7 @@ public class DatasetRespVO {
private Long dataLength;
@Schema(description = "标注进度", example = "20")
private Integer annotateProgress;
private String annotateProgress;
@Schema(description = "数据集数据文件", example = "[]")
private List<DatasetQuestionRespVO> datasetQuestionRespVOS;

View File

@ -42,7 +42,7 @@ public class DatasetSaveReqVO {
private Long dataLength;
@Schema(description = "标注进度", example = "20")
private Integer annotateProgress;
private String annotateProgress;
@Schema(description = "数据集数据文件", example = "[]")
private List<DatasetFilesSaveReqVO> datasetFiles;

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.llm.dal.dataobject.dataset;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 数据集数据问题标注内容 DO
*
* @author 华大大模型
*/
@TableName("llm_dataset_answer")
@KeySequence("llm_dataset_answer_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DatasetAnswerDO extends BaseDO {
/**
* 数据集问题ID
*/
@TableId
private Long id;
/**
* 数据集ID
*/
private Long datasetId;
/**
* 数据文件ID
*/
private Long datasetFilesId;
/**
* 问题ID
*/
private Long questionId;
/**
* 标注内容
*/
private String answer;
}

View File

@ -66,6 +66,6 @@ public class DatasetDO extends BaseDO {
/**
* 标注进度
*/
private Integer annotateProgress;
private String annotateProgress;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.llm.dal.mysql.dataset;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 数据集数据问题标注内容 Mapper
*
* @author 华大大模型
*/
@Mapper
public interface DatasetAnswerMapper extends BaseMapperX<DatasetAnswerDO> {
default PageResult<DatasetAnswerDO> selectPage(DatasetAnswerPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DatasetAnswerDO>()
.eqIfPresent(DatasetAnswerDO::getDatasetId, reqVO.getDatasetId())
.eqIfPresent(DatasetAnswerDO::getDatasetFilesId, reqVO.getDatasetFilesId())
.eqIfPresent(DatasetAnswerDO::getQuestionId, reqVO.getQuestionId())
.eqIfPresent(DatasetAnswerDO::getAnswer, reqVO.getAnswer())
.betweenIfPresent(DatasetAnswerDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(DatasetAnswerDO::getId));
}
}

View File

@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* 数据集 Mapper
@ -31,4 +33,6 @@ public interface DatasetMapper extends BaseMapperX<DatasetDO> {
.orderByDesc(DatasetDO::getId));
}
@Update("update llm_dataset set annotate_progress = CONCAT(#{formattedRatio}, '%') where id = #{datasetId}")
void updateProcess(@Param("formattedRatio") String formattedRatio, @Param("datasetId") Long datasetId);
}

View File

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.llm.service.dataset;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
/**
* 数据集数据问题标注内容 Service 接口
*
* @author 华大大模型
*/
public interface DatasetAnswerService {
/**
* 创建数据集数据问题标注内容
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createDatasetAnswer(@Valid DatasetAnswerSaveReqVO createReqVO);
/**
* 更新数据集数据问题标注内容
*
* @param updateReqVO 更新信息
*/
void updateDatasetAnswer(@Valid DatasetAnswerSaveReqVO updateReqVO);
/**
* 删除数据集数据问题标注内容
*
* @param id 编号
*/
void deleteDatasetAnswer(Long id);
/**
* 获得数据集数据问题标注内容
*
* @param id 编号
* @return 数据集数据问题标注内容
*/
DatasetAnswerDO getDatasetAnswer(Long id);
/**
* 获得数据集数据问题标注内容分页
*
* @param pageReqVO 分页查询
* @return 数据集数据问题标注内容分页
*/
PageResult<DatasetAnswerDO> getDatasetAnswerPage(DatasetAnswerPageReqVO pageReqVO);
}

View File

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.llm.service.dataset;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetAnswerMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
/**
* 数据集数据问题标注内容 Service 实现类
*
* @author 华大大模型
*/
@Service
@Validated
public class DatasetAnswerServiceImpl implements DatasetAnswerService {
@Resource
private DatasetAnswerMapper datasetAnswerMapper;
@Override
public Long createDatasetAnswer(DatasetAnswerSaveReqVO createReqVO) {
// 插入
DatasetAnswerDO datasetAnswer = BeanUtils.toBean(createReqVO, DatasetAnswerDO.class);
datasetAnswerMapper.insert(datasetAnswer);
// 返回
return datasetAnswer.getId();
}
@Override
public void updateDatasetAnswer(DatasetAnswerSaveReqVO updateReqVO) {
// 校验存在
validateDatasetAnswerExists(updateReqVO.getId());
// 更新
DatasetAnswerDO updateObj = BeanUtils.toBean(updateReqVO, DatasetAnswerDO.class);
datasetAnswerMapper.updateById(updateObj);
}
@Override
public void deleteDatasetAnswer(Long id) {
// 校验存在
validateDatasetAnswerExists(id);
// 删除
datasetAnswerMapper.deleteById(id);
}
private void validateDatasetAnswerExists(Long id) {
if (datasetAnswerMapper.selectById(id) == null) {
throw exception(DATASET_ANSWER_NOT_EXISTS);
}
}
@Override
public DatasetAnswerDO getDatasetAnswer(Long id) {
return datasetAnswerMapper.selectById(id);
}
@Override
public PageResult<DatasetAnswerDO> getDatasetAnswerPage(DatasetAnswerPageReqVO pageReqVO) {
return datasetAnswerMapper.selectPage(pageReqVO);
}
}

View File

@ -5,6 +5,7 @@ import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetQuestionDO;
@ -51,6 +52,7 @@ public interface DatasetQuestionService {
* @param pageReqVO 分页查询
* @return 数据集数据问题分页
*/
PageResult<DatasetQuestionDO> getDatasetQuestionPage(DatasetQuestionPageReqVO pageReqVO);
PageResult<DatasetQuestionRespVO> getDatasetQuestionPage(DatasetQuestionPageReqVO pageReqVO);
void updateDatasetQuestionDataAnno(List<DatasetQuestionSaveReqVO> updateReqVOS);
}

View File

@ -1,15 +1,21 @@
package cn.iocoder.yudao.module.llm.service.dataset;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetQuestionDO;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetAnswerMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetQuestionMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@ -29,6 +35,10 @@ public class DatasetQuestionServiceImpl implements DatasetQuestionService {
@Resource
private DatasetQuestionMapper datasetQuestionMapper;
@Resource
private DatasetAnswerMapper datasetAnswerMapper;
@Resource
private DatasetMapper datasetMapper;
@Override
public Long createDatasetQuestion(DatasetQuestionSaveReqVO createReqVO) {
@ -68,8 +78,38 @@ public class DatasetQuestionServiceImpl implements DatasetQuestionService {
}
@Override
public PageResult<DatasetQuestionDO> getDatasetQuestionPage(DatasetQuestionPageReqVO pageReqVO) {
return datasetQuestionMapper.selectPage(pageReqVO);
public PageResult<DatasetQuestionRespVO> getDatasetQuestionPage(DatasetQuestionPageReqVO pageReqVO) {
PageResult<DatasetQuestionDO> datasetQuestionDOPageResult = datasetQuestionMapper.selectPage(pageReqVO);
PageResult<DatasetQuestionRespVO> result = BeanUtils.toBean(datasetQuestionDOPageResult, DatasetQuestionRespVO.class);
if (CollectionUtils.isNotEmpty(result.getList())){
result.getList().forEach(item -> {
List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class)
.eq(DatasetAnswerDO::getQuestionId, item.getId()));
item.setDatasetAnswerRespVO(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class));
});
}
return result;
}
@Override
public void updateDatasetQuestionDataAnno(List<DatasetQuestionSaveReqVO> updateReqVOS) {
updateReqVOS.forEach(updateReqVO -> {
DatasetQuestionDO datasetQuestionDO = BeanUtils.toBean(updateReqVO, DatasetQuestionDO.class);
datasetQuestionMapper.updateById(datasetQuestionDO);
List<DatasetAnswerSaveReqVO> datasetAnswerSaveReqVO = updateReqVO.getDatasetAnswerSaveReqVO();
List<DatasetAnswerDO> datasetAnswerDOS = BeanUtils.toBean(datasetAnswerSaveReqVO, DatasetAnswerDO.class);
datasetAnswerMapper.insertOrUpdate(datasetAnswerDOS);
});
// 标注进度修改
LambdaQueryWrapper<DatasetQuestionDO> wrapper = new LambdaQueryWrapper<DatasetQuestionDO>()
.eq(DatasetQuestionDO::getDatasetId, updateReqVOS.get(0).getDatasetId());
Long sumCount = datasetQuestionMapper.selectCount(wrapper);
wrapper.eq(DatasetQuestionDO::getStatus,1);
Long annoCount = datasetQuestionMapper.selectCount(wrapper);
double ratio = sumCount == 0 ? 0 : ((double) annoCount / sumCount) *100;
String formattedRatio = String.format("%.2f", ratio);
datasetMapper.updateProcess(formattedRatio, updateReqVOS.get(0).getDatasetId());
}
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetAnswerMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>