修改已知问题。

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;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
@ -29,7 +30,7 @@ public class EdMetaObjectHandler implements MetaObjectHandler {
this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date());
}
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);
}
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 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.ChatTaskThread2;
import com.electromagnetic.industry.software.manage.ai.ThreadUtil;
@ -46,6 +47,7 @@ public class AiController {
if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty();
}
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread1 chatTaskThread = new ChatTaskThread1(chatService, queryDTO);
Future<Flux<String>> future = ThreadUtil.getThreadPool().submit(chatTaskThread);
return future.get();
@ -56,6 +58,7 @@ public class AiController {
if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty();
}
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread2 chatTaskThread2 = new ChatTaskThread2(chatService, queryDTO);
Future<Flux<ChatResponse>> future = ThreadUtil.getThreadPool().submit(chatTaskThread2);
return future.get();

View File

@ -7,5 +7,5 @@ public class QueryDTO {
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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.util.ElectromagneticResultUtil;
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.AiQuestionRecordMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord;
@ -123,13 +125,23 @@ public class ChatService {
}
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);
UserThreadLocal.remove();
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content();
}
public Flux<ChatResponse> chatStreamResponse(QueryDTO queryDTO) {
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);
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build()
.prompt(new Prompt(new UserMessage(queryDTO.getMsg())))