聊天时加入基因情况

This commit is contained in:
wuchunlei
2025-06-06 09:23:05 +08:00
parent 62c9185849
commit 973ffa0a64
2 changed files with 71 additions and 6 deletions

View File

@@ -6,6 +6,8 @@ import com.peanut.common.utils.RagFlowApiUtil;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.entity.AiChatContent;
import com.peanut.modules.common.service.AiChatContentService;
import com.peanut.modules.common.service.AiVipLogService;
import com.peanut.modules.common.service.PrecisionMedicineGeneService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +15,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -25,13 +30,20 @@ public class RagFlowApiController {
private RagFlowApiUtil ragFlowApiUtil;
@Autowired
private AiChatContentService aiChatContentService;
@Autowired
private AiVipLogService aiVipLogService;
@Autowired
private PrecisionMedicineGeneService geneService;
//聊天助手列表
@RequestMapping("/getChatAssistants")
public R getChatAssistants() throws Exception{
List<Map<String,Object>> list = ragFlowApiUtil.getChatAssistants("");
List<Map<String,Object>> res = list;
for (int i=0; i<list.size(); i++) {
List<Map<String,Object>> res = new ArrayList<>();
res.add(new HashMap<>());res.add(new HashMap<>());
res.add(new HashMap<>());res.add(new HashMap<>());
res.add(new HashMap<>());res.add(new HashMap<>());
for (int i=0; i<6; i++) {
Map<String,Object> map = list.get(i);
if (map.get("name").toString().contains("消化")){
res.set(0,map);
@@ -72,15 +84,43 @@ public class RagFlowApiController {
//创建会话
@RequestMapping("/createChat")
@Transactional
public R createChat(@RequestBody Map<String,Object> params) throws Exception{
return R.ok().put("id",ragFlowApiUtil.createChat(params));
List<AiChatContent> quankeContentList = aiChatContentService.list(new LambdaQueryWrapper<AiChatContent>()
.eq(AiChatContent::getUserId,ShiroUtils.getUId())
.like(AiChatContent::getChatAssistantName,"全科")
.orderByAsc(AiChatContent::getCreateTime)
.groupBy(AiChatContent::getChatId));
if (!aiVipLogService.isAiVip()){
if (quankeContentList.size()>=3){
return R.error("试用机会已用完开通VIP拥有更多次数");
}else {
if (!params.get("assistantName").toString().contains("全科")){
return R.error("免费次数只能使用全科医生");
}
}
}else {
if (params.get("assistantName").toString().contains("全科")&&quankeContentList.size()<3){
}else {
boolean res = aiVipLogService.userCount();
if (!res){
return R.error("VIP次数已用完");
}
}
}
String chatId = ragFlowApiUtil.createChat(params);
return R.ok().put("id",chatId);
}
//与助手聊天流式
@RequestMapping(value = "/chatToAssistantStream")
@Transactional
public R chatToAssistantStream(String chatId,String chatName,String sessionId,String sessionName,String question,String patientName){
ragFlowApiUtil.chatToAssistantStream(chatId,chatName,sessionId,sessionName,question,patientName);
public R chatToAssistantStream(String chatId,String chatName,String sessionId,String sessionName,String question,String patientName,String geneIds){
Map<String,Object> geneInfo = null;
if (StringUtils.isNotEmpty(geneIds)){
geneInfo = geneService.getGeneInfo(geneIds);
}
ragFlowApiUtil.chatToAssistantStream(chatId,chatName,sessionId,sessionName,question,patientName,geneInfo);
return R.ok();
}