1. 重构代码结构,去除不必要的测试类
parent
b593075fe4
commit
9d04f3dcad
@ -1,17 +1,17 @@
|
||||
package com.supervision.springaidemo.controller;
|
||||
package com.supervision.demo.controller;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.supervision.demo.service.ModelMetricService;
|
||||
import com.supervision.police.domain.ModelRecordType;
|
||||
import com.supervision.police.domain.NoteRecordSplit;
|
||||
import com.supervision.springaidemo.dto.QARecordNodeDTO;
|
||||
import com.supervision.demo.dto.QARecordNodeDTO;
|
||||
import com.supervision.police.mapper.ModelRecordTypeMapper;
|
||||
import com.supervision.police.mapper.NoteRecordSplitMapper;
|
||||
import com.supervision.police.service.ModelRecordTypeService;
|
||||
import com.supervision.springaidemo.service.ModelMetricService;
|
||||
import com.supervision.police.service.NoteRecordSplitService;
|
||||
import com.supervision.police.service.NoteCheckRecordService;
|
||||
import com.supervision.springaidemo.util.RecordRegexUtil;
|
||||
import com.supervision.springaidemo.util.WordReadUtil;
|
||||
import com.supervision.utils.RecordRegexUtil;
|
||||
import com.supervision.utils.WordReadUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.json.JSONObject;
|
@ -1,6 +1,5 @@
|
||||
package com.supervision.springaidemo.domain;
|
||||
package com.supervision.demo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
@ -1,6 +1,5 @@
|
||||
package com.supervision.springaidemo.domain;
|
||||
package com.supervision.demo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
@ -1,4 +1,4 @@
|
||||
package com.supervision.springaidemo.dto;
|
||||
package com.supervision.demo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.supervision.springaidemo.mapper;
|
||||
package com.supervision.demo.mapper;
|
||||
|
||||
import com.supervision.springaidemo.domain.ModelMetricExample;
|
||||
import com.supervision.demo.domain.ModelMetricExample;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
@ -0,0 +1,18 @@
|
||||
package com.supervision.demo.mapper;
|
||||
|
||||
import com.supervision.demo.domain.ModelMetric;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【model_metric(所有指标0)】的数据库操作Mapper
|
||||
* @createDate 2024-08-07 10:28:54
|
||||
* @Entity com.supervision.demo.domain.ModelMetric
|
||||
*/
|
||||
public interface ModelMetricMapper extends BaseMapper<ModelMetric> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.supervision.springaidemo.service;
|
||||
package com.supervision.demo.service;
|
||||
|
||||
import com.supervision.springaidemo.domain.ModelMetricExample;
|
||||
import com.supervision.demo.domain.ModelMetricExample;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
@ -0,0 +1,13 @@
|
||||
package com.supervision.demo.service;
|
||||
|
||||
import com.supervision.demo.domain.ModelMetric;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【model_metric(所有指标0)】的数据库操作Service
|
||||
* @createDate 2024-08-07 10:28:54
|
||||
*/
|
||||
public interface ModelMetricService extends IService<ModelMetric> {
|
||||
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package com.supervision.springaidemo.service.impl;
|
||||
package com.supervision.demo.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.springaidemo.domain.ModelMetricExample;
|
||||
import com.supervision.springaidemo.service.ModelMetricExampleService;
|
||||
import com.supervision.springaidemo.mapper.ModelMetricExampleMapper;
|
||||
import com.supervision.demo.domain.ModelMetricExample;
|
||||
import com.supervision.demo.service.ModelMetricExampleService;
|
||||
import com.supervision.demo.mapper.ModelMetricExampleMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
@ -0,0 +1,22 @@
|
||||
package com.supervision.demo.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.demo.domain.ModelMetric;
|
||||
import com.supervision.demo.service.ModelMetricService;
|
||||
import com.supervision.demo.mapper.ModelMetricMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
* @description 针对表【model_metric(所有指标0)】的数据库操作Service实现
|
||||
* @createDate 2024-08-07 10:28:54
|
||||
*/
|
||||
@Service
|
||||
public class ModelMetricServiceImpl extends ServiceImpl<ModelMetricMapper, ModelMetric>
|
||||
implements ModelMetricService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,146 +0,0 @@
|
||||
package com.supervision.springaidemo.controller;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
import com.supervision.springaidemo.domain.VpAskTemplateQuestionLibrary;
|
||||
import com.supervision.springaidemo.domain.VpCommonDic;
|
||||
import com.supervision.springaidemo.service.VpAskTemplateQuestionLibraryService;
|
||||
import com.supervision.springaidemo.service.VpCommonDicService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.ai.document.Document;
|
||||
import org.springframework.ai.embedding.EmbeddingClient;
|
||||
import org.springframework.ai.ollama.OllamaChatClient;
|
||||
import org.springframework.ai.ollama.OllamaEmbeddingClient;
|
||||
import org.springframework.ai.ollama.api.OllamaOptions;
|
||||
import org.springframework.ai.vectorstore.SimpleVectorStore;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@RequestMapping("similarity")
|
||||
@RestController
|
||||
public class SimilarityController {
|
||||
|
||||
private final SimpleVectorStore store;
|
||||
|
||||
|
||||
private final OllamaChatClient chatClient;
|
||||
|
||||
@Autowired
|
||||
private VpCommonDicService vpCommonDicService;
|
||||
|
||||
@Autowired
|
||||
private VpAskTemplateQuestionLibraryService libraryService;
|
||||
|
||||
@Autowired
|
||||
public SimilarityController(OllamaEmbeddingClient ollamaEmbeddingClient, OllamaChatClient chatClient) {
|
||||
store = new SimpleVectorStore(ollamaEmbeddingClient.withDefaultOptions(OllamaOptions.create().withModel("llama3-chinese:8b")));
|
||||
this.chatClient = chatClient;
|
||||
// File file = FileUtil.file("/Users/flevance/Java/spring-ai-demo/spring-ai-demo/data/storeData.json");
|
||||
// if (FileUtil.isNotEmpty(file)) {
|
||||
// store.load(file);
|
||||
// }
|
||||
}
|
||||
|
||||
@GetMapping("init")
|
||||
public void init() {
|
||||
// 从数据库中加载向量数据
|
||||
List<VpAskTemplateQuestionLibrary> list = libraryService.lambdaQuery().list();
|
||||
for (VpAskTemplateQuestionLibrary vpAskTemplateQuestionLibrary : list) {
|
||||
String questionJsonStr = vpAskTemplateQuestionLibrary.getQuestion();
|
||||
List<String> questionList = JSONUtil.toList(questionJsonStr, String.class);
|
||||
questionList.add(vpAskTemplateQuestionLibrary.getDescription());
|
||||
for (String question : questionList) {
|
||||
Map<String, Object> meta = MapUtil.of("dictId", vpAskTemplateQuestionLibrary.getDictId());
|
||||
meta.put("id", vpAskTemplateQuestionLibrary.getId());
|
||||
Document document = new Document(question, meta);
|
||||
store.add(ListUtil.of(document));
|
||||
log.info("{}已添加到向量数据库", question);
|
||||
}
|
||||
}
|
||||
log.info("向量化完成");
|
||||
// 加载完成之后,保存到本地
|
||||
store.save(FileUtil.newFile("/Users/flevance/Java/spring-ai-demo/spring-ai-demo/data/storeData.json"));
|
||||
log.info("保存完成");
|
||||
}
|
||||
|
||||
@GetMapping("similarity")
|
||||
public void similarity(String userQuestion) {
|
||||
List<Document> documents = store.similaritySearch(userQuestion);
|
||||
for (Document document : documents) {
|
||||
log.info("{}", document.getContent());
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("itemCheck")
|
||||
public void itemCheck() {
|
||||
File file = FileUtil.file("/Users/flevance/Desktop/虚拟病人/副本副本医生临床问诊问题收集v1.xlsx");
|
||||
ExcelReader reader = ExcelUtil.getReader(file, 1);
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file, "match");
|
||||
List<VpCommonDic> list = vpCommonDicService.lambdaQuery().like(VpCommonDic::getNameZhPath, "/").eq(VpCommonDic::getGroupCode, "AQT").list();
|
||||
Set<String> databaseExistSet = new HashSet<>();
|
||||
for (VpCommonDic vpCommonDic : list) {
|
||||
databaseExistSet.add(vpCommonDic.getNameZhPath());
|
||||
}
|
||||
List<List<Object>> objects = reader.read(1);
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
List<Object> list1 = objects.get(i);
|
||||
String s = (String) list1.get(0);
|
||||
String s1 = (String) list1.get(1);
|
||||
// 如果不存在,则记录
|
||||
if (!databaseExistSet.contains(s + "/" + s1)) {
|
||||
writer.writeCellValue(1, i + 1, "不存在");
|
||||
} else {
|
||||
writer.writeCellValue(1, i + 1, "存在");
|
||||
}
|
||||
}
|
||||
writer.flush();
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("similarityBatch")
|
||||
public void similarityBatch() {
|
||||
init();
|
||||
Map<Long, VpCommonDic> dicMap = vpCommonDicService.list().stream().collect(Collectors.toMap(VpCommonDic::getId, Function.identity()));
|
||||
// 从Excel中获取数据
|
||||
File file = FileUtil.file("/Users/flevance/Desktop/虚拟病人/副本副本医生临床问诊问题收集v1.xlsx");
|
||||
ExcelReader reader = ExcelUtil.getReader(file, 2);
|
||||
ExcelWriter writer = ExcelUtil.getWriter(file, "result");
|
||||
|
||||
List<Object> objects = reader.readColumn(2, 1);
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
int rowIndex = i + 1;
|
||||
String question = objects.get(i).toString();
|
||||
try {
|
||||
List<Document> documents = store.similaritySearch(question);
|
||||
Optional<Document> first = documents.stream().findFirst();
|
||||
if (first.isPresent()) {
|
||||
Map<String, Object> meta = first.get().getMetadata();
|
||||
String dictId = meta.get("dictId").toString();
|
||||
VpCommonDic vpCommonDic = dicMap.get(Long.parseLong(dictId));
|
||||
writer.writeCellValue(8, rowIndex, question);
|
||||
writer.writeCellValue(9, rowIndex, "");
|
||||
writer.writeCellValue(10, rowIndex, vpCommonDic.getNameZhPath());
|
||||
writer.writeCellValue(11, rowIndex, dictId);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("出现错误", e);
|
||||
}
|
||||
log.info("{}匹配完成.", question);
|
||||
}
|
||||
writer.flush();
|
||||
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package com.supervision.springaidemo.controller;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.supervision.springaidemo.dto.AnswerDTO;
|
||||
import com.supervision.springaidemo.dto.GlobalResult;
|
||||
import com.supervision.springaidemo.util.TtsUtil;
|
||||
import org.springframework.ai.chat.ChatResponse;
|
||||
import org.springframework.ai.chat.Generation;
|
||||
import org.springframework.ai.chat.messages.AssistantMessage;
|
||||
import org.springframework.ai.chat.messages.Message;
|
||||
import org.springframework.ai.chat.messages.SystemMessage;
|
||||
import org.springframework.ai.chat.messages.UserMessage;
|
||||
import org.springframework.ai.chat.prompt.Prompt;
|
||||
import org.springframework.ai.ollama.OllamaChatClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 测试如何避免出现答非所问
|
||||
*/
|
||||
@RequestMapping("vp-test")
|
||||
@RestController
|
||||
public class VPTestController {
|
||||
|
||||
private final OllamaChatClient chatClient;
|
||||
|
||||
|
||||
// 使用多线程进行提交
|
||||
|
||||
|
||||
@Autowired
|
||||
public VPTestController(OllamaChatClient chatClient) {
|
||||
this.chatClient = chatClient;
|
||||
}
|
||||
|
||||
public static final String userPromptTemplate = """
|
||||
现在希望你从预设的问题中,找到与给定问题的意图最匹配的项,以避免出现答非所问
|
||||
---
|
||||
给定问题:{userQuestion}
|
||||
---
|
||||
预设问题1:{dataBaseQuestion1},问题ID:1761963909201268731
|
||||
预设问题2:{dataBaseQuestion2},问题ID:1761963909201268732
|
||||
预设问题3:{dataBaseQuestion3},问题ID:1761963909201268733
|
||||
预设问题4:{dataBaseQuestion4},问题ID:1761963909201268734
|
||||
预设问题5:{dataBaseQuestion5},问题ID:1761963909201268735
|
||||
---
|
||||
回复格式为json:{"id":"对应的问题ID","question":"匹配到的预设问题"}
|
||||
""";
|
||||
|
||||
|
||||
|
||||
// private static final String systemPrompt = """
|
||||
// 你现在扮演一个医生,以医生的角度从预设问题列表中找到与给定问题最匹配的一项
|
||||
// """;
|
||||
|
||||
@GetMapping("test")
|
||||
public String test(String userQuestion) {
|
||||
List<Message> messageHistoryList = new ArrayList<>();
|
||||
// messageHistoryList.add(new SystemMessage(systemPrompt));
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("userQuestion", userQuestion);
|
||||
map.put("dataBaseQuestion1", "您有什么症状?");
|
||||
map.put("dataBaseQuestion2", "您有什么不舒服的?");
|
||||
map.put("dataBaseQuestion3", "您是否有腹痛?");
|
||||
map.put("dataBaseQuestion4", "您还有什么不舒服的?");
|
||||
map.put("dataBaseQuestion5", "您还有其他什么症状吗?");
|
||||
StrUtil.format(userPromptTemplate, map);
|
||||
messageHistoryList.add(new UserMessage(StrUtil.format(userPromptTemplate, map)));
|
||||
Prompt prompt = new Prompt(messageHistoryList);
|
||||
ChatResponse call = chatClient.call(prompt);
|
||||
Generation result = call.getResult();
|
||||
return result.getOutput().getContent();
|
||||
}
|
||||
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package com.supervision.springaidemo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 诊断问询意图问题库
|
||||
* @TableName vp_ask_template_question_library
|
||||
*/
|
||||
@TableName(value ="vp_ask_template_question_library")
|
||||
@Data
|
||||
public class VpAskTemplateQuestionLibrary implements Serializable {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 字典值ID(关联common_dict表ID)
|
||||
*/
|
||||
private Long dictId;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 中文注释 用户设置的问题
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 问题列表 由用户传入的问题生成的问题列表
|
||||
*/
|
||||
private String question;
|
||||
|
||||
/**
|
||||
* 默认回答编码
|
||||
*/
|
||||
private String defaultAnswerCode;
|
||||
|
||||
/**
|
||||
* 默认问题的回答
|
||||
*/
|
||||
private String defaultAnswer;
|
||||
|
||||
/**
|
||||
* 默认回答资源id
|
||||
*/
|
||||
private String defaultAnswerResourceId;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
package com.supervision.springaidemo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 通用字典表
|
||||
* @TableName vp_common_dic
|
||||
*/
|
||||
@TableName(value ="vp_common_dic")
|
||||
@Data
|
||||
public class VpCommonDic implements Serializable {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 字段码值
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 中文名
|
||||
*/
|
||||
private String nameZh;
|
||||
|
||||
/**
|
||||
* 英文名
|
||||
*/
|
||||
private String nameEn;
|
||||
|
||||
/**
|
||||
* 分组code
|
||||
*/
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 优先级,用来做排序等操作
|
||||
*/
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 中文路径
|
||||
*/
|
||||
private String nameZhPath;
|
||||
|
||||
/**
|
||||
* 说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String updateUserId;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.supervision.springaidemo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AnswerDTO {
|
||||
|
||||
private String answer;
|
||||
|
||||
private String answerBase64;
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package com.supervision.springaidemo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
@Data
|
||||
public class GlobalResult<T> {
|
||||
|
||||
private int code = 200;
|
||||
|
||||
private String msg = "success";
|
||||
|
||||
private T data;
|
||||
|
||||
|
||||
public static <T> GlobalResult<T> ok() {
|
||||
return ok(null);
|
||||
}
|
||||
|
||||
public static <T> GlobalResult<T> ok(T data) {
|
||||
GlobalResult<T> globalResult = new GlobalResult<>();
|
||||
globalResult.setData(data);
|
||||
return globalResult;
|
||||
}
|
||||
|
||||
public static <T> GlobalResult<T> ok(T data, String message) {
|
||||
GlobalResult<T> globalResult = new GlobalResult<>();
|
||||
globalResult.setMsg(message);
|
||||
globalResult.setData(data);
|
||||
return globalResult;
|
||||
}
|
||||
|
||||
public static <T> GlobalResult<T> error(String msg) {
|
||||
return error(HttpStatus.INTERNAL_SERVER_ERROR.value(), null, msg);
|
||||
}
|
||||
|
||||
|
||||
public static <T> GlobalResult<T> error(int code, T data, String msg) {
|
||||
GlobalResult<T> globalResult = new GlobalResult<>();
|
||||
globalResult.setCode(code);
|
||||
globalResult.setData(data);
|
||||
globalResult.setMsg(msg);
|
||||
return globalResult;
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package com.supervision.springaidemo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MetricResultDTO {
|
||||
|
||||
private String result;
|
||||
|
||||
private String originalContext;
|
||||
|
||||
private String reason;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package com.supervision.springaidemo.dto.paddlespeech.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AsrReqDTO {
|
||||
|
||||
private final String audio;
|
||||
|
||||
private final String audio_format = "wav";
|
||||
|
||||
private final Integer sample_rate = 16000;
|
||||
|
||||
private final String lang = "zh_cn";
|
||||
|
||||
private final Integer punc = 0;
|
||||
|
||||
public AsrReqDTO(String audio) {
|
||||
this.audio = audio;
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package com.supervision.springaidemo.dto.paddlespeech.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TtsReqDTO {
|
||||
|
||||
private final String text;
|
||||
|
||||
private final Integer spk_id = 0;
|
||||
|
||||
private final Double speed = 1.0;
|
||||
|
||||
private final Double volume = 1.0;
|
||||
|
||||
private final Integer sample_rate = 16000;
|
||||
|
||||
private final String save_path = "./tts.wav";
|
||||
|
||||
public TtsReqDTO(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package com.supervision.springaidemo.dto.paddlespeech.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AsrResultDTO {
|
||||
|
||||
private String transcription;
|
||||
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package com.supervision.springaidemo.dto.paddlespeech.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PaddleSpeechResDTO<T> {
|
||||
|
||||
private Boolean success;
|
||||
|
||||
private Integer code;
|
||||
|
||||
private Object message;
|
||||
|
||||
private T result;
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package com.supervision.springaidemo.dto.paddlespeech.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TtsResultDTO {
|
||||
|
||||
private String lang;
|
||||
|
||||
private String spk_id;
|
||||
|
||||
private String speed;
|
||||
|
||||
private String volume;
|
||||
|
||||
private String sample_rate;
|
||||
|
||||
private String duration;
|
||||
|
||||
private String save_path;
|
||||
|
||||
private String audio;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.supervision.springaidemo.mapper;
|
||||
|
||||
import com.supervision.springaidemo.domain.ModelMetric;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【model_metric】的数据库操作Mapper
|
||||
* @createDate 2024-05-10 16:40:18
|
||||
* @Entity com.supervision.domain.ModelMetric
|
||||
*/
|
||||
public interface ModelMetricMapper extends BaseMapper<ModelMetric> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,18 +0,0 @@
|
||||
package com.supervision.springaidemo.mapper;
|
||||
|
||||
import com.supervision.springaidemo.domain.VpAskTemplateQuestionLibrary;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_ask_template_question_library(诊断问询意图问题库)】的数据库操作Mapper
|
||||
* @createDate 2024-05-22 17:40:02
|
||||
* @Entity com.supervision.springaidemo.domain.VpAskTemplateQuestionLibrary
|
||||
*/
|
||||
public interface VpAskTemplateQuestionLibraryMapper extends BaseMapper<VpAskTemplateQuestionLibrary> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,18 +0,0 @@
|
||||
package com.supervision.springaidemo.mapper;
|
||||
|
||||
import com.supervision.springaidemo.domain.VpCommonDic;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_common_dic(通用字典表)】的数据库操作Mapper
|
||||
* @createDate 2024-05-23 10:24:49
|
||||
* @Entity com.supervision.springaidemo.domain.VpCommonDic
|
||||
*/
|
||||
public interface VpCommonDicMapper extends BaseMapper<VpCommonDic> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
package com.supervision.springaidemo.service;
|
||||
|
||||
import com.supervision.springaidemo.domain.ModelMetric;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【model_metric】的数据库操作Service
|
||||
* @createDate 2024-05-10 16:40:18
|
||||
*/
|
||||
public interface ModelMetricService extends IService<ModelMetric> {
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package com.supervision.springaidemo.service;
|
||||
|
||||
import com.supervision.springaidemo.domain.VpAskTemplateQuestionLibrary;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_ask_template_question_library(诊断问询意图问题库)】的数据库操作Service
|
||||
* @createDate 2024-05-22 17:40:02
|
||||
*/
|
||||
public interface VpAskTemplateQuestionLibraryService extends IService<VpAskTemplateQuestionLibrary> {
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package com.supervision.springaidemo.service;
|
||||
|
||||
import com.supervision.springaidemo.domain.VpCommonDic;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service
|
||||
* @createDate 2024-05-23 10:24:49
|
||||
*/
|
||||
public interface VpCommonDicService extends IService<VpCommonDic> {
|
||||
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package com.supervision.springaidemo.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.springaidemo.domain.ModelMetric;
|
||||
import com.supervision.springaidemo.service.ModelMetricService;
|
||||
import com.supervision.springaidemo.mapper.ModelMetricMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【model_metric】的数据库操作Service实现
|
||||
* @createDate 2024-05-10 16:40:18
|
||||
*/
|
||||
@Service
|
||||
public class ModelMetricServiceImpl extends ServiceImpl<ModelMetricMapper, ModelMetric>
|
||||
implements ModelMetricService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
package com.supervision.springaidemo.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.springaidemo.domain.VpAskTemplateQuestionLibrary;
|
||||
import com.supervision.springaidemo.service.VpAskTemplateQuestionLibraryService;
|
||||
import com.supervision.springaidemo.mapper.VpAskTemplateQuestionLibraryMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_ask_template_question_library(诊断问询意图问题库)】的数据库操作Service实现
|
||||
* @createDate 2024-05-22 17:40:02
|
||||
*/
|
||||
@Service
|
||||
public class VpAskTemplateQuestionLibraryServiceImpl extends ServiceImpl<VpAskTemplateQuestionLibraryMapper, VpAskTemplateQuestionLibrary>
|
||||
implements VpAskTemplateQuestionLibraryService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
package com.supervision.springaidemo.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.supervision.springaidemo.domain.VpCommonDic;
|
||||
import com.supervision.springaidemo.service.VpCommonDicService;
|
||||
import com.supervision.springaidemo.mapper.VpCommonDicMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author flevance
|
||||
* @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service实现
|
||||
* @createDate 2024-05-23 10:24:49
|
||||
*/
|
||||
@Service
|
||||
public class VpCommonDicServiceImpl extends ServiceImpl<VpCommonDicMapper, VpCommonDic>
|
||||
implements VpCommonDicService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,33 +0,0 @@
|
||||
package com.supervision.springaidemo.util;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.supervision.springaidemo.dto.paddlespeech.req.TtsReqDTO;
|
||||
import com.supervision.springaidemo.dto.paddlespeech.res.PaddleSpeechResDTO;
|
||||
import com.supervision.springaidemo.dto.paddlespeech.res.TtsResultDTO;
|
||||
|
||||
public class TtsUtil {
|
||||
|
||||
private static final String TTS_URL = "http://192.168.10.137:8090/paddlespeech/tts";
|
||||
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
public static String ttsTransform(String str) {
|
||||
// 构建
|
||||
String post = HttpUtil.post(TTS_URL, JSONUtil.toJsonStr(new TtsReqDTO(str)));
|
||||
try {
|
||||
PaddleSpeechResDTO<TtsResultDTO> response = objectMapper.readValue(post, new TypeReference<PaddleSpeechResDTO<TtsResultDTO>>() {
|
||||
});
|
||||
if (!response.getSuccess() || ObjectUtil.isEmpty(response.getResult())) {
|
||||
throw new RuntimeException("文字转换语音失败");
|
||||
}
|
||||
return response.getResult().getAudio();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("语音转换文字失败", e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
package com.supervision.springaidemo.util;
|
||||
package com.supervision.utils;
|
||||
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.supervision.springaidemo.dto.QARecordNodeDTO;
|
||||
import com.supervision.demo.dto.QARecordNodeDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package com.supervision.springaidemo.util;
|
||||
package com.supervision.utils;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.supervision.springaidemo.mapper.VpCommonDicMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.supervision.springaidemo.domain.VpCommonDic">
|
||||
<id property="id" column="id" jdbcType="BIGINT"/>
|
||||
<result property="code" column="code" jdbcType="VARCHAR"/>
|
||||
<result property="nameZh" column="name_zh" jdbcType="VARCHAR"/>
|
||||
<result property="nameEn" column="name_en" jdbcType="VARCHAR"/>
|
||||
<result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
|
||||
<result property="parentId" column="parent_id" jdbcType="BIGINT"/>
|
||||
<result property="priority" column="priority" jdbcType="INTEGER"/>
|
||||
<result property="nameZhPath" column="name_zh_path" jdbcType="VARCHAR"/>
|
||||
<result property="description" column="description" jdbcType="VARCHAR"/>
|
||||
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
|
||||
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
|
||||
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,code,name_zh,
|
||||
name_en,group_code,parent_id,
|
||||
priority,name_zh_path,description,
|
||||
create_user_id,create_time,update_user_id,
|
||||
update_time
|
||||
</sql>
|
||||
</mapper>
|
@ -1,4 +1,4 @@
|
||||
package com.supervision.springaidemo;
|
||||
package com.supervision.demo;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.*;
|
@ -1,9 +1,9 @@
|
||||
package com.supervision.springaidemo;
|
||||
package com.supervision.demo;
|
||||
|
||||
import com.supervision.common.domain.R;
|
||||
import com.supervision.neo4j.controller.Neo4jController;
|
||||
import com.supervision.neo4j.domain.CaseNode;
|
||||
import com.supervision.springaidemo.controller.ExampleChatController;
|
||||
import com.supervision.demo.controller.ExampleChatController;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.ai.chat.ChatResponse;
|
@ -1,4 +1,4 @@
|
||||
package com.supervision.springaidemo;
|
||||
package com.supervision.demo;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.UUID;
|
@ -1,12 +1,7 @@
|
||||
package com.supervision.springaidemo;
|
||||
package com.supervision.demo;
|
||||
|
||||
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
||||
import net.sf.jsqlparser.statement.Statement;
|
||||
import net.sf.jsqlparser.statement.select.PlainSelect;
|
||||
import net.sf.jsqlparser.statement.select.Select;
|
||||
import net.sf.jsqlparser.statement.select.SelectBody;
|
||||
import net.sf.jsqlparser.statement.select.SubSelect;
|
||||
import net.sf.jsqlparser.schema.Table;
|
||||
import net.sf.jsqlparser.util.TablesNamesFinder;
|
||||
import net.sf.jsqlparser.JSQLParserException;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.supervision.springaidemo;
|
||||
package com.supervision.demo;
|
||||
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.supervision.police.dto.caseScore.CaseScoreDetailDTO;
|
Loading…
Reference in New Issue