Commit 8f63c314704209b881baf2b4745debaf6d635a9d
1 parent
6953c605
添加未清选择 改成动态引导语
Showing
2 changed files
with
97 additions
and
86 deletions
src/main/java/com/xly/tool/DynamicToolProvider.java
| @@ -250,94 +250,103 @@ public class DynamicToolProvider implements ToolProvider { | @@ -250,94 +250,103 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 250 | **/ | 250 | **/ |
| 251 | private List<ParamRule> doSetParamgetArgsAfter(Map<String,Object> argsNew,UserSceneSession session){ | 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 | List<ParamRule> dynamicParamRule = new ArrayList<>(); | 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 | // searMap.put("sParamValue",one.getSParamValue()); | 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 | return dynamicParamRule; | 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,10 +4,7 @@ import cn.hutool.core.util.ObjectUtil; | ||
| 4 | import com.xly.entity.ParamRule; | 4 | import com.xly.entity.ParamRule; |
| 5 | 5 | ||
| 6 | import java.lang.reflect.Array; | 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 | import java.util.function.Function; | 8 | import java.util.function.Function; |
| 12 | import java.util.stream.Collectors; | 9 | import java.util.stream.Collectors; |
| 13 | 10 | ||
| @@ -78,7 +75,11 @@ public class Validator { | @@ -78,7 +75,11 @@ public class Validator { | ||
| 78 | } | 75 | } |
| 79 | return source.stream() | 76 | return source.stream() |
| 80 | .collect(Collectors.toMap( | 77 | .collect(Collectors.toMap( |
| 81 | - ParamRule::getSParamValue, // 根据 sParamValue 去重 | 78 | + rule -> Arrays.asList( |
| 79 | + rule.getSParamValue(), | ||
| 80 | + rule.getSDynamicParam(), | ||
| 81 | + rule.getSDynamicParamName() | ||
| 82 | + ), | ||
| 82 | Function.identity(), | 83 | Function.identity(), |
| 83 | (existing, replacement) -> existing // 保留第一个 | 84 | (existing, replacement) -> existing // 保留第一个 |
| 84 | )) | 85 | )) |
| @@ -86,4 +87,5 @@ public class Validator { | @@ -86,4 +87,5 @@ public class Validator { | ||
| 86 | .stream() | 87 | .stream() |
| 87 | .collect(Collectors.toList()); | 88 | .collect(Collectors.toList()); |
| 88 | } | 89 | } |
| 90 | + | ||
| 89 | } | 91 | } |
| 90 | \ No newline at end of file | 92 | \ No newline at end of file |