diff --git a/src/main/java/com/xly/entity/AiResponseDTO.java b/src/main/java/com/xly/entity/AiResponseDTO.java index 72f84e7..6e4fd84 100644 --- a/src/main/java/com/xly/entity/AiResponseDTO.java +++ b/src/main/java/com/xly/entity/AiResponseDTO.java @@ -149,6 +149,22 @@ public class AiResponseDTO implements Serializable { */ private String dbCach; + /*** + * @Author 钱豹 + * @Date 15:15 2026/4/14 + * @Param + * @return + * @Description 操作未清类型 + **/ + private String sCopyTo; + /*** + * @Author 钱豹 + * @Date 15:16 2026/4/14 + * @Param + * @return + * @Description 未清记录ID + **/ + private String sCopyToSrcId; // ============ 便捷方法 ============ diff --git a/src/main/java/com/xly/entity/UserSceneSession.java b/src/main/java/com/xly/entity/UserSceneSession.java index 79f9b85..4e1ebfd 100644 --- a/src/main/java/com/xly/entity/UserSceneSession.java +++ b/src/main/java/com/xly/entity/UserSceneSession.java @@ -84,6 +84,23 @@ public class UserSceneSession { **/ private String sSystemPrompt; + /*** + * @Author 钱豹 + * @Date 15:15 2026/4/14 + * @Param + * @return + * @Description 操作未清类型 + **/ + private String sCopyTo; + /*** + * @Author 钱豹 + * @Date 15:16 2026/4/14 + * @Param + * @return + * @Description 未清记录ID + **/ + private String sCopyToSrcId; + /** * 构建场景选择提示语:展示权限内场景,引导用户选择 * @return 自然语言提示语 diff --git a/src/main/java/com/xly/service/XlyErpService.java b/src/main/java/com/xly/service/XlyErpService.java index d779956..f44648a 100644 --- a/src/main/java/com/xly/service/XlyErpService.java +++ b/src/main/java/com/xly/service/XlyErpService.java @@ -317,6 +317,8 @@ public class XlyErpService { session.setSFunPrompts(null); session.setDbCach(StrUtil.EMPTY); session.setDbType(StrUtil.EMPTY); + session.setSCopyTo(StrUtil.EMPTY); + session.setSCopyToSrcId(StrUtil.EMPTY); sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; // 2. 特殊指令:重置场景(无论是否已选,都可重置) @@ -398,7 +400,15 @@ public class XlyErpService { //2.处理工具参数采集结束后业务逻辑处理 //调用方法,参数缺失部分提示,就直接使用方法返回的 sResponMessage = dynamicToolProvider.doDynamicTool(session.getCurrentTool(),session); - return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(sResponMessage).dbType(session.getDbType()).dbCach(session.getDbCach()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); + return AiResponseDTO.builder().sSceneName(sceneName) + .sMethodName(methodName) + .aiText(sResponMessage) + .sCopyTo(session.getSCopyTo()) + .sCopyToSrcId(session.getSCopyToSrcId()) + .dbType(session.getDbType()) + .dbCach(session.getDbCach()) + .sReturnType(ReturnTypeCode.HTML.getCode()) + .build(); }else if(session.getCurrentScene()== null ){ return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText("当前场景:没有选择 退回当前场景 请输入 "+ CommonConstant.RESET + sResponMessage).dbType(session.getDbType()).dbCach(session.getDbCach()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); }else{ diff --git a/src/main/java/com/xly/tool/DynamicToolProvider.java b/src/main/java/com/xly/tool/DynamicToolProvider.java index aab6020..4fd44c5 100644 --- a/src/main/java/com/xly/tool/DynamicToolProvider.java +++ b/src/main/java/com/xly/tool/DynamicToolProvider.java @@ -970,7 +970,13 @@ public class DynamicToolProvider implements ToolProvider { Map data = new HashMap<>(args); data.put("sData", JSONObject.toJSONString(data)); if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ - sBizContent ="Sp_Ai_AddCommonAfter"; + sBizContent ="Sp_Ai_AddCommonAfterNew"; + //获取未清数据 + if(ObjectUtil.isEmpty(args.get("sSlaveId"))){ + throw new BusinessException(-1,"请选择操作数据"); + } + List> sRowData = doGetFromDataWq( meta, args, session); + data.put("sRowData", JSONObject.toJSONString(sRowData)); } Map searMap = this.dynamicExeDbService.getDoProMap(sBizContent, data); Map sReturn = this.dynamicExeDbService.getCallPro(searMap, sBizContent); @@ -981,6 +987,9 @@ public class DynamicToolProvider implements ToolProvider { session.setSFunPrompts(sMsgText); throw new BusinessException(sCode,sMsgText); } + String sId = ObjectUtil.isNotEmpty(sReturn.get("sId")) ? sReturn.get("sId").toString() : ""; + session.setSCopyTo(meta.getSControlName()); + session.setSCopyToSrcId(sId); session.setSFunPrompts(sMsgText); return sMsgText; } else if (iBizType == 2 && ObjectUtil.isNotEmpty(sBizContent)) { @@ -1022,6 +1031,51 @@ public class DynamicToolProvider implements ToolProvider { return "操作成功"; } + /*** + * @Author + * 确认获取未清数据 + **/ + private List> doGetFromDataWq(ToolMeta meta, Map args,UserSceneSession session){ + String sUrl = meta.getSendUrl(); + Map sBody = new HashMap<>(); + sBody.put("pageNum",1); + sBody.put("pageSize",10000); + log.info("doGetFromData========================"); + List> list = new ArrayList<>(); + Map serOne = new HashMap<>(4); + serOne.put("bFilterCondition","IN"); + serOne.put("bFilterValue",args.get("sSlaveId")); + serOne.put("bFilterName","sSlaveId"); + list.add(serOne); + + log.info("开始请请求========================{}", sUrl); + sBody.put("bFilter",list); + Map headers = new HashMap<>(); + headers.put("Authorization",session.getAuthorization()); + String result; + try{ + // 1. 获取实例 + result = HttpsRequestUtil.me().doRequestHttp(sUrl,JSONObject.toJSONString(sBody),headers,"POST","JSON"); + log.info("请求URL========================{}", sUrl); + log.info("请求URLresult========================{}", result); + log.info("JSON==========================={}", JSONObject.toJSONString(sBody)); + log.info("headers=============================={}", JSONObject.toJSONString(headers)); + log.info("请求URL,JSON,headers=={},{},{}",sUrl,JSONObject.toJSONString(sBody),JSONObject.toJSONString(headers)); + ErpResult erpResult = JsonUtils.toObject(result,ErpResult.class); + if(ObjectUtil.isNotEmpty(erpResult) + && ObjectUtil.isNotEmpty(erpResult.getDataset()) + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows()) + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows().get(0)) + && ObjectUtil.isNotEmpty(erpResult.getDataset().getRows().get(0).getDataSet()) + ){ + return erpResult.getDataset().getRows().get(0).getDataSet(); + } + }catch (Exception e){ +// result ="执行异常:"+e.getMessage(); + } + return new ArrayList<>(); + } + /*** * @Author 钱豹 diff --git a/src/main/java/com/xly/tts/bean/TTSResponseDTO.java b/src/main/java/com/xly/tts/bean/TTSResponseDTO.java index a32f2fb..51dd503 100644 --- a/src/main/java/com/xly/tts/bean/TTSResponseDTO.java +++ b/src/main/java/com/xly/tts/bean/TTSResponseDTO.java @@ -82,6 +82,9 @@ public class TTSResponseDTO implements Serializable { */ private String dbCach; + private String sCopyToSrcId; + private String sCopyTo; + /** * 创建失败响应 */ diff --git a/src/main/java/com/xly/tts/service/PythonTtsProxyService.java b/src/main/java/com/xly/tts/service/PythonTtsProxyService.java index 6705344..3cee0a5 100644 --- a/src/main/java/com/xly/tts/service/PythonTtsProxyService.java +++ b/src/main/java/com/xly/tts/service/PythonTtsProxyService.java @@ -319,6 +319,8 @@ public class PythonTtsProxyService { .sReturnType(aiResponseDTO.getSReturnType()) .dbType(aiResponseDTO.getDbType()) .dbCach(aiResponseDTO.getDbCach()) + .sCopyTo(aiResponseDTO.getSCopyTo()) + .sCopyToSrcId(aiResponseDTO.getSCopyToSrcId()) .sCommonts(BusinessCode.COMMONTS.getMessage()) .timestamp(System.currentTimeMillis()) .textLength((aiText + systemText).length()) diff --git a/src/main/resources/templates/chat.html b/src/main/resources/templates/chat.html index 7e6b628..9d2d0d7 100644 --- a/src/main/resources/templates/chat.html +++ b/src/main/resources/templates/chat.html @@ -466,7 +466,7 @@ let brandsid= "1111111111"; let subsidiaryid= "1111111111"; let usertype= "sysadmin"; - let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1DDD971C9BA1323777865C7C7C720A0F7D9C9A98822AD3F0E3100F8DBBB5963377538155B7ADAEE71E899235DC1122F426"; + let authorization="CE444885A9BCFDDE1FD793F8A0931301E9D7DE6CEDD9DE4B83ECE2219C7829A8F3419238942A93E9AD666629E18D159AF7FE144A6407DE745BA0AEC8B235FC1D9AE6CC8DE653EBAC4C98F767A8EDDD52A31A297DF9BF51740C90173D4CC922B3538155B7ADAEE71E899235DC1122F426"; let hrefLock = window.location.origin+"/xlyAi"; const CONFIG = {