Commit 05b077292d1040fd1472c441dfeeee9113a196e8
1 parent
e5fb3dd8
添加未清选择 改成动态引导语
Showing
7 changed files
with
105 additions
and
3 deletions
src/main/java/com/xly/entity/AiResponseDTO.java
| @@ -149,6 +149,22 @@ public class AiResponseDTO implements Serializable { | @@ -149,6 +149,22 @@ public class AiResponseDTO implements Serializable { | ||
| 149 | */ | 149 | */ |
| 150 | private String dbCach; | 150 | private String dbCach; |
| 151 | 151 | ||
| 152 | + /*** | ||
| 153 | + * @Author 钱豹 | ||
| 154 | + * @Date 15:15 2026/4/14 | ||
| 155 | + * @Param | ||
| 156 | + * @return | ||
| 157 | + * @Description 操作未清类型 | ||
| 158 | + **/ | ||
| 159 | + private String sCopyTo; | ||
| 160 | + /*** | ||
| 161 | + * @Author 钱豹 | ||
| 162 | + * @Date 15:16 2026/4/14 | ||
| 163 | + * @Param | ||
| 164 | + * @return | ||
| 165 | + * @Description 未清记录ID | ||
| 166 | + **/ | ||
| 167 | + private String sCopyToSrcId; | ||
| 152 | 168 | ||
| 153 | // ============ 便捷方法 ============ | 169 | // ============ 便捷方法 ============ |
| 154 | 170 |
src/main/java/com/xly/entity/UserSceneSession.java
| @@ -84,6 +84,23 @@ public class UserSceneSession { | @@ -84,6 +84,23 @@ public class UserSceneSession { | ||
| 84 | **/ | 84 | **/ |
| 85 | private String sSystemPrompt; | 85 | private String sSystemPrompt; |
| 86 | 86 | ||
| 87 | + /*** | ||
| 88 | + * @Author 钱豹 | ||
| 89 | + * @Date 15:15 2026/4/14 | ||
| 90 | + * @Param | ||
| 91 | + * @return | ||
| 92 | + * @Description 操作未清类型 | ||
| 93 | + **/ | ||
| 94 | + private String sCopyTo; | ||
| 95 | + /*** | ||
| 96 | + * @Author 钱豹 | ||
| 97 | + * @Date 15:16 2026/4/14 | ||
| 98 | + * @Param | ||
| 99 | + * @return | ||
| 100 | + * @Description 未清记录ID | ||
| 101 | + **/ | ||
| 102 | + private String sCopyToSrcId; | ||
| 103 | + | ||
| 87 | /** | 104 | /** |
| 88 | * 构建场景选择提示语:展示权限内场景,引导用户选择 | 105 | * 构建场景选择提示语:展示权限内场景,引导用户选择 |
| 89 | * @return 自然语言提示语 | 106 | * @return 自然语言提示语 |
src/main/java/com/xly/service/XlyErpService.java
| @@ -317,6 +317,8 @@ public class XlyErpService { | @@ -317,6 +317,8 @@ public class XlyErpService { | ||
| 317 | session.setSFunPrompts(null); | 317 | session.setSFunPrompts(null); |
| 318 | session.setDbCach(StrUtil.EMPTY); | 318 | session.setDbCach(StrUtil.EMPTY); |
| 319 | session.setDbType(StrUtil.EMPTY); | 319 | session.setDbType(StrUtil.EMPTY); |
| 320 | + session.setSCopyTo(StrUtil.EMPTY); | ||
| 321 | + session.setSCopyToSrcId(StrUtil.EMPTY); | ||
| 320 | 322 | ||
| 321 | sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; | 323 | sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; |
| 322 | // 2. 特殊指令:重置场景(无论是否已选,都可重置) | 324 | // 2. 特殊指令:重置场景(无论是否已选,都可重置) |
| @@ -398,7 +400,15 @@ public class XlyErpService { | @@ -398,7 +400,15 @@ public class XlyErpService { | ||
| 398 | //2.处理工具参数采集结束后业务逻辑处理 | 400 | //2.处理工具参数采集结束后业务逻辑处理 |
| 399 | //调用方法,参数缺失部分提示,就直接使用方法返回的 | 401 | //调用方法,参数缺失部分提示,就直接使用方法返回的 |
| 400 | sResponMessage = dynamicToolProvider.doDynamicTool(session.getCurrentTool(),session); | 402 | sResponMessage = dynamicToolProvider.doDynamicTool(session.getCurrentTool(),session); |
| 401 | - return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(sResponMessage).dbType(session.getDbType()).dbCach(session.getDbCach()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); | 403 | + return AiResponseDTO.builder().sSceneName(sceneName) |
| 404 | + .sMethodName(methodName) | ||
| 405 | + .aiText(sResponMessage) | ||
| 406 | + .sCopyTo(session.getSCopyTo()) | ||
| 407 | + .sCopyToSrcId(session.getSCopyToSrcId()) | ||
| 408 | + .dbType(session.getDbType()) | ||
| 409 | + .dbCach(session.getDbCach()) | ||
| 410 | + .sReturnType(ReturnTypeCode.HTML.getCode()) | ||
| 411 | + .build(); | ||
| 402 | }else if(session.getCurrentScene()== null ){ | 412 | }else if(session.getCurrentScene()== null ){ |
| 403 | return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText("当前场景:没有选择 退回当前场景 请输入 "+ CommonConstant.RESET + sResponMessage).dbType(session.getDbType()).dbCach(session.getDbCach()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); | 413 | return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText("当前场景:没有选择 退回当前场景 请输入 "+ CommonConstant.RESET + sResponMessage).dbType(session.getDbType()).dbCach(session.getDbCach()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); |
| 404 | }else{ | 414 | }else{ |
src/main/java/com/xly/tool/DynamicToolProvider.java
| @@ -970,7 +970,13 @@ public class DynamicToolProvider implements ToolProvider { | @@ -970,7 +970,13 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 970 | Map<String, Object> data = new HashMap<>(args); | 970 | Map<String, Object> data = new HashMap<>(args); |
| 971 | data.put("sData", JSONObject.toJSONString(data)); | 971 | data.put("sData", JSONObject.toJSONString(data)); |
| 972 | if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ | 972 | if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ |
| 973 | - sBizContent ="Sp_Ai_AddCommonAfter"; | 973 | + sBizContent ="Sp_Ai_AddCommonAfterNew"; |
| 974 | + //获取未清数据 | ||
| 975 | + if(ObjectUtil.isEmpty(args.get("sSlaveId"))){ | ||
| 976 | + throw new BusinessException(-1,"请选择操作数据"); | ||
| 977 | + } | ||
| 978 | + List<Map<String,Object>> sRowData = doGetFromDataWq( meta, args, session); | ||
| 979 | + data.put("sRowData", JSONObject.toJSONString(sRowData)); | ||
| 974 | } | 980 | } |
| 975 | Map<String, Object> searMap = this.dynamicExeDbService.getDoProMap(sBizContent, data); | 981 | Map<String, Object> searMap = this.dynamicExeDbService.getDoProMap(sBizContent, data); |
| 976 | Map<String, Object> sReturn = this.dynamicExeDbService.getCallPro(searMap, sBizContent); | 982 | Map<String, Object> sReturn = this.dynamicExeDbService.getCallPro(searMap, sBizContent); |
| @@ -981,6 +987,9 @@ public class DynamicToolProvider implements ToolProvider { | @@ -981,6 +987,9 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 981 | session.setSFunPrompts(sMsgText); | 987 | session.setSFunPrompts(sMsgText); |
| 982 | throw new BusinessException(sCode,sMsgText); | 988 | throw new BusinessException(sCode,sMsgText); |
| 983 | } | 989 | } |
| 990 | + String sId = ObjectUtil.isNotEmpty(sReturn.get("sId")) ? sReturn.get("sId").toString() : ""; | ||
| 991 | + session.setSCopyTo(meta.getSControlName()); | ||
| 992 | + session.setSCopyToSrcId(sId); | ||
| 984 | session.setSFunPrompts(sMsgText); | 993 | session.setSFunPrompts(sMsgText); |
| 985 | return sMsgText; | 994 | return sMsgText; |
| 986 | } else if (iBizType == 2 && ObjectUtil.isNotEmpty(sBizContent)) { | 995 | } else if (iBizType == 2 && ObjectUtil.isNotEmpty(sBizContent)) { |
| @@ -1022,6 +1031,51 @@ public class DynamicToolProvider implements ToolProvider { | @@ -1022,6 +1031,51 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 1022 | return "操作成功"; | 1031 | return "操作成功"; |
| 1023 | } | 1032 | } |
| 1024 | 1033 | ||
| 1034 | + /*** | ||
| 1035 | + * @Author | ||
| 1036 | + * 确认获取未清数据 | ||
| 1037 | + **/ | ||
| 1038 | + private List<Map<String,Object>> doGetFromDataWq(ToolMeta meta, Map<String, Object> args,UserSceneSession session){ | ||
| 1039 | + String sUrl = meta.getSendUrl(); | ||
| 1040 | + Map<String,Object> sBody = new HashMap<>(); | ||
| 1041 | + sBody.put("pageNum",1); | ||
| 1042 | + sBody.put("pageSize",10000); | ||
| 1043 | + log.info("doGetFromData========================"); | ||
| 1044 | + List<Map<String,Object>> list = new ArrayList<>(); | ||
| 1045 | + Map<String,Object> serOne = new HashMap<>(4); | ||
| 1046 | + serOne.put("bFilterCondition","IN"); | ||
| 1047 | + serOne.put("bFilterValue",args.get("sSlaveId")); | ||
| 1048 | + serOne.put("bFilterName","sSlaveId"); | ||
| 1049 | + list.add(serOne); | ||
| 1050 | + | ||
| 1051 | + log.info("开始请请求========================{}", sUrl); | ||
| 1052 | + sBody.put("bFilter",list); | ||
| 1053 | + Map<String, Object> headers = new HashMap<>(); | ||
| 1054 | + headers.put("Authorization",session.getAuthorization()); | ||
| 1055 | + String result; | ||
| 1056 | + try{ | ||
| 1057 | + // 1. 获取实例 | ||
| 1058 | + result = HttpsRequestUtil.me().doRequestHttp(sUrl,JSONObject.toJSONString(sBody),headers,"POST","JSON"); | ||
| 1059 | + log.info("请求URL========================{}", sUrl); | ||
| 1060 | + log.info("请求URLresult========================{}", result); | ||
| 1061 | + log.info("JSON==========================={}", JSONObject.toJSONString(sBody)); | ||
| 1062 | + log.info("headers=============================={}", JSONObject.toJSONString(headers)); | ||
| 1063 | + log.info("请求URL,JSON,headers=={},{},{}",sUrl,JSONObject.toJSONString(sBody),JSONObject.toJSONString(headers)); | ||
| 1064 | + ErpResult erpResult = JsonUtils.toObject(result,ErpResult.class); | ||
| 1065 | + if(ObjectUtil.isNotEmpty(erpResult) | ||
| 1066 | + && ObjectUtil.isNotEmpty(erpResult.getDataset()) | ||
| 1067 | + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows()) | ||
| 1068 | + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows().get(0)) | ||
| 1069 | + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows().get(0).getDataSet()) | ||
| 1070 | + ){ | ||
| 1071 | + return erpResult.getDataset().getRows().get(0).getDataSet(); | ||
| 1072 | + } | ||
| 1073 | + }catch (Exception e){ | ||
| 1074 | +// result ="执行异常:"+e.getMessage(); | ||
| 1075 | + } | ||
| 1076 | + return new ArrayList<>(); | ||
| 1077 | + } | ||
| 1078 | + | ||
| 1025 | 1079 | ||
| 1026 | /*** | 1080 | /*** |
| 1027 | * @Author 钱豹 | 1081 | * @Author 钱豹 |
src/main/java/com/xly/tts/bean/TTSResponseDTO.java
| @@ -82,6 +82,9 @@ public class TTSResponseDTO implements Serializable { | @@ -82,6 +82,9 @@ public class TTSResponseDTO implements Serializable { | ||
| 82 | */ | 82 | */ |
| 83 | private String dbCach; | 83 | private String dbCach; |
| 84 | 84 | ||
| 85 | + private String sCopyToSrcId; | ||
| 86 | + private String sCopyTo; | ||
| 87 | + | ||
| 85 | /** | 88 | /** |
| 86 | * 创建失败响应 | 89 | * 创建失败响应 |
| 87 | */ | 90 | */ |
src/main/java/com/xly/tts/service/PythonTtsProxyService.java
| @@ -319,6 +319,8 @@ public class PythonTtsProxyService { | @@ -319,6 +319,8 @@ public class PythonTtsProxyService { | ||
| 319 | .sReturnType(aiResponseDTO.getSReturnType()) | 319 | .sReturnType(aiResponseDTO.getSReturnType()) |
| 320 | .dbType(aiResponseDTO.getDbType()) | 320 | .dbType(aiResponseDTO.getDbType()) |
| 321 | .dbCach(aiResponseDTO.getDbCach()) | 321 | .dbCach(aiResponseDTO.getDbCach()) |
| 322 | + .sCopyTo(aiResponseDTO.getSCopyTo()) | ||
| 323 | + .sCopyToSrcId(aiResponseDTO.getSCopyToSrcId()) | ||
| 322 | .sCommonts(BusinessCode.COMMONTS.getMessage()) | 324 | .sCommonts(BusinessCode.COMMONTS.getMessage()) |
| 323 | .timestamp(System.currentTimeMillis()) | 325 | .timestamp(System.currentTimeMillis()) |
| 324 | .textLength((aiText + systemText).length()) | 326 | .textLength((aiText + systemText).length()) |
src/main/resources/templates/chat.html
| @@ -466,7 +466,7 @@ | @@ -466,7 +466,7 @@ | ||
| 466 | let brandsid= "1111111111"; | 466 | let brandsid= "1111111111"; |
| 467 | let subsidiaryid= "1111111111"; | 467 | let subsidiaryid= "1111111111"; |
| 468 | let usertype= "sysadmin"; | 468 | let usertype= "sysadmin"; |
| 469 | - let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1DDD971C9BA1323777865C7C7C720A0F7D9C9A98822AD3F0E3100F8DBBB5963377538155B7ADAEE71E899235DC1122F426"; | 469 | + let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1D9AE6CC8DE653EBAC4C98F767A8EDDD52A31A297DF9BF51740C90173D4CC922B3538155B7ADAEE71E899235DC1122F426"; |
| 470 | let hrefLock = window.location.origin+"/xlyAi"; | 470 | let hrefLock = window.location.origin+"/xlyAi"; |
| 471 | 471 | ||
| 472 | const CONFIG = { | 472 | const CONFIG = { |