From b8476c2398d09a8a83904c66090280605badceb1 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 3 Apr 2025 09:37:43 +0800 Subject: [PATCH] clean code --- .../industry/software/manage/aop/AopUtil.java | 1 - .../software/manage/aop/ServiceAspect.java | 3 +- .../manage/config/LoginInterceptor.java | 1 - .../manage/controller/AiController.java | 4 +-- .../controller/UserEdFileInfoController.java | 2 -- .../mapper/AiFileUploadRecordMapper.java | 7 ++++ .../pojo/models/AiFileUploadRecord.java | 17 +++++++++ .../service/serviceimpl/ChatService.java | 35 +++++++++++++------ 8 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/AiFileUploadRecordMapper.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/AiFileUploadRecord.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/AopUtil.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/AopUtil.java index d19fb5e..855f837 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/AopUtil.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/AopUtil.java @@ -6,7 +6,6 @@ import jakarta.servlet.ServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.multipart.MultipartFile; - import java.util.HashMap; import java.util.Map; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java index 6b183b3..c52528c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java @@ -14,7 +14,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.StopWatch; import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; import java.util.Objects; @@ -28,7 +27,7 @@ public class ServiceAspect { */ @Around("execution(* com.electromagnetic.industry.software.manage.controller..*.*(..)))") public Object process(ProceedingJoinPoint jp) throws Throwable { - String methodInfo = jp.getTarget().getClass().getSimpleName() + "." + String methodInfo = jp.getTarget().getClass().getSimpleName() + "." + jp.getSignature().getName(); Object[] args = jp.getArgs(); String[] argNames = ((MethodSignature) jp.getSignature()).getParameterNames(); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java index 89cea80..a2ce628 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java @@ -27,7 +27,6 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; - import java.util.Date; import java.util.List; import java.util.Optional; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java index 5537bd7..6a9f5c7 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiController.java @@ -2,12 +2,12 @@ package com.electromagnetic.industry.software.manage.controller; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; -import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO; -import com.electromagnetic.industry.software.manage.service.serviceimpl.ChatService; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread1; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread2; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread3; import com.electromagnetic.industry.software.manage.ai.ThreadUtil; +import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO; +import com.electromagnetic.industry.software.manage.service.serviceimpl.ChatService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.ai.chat.model.ChatResponse; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileInfoController.java index fae4925..dc10e78 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileInfoController.java @@ -11,7 +11,6 @@ import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO; -import com.electromagnetic.industry.software.manage.service.EdFileFavoriteService; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; @@ -20,7 +19,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; - import java.io.IOException; @RestController diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/AiFileUploadRecordMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/AiFileUploadRecordMapper.java new file mode 100644 index 0000000..019bc3d --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/AiFileUploadRecordMapper.java @@ -0,0 +1,7 @@ +package com.electromagnetic.industry.software.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; + +public interface AiFileUploadRecordMapper extends BaseMapper { +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/AiFileUploadRecord.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/AiFileUploadRecord.java new file mode 100644 index 0000000..7645708 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/AiFileUploadRecord.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.manage.pojo.models; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.experimental.Accessors; + +@TableName(value = "ai_file_upload_record") +@Data +@Accessors(chain = true) +public class AiFileUploadRecord extends BaseModel { + + private String id; + + private String fileName; + + private String md5; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java index 2a2febc..0cda87d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java @@ -4,14 +4,19 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; - +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.common.util.IdWorker; +import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper; +import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.ai.chat.client.ChatClient; -import org.springframework.ai.chat.client.advisor.*; +import org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor; +import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; +import org.springframework.ai.chat.client.advisor.QuestionAnswerAdvisor; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; @@ -20,14 +25,13 @@ import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.reader.pdf.PagePdfDocumentReader; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.codec.ServerSentEvent; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.multipart.MultipartFile; import reactor.core.publisher.Flux; import java.io.File; -import java.nio.charset.Charset; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -51,6 +55,9 @@ public class ChatService { @Value("file.md5RecordPath") private String uploadFileMd5RecordPath; + @Resource + private AiFileUploadRecordMapper aiFileUploadRecordMapper; + @PostMapping public void init() { if (!FileUtil.exist(uploadFileMd5RecordPath)) { @@ -63,24 +70,30 @@ public class ChatService { vectorStore.write(documents); } - public ElectromagneticResult addFromUpload(MultipartFile file) throws Exception{ + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult addFromUpload(MultipartFile file) throws Exception { String fileType = FileUtil.extName(file.getOriginalFilename()); if (!StrUtil.equals(fileType, "pdf")) { return ElectromagneticResultUtil.fail("-1", "当前仅支持pdf格式文件"); } String fileMd5 = DigestUtil.md5Hex(file.getInputStream()); - List lines = FileUtil.readLines(uploadFileMd5RecordPath, Charset.defaultCharset()); - if (lines.contains(fileMd5)) { + + Long count = aiFileUploadRecordMapper.selectCount(Wrappers.lambdaQuery(AiFileUploadRecord.class) + .eq(AiFileUploadRecord::getMd5, fileMd5)); + if (count > 0) { return ElectromagneticResultUtil.success(fileMd5); } + String pdfTmpPath = FileUtil.getParent(uploadFileMd5RecordPath, 1) + File.separator + IdUtil.fastSimpleUUID() + "." + fileType; FileUtil.writeFromStream(file.getInputStream(), pdfTmpPath); - PagePdfDocumentReader pagePdfDocumentReader = new PagePdfDocumentReader(pdfTmpPath); - List documents = pagePdfDocumentReader.read(); + List documents = new PagePdfDocumentReader(pdfTmpPath).read(); vectorStore.write(documents); - lines.add(fileMd5); - FileUtil.writeLines(lines, uploadFileMd5RecordPath, Charset.defaultCharset()); + + aiFileUploadRecordMapper.insert(new AiFileUploadRecord().setId(IdWorker.getSnowFlakeIdString()) + .setMd5(fileMd5) + .setFileName(file.getOriginalFilename())); + FileUtil.del(pdfTmpPath); return ElectromagneticResultUtil.success(fileMd5); }