Commit 05b077292d1040fd1472c441dfeeee9113a196e8

Authored by qianbao
1 parent e5fb3dd8

添加未清选择 改成动态引导语

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 = {