91 lines
3.7 KiB
Java
91 lines
3.7 KiB
Java
package com.peanut.modules.common.controller;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.peanut.common.utils.R;
|
|
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 lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
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.List;
|
|
import java.util.Map;
|
|
|
|
@Slf4j
|
|
@RestController("commonRagFlowApi")
|
|
@RequestMapping("common/ragFlowApi")
|
|
public class RagFlowApiController {
|
|
|
|
@Autowired
|
|
private RagFlowApiUtil ragFlowApiUtil;
|
|
@Autowired
|
|
private AiChatContentService aiChatContentService;
|
|
|
|
//聊天助手列表
|
|
@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++) {
|
|
Map<String,Object> map = list.get(i);
|
|
if (map.get("name").toString().contains("消化")){
|
|
res.set(0,map);
|
|
}else if (map.get("name").toString().contains("呼吸")){
|
|
res.set(1,map);
|
|
}else if (map.get("name").toString().contains("风湿免疫")){
|
|
res.set(2,map);
|
|
}else if (map.get("name").toString().contains("肿瘤")){
|
|
res.set(3,map);
|
|
}else if (map.get("name").toString().contains("妇科")){
|
|
res.set(4,map);
|
|
}else if (map.get("name").toString().contains("全科")){
|
|
res.set(5,map);
|
|
}
|
|
}
|
|
return R.ok().put("list",res);
|
|
}
|
|
|
|
//聊天助手下对话列表
|
|
@RequestMapping("/getChats")
|
|
public R getChats(@RequestBody Map<String,Object> params) throws Exception{
|
|
LambdaQueryWrapper<AiChatContent> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(AiChatContent::getUserId, ShiroUtils.getUId());
|
|
if (StringUtils.isNotEmpty(params.get("chatId").toString())||
|
|
StringUtils.isNotEmpty(params.get("sessionId").toString())){
|
|
wrapper.eq(StringUtils.isNotEmpty(params.get("chatId").toString()),
|
|
AiChatContent::getChatAssistantId,params.get("chatId"));
|
|
wrapper.eq(StringUtils.isNotEmpty(params.get("sessionId").toString()),
|
|
AiChatContent::getChatId,params.get("sessionId"));
|
|
wrapper.orderByAsc(AiChatContent::getCreateTime);
|
|
}else {
|
|
wrapper.groupBy(AiChatContent::getChatId);
|
|
wrapper.orderByDesc(AiChatContent::getCreateTime);
|
|
}
|
|
List<AiChatContent> contents = aiChatContentService.list(wrapper);
|
|
return R.ok().put("list",contents);
|
|
}
|
|
|
|
//创建会话
|
|
@RequestMapping("/createChat")
|
|
public R createChat(@RequestBody Map<String,Object> params) throws Exception{
|
|
return R.ok().put("id",ragFlowApiUtil.createChat(params));
|
|
}
|
|
|
|
//与助手聊天流式
|
|
@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);
|
|
return R.ok();
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|