修改已知问题。

This commit is contained in:
chenxudong 2025-04-03 17:46:59 +08:00
parent 97f68690b2
commit b0fe94d2ee
4 changed files with 20 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.config; package com.electromagnetic.industry.software.manage.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -29,7 +30,7 @@ public class EdMetaObjectHandler implements MetaObjectHandler {
this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date()); this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date());
} }
if (metaObject.hasGetter("createdBy")) { if (metaObject.hasGetter("createdBy")) {
this.setFieldValByName("createdBy", Optional.ofNullable(UserThreadLocal.getUserId()).orElse(""), metaObject); this.setFieldValByName("createdBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject);
} }
} }
@ -45,7 +46,7 @@ public class EdMetaObjectHandler implements MetaObjectHandler {
this.setFieldValByName("updatedTime", new Date(), metaObject); this.setFieldValByName("updatedTime", new Date(), metaObject);
} }
if (metaObject.hasGetter("updatedBy")) { if (metaObject.hasGetter("updatedBy")) {
this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUserId()).orElse(""), metaObject); this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject);
} }
} }
} }

View File

@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.controller;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.ai.ChatTaskThread1; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread1;
import com.electromagnetic.industry.software.manage.ai.ChatTaskThread2; import com.electromagnetic.industry.software.manage.ai.ChatTaskThread2;
import com.electromagnetic.industry.software.manage.ai.ThreadUtil; import com.electromagnetic.industry.software.manage.ai.ThreadUtil;
@ -46,6 +47,7 @@ public class AiController {
if (StrUtil.isEmpty(queryDTO.getMsg())) { if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty(); return Flux.empty();
} }
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread1 chatTaskThread = new ChatTaskThread1(chatService, queryDTO); ChatTaskThread1 chatTaskThread = new ChatTaskThread1(chatService, queryDTO);
Future<Flux<String>> future = ThreadUtil.getThreadPool().submit(chatTaskThread); Future<Flux<String>> future = ThreadUtil.getThreadPool().submit(chatTaskThread);
return future.get(); return future.get();
@ -56,6 +58,7 @@ public class AiController {
if (StrUtil.isEmpty(queryDTO.getMsg())) { if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty(); return Flux.empty();
} }
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread2 chatTaskThread2 = new ChatTaskThread2(chatService, queryDTO); ChatTaskThread2 chatTaskThread2 = new ChatTaskThread2(chatService, queryDTO);
Future<Flux<ChatResponse>> future = ThreadUtil.getThreadPool().submit(chatTaskThread2); Future<Flux<ChatResponse>> future = ThreadUtil.getThreadPool().submit(chatTaskThread2);
return future.get(); return future.get();

View File

@ -7,5 +7,5 @@ public class QueryDTO {
private String msg; private String msg;
// private String userId; private String userId;
} }

View File

@ -7,9 +7,11 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.IdWorker; import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper; import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper;
import com.electromagnetic.industry.software.manage.mapper.AiQuestionRecordMapper; import com.electromagnetic.industry.software.manage.mapper.AiQuestionRecordMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord;
@ -123,13 +125,23 @@ public class ChatService {
} }
public Flux<String> chatStreamStr(QueryDTO queryDTO) { public Flux<String> chatStreamStr(QueryDTO queryDTO) {
AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString()); AiQuestionRecord record = new AiQuestionRecord()
.setQuestion(queryDTO.getMsg())
.setId(IdWorker.getSnowFlakeIdString());
UserLoginInfo userLoginInfo = new UserLoginInfo();
userLoginInfo.setUserId(queryDTO.getUserId());
UserThreadLocal.set(userLoginInfo);
aiQuestionRecordMapper.insert(record); aiQuestionRecordMapper.insert(record);
UserThreadLocal.remove();
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content(); return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content();
} }
public Flux<ChatResponse> chatStreamResponse(QueryDTO queryDTO) { public Flux<ChatResponse> chatStreamResponse(QueryDTO queryDTO) {
AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString()); AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString());
UserLoginInfo userLoginInfo = new UserLoginInfo();
userLoginInfo.setUserId(queryDTO.getUserId());
UserThreadLocal.set(userLoginInfo);
UserThreadLocal.remove();
aiQuestionRecordMapper.insert(record); aiQuestionRecordMapper.insert(record);
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build() return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build()
.prompt(new Prompt(new UserMessage(queryDTO.getMsg()))) .prompt(new Prompt(new UserMessage(queryDTO.getMsg())))