mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
(improvement)(chat) Fix the issue of chatContext not returning and PLAIN_TEXT mode not working. (#1366)
This commit is contained in:
@@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class SqlExecutor implements ChatExecutor {
|
public class SqlExecutor implements ChatExecutor {
|
||||||
|
|
||||||
@@ -61,17 +62,20 @@ public class SqlExecutor implements ChatExecutor {
|
|||||||
ChatContextService chatContextService = ContextUtils.getBean(ChatContextService.class);
|
ChatContextService chatContextService = ContextUtils.getBean(ChatContextService.class);
|
||||||
|
|
||||||
ChatContext chatCtx = chatContextService.getOrCreateContext(chatExecuteContext.getChatId());
|
ChatContext chatCtx = chatContextService.getOrCreateContext(chatExecuteContext.getChatId());
|
||||||
|
SemanticParseInfo parseInfo = chatExecuteContext.getParseInfo();
|
||||||
|
if (Objects.isNull(parseInfo.getSqlInfo())
|
||||||
|
|| StringUtils.isBlank(parseInfo.getSqlInfo().getCorrectS2SQL())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
QuerySqlReq sqlReq = QuerySqlReq.builder()
|
QuerySqlReq sqlReq = QuerySqlReq.builder()
|
||||||
.sql(chatExecuteContext.getParseInfo().getSqlInfo().getCorrectS2SQL())
|
.sql(parseInfo.getSqlInfo().getCorrectS2SQL())
|
||||||
.build();
|
.build();
|
||||||
sqlReq.setSqlInfo(chatExecuteContext.getParseInfo().getSqlInfo());
|
sqlReq.setSqlInfo(parseInfo.getSqlInfo());
|
||||||
sqlReq.setDataSetId(chatExecuteContext.getParseInfo().getDataSetId());
|
sqlReq.setDataSetId(parseInfo.getDataSetId());
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
SemanticQueryResp queryResp = semanticLayer.queryByReq(sqlReq, chatExecuteContext.getUser());
|
SemanticQueryResp queryResp = semanticLayer.queryByReq(sqlReq, chatExecuteContext.getUser());
|
||||||
QueryResult queryResult = new QueryResult();
|
QueryResult queryResult = new QueryResult();
|
||||||
|
|
||||||
if (queryResp != null) {
|
if (queryResp != null) {
|
||||||
queryResult.setQueryAuthorization(queryResp.getQueryAuthorization());
|
queryResult.setQueryAuthorization(queryResp.getQueryAuthorization());
|
||||||
List<Map<String, Object>> resultList = queryResp == null ? new ArrayList<>()
|
List<Map<String, Object>> resultList = queryResp == null ? new ArrayList<>()
|
||||||
@@ -81,16 +85,16 @@ public class SqlExecutor implements ChatExecutor {
|
|||||||
queryResult.setQuerySql(queryResp.getSql());
|
queryResult.setQuerySql(queryResp.getSql());
|
||||||
queryResult.setQueryResults(resultList);
|
queryResult.setQueryResults(resultList);
|
||||||
queryResult.setQueryColumns(columns);
|
queryResult.setQueryColumns(columns);
|
||||||
queryResult.setQueryMode(chatExecuteContext.getParseInfo().getQueryMode());
|
queryResult.setQueryMode(parseInfo.getQueryMode());
|
||||||
queryResult.setQueryState(QueryState.SUCCESS);
|
queryResult.setQueryState(QueryState.SUCCESS);
|
||||||
|
|
||||||
chatCtx.setParseInfo(chatExecuteContext.getParseInfo());
|
chatCtx.setParseInfo(parseInfo);
|
||||||
chatContextService.updateContext(chatCtx);
|
chatContextService.updateContext(chatCtx);
|
||||||
} else {
|
} else {
|
||||||
queryResult.setQueryState(QueryState.INVALID);
|
queryResult.setQueryState(QueryState.INVALID);
|
||||||
queryResult.setQueryMode(chatExecuteContext.getParseInfo().getQueryMode());
|
queryResult.setQueryMode(parseInfo.getQueryMode());
|
||||||
}
|
}
|
||||||
|
queryResult.setChatContext(chatCtx.getParseInfo());
|
||||||
return queryResult;
|
return queryResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user