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> list = ragFlowApiUtil.getChatAssistants(""); List> res = list; for (int i=0; i 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 params) throws Exception{ LambdaQueryWrapper 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 contents = aiChatContentService.list(wrapper); return R.ok().put("list",contents); } //创建会话 @RequestMapping("/createChat") public R createChat(@RequestBody Map 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(); } }