From e2f6967e48cedeab379ea87931cbae1435ef44a0 Mon Sep 17 00:00:00 2001 From: sunxiqing <2240398334@qq.com> Date: Tue, 19 Aug 2025 17:56:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(llm):=20=E4=BC=98=E5=8C=96=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E8=AF=84=E4=BC=B0=E7=BB=B4=E5=BA=A6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增自动评估维度正在使用中不可删除的错误码 - 在删除模型评估维度时增加使用中的维度检查- 优化本地文件客户端的上传方法,使用切片上传 --- .../core/client/local/LocalFileClient.java | 41 +++++++++++++++---- .../module/llm/enums/ErrorCodeConstants.java | 1 + .../ModelAssessStoplistServiceImpl.java | 13 +++++- .../ModelAssessTaskAutoServiceImpl.java | 4 ++ 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/local/LocalFileClient.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/local/LocalFileClient.java index a9196903e..05ad5f49c 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/local/LocalFileClient.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/local/LocalFileClient.java @@ -4,6 +4,8 @@ import cn.hutool.core.io.FileUtil; import cn.iocoder.yudao.module.infra.framework.file.core.client.AbstractFileClient; import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; /** * 本地文件客户端 @@ -24,15 +26,40 @@ public class LocalFileClient extends AbstractFileClient { } } - @Override - public String upload(byte[] content, String path, String type) { - // 执行写入 - String filePath = getFilePath(path); - FileUtil.writeBytes(content, filePath); - // 拼接返回路径 - return super.formatFileUrl(config.getDomain(), path); +// @Override +// public String upload(byte[] content, String path, String type) { +// // 执行写入 +// String filePath = getFilePath(path); +// FileUtil.writeBytes(content, filePath); +// // 拼接返回路径 +// return super.formatFileUrl(config.getDomain(), path); +// } +@Override +public String upload(byte[] content, String path, String type) { + String filePath = getFilePath(path); + + int partSize = 5 * 1024 * 1024; // 每片 5MB + int totalParts = (int) Math.ceil((double) content.length / partSize); + + // 确保目录存在 + FileUtil.mkdir(new File(filePath).getParentFile()); + + try (RandomAccessFile raf = new RandomAccessFile(filePath, "rw")) { + for (int partNumber = 0; partNumber < totalParts; partNumber++) { + int start = partNumber * partSize; + int end = Math.min(start + partSize, content.length); + raf.seek(start); + raf.write(content, start, end - start); + } + } catch (IOException e) { + throw new RuntimeException("切片上传失败: " + e.getMessage(), e); } + // 拼接返回路径 + return super.formatFileUrl(config.getDomain(), path); +} + + @Override public void delete(String path) { String filePath = getFilePath(path); diff --git a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java index fb4a79563..617bdc11f 100644 --- a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java +++ b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java @@ -30,6 +30,7 @@ public interface ErrorCodeConstants { ErrorCode MODEL_ASSESS_TASK_STOPLIST_NOT_EXISTS = new ErrorCode(10013, "自动评估维度不存在"); ErrorCode MODEL_ASSESS_STOPLIST_NOT_EXISTS = new ErrorCode(10014, "自动评估维度不存在"); + ErrorCode THE_AUTO_EVALUATE_DIMENSION_IS_IN_USE = new ErrorCode(10014_1, "自动评估维度正在使用中不可删除"); ErrorCode LEARNING_RESOURCES_NOT_EXISTS = new ErrorCode(10015, "学习资源不存在"); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassessstoplist/ModelAssessStoplistServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassessstoplist/ModelAssessStoplistServiceImpl.java index 1c20b171c..11978834d 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassessstoplist/ModelAssessStoplistServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassessstoplist/ModelAssessStoplistServiceImpl.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.llm.service.modelassessstoplist; +import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskauto.ModelAssessTaskStoplistDO; +import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskauto.ModelAssessTaskStoplistMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -30,6 +33,9 @@ public class ModelAssessStoplistServiceImpl implements ModelAssessStoplistServic @Resource private ModelAssessStoplistMapper modelAssessStoplistMapper; + @Resource + private ModelAssessTaskStoplistMapper modelingTaskStoplistMapper; + @Override public Long createModelAssessStoplist(ModelAssessStoplistSaveReqVO createReqVO) { // 插入 @@ -52,6 +58,11 @@ public class ModelAssessStoplistServiceImpl implements ModelAssessStoplistServic public void deleteModelAssessStoplist(Long id) { // 校验存在 validateModelAssessStoplistExists(id); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ModelAssessTaskStoplistDO::getStoplistId, id); + if (modelingTaskStoplistMapper.selectCount(queryWrapper) > 0){ + throw exception(THE_AUTO_EVALUATE_DIMENSION_IS_IN_USE); + } // 删除 LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(ModelAssessStoplistDO::getId, id) @@ -82,4 +93,4 @@ public class ModelAssessStoplistServiceImpl implements ModelAssessStoplistServic return modelAssessStoplistMapper.selectList(wrapper); } -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskauto/ModelAssessTaskAutoServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskauto/ModelAssessTaskAutoServiceImpl.java index 3eb53356c..47895e50a 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskauto/ModelAssessTaskAutoServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskauto/ModelAssessTaskAutoServiceImpl.java @@ -137,6 +137,10 @@ public class ModelAssessTaskAutoServiceImpl implements ModelAssessTaskAutoServic public void deleteModelAssessTaskAuto (Long id) { // 校验存在 validateModelAssessTaskAutoExists(id); + // 删除子表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ModelAssessTaskStoplistDO::getTaskId, id); + modelingTaskStoplistMapper.delete(queryWrapper); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); // 删除 wrapper.eq(ModelAssessTaskAutoDO::getId, id)