From 35a28b80e377caa26e525b10f438b99fc006a516 Mon Sep 17 00:00:00 2001 From: qianbao Date: Fri, 13 Mar 2026 14:31:43 +0800 Subject: [PATCH] AI 对于时间的处理 --- src/main/java/com/xly/service/XlyErpService.java | 44 ++++++++++++++++++++++++++++++++++++++++++-- src/main/java/com/xly/tool/DynamicToolProvider.java | 6 ++---- src/main/resources/templates/chat.html | 2 +- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/xly/service/XlyErpService.java b/src/main/java/com/xly/service/XlyErpService.java index 83b4b4c..54c383f 100644 --- a/src/main/java/com/xly/service/XlyErpService.java +++ b/src/main/java/com/xly/service/XlyErpService.java @@ -1,5 +1,6 @@ package com.xly.service; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -36,6 +37,7 @@ import org.springframework.stereotype.Service; import java.time.Duration; import java.util.*; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -452,15 +454,53 @@ public class XlyErpService { UserSceneSessionService.ERP_AGENT_CACHE.remove(userId); //清除记忆缓存 operableChatMemoryProvider.clearSpecifiedMemory(userId); - String aiText = "智能体选择成功! 现在可以问她相关问题(如" + String.join("、", session.getCurrentScene().getSSceneContext()) + ")"; + StringBuffer aiText = new StringBuffer().append("
") + .append("
") + .append("智能体选择成功! 现在可以问她相关问题(如" + String.join("、", session.getCurrentScene().getSSceneContext()) + ")") + .append("
"); + //插入用户常用问题 + aiText.append(getSelectAgent(session,1)); sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; methodName = ObjectUtil.isNotEmpty(session.getCurrentTool())?session.getCurrentTool().getSControlName():StrUtil.EMPTY; - return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(aiText).sSceneName(session.getCurrentScene().getSSceneName()).build(); + return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(aiText.toString()).sSceneName(session.getCurrentScene().getSSceneName()).build(); } else { // 3. 选择失败:重新展示场景选择提示 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.buildSceneSelectHint()).build(); } } + /*** + * @Author 钱豹 + * @Date 11:45 2026/3/13 + * @Param [] + * @return java.lang.String + * @Description 选择智能体成功后获取高频问题列表 + **/ + private String getSelectAgent(UserSceneSession session,Integer page){ + List toolMetaAll = session.getAuthTool(); + String sSceneId = session.getCurrentScene().getSId(); + toolMetaAll = toolMetaAll.stream().filter(to-> to.getSSceneId().equals(session.getCurrentScene().getSId())).collect(Collectors.toUnmodifiableList()); + StringBuffer sb = new StringBuffer(); + List> firstFive = ListUtil.split(toolMetaAll,5); + List showList; + if(ObjectUtil.isNotEmpty(firstFive.get(page-1))){ + showList = firstFive.get(page-1); + page = page + 1; + }else{ + showList = firstFive.get(0); + page = 1; + } + showList.forEach(one->{ + sb.append("
") + .append("") + .append(one.getSMethodName()) + .append("
"); + }); + sb.append("
"); + sb.append("
"); + sb.append(" 换一换").append("
"); + return sb.toString(); + } /*** * @Author 钱豹 diff --git a/src/main/java/com/xly/tool/DynamicToolProvider.java b/src/main/java/com/xly/tool/DynamicToolProvider.java index bba185a..26a8d6d 100644 --- a/src/main/java/com/xly/tool/DynamicToolProvider.java +++ b/src/main/java/com/xly/tool/DynamicToolProvider.java @@ -578,11 +578,9 @@ public class DynamicToolProvider implements ToolProvider { } //{"1":"存储过程","2":"SQL查询","3":"第三方API","4":"ERP未清","5":"ERP列表(报表)","6":"ERP单据","7":"其它","8":"自然语言TEXT2SQL"} - if((isConfirmed && 4== meta.getIBizType()) - || 1== meta.getIBizType() + if((isConfirmed && (4== meta.getIBizType() ||1== meta.getIBizType())) || 2== meta.getIBizType() || 3== meta.getIBizType() - || 5== meta.getIBizType() || 6== meta.getIBizType() || 7== meta.getIBizType() || 8== meta.getIBizType() @@ -896,7 +894,7 @@ public class DynamicToolProvider implements ToolProvider { * @Description 返回结果后 执行业务类 **/ private String executeToolAfter(ToolMeta meta, Map args,ToolExecutionRequest toolExecutionRequest,List paramDefs,UserSceneSession session) { -// {"1":"存储过程","2":"SQL查询","3":"第三方API","4":"窗体查询","5":"按钮执行","6":"其它"} +// {"1":"存储过程","2":"SQL查询","3":"第三方API","4":"ERP未清","5":"ERP列表(报表)","6":"ERP单据","7":"其它","8":"自然语言TEXT2SQL"} String sBizContent = meta.getSBizContent(); Integer iBizType = meta.getIBizType(); args.put("sUserId", session.getUserId()); diff --git a/src/main/resources/templates/chat.html b/src/main/resources/templates/chat.html index 496a20f..3cc9564 100644 --- a/src/main/resources/templates/chat.html +++ b/src/main/resources/templates/chat.html @@ -468,7 +468,7 @@ let subsidiaryid= "1111111111"; let usertype= "sysadmin"; // let usertype= "General"; - let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1D5FA8B0D3F9AA55B209A9A2798D3F79A4ECD1B659CAFFD18F0B02D3B44E333373538155B7ADAEE71E899235DC1122F426"; + let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1D59FCE41E63C9FE20948A232F9F67AAE5687D4EF8281542FFC87C4EB776974C6A538155B7ADAEE71E899235DC1122F426"; let hrefLock = window.location.origin+"/xlyAi"; // ==================== 配置部分 ==================== const CONFIG = { -- libgit2 0.22.2