Commit 8f63c314704209b881baf2b4745debaf6d635a9d

Authored by qianbao
1 parent 6953c605

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

src/main/java/com/xly/tool/DynamicToolProvider.java
... ... @@ -250,94 +250,103 @@ public class DynamicToolProvider implements ToolProvider {
250 250 **/
251 251 private List<ParamRule> doSetParamgetArgsAfter(Map<String,Object> argsNew,UserSceneSession session){
252 252 //获取当前方法
253   - ToolMeta tool = session.getCurrentTool();
254   - Map<String, Object> argsOld = session.getArgs();
255   - Map<String, Object> args = DeepCopyUtils.deepCopy(argsNew);
256   - if(ObjectUtil.isEmpty(argsOld)){
257   - argsOld = new HashMap<>();
258   - }
259   - //根据新录入的参数获取规则
260   - List<ParamRule> paramRuleDataAll = tool.getParamRuleListAll();
261   - //动态参数
262   - List<ParamRule> paramRuleData = paramRuleDataAll.stream().filter(one->
263   - ( ObjectUtil.isNotEmpty(args.get(one.getSParam())) || ObjectUtil.isNotEmpty(args.get(one.getSParamValue())))
264   - && ObjectUtil.isNotEmpty(one.getSDynamicParamRuleSql())
265   - ).collect(Collectors.toUnmodifiableList());
266   - //为空的时候需要重新插入不为空 表示之前已经放过了
267 253 //根据新参数获取需要填写参数
268 254 List<ParamRule> dynamicParamRule = new ArrayList<>();
269   - AtomicReference<List<ParamRule>> paramRuleDataAllNew = new AtomicReference<>(paramRuleDataAll);
270   - if(ObjectUtil.isNotEmpty(paramRuleData)){
271   - Map<String, Object> finalArgsOld = argsOld;
272   - paramRuleData.forEach(one->{
273   - Map<String,Object> searMap = new HashMap<>();
274   - searMap.putAll(args);
275   - //新参数如果值变了移除掉之前插入的
276   - paramRuleDataAllNew.set(paramRuleDataAll.stream().filter(d ->
277   - !one.getSParam().equals(d.getSDynamicParam())
278   - || (one.getSParam().equals(d.getSDynamicParam()) && one.getSParamValue().equals(d.getSParamValue()))
279   - ).collect(Collectors.toUnmodifiableList()));
280   -
281   - String sValue = searMap.get(one.getSParam()).toString();
282   - List<String> addValue = new ArrayList<>();
283   - if(JSONUtil.isTypeJSONArray(sValue)){
284   - addValue = JSONUtil.toList(sValue,String.class);
285   - }else{
286   - addValue.add(sValue);
287   - }
288   - for(String sVaule:addValue){
289   - //根据值获取动态部件
290   - List<ParamRule> paramRuleDataD = paramRuleDataAllNew.get().stream().filter(d ->
291   - d.getBDynamicParam()
292   - && sValue.equals(d.getSDynamicParam())
293   - && one.getSParam().equals(d.getSDynamicParamName())
294   - ).collect(Collectors.toUnmodifiableList());
295   -
296   - //如果不存在的加入方法参数中
297   - if(ObjectUtil.isEmpty(paramRuleDataD)){
298   - searMap.put("sRuleId",one.getSId());
299   - searMap.put("sTooId",one.getSParentId());
300   - searMap.put("sParam",one.getSParam());
301   - searMap.put("sParamValue",sVaule);
  255 + try{
  256 + ToolMeta tool = session.getCurrentTool();
  257 + Map<String, Object> argsOld = session.getArgs();
  258 + Map<String, Object> args = DeepCopyUtils.deepCopy(argsNew);
  259 + if(ObjectUtil.isEmpty(argsOld)){
  260 + argsOld = new HashMap<>();
  261 + }
  262 + //根据新录入的参数获取规则
  263 + List<ParamRule> paramRuleDataAll = tool.getParamRuleListAll();
  264 + //动态参数
  265 + List<ParamRule> paramRuleData = paramRuleDataAll.stream().filter(one->
  266 + ( ObjectUtil.isNotEmpty(args.get(one.getSParam())) || ObjectUtil.isNotEmpty(args.get(one.getSParamValue())))
  267 + && ObjectUtil.isNotEmpty(one.getSDynamicParamRuleSql())
  268 + ).collect(Collectors.toUnmodifiableList());
  269 + //为空的时候需要重新插入不为空 表示之前已经放过了
  270 + AtomicReference<List<ParamRule>> paramRuleDataAllNew = new AtomicReference<>(paramRuleDataAll);
  271 + if(ObjectUtil.isNotEmpty(paramRuleData)){
  272 + Map<String, Object> finalArgsOld = argsOld;
  273 + paramRuleData.forEach(one->{
  274 + Map<String,Object> searMap = new HashMap<>();
  275 + searMap.putAll(args);
  276 + //新参数如果值变了移除掉之前插入的
  277 + paramRuleDataAllNew.set(paramRuleDataAll.stream().filter(d ->
  278 + !one.getSParam().equals(d.getSDynamicParam())
  279 + || (one.getSParam().equals(d.getSDynamicParam()) && one.getSParamValue().equals(d.getSParamValue()))
  280 + ).collect(Collectors.toUnmodifiableList()));
  281 +
  282 + String sValue = searMap.get(one.getSParam()).toString();
  283 + List<String> addValue = new ArrayList<>();
  284 + if(JSONUtil.isTypeJSONArray(sValue)){
  285 + addValue = JSONUtil.toList(sValue,String.class);
  286 + }else{
  287 + addValue.add(sValue);
  288 + }
  289 + for(String sVaule:addValue){
  290 + //根据值获取动态部件
  291 + List<ParamRule> paramRuleDataD = paramRuleDataAllNew.get().stream().filter(d ->
  292 + d.getBDynamicParam()
  293 + && sValue.equals(d.getSDynamicParam())
  294 + && one.getSParam().equals(d.getSDynamicParamName())
  295 + ).collect(Collectors.toUnmodifiableList());
  296 +
  297 + //如果不存在的加入方法参数中
  298 + if(ObjectUtil.isEmpty(paramRuleDataD)){
  299 + searMap.put("sRuleId",one.getSId());
  300 + searMap.put("sTooId",one.getSParentId());
  301 + searMap.put("sParam",one.getSParam());
  302 + searMap.put("sParamValue",sVaule);
302 303 // searMap.put("sParamValue",one.getSParamValue());
303   - searMap.put("sParamName",one.getSParam());
304   - String sSql = one.getSDynamicParamRuleSql();
305   - searMap.put("argsNew",JSONObject.toJSONString(args));
306   - searMap.put("argsAll",JSONObject.toJSONString(finalArgsOld));
307   - //如果不是SELECT 开头
308   - List<Map<String,Object>> selectData = new ArrayList<>();
309   - List<Map<String,Object>> dynamicParamRuleOne = new ArrayList<>();
310   - if(sSql.replaceAll(" ","").toLowerCase().startsWith("select")
311   - || sSql.replaceAll(" ","").toLowerCase().startsWith("call")){
312   - selectData = this.dynamicExeDbService.findSql(searMap, sSql);
313   - String sData = (ObjectUtil.isNotEmpty(selectData)
314   - && ObjectUtil.isNotEmpty(selectData.get(0).get("sData")))?selectData.get(0).get("sData").toString():StrUtil.EMPTY;
315   - if(ObjectUtil.isNotEmpty(sData)){
316   - dynamicParamRuleOne = JsonUtils.toList(sData,Map.class);
  304 + searMap.put("sParamName",one.getSParam());
  305 + String sSql = one.getSDynamicParamRuleSql();
  306 + searMap.put("argsNew",JSONObject.toJSONString(args));
  307 + searMap.put("argsAll",JSONObject.toJSONString(finalArgsOld));
  308 + //如果不是SELECT 开头
  309 + List<Map<String,Object>> selectData = new ArrayList<>();
  310 + List<Map<String,Object>> dynamicParamRuleOne = new ArrayList<>();
  311 + if(sSql.replaceAll(" ","").toLowerCase().startsWith("select")
  312 + || sSql.replaceAll(" ","").toLowerCase().startsWith("call")){
  313 + try{
  314 + selectData = this.dynamicExeDbService.findSql(searMap, sSql);
  315 + if(ObjectUtil.isNotEmpty(selectData)){
  316 + String sData = (ObjectUtil.isNotEmpty(selectData)
  317 + && ObjectUtil.isNotEmpty(selectData.get(0).get("sData")))?selectData.get(0).get("sData").toString():StrUtil.EMPTY;
  318 + if(ObjectUtil.isNotEmpty(sData)){
  319 + dynamicParamRuleOne = JsonUtils.toList(sData,Map.class);
  320 + }
  321 + }
  322 + }catch (Exception e){}
  323 + }else{
  324 + //表示过程走自定义参数
  325 + }
  326 + if(ObjectUtil.isNotEmpty(dynamicParamRuleOne)){
  327 + dynamicParamRuleOne.forEach(dynamicParamRuleData->{
  328 + ParamRule paramRule = BeanUtil.toBean(dynamicParamRuleData,ParamRule.class);
  329 + dynamicParamRule.add(paramRule);
  330 + });
317 331 }
318   - }else{
319   - //表示过程走自定义参数
320   - }
321   - if(ObjectUtil.isNotEmpty(dynamicParamRuleOne)){
322   - dynamicParamRuleOne.forEach(dynamicParamRuleData->{
323   - ParamRule paramRule = BeanUtil.toBean(dynamicParamRuleData,ParamRule.class);
324   - dynamicParamRule.add(paramRule);
325   - });
326 332 }
327 333 }
328   - }
329   - });
  334 + });
  335 + }
  336 + List<ParamRule> dataAll = new ArrayList<>(paramRuleDataAllNew.get());
  337 + dataAll.addAll(dynamicParamRule);
  338 + paramRuleDataAllNew.set(dataAll);
  339 + List<ParamRule> newList = new ArrayList<>(paramRuleDataAllNew.get());
  340 + List<ParamRule> dynamicParamRuleAll = Validator.deduplicateByParamValue(newList);
  341 + List<ParamRule> paramRuleList = dynamicParamRuleAll.stream().filter(one-> one.getBTipModel()).collect(Collectors.toUnmodifiableList());
  342 + List<ParamRule> paramRuleListCheck = dynamicParamRuleAll.stream().filter(one->one.getBEmpty()).collect(Collectors.toUnmodifiableList());
  343 + session.getCurrentTool().setParamRuleListAll(dynamicParamRuleAll);
  344 + session.getCurrentTool().setParamRuleListCheck(paramRuleListCheck);
  345 + session.getCurrentTool().setParamRuleList(paramRuleList);
  346 + }catch (Exception e){
  347 +
330 348 }
331   - List<ParamRule> dataAll = new ArrayList<>(paramRuleDataAllNew.get());
332   - dataAll.addAll(dynamicParamRule);
333   - paramRuleDataAllNew.set(dataAll);
334   - List<ParamRule> newList = new ArrayList<>(paramRuleDataAllNew.get());
335   - List<ParamRule> dynamicParamRuleAll = Validator.deduplicateByParamValue(newList);
336   - List<ParamRule> paramRuleList = dynamicParamRuleAll.stream().filter(one-> one.getBTipModel()).collect(Collectors.toUnmodifiableList());
337   - List<ParamRule> paramRuleListCheck = dynamicParamRuleAll.stream().filter(one->one.getBEmpty()).collect(Collectors.toUnmodifiableList());
338   - session.getCurrentTool().setParamRuleListAll(dynamicParamRuleAll);
339   - session.getCurrentTool().setParamRuleListCheck(paramRuleListCheck);
340   - session.getCurrentTool().setParamRuleList(paramRuleList);
  349 +
341 350 return dynamicParamRule;
342 351 }
343 352  
... ...
src/main/java/com/xly/util/Validator.java
... ... @@ -4,10 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
4 4 import com.xly.entity.ParamRule;
5 5  
6 6 import java.lang.reflect.Array;
7   -import java.util.ArrayList;
8   -import java.util.Collection;
9   -import java.util.List;
10   -import java.util.Map;
  7 +import java.util.*;
11 8 import java.util.function.Function;
12 9 import java.util.stream.Collectors;
13 10  
... ... @@ -78,7 +75,11 @@ public class Validator {
78 75 }
79 76 return source.stream()
80 77 .collect(Collectors.toMap(
81   - ParamRule::getSParamValue, // 根据 sParamValue 去重
  78 + rule -> Arrays.asList(
  79 + rule.getSParamValue(),
  80 + rule.getSDynamicParam(),
  81 + rule.getSDynamicParamName()
  82 + ),
82 83 Function.identity(),
83 84 (existing, replacement) -> existing // 保留第一个
84 85 ))
... ... @@ -86,4 +87,5 @@ public class Validator {
86 87 .stream()
87 88 .collect(Collectors.toList());
88 89 }
  90 +
89 91 }
90 92 \ No newline at end of file
... ...