From 8f63c314704209b881baf2b4745debaf6d635a9d Mon Sep 17 00:00:00 2001 From: qianbao Date: Sat, 11 Jul 2026 00:23:01 +0800 Subject: [PATCH] 添加未清选择 改成动态引导语 --- src/main/java/com/xly/tool/DynamicToolProvider.java | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------- src/main/java/com/xly/util/Validator.java | 12 +++++++----- 2 files changed, 97 insertions(+), 86 deletions(-) diff --git a/src/main/java/com/xly/tool/DynamicToolProvider.java b/src/main/java/com/xly/tool/DynamicToolProvider.java index 61352b6..a13075c 100644 --- a/src/main/java/com/xly/tool/DynamicToolProvider.java +++ b/src/main/java/com/xly/tool/DynamicToolProvider.java @@ -250,94 +250,103 @@ public class DynamicToolProvider implements ToolProvider { **/ private List doSetParamgetArgsAfter(Map argsNew,UserSceneSession session){ //获取当前方法 - ToolMeta tool = session.getCurrentTool(); - Map argsOld = session.getArgs(); - Map args = DeepCopyUtils.deepCopy(argsNew); - if(ObjectUtil.isEmpty(argsOld)){ - argsOld = new HashMap<>(); - } - //根据新录入的参数获取规则 - List paramRuleDataAll = tool.getParamRuleListAll(); - //动态参数 - List paramRuleData = paramRuleDataAll.stream().filter(one-> - ( ObjectUtil.isNotEmpty(args.get(one.getSParam())) || ObjectUtil.isNotEmpty(args.get(one.getSParamValue()))) - && ObjectUtil.isNotEmpty(one.getSDynamicParamRuleSql()) - ).collect(Collectors.toUnmodifiableList()); - //为空的时候需要重新插入不为空 表示之前已经放过了 //根据新参数获取需要填写参数 List dynamicParamRule = new ArrayList<>(); - AtomicReference> paramRuleDataAllNew = new AtomicReference<>(paramRuleDataAll); - if(ObjectUtil.isNotEmpty(paramRuleData)){ - Map finalArgsOld = argsOld; - paramRuleData.forEach(one->{ - Map searMap = new HashMap<>(); - searMap.putAll(args); - //新参数如果值变了移除掉之前插入的 - paramRuleDataAllNew.set(paramRuleDataAll.stream().filter(d -> - !one.getSParam().equals(d.getSDynamicParam()) - || (one.getSParam().equals(d.getSDynamicParam()) && one.getSParamValue().equals(d.getSParamValue())) - ).collect(Collectors.toUnmodifiableList())); - - String sValue = searMap.get(one.getSParam()).toString(); - List addValue = new ArrayList<>(); - if(JSONUtil.isTypeJSONArray(sValue)){ - addValue = JSONUtil.toList(sValue,String.class); - }else{ - addValue.add(sValue); - } - for(String sVaule:addValue){ - //根据值获取动态部件 - List paramRuleDataD = paramRuleDataAllNew.get().stream().filter(d -> - d.getBDynamicParam() - && sValue.equals(d.getSDynamicParam()) - && one.getSParam().equals(d.getSDynamicParamName()) - ).collect(Collectors.toUnmodifiableList()); - - //如果不存在的加入方法参数中 - if(ObjectUtil.isEmpty(paramRuleDataD)){ - searMap.put("sRuleId",one.getSId()); - searMap.put("sTooId",one.getSParentId()); - searMap.put("sParam",one.getSParam()); - searMap.put("sParamValue",sVaule); + try{ + ToolMeta tool = session.getCurrentTool(); + Map argsOld = session.getArgs(); + Map args = DeepCopyUtils.deepCopy(argsNew); + if(ObjectUtil.isEmpty(argsOld)){ + argsOld = new HashMap<>(); + } + //根据新录入的参数获取规则 + List paramRuleDataAll = tool.getParamRuleListAll(); + //动态参数 + List paramRuleData = paramRuleDataAll.stream().filter(one-> + ( ObjectUtil.isNotEmpty(args.get(one.getSParam())) || ObjectUtil.isNotEmpty(args.get(one.getSParamValue()))) + && ObjectUtil.isNotEmpty(one.getSDynamicParamRuleSql()) + ).collect(Collectors.toUnmodifiableList()); + //为空的时候需要重新插入不为空 表示之前已经放过了 + AtomicReference> paramRuleDataAllNew = new AtomicReference<>(paramRuleDataAll); + if(ObjectUtil.isNotEmpty(paramRuleData)){ + Map finalArgsOld = argsOld; + paramRuleData.forEach(one->{ + Map searMap = new HashMap<>(); + searMap.putAll(args); + //新参数如果值变了移除掉之前插入的 + paramRuleDataAllNew.set(paramRuleDataAll.stream().filter(d -> + !one.getSParam().equals(d.getSDynamicParam()) + || (one.getSParam().equals(d.getSDynamicParam()) && one.getSParamValue().equals(d.getSParamValue())) + ).collect(Collectors.toUnmodifiableList())); + + String sValue = searMap.get(one.getSParam()).toString(); + List addValue = new ArrayList<>(); + if(JSONUtil.isTypeJSONArray(sValue)){ + addValue = JSONUtil.toList(sValue,String.class); + }else{ + addValue.add(sValue); + } + for(String sVaule:addValue){ + //根据值获取动态部件 + List paramRuleDataD = paramRuleDataAllNew.get().stream().filter(d -> + d.getBDynamicParam() + && sValue.equals(d.getSDynamicParam()) + && one.getSParam().equals(d.getSDynamicParamName()) + ).collect(Collectors.toUnmodifiableList()); + + //如果不存在的加入方法参数中 + if(ObjectUtil.isEmpty(paramRuleDataD)){ + searMap.put("sRuleId",one.getSId()); + searMap.put("sTooId",one.getSParentId()); + searMap.put("sParam",one.getSParam()); + searMap.put("sParamValue",sVaule); // searMap.put("sParamValue",one.getSParamValue()); - searMap.put("sParamName",one.getSParam()); - String sSql = one.getSDynamicParamRuleSql(); - searMap.put("argsNew",JSONObject.toJSONString(args)); - searMap.put("argsAll",JSONObject.toJSONString(finalArgsOld)); - //如果不是SELECT 开头 - List> selectData = new ArrayList<>(); - List> dynamicParamRuleOne = new ArrayList<>(); - if(sSql.replaceAll(" ","").toLowerCase().startsWith("select") - || sSql.replaceAll(" ","").toLowerCase().startsWith("call")){ - selectData = this.dynamicExeDbService.findSql(searMap, sSql); - String sData = (ObjectUtil.isNotEmpty(selectData) - && ObjectUtil.isNotEmpty(selectData.get(0).get("sData")))?selectData.get(0).get("sData").toString():StrUtil.EMPTY; - if(ObjectUtil.isNotEmpty(sData)){ - dynamicParamRuleOne = JsonUtils.toList(sData,Map.class); + searMap.put("sParamName",one.getSParam()); + String sSql = one.getSDynamicParamRuleSql(); + searMap.put("argsNew",JSONObject.toJSONString(args)); + searMap.put("argsAll",JSONObject.toJSONString(finalArgsOld)); + //如果不是SELECT 开头 + List> selectData = new ArrayList<>(); + List> dynamicParamRuleOne = new ArrayList<>(); + if(sSql.replaceAll(" ","").toLowerCase().startsWith("select") + || sSql.replaceAll(" ","").toLowerCase().startsWith("call")){ + try{ + selectData = this.dynamicExeDbService.findSql(searMap, sSql); + if(ObjectUtil.isNotEmpty(selectData)){ + String sData = (ObjectUtil.isNotEmpty(selectData) + && ObjectUtil.isNotEmpty(selectData.get(0).get("sData")))?selectData.get(0).get("sData").toString():StrUtil.EMPTY; + if(ObjectUtil.isNotEmpty(sData)){ + dynamicParamRuleOne = JsonUtils.toList(sData,Map.class); + } + } + }catch (Exception e){} + }else{ + //表示过程走自定义参数 + } + if(ObjectUtil.isNotEmpty(dynamicParamRuleOne)){ + dynamicParamRuleOne.forEach(dynamicParamRuleData->{ + ParamRule paramRule = BeanUtil.toBean(dynamicParamRuleData,ParamRule.class); + dynamicParamRule.add(paramRule); + }); } - }else{ - //表示过程走自定义参数 - } - if(ObjectUtil.isNotEmpty(dynamicParamRuleOne)){ - dynamicParamRuleOne.forEach(dynamicParamRuleData->{ - ParamRule paramRule = BeanUtil.toBean(dynamicParamRuleData,ParamRule.class); - dynamicParamRule.add(paramRule); - }); } } - } - }); + }); + } + List dataAll = new ArrayList<>(paramRuleDataAllNew.get()); + dataAll.addAll(dynamicParamRule); + paramRuleDataAllNew.set(dataAll); + List newList = new ArrayList<>(paramRuleDataAllNew.get()); + List dynamicParamRuleAll = Validator.deduplicateByParamValue(newList); + List paramRuleList = dynamicParamRuleAll.stream().filter(one-> one.getBTipModel()).collect(Collectors.toUnmodifiableList()); + List paramRuleListCheck = dynamicParamRuleAll.stream().filter(one->one.getBEmpty()).collect(Collectors.toUnmodifiableList()); + session.getCurrentTool().setParamRuleListAll(dynamicParamRuleAll); + session.getCurrentTool().setParamRuleListCheck(paramRuleListCheck); + session.getCurrentTool().setParamRuleList(paramRuleList); + }catch (Exception e){ + } - List dataAll = new ArrayList<>(paramRuleDataAllNew.get()); - dataAll.addAll(dynamicParamRule); - paramRuleDataAllNew.set(dataAll); - List newList = new ArrayList<>(paramRuleDataAllNew.get()); - List dynamicParamRuleAll = Validator.deduplicateByParamValue(newList); - List paramRuleList = dynamicParamRuleAll.stream().filter(one-> one.getBTipModel()).collect(Collectors.toUnmodifiableList()); - List paramRuleListCheck = dynamicParamRuleAll.stream().filter(one->one.getBEmpty()).collect(Collectors.toUnmodifiableList()); - session.getCurrentTool().setParamRuleListAll(dynamicParamRuleAll); - session.getCurrentTool().setParamRuleListCheck(paramRuleListCheck); - session.getCurrentTool().setParamRuleList(paramRuleList); + return dynamicParamRule; } diff --git a/src/main/java/com/xly/util/Validator.java b/src/main/java/com/xly/util/Validator.java index 591232c..4c0c81e 100644 --- a/src/main/java/com/xly/util/Validator.java +++ b/src/main/java/com/xly/util/Validator.java @@ -4,10 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.xly.entity.ParamRule; import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -78,7 +75,11 @@ public class Validator { } return source.stream() .collect(Collectors.toMap( - ParamRule::getSParamValue, // 根据 sParamValue 去重 + rule -> Arrays.asList( + rule.getSParamValue(), + rule.getSDynamicParam(), + rule.getSDynamicParamName() + ), Function.identity(), (existing, replacement) -> existing // 保留第一个 )) @@ -86,4 +87,5 @@ public class Validator { .stream() .collect(Collectors.toList()); } + } \ No newline at end of file -- libgit2 0.22.2