[update] 删除模型服务校验自动评估

This commit is contained in:
Liuyang 2025-01-21 10:43:29 +08:00
parent b04430cf09
commit 5bdc8fc8d5
3 changed files with 152 additions and 102 deletions

View File

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskauto;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.ModelAssessTaskAutoSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
import javax.validation.Valid;
import java.util.Map;
/**
* 模型评估任务 自动评估 Service 接口
@ -20,21 +22,21 @@ public interface ModelAssessTaskAutoService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createModelAssessTaskAuto(@Valid ModelAssessTaskAutoSaveReqVO createReqVO);
Long createModelAssessTaskAuto (@Valid ModelAssessTaskAutoSaveReqVO createReqVO);
/**
* 更新模型评估任务 自动评估
*
* @param updateReqVO 更新信息
*/
void updateModelAssessTaskAuto(@Valid ModelAssessTaskAutoSaveReqVO updateReqVO);
void updateModelAssessTaskAuto (@Valid ModelAssessTaskAutoSaveReqVO updateReqVO);
/**
* 删除模型评估任务 自动评估
*
* @param id 编号
*/
void deleteModelAssessTaskAuto(Long id);
void deleteModelAssessTaskAuto (Long id);
/**
* 获得模型评估任务 自动评估
@ -42,7 +44,7 @@ public interface ModelAssessTaskAutoService {
* @param id 编号
* @return 模型评估任务 自动评估
*/
ModelAssessTaskAutoRespVO getModelAssessTaskAuto(Long id);
ModelAssessTaskAutoRespVO getModelAssessTaskAuto (Long id);
/**
* 获得模型评估任务 自动评估分页
@ -50,13 +52,13 @@ public interface ModelAssessTaskAutoService {
* @param pageReqVO 分页查询
* @return 模型评估任务 自动评估分页
*/
PageResult<ModelAssessTaskAutoDO> getModelAssessTaskAutoPage(ModelAssessTaskAutoPageReqVO pageReqVO);
PageResult<ModelAssessTaskAutoDO> getModelAssessTaskAutoPage (ModelAssessTaskAutoPageReqVO pageReqVO);
PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1(ModelAssessTaskAutoPageReqVO pageReqVO);
PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1 (ModelAssessTaskAutoPageReqVO pageReqVO);
void dataBackup(Long id);
void dataBackup (Long id);
void cancelTheBackUp(Long id);
void cancelTheBackUp (Long id);
/**
* 根据 基础模型id 获取 自动评估
@ -65,4 +67,12 @@ public interface ModelAssessTaskAutoService {
* @return 自动评估
*/
Map<Long, String> getModelAssessmentTaskByModelId (Long baseModelId);
/**
* 根据 模型服务id 获取 自动评估
*
* @param modelServiceId 模型服务id
* @return 自动评估
*/
Map<Long, String> getModelAssessmentTaskByModelServiceId (Long modelServiceId);
}

View File

@ -1,52 +1,47 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskauto;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualRespVO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassessstoplist.ModelAssessStoplistDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskStoplistBackupDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskStoplistDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskautoinfo.ModelAssessTaskAutoInfoDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassessstoplist.ModelAssessStoplistMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskAutoBackupMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskAutoMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskStoplistBackupMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskStoplistMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
import cn.iocoder.yudao.module.llm.service.async.AsyncModelAccessManualService;
import cn.iocoder.yudao.module.llm.service.dataset.DatasetQuestionService;
import cn.iocoder.yudao.module.llm.service.modelassesstaskautoinfo.ModelAssessTaskAutoInfoBackupService;
import cn.iocoder.yudao.module.llm.service.modelassesstaskautoinfo.ModelAssessTaskAutoInfoService;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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 javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskauto.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskAutoDO;
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 cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskAutoMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.MODEL_ASSESS_TASK_AUTO_NOT_EXISTS;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.MODEL_ASSESS_TASK_STOPLIST_NOT_EXISTS;
/**
* 模型评估任务 自动评估 Service 实现类
@ -81,10 +76,8 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
private ModelAssessStoplistMapper modelAssessStoplistMapper;
@Override
public Long createModelAssessTaskAuto(ModelAssessTaskAutoSaveReqVO createReqVO) {
public Long createModelAssessTaskAuto (ModelAssessTaskAutoSaveReqVO createReqVO) {
// 插入
ModelAssessTaskAutoDO modelAssessTaskAuto = BeanUtils.toBean(createReqVO, ModelAssessTaskAutoDO.class);
modelAssessTaskAuto.setStatus(3);
@ -92,53 +85,52 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
String dimensions = String.join(",", dimension);
modelAssessTaskAuto.setDimension(dimensions);
LambdaUpdateWrapper<ModelAssessTaskAutoDO> eq = new LambdaUpdateWrapper<ModelAssessTaskAutoDO>().eq(ModelAssessTaskAutoDO::getTaskName, createReqVO.getTaskName());
if (modelAssessTaskAutoMapper.selectCount(eq) > 0){
throw exception(new ErrorCode(11000,"任务名称重复"));
if (modelAssessTaskAutoMapper.selectCount(eq) > 0) {
throw exception(new ErrorCode(11000, "任务名称重复"));
}
modelAssessTaskAutoMapper.insert(modelAssessTaskAuto);
List<ModelAssessTaskStoplistSaveReqVO> stoplists = createReqVO.getStoplists();
if (!CollectionUtils.isEmpty(stoplists)){
if (!CollectionUtils.isEmpty(stoplists)) {
stoplists.stream().forEach(stoplist -> {
stoplist.setTaskId(modelAssessTaskAuto.getId());
ModelAssessTaskStoplistDO modelAssessTaskStoplistDO = BeanUtils.toBean(stoplist,ModelAssessTaskStoplistDO.class);
ModelAssessTaskStoplistDO modelAssessTaskStoplistDO = BeanUtils.toBean(stoplist, ModelAssessTaskStoplistDO.class);
modelingTaskStoplistMapper.insert(modelAssessTaskStoplistDO);
});
}
asyncModelAccessManualService.auto(modelAssessTaskAuto,stoplists);
asyncModelAccessManualService.auto(modelAssessTaskAuto, stoplists);
// 返回
return modelAssessTaskAuto.getId();
}
@Override
public void updateModelAssessTaskAuto(ModelAssessTaskAutoSaveReqVO updateReqVO) {
public void updateModelAssessTaskAuto (ModelAssessTaskAutoSaveReqVO updateReqVO) {
// 校验存在
validateModelAssessTaskAutoExists(updateReqVO.getId());
// 更新
ModelAssessTaskAutoDO updateObj = BeanUtils.toBean(updateReqVO, ModelAssessTaskAutoDO.class);
List<ModelAssessTaskStoplistSaveReqVO> stoplists = updateReqVO.getStoplists();
if (!CollectionUtils.isEmpty(stoplists)){
List<Long> stopIds = stoplists.stream().filter(stoplist -> stoplist.getId() != null)
.map(stoplist -> stoplist.getId()).collect(Collectors.toList());
LambdaQueryWrapper<ModelAssessTaskStoplistDO> wrapper = new LambdaQueryWrapper<ModelAssessTaskStoplistDO>();
wrapper.eq(ModelAssessTaskStoplistDO::getTaskId,updateReqVO.getId());
if (!CollectionUtils.isEmpty(stopIds)){
wrapper.notIn(ModelAssessTaskStoplistDO::getId,stopIds);
}
modelingTaskStoplistMapper.delete(wrapper);
stoplists.stream().forEach(stoplist -> {
// stoplist.setTaskId(updateObj.getId());
ModelAssessTaskStoplistDO modelAssessTaskStoplistDO = BeanUtils.toBean(stoplist,ModelAssessTaskStoplistDO.class);
modelingTaskStoplistMapper.insertOrUpdate(modelAssessTaskStoplistDO);
});
}
if (!CollectionUtils.isEmpty(stoplists)) {
List<Long> stopIds = stoplists.stream().filter(stoplist -> stoplist.getId() != null)
.map(stoplist -> stoplist.getId()).collect(Collectors.toList());
LambdaQueryWrapper<ModelAssessTaskStoplistDO> wrapper = new LambdaQueryWrapper<ModelAssessTaskStoplistDO>();
wrapper.eq(ModelAssessTaskStoplistDO::getTaskId, updateReqVO.getId());
if (!CollectionUtils.isEmpty(stopIds)) {
wrapper.notIn(ModelAssessTaskStoplistDO::getId, stopIds);
}
modelingTaskStoplistMapper.delete(wrapper);
stoplists.stream().forEach(stoplist -> {
// stoplist.setTaskId(updateObj.getId());
ModelAssessTaskStoplistDO modelAssessTaskStoplistDO = BeanUtils.toBean(stoplist, ModelAssessTaskStoplistDO.class);
modelingTaskStoplistMapper.insertOrUpdate(modelAssessTaskStoplistDO);
});
}
modelAssessTaskAutoMapper.updateById(updateObj);
}
@Override
public void deleteModelAssessTaskAuto(Long id) {
public void deleteModelAssessTaskAuto (Long id) {
// 校验存在
validateModelAssessTaskAutoExists(id);
LambdaUpdateWrapper<ModelAssessTaskAutoDO> wrapper = new LambdaUpdateWrapper<>();
@ -148,16 +140,16 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
modelAssessTaskAutoMapper.update(null, wrapper);
}
private void validateModelAssessTaskAutoExists(Long id) {
private void validateModelAssessTaskAutoExists (Long id) {
if (modelAssessTaskAutoMapper.selectById(id) == null) {
throw exception(MODEL_ASSESS_TASK_AUTO_NOT_EXISTS);
}
}
@Override
public ModelAssessTaskAutoRespVO getModelAssessTaskAuto(Long id) {
public ModelAssessTaskAutoRespVO getModelAssessTaskAuto (Long id) {
ModelAssessTaskAutoDO modelAssessTaskAutoDO = modelAssessTaskAutoMapper.selectById(id);
ModelAssessTaskAutoRespVO result = BeanUtils.toBean(modelAssessTaskAutoDO, ModelAssessTaskAutoRespVO.class);
ModelAssessTaskAutoRespVO result = BeanUtils.toBean(modelAssessTaskAutoDO, ModelAssessTaskAutoRespVO.class);
String dimension = modelAssessTaskAutoDO.getDimension();
List<String> list = Arrays.asList(dimension.split(","));
result.setDimension(list);
@ -168,64 +160,65 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
List<ModelAssessTaskStoplistRespVO> stoplistRespVOS = BeanUtils.toBean(modelAssessTaskStoplistDOS, ModelAssessTaskStoplistRespVO.class);
// 提取id
List<Long> stoplistIds = modelAssessTaskStoplistDOS.stream().map(ModelAssessTaskStoplistDO::getStoplistId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(stoplistIds)){
if (!CollectionUtils.isEmpty(stoplistIds)) {
// 查询停用词表 将词表word返回
LambdaQueryWrapper<ModelAssessStoplistDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ModelAssessStoplistDO::getId,stoplistIds);
wrapper.in(ModelAssessStoplistDO::getId, stoplistIds);
List<ModelAssessStoplistDO> modelAssessStoplistDOs = modelAssessStoplistMapper.selectList(wrapper);
Map<Long, ModelAssessStoplistDO> longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(modelAssessStoplistDOs, ModelAssessStoplistDO::getId);
stoplistRespVOS.stream().forEach(stoplistRespVO -> {
ModelAssessStoplistDO modelAssessStoplistDO = longModelServiceDOMap.get(stoplistRespVO.getStoplistId());
if(modelAssessStoplistDO != null){
if (modelAssessStoplistDO != null) {
stoplistRespVO.setStoplistName(modelAssessStoplistDO.getWord());
}
});
}
result.setStoplists(stoplistRespVOS);
if(modelAssessTaskAutoDO.getModelType() == 0){
if (modelAssessTaskAutoDO.getModelType() == 0) {
ModelServiceDO modelServiceDO = modelServiceMapper.selectById(modelAssessTaskAutoDO.getModelService());
if (modelServiceDO != null){
if (modelServiceDO != null) {
result.setModelServiceName(modelServiceDO.getServiceName());
}
}else{
} else {
BaseModelDO baseModelDO = baseModelMapper.selectById(modelAssessTaskAutoDO.getModelService());
if (baseModelDO != null){
if (baseModelDO != null) {
result.setModelServiceName(baseModelDO.getModelName());
}
}
DatasetDO datasetDO = datasetMapper.selectById(modelAssessTaskAutoDO.getDataset());
if (datasetDO != null){
if (datasetDO != null) {
result.setDatasetName(datasetDO.getDatasetName());
}
return result;
}
@Override
public PageResult<ModelAssessTaskAutoDO> getModelAssessTaskAutoPage(ModelAssessTaskAutoPageReqVO pageReqVO) {
public PageResult<ModelAssessTaskAutoDO> getModelAssessTaskAutoPage (ModelAssessTaskAutoPageReqVO pageReqVO) {
return modelAssessTaskAutoMapper.selectPage(pageReqVO);
}
@Override
public PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1(ModelAssessTaskAutoPageReqVO pageReqVO) {
public PageResult<ModelAssessTaskAutoRespVO> getModelAssessTaskAutoPage1 (ModelAssessTaskAutoPageReqVO pageReqVO) {
PageResult<ModelAssessTaskAutoDO> modelAssessTaskAutoDOPageResult = modelAssessTaskAutoMapper.selectPage(pageReqVO);
PageResult<ModelAssessTaskAutoRespVO> result = BeanUtils.toBean(modelAssessTaskAutoDOPageResult, ModelAssessTaskAutoRespVO.class);
if (CollectionUtils.isNotEmpty(result.getList())){
if (CollectionUtils.isNotEmpty(result.getList())) {
// 我的模型获取校验
List<Long> serviceIds = modelAssessTaskAutoDOPageResult.getList().stream().
List<Long> serviceIds = modelAssessTaskAutoDOPageResult.getList().stream().
filter(modelAssessTaskManualDO -> modelAssessTaskManualDO.getModelType() == 0)
.map(ModelAssessTaskAutoDO::getModelService).collect(Collectors.toList());
Map<Long, ModelServiceDO> longModelServiceDOMap = null;
if (!CollectionUtils.isEmpty(serviceIds)){
LambdaQueryWrapper<ModelServiceDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ModelServiceDO::getId,serviceIds);
List<ModelServiceDO> modelServiceDOS = modelServiceMapper.selectList(wrapper);
longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(modelServiceDOS, ModelServiceDO::getId);
if (!CollectionUtils.isEmpty(serviceIds)) {
LambdaQueryWrapper<ModelServiceDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ModelServiceDO::getId, serviceIds);
List<ModelServiceDO> modelServiceDOS = modelServiceMapper.selectList(wrapper);
longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(modelServiceDOS, ModelServiceDO::getId);
}
// 人工模型获取校验
List<Long> serviceForeseeIds = modelAssessTaskAutoDOPageResult.getList().stream().
List<Long> serviceForeseeIds = modelAssessTaskAutoDOPageResult.getList().stream().
filter(modelAssessTaskManualDO -> modelAssessTaskManualDO.getModelType() == 1)
.map(ModelAssessTaskAutoDO::getModelService).collect(Collectors.toList());
Map<Long, BaseModelDO> serviceForeseeMaps = null;
@ -235,15 +228,15 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
serviceForeseeMaps = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(baseModelDOS, BaseModelDO::getId);
}
for (ModelAssessTaskAutoRespVO modelAssessTaskManualRespVO : result.getList()){
if (modelAssessTaskManualRespVO.getModelType() == 0 && longModelServiceDOMap != null){
for (ModelAssessTaskAutoRespVO modelAssessTaskManualRespVO : result.getList()) {
if (modelAssessTaskManualRespVO.getModelType() == 0 && longModelServiceDOMap != null) {
ModelServiceDO modelServiceDO = longModelServiceDOMap.get(modelAssessTaskManualRespVO.getModelService());
if(modelServiceDO != null){
if (modelServiceDO != null) {
modelAssessTaskManualRespVO.setModelServiceName(modelServiceDO.getServiceName());
}
}else if (modelAssessTaskManualRespVO.getModelType() == 1 && serviceForeseeMaps != null){
} else if (modelAssessTaskManualRespVO.getModelType() == 1 && serviceForeseeMaps != null) {
BaseModelDO baseModelDO = serviceForeseeMaps.get(modelAssessTaskManualRespVO.getModelService());
if(baseModelDO != null){
if (baseModelDO != null) {
modelAssessTaskManualRespVO.setModelServiceName(baseModelDO.getModelName());
}
}
@ -254,9 +247,9 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
}
@Override
public void dataBackup(Long id) {
public void dataBackup (Long id) {
ModelAssessTaskAutoDO modelAssessTaskAutoDO = modelAssessTaskAutoMapper.selectById(id);
if (modelAssessTaskAutoDO == null){
if (modelAssessTaskAutoDO == null) {
throw exception(MODEL_ASSESS_TASK_AUTO_NOT_EXISTS);
}
ModelAssessTaskAutoBackupDO bean = BeanUtils.toBean(modelAssessTaskAutoDO, ModelAssessTaskAutoBackupDO.class);
@ -265,7 +258,7 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
modelAssessTaskAutoMapper.updateById(modelAssessTaskAutoDO);
List<ModelAssessTaskStoplistDO> modelAssessTaskStoplistDOS = modelingTaskStoplistMapper.selectList(new LambdaQueryWrapper<ModelAssessTaskStoplistDO>().eq(ModelAssessTaskStoplistDO::getTaskId, id));
if (CollectionUtils.isEmpty(modelAssessTaskStoplistDOS)){
if (CollectionUtils.isEmpty(modelAssessTaskStoplistDOS)) {
throw exception(MODEL_ASSESS_TASK_STOPLIST_NOT_EXISTS);
}
List<ModelAssessTaskStoplistBackupDO> bean1 = BeanUtils.toBean(modelAssessTaskStoplistDOS, ModelAssessTaskStoplistBackupDO.class);
@ -283,7 +276,7 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
}
@Override
public void cancelTheBackUp(Long id) {
public void cancelTheBackUp (Long id) {
modelAssessTaskAutoBackupMapper.delete(new LambdaQueryWrapper<ModelAssessTaskAutoBackupDO>().eq(ModelAssessTaskAutoBackupDO::getId, id));
ModelAssessTaskAutoDO modelAssessTaskAutoDO = modelAssessTaskAutoMapper.selectById(id);
modelAssessTaskAutoDO.setBackupId(0L);
@ -292,28 +285,58 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic
}
/**
* 根据 基础模型id 获取 自动评估
* 通用的根据条件查询 ModelAssessTaskAutoDO 列表并转换为 Map 的方法
*
* @param baseModelId 基础模型id
* @return 自动评估
* @param condition 条件使用 BiFunction 接收 LambdaQueryWrapper 和参数并设置条件
* @param keyMapper 键映射函数 ModelAssessTaskAutoDO 映射为 Map 的键
* @param valueMapper 值映射函数 ModelAssessTaskAutoDO 映射为 Map 的值
* @param param 查询参数
* @return 自动评估的 Map 集合
*/
@Override
public Map<Long, String> getModelAssessmentTaskByModelId (Long baseModelId) {
if (baseModelId == null){
private Map<Long, String> getModelAssessmentTaskMap (BiFunction<LambdaQueryWrapper<ModelAssessTaskAutoDO>, Long, LambdaQueryWrapper<ModelAssessTaskAutoDO>> condition,
Function<ModelAssessTaskAutoDO, Long> keyMapper,
Function<ModelAssessTaskAutoDO, String> valueMapper,
Long param) {
if (param == null) {
return Collections.emptyMap();
}
List<ModelAssessTaskAutoDO> modelAssessTaskAutoDOS = modelAssessTaskAutoMapper.selectList(new LambdaQueryWrapper<ModelAssessTaskAutoDO>()
.eq(ModelAssessTaskAutoDO::getModelService, baseModelId)
// 2:进行中3推理中
.in(ModelAssessTaskAutoDO::getStatus, 2, 3));
LambdaQueryWrapper<ModelAssessTaskAutoDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper = condition.apply(queryWrapper, param);
queryWrapper.in(ModelAssessTaskAutoDO::getStatus, 2, 3);
if (CollectionUtils.isNotEmpty(modelAssessTaskAutoDOS)){
return modelAssessTaskAutoDOS.stream().collect(Collectors.toMap(ModelAssessTaskAutoDO::getId, ModelAssessTaskAutoDO::getTaskName));
List<ModelAssessTaskAutoDO> modelAssessTaskAutoDOS = modelAssessTaskAutoMapper.selectList(queryWrapper);
if (CollectionUtils.isEmpty(modelAssessTaskAutoDOS)) {
return Collections.emptyMap();
}
return Collections.emptyMap();
return modelAssessTaskAutoDOS.stream().collect(Collectors.toMap(keyMapper, valueMapper));
}
/**
* 根据基础模型 id 获取自动评估
*
* @param baseModelId 基础模型 id
* @return 自动评估的 Map 集合
*/
@Override
public Map<Long, String> getModelAssessmentTaskByModelId (Long baseModelId) {
return getModelAssessmentTaskMap((wrapper, id) -> wrapper.eq(ModelAssessTaskAutoDO::getModelService, id).eq(ModelAssessTaskAutoDO::getModelType, 1),
ModelAssessTaskAutoDO::getId, ModelAssessTaskAutoDO::getTaskName, baseModelId);
}
/**
* 根据模型服务 id 获取自动评估
*
* @param modelServiceId 模型服务 id
* @return 自动评估的 Map 集合
*/
@Override
public Map<Long, String> getModelAssessmentTaskByModelServiceId (Long modelServiceId) {
return getModelAssessmentTaskMap((wrapper, id) -> wrapper.eq(ModelAssessTaskAutoDO::getModelService, id).eq(ModelAssessTaskAutoDO::getModelType, 0),
ModelAssessTaskAutoDO::getId, ModelAssessTaskAutoDO::getTaskName, modelServiceId);
}
}

View File

@ -144,6 +144,9 @@ public class ModelServiceServiceImpl implements ModelServiceService {
validateModelUsesInApplicationCenter(id, modelName);
// 校验 基座模型 是否在 模型评估任务-人工 有使用 是否为进行中
validateModelUsesInModelAssessTaskManual(id, modelName);
// 校验 基座模型 是否在 模型评估任务-自动 有使用 是否为进行中推理中
validateModelUsesInModelAssessTaskAuto(id, modelName);
}
/**
@ -174,6 +177,20 @@ public class ModelServiceServiceImpl implements ModelServiceService {
}
}
/**
* 校验模型是否在 模型评估任务-自动 有使用
*
* @param id 模型ID
* @param modelName 模型名称
*/
private void validateModelUsesInModelAssessTaskAuto (Long id, String modelName) {
Map<Long, String> modelAssessmentTask = modelAssessTaskAutoService.getModelAssessmentTaskByModelServiceId(id);
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(modelAssessmentTask)) {
String msg = String.format("模型【%s】在模型评估-自动评估 %s 有正在进行的任务,请先结束任务", modelName, modelAssessmentTask.values());
throw exception(new ErrorCode(10003_003, msg));
}
}
private void validateModelServiceExists(Long id) {
if (modelServiceMapper.selectById(id) == null) {
throw exception(MODEL_SERVICE_NOT_EXISTS);