Commit 37c6147d8351388d547e333a66d610b9e272c27c

Authored by qianbao
1 parent 686f9562

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

src/main/java/com/xly/tool/DynamicToolProvider.java
@@ -1006,74 +1006,76 @@ public class DynamicToolProvider implements ToolProvider { @@ -1006,74 +1006,76 @@ public class DynamicToolProvider implements ToolProvider {
1006 Map<String, Object> result = new HashMap<>(args); 1006 Map<String, Object> result = new HashMap<>(args);
1007 result = transformationArgs( result, paramDefsCheck); 1007 result = transformationArgs( result, paramDefsCheck);
1008 List<ParamRule> paramDefs = new ArrayList<>(paramDefsCheck); 1008 List<ParamRule> paramDefs = new ArrayList<>(paramDefsCheck);
  1009 + paramDefs = paramDefs.stream().filter(one-> !one.getBDynamicParam()).collect(Collectors.toList());
1009 paramDefs.sort(Comparator.comparing(ParamRule::getIOrder)); 1010 paramDefs.sort(Comparator.comparing(ParamRule::getIOrder));
1010 -// for (ParamRule pd : paramDefs) {  
1011 -// String name = pd.getSParam();  
1012 -// String sValue = pd.getSParamValue();  
1013 -// String sRule = pd.getSRule();  
1014 -// String sType = pd.getSType();  
1015 -//  
1016 -// Boolean bCheck = result.containsKey(name);  
1017 -// bCheck = bCheck && ObjectUtil.isNotEmpty(result.get(name));  
1018 -// bCheck = bCheck && RuleCode.SQL.getCode().equals(sRule);  
1019 -// bCheck = bCheck && ObjectUtil.isNotEmpty(pd.getSParamConfig());  
1020 -//  
1021 -// Boolean bCheck2 = result.containsKey(sValue);  
1022 -// bCheck2 = bCheck2 && ObjectUtil.isNotEmpty(result.get(sValue));  
1023 -// bCheck2 = bCheck2 && RuleCode.SQL.getCode().equals(sRule);  
1024 -// bCheck2 = bCheck2 && ObjectUtil.isNotEmpty(pd.getSParamConfig());  
1025 -//  
1026 -// if ((bCheck || bCheck2) &&("enum".equals(sType) || "string".equals(sType))){  
1027 -// String sSql = pd.getSParamConfig();  
1028 -// String sKey = bCheck?name:sValue;  
1029 -// String nameValue = result.get(sKey).toString();  
1030 -// List<Map<String,Object>> dataList = dynamicExeDbService.findSql(result,sSql);  
1031 -// if(ObjectUtil.isEmpty(dataList)){  
1032 -// throw new BusinessException(ErrorCode.PARAM_REQUIRED,String.format("%s 您描述的%s 不存在,请重新告诉我",name,nameValue));  
1033 -// }  
1034 -// if(ObjectUtil.isNotEmpty(args.get(name)) || ObjectUtil.isNotEmpty(args.get(sValue))){  
1035 -// if(("enum".equals(sType) ||"string".equals(sType)) && (args.get(name) instanceof List || args.get(sValue) instanceof List)){  
1036 -// if(args.get(name) instanceof List){  
1037 -// args.put(name,((List<?>) args.get(name)).get(0));  
1038 -// }  
1039 -// if(args.get(sValue) instanceof List){  
1040 -// args.put(sValue,((List<?>) args.get(sValue)).get(0));  
1041 -// }  
1042 -// }  
1043 -// List<Map<String,Object>> dataListNew = dataList.stream().filter(one->  
1044 -// ObjectUtil.isNotEmpty(one.get(sValue))  
1045 -// &&(one.get(sValue).equals(args.get(name))  
1046 -// || one.get(sValue).equals(args.get(sValue)))).collect(Collectors.toUnmodifiableList());  
1047 -//// if("enum".equals(sType) && ObjectUtil.isEmpty(dataListNew)){  
1048 -//// args.remove(name);  
1049 -//// args.remove(sValue);  
1050 -//// result.remove(name);  
1051 -//// result.remove(sValue);  
1052 -//// continue;  
1053 -//// }  
1054 -// if(ObjectUtil.isNotEmpty(dataListNew)){  
1055 -// dataList = new ArrayList<>();  
1056 -// dataList.add(dataListNew.get(0));  
1057 -// }  
1058 -// }  
1059 -// if(ObjectUtil.isNotEmpty(dataList)){  
1060 -// String sCopyTo = pd.getSCopyTo();  
1061 -// if(ObjectUtil.isEmpty(sCopyTo)){  
1062 -// result.put(sValue, dataList.get(0).get(sValue));  
1063 -// result.put(name, dataList.get(0).get(sValue));  
1064 -// }else{  
1065 -// String[] sCopyToA = sCopyTo.split(",");  
1066 -// for(String sCopyToOne:sCopyToA){  
1067 -// String[] sCopyToOneA = sCopyToOne.split(":");  
1068 -// result.put(sCopyToOneA[0], dataList.get(0).get(sCopyToOneA[1]));  
1069 -// result.put(name, dataList.get(0).get(sValue));  
1070 -// } 1011 +
  1012 + for (ParamRule pd : paramDefs) {
  1013 + String name = pd.getSParam();
  1014 + String sValue = pd.getSParamValue();
  1015 + String sRule = pd.getSRule();
  1016 + String sType = pd.getSType();
  1017 +
  1018 + Boolean bCheck = result.containsKey(name);
  1019 + bCheck = bCheck && ObjectUtil.isNotEmpty(result.get(name));
  1020 + bCheck = bCheck && RuleCode.SQL.getCode().equals(sRule);
  1021 + bCheck = bCheck && ObjectUtil.isNotEmpty(pd.getSParamConfig());
  1022 +
  1023 + Boolean bCheck2 = result.containsKey(sValue);
  1024 + bCheck2 = bCheck2 && ObjectUtil.isNotEmpty(result.get(sValue));
  1025 + bCheck2 = bCheck2 && RuleCode.SQL.getCode().equals(sRule);
  1026 + bCheck2 = bCheck2 && ObjectUtil.isNotEmpty(pd.getSParamConfig());
  1027 +
  1028 + if ((bCheck || bCheck2) &&("enum".equals(sType) || "string".equals(sType))){
  1029 + String sSql = pd.getSParamConfig();
  1030 + String sKey = bCheck?name:sValue;
  1031 + String nameValue = result.get(sKey).toString();
  1032 + List<Map<String,Object>> dataList = dynamicExeDbService.findSql(result,sSql);
  1033 + if(ObjectUtil.isEmpty(dataList)){
  1034 + throw new BusinessException(ErrorCode.PARAM_REQUIRED,String.format("%s 您描述的%s 不存在,请重新告诉我",name,nameValue));
  1035 + }
  1036 + if(ObjectUtil.isNotEmpty(args.get(name)) || ObjectUtil.isNotEmpty(args.get(sValue))){
  1037 + if(("enum".equals(sType) ||"string".equals(sType)) && (args.get(name) instanceof List || args.get(sValue) instanceof List)){
  1038 + if(args.get(name) instanceof List){
  1039 + args.put(name,((List<?>) args.get(name)).get(0));
  1040 + }
  1041 + if(args.get(sValue) instanceof List){
  1042 + args.put(sValue,((List<?>) args.get(sValue)).get(0));
  1043 + }
  1044 + }
  1045 + List<Map<String,Object>> dataListNew = dataList.stream().filter(one->
  1046 + ObjectUtil.isNotEmpty(one.get(sValue))
  1047 + &&(one.get(sValue).equals(args.get(name))
  1048 + || one.get(sValue).equals(args.get(sValue)))).collect(Collectors.toUnmodifiableList());
  1049 +// if("enum".equals(sType) && ObjectUtil.isEmpty(dataListNew)){
  1050 +// args.remove(name);
  1051 +// args.remove(sValue);
  1052 +// result.remove(name);
  1053 +// result.remove(sValue);
  1054 +// continue;
1071 // } 1055 // }
1072 -// }  
1073 -// }  
1074 -//  
1075 -//  
1076 -// } 1056 + if(ObjectUtil.isNotEmpty(dataListNew)){
  1057 + dataList = new ArrayList<>();
  1058 + dataList.add(dataListNew.get(0));
  1059 + }
  1060 + }
  1061 + if(ObjectUtil.isNotEmpty(dataList)){
  1062 + String sCopyTo = pd.getSCopyTo();
  1063 + if(ObjectUtil.isEmpty(sCopyTo)){
  1064 + result.put(sValue, dataList.get(0).get(sValue));
  1065 + result.put(name, dataList.get(0).get(sValue));
  1066 + }else{
  1067 + String[] sCopyToA = sCopyTo.split(",");
  1068 + for(String sCopyToOne:sCopyToA){
  1069 + String[] sCopyToOneA = sCopyToOne.split(":");
  1070 + result.put(sCopyToOneA[0], dataList.get(0).get(sCopyToOneA[1]));
  1071 + result.put(name, dataList.get(0).get(sValue));
  1072 + }
  1073 + }
  1074 + }
  1075 + }
  1076 +
  1077 +
  1078 + }
1077 return result; 1079 return result;
1078 } 1080 }
1079 1081
@@ -1081,7 +1083,7 @@ public class DynamicToolProvider implements ToolProvider { @@ -1081,7 +1083,7 @@ public class DynamicToolProvider implements ToolProvider {
1081 Map<String, Object> result = new HashMap<>(args); 1083 Map<String, Object> result = new HashMap<>(args);
1082 for (ParamRule pd : paramDefs) { 1084 for (ParamRule pd : paramDefs) {
1083 String name = pd.getSParam(); 1085 String name = pd.getSParam();
1084 - if ((!result.containsKey(name)|| ObjectUtil.isEmpty(result.get(name))) 1086 + if ((!result.containsKey(name) || ObjectUtil.isEmpty(result.get(name)))
1085 && ObjectUtil.isNotEmpty(pd.getSDefaultValue()) 1087 && ObjectUtil.isNotEmpty(pd.getSDefaultValue())
1086 ) { 1088 ) {
1087 Object defaultValue = pd.getSDefaultValue(); 1089 Object defaultValue = pd.getSDefaultValue();