[update] 根据不同ID获取应用方法修改

This commit is contained in:
Liuyang 2025-01-20 15:27:46 +08:00
parent 250c2320cd
commit 7d3af03f3e

View File

@ -27,10 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -304,28 +301,31 @@ public class ApplicationServiceImpl implements ApplicationService {
* @param condition 条件使用 BiFunction 接收 LambdaQueryWrapper 和参数并设置条件
* @param keyMapper ApplicationDO 对象映射为 Map 的键
* @param valueMapper ApplicationDO 对象映射为 Map 的值
* @param param 查询参数
* @param params 查询参数数组
* @return 应用的 Map 集合
*/
private Map<Long, String> getApplicationMap (BiFunction<LambdaQueryWrapper<ApplicationDO>, Long, LambdaQueryWrapper<ApplicationDO>> condition, Function<ApplicationDO, Long> keyMapper, Function<ApplicationDO, String> valueMapper, Long param) {
private Map<Long, String> getApplicationMap (BiFunction<LambdaQueryWrapper<ApplicationDO>, Object[], LambdaQueryWrapper<ApplicationDO>> condition,
Function<ApplicationDO, Long> keyMapper,
Function<ApplicationDO, String> valueMapper,
Object[] params) {
if (param == null) {
if (params == null || params.length == 0) {
return Collections.emptyMap();
}
// 查询符合条件的应用
LambdaQueryWrapper<ApplicationDO> queryWrapper = new LambdaQueryWrapper<>();
// 设置条件
queryWrapper = condition.apply(queryWrapper, param);
queryWrapper = condition.apply(queryWrapper, params);
log.info("condition: {}", queryWrapper.getSqlSegment());
List<ApplicationDO> applications = applicationMapper.selectList(queryWrapper);
if (CollectionUtils.isEmpty(applications)) {
return Collections.emptyMap();
}
List<Object> paramsList = Arrays.asList(params);
log.info("param: {}", param);
log.info("params: {}",paramsList );
return applications.stream().collect(Collectors.toMap(keyMapper, valueMapper));
}
@ -338,8 +338,11 @@ public class ApplicationServiceImpl implements ApplicationService {
*/
@Override
public Map<Long, String> getApplicationByLabelId (Long labelId) {
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getAppLabel, id),
ApplicationDO::getId, ApplicationDO::getAppName, labelId);
return getApplicationMap((wrapper, params) -> {
Long id = (Long)params[0];
return wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getAppLabel, id);
}, ApplicationDO::getId, ApplicationDO::getAppName, new Object[] {labelId});
}
@ -351,8 +354,10 @@ public class ApplicationServiceImpl implements ApplicationService {
*/
@Override
public Map<Long, String> validatePromptTemplateUsesInApp (Long templateId) {
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getPromptId, id),
ApplicationDO::getId, ApplicationDO::getAppName, templateId);
return getApplicationMap((wrapper, params) -> {
Long id = (Long)params[0];
return wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getPromptId, id);
}, ApplicationDO::getId, ApplicationDO::getAppName, new Object[] {templateId});
}
@ -364,8 +369,10 @@ public class ApplicationServiceImpl implements ApplicationService {
*/
@Override
public Map<Long, String> getApplicationByKnowledgeId (Long knowledgeId) {
return getApplicationMap((wrapper, id) -> wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getModelServiceId, id),
ApplicationDO::getId, ApplicationDO::getAppName, knowledgeId);
return getApplicationMap((wrapper, params) -> {
Long id = (Long)params[0];
return wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName).eq(ApplicationDO::getModelServiceId, id);
}, ApplicationDO::getId, ApplicationDO::getAppName, new Object[] {knowledgeId});
}
/**
@ -376,7 +383,23 @@ public class ApplicationServiceImpl implements ApplicationService {
*/
@Override
public Map<Long, String> getApplicationByBaseModelId (Long baseModelId) {
return Collections.emptyMap();
return getApplicationByBaseModelIdAndType(baseModelId, 1);
}
/**
* 根据 模型id 和模型类型 获取 应用
*
* @param modelId 模型id
* @param appModelType 应用模型类型 1:预制模型 2:我的模型
* @return 应用
*/
public Map<Long, String> getApplicationByBaseModelIdAndType (Long modelId, Integer appModelType) {
return getApplicationMap((wrapper, params) -> {
Long id = (Long)params[0];
Integer type = (Integer)params[1];
return wrapper.select(ApplicationDO::getId, ApplicationDO::getAppName)
.eq(ApplicationDO::getAppModel, id)
.eq(ApplicationDO::getAppModelType, type);
}, ApplicationDO::getId, ApplicationDO::getAppName, new Object[] {modelId, appModelType});
}
}