【fix sonar】QueryGenerator文件

This commit is contained in:
梁琦涛
2023-03-09 17:37:19 +08:00
parent b7de1e4cba
commit f918a22552
@@ -115,17 +115,21 @@ public class QueryGenerator {
*/ */
//区间条件组装 模糊查询 高级查询组装 简单排序 权限查询 //区间条件组装 模糊查询 高级查询组装 简单排序 权限查询
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj); PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj);
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap(); Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
//权限规则自定义SQL表达式 //权限规则自定义SQL表达式
for (String c : ruleMap.keySet()) { for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
String c = entry.getKey();
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){ if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue()))); queryWrapper.and(i ->i.apply(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue())));
} }
} }
String name, type, column; String name;
String type;
String column;
// update-begin--Author:taoyan Date:20200923 forissues/1671 如果字段加注解了@TableField(exist = false),不走DB查询------- // update-begin--Author:taoyan Date:20200923 forissues/1671 如果字段加注解了@TableField(exist = false),不走DB查询-------
//定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题 //定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题
Map<String,String> fieldColumnMap = new HashMap<>(); Map<String,String> fieldColumnMap = new HashMap<>();
@@ -204,7 +208,8 @@ public class QueryGenerator {
*/ */
private static void doIntervalQuery(QueryWrapper<?> queryWrapper, Map<String, String[]> parameterMap, String type, String filedName, String columnName) throws ParseException { private static void doIntervalQuery(QueryWrapper<?> queryWrapper, Map<String, String[]> parameterMap, String type, String filedName, String columnName) throws ParseException {
// 添加 判断是否有区间值 // 添加 判断是否有区间值
String endValue = null,beginValue = null; String endValue;
String beginValue;
if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) { if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) {
beginValue = parameterMap.get(filedName + BEGIN)[0].trim(); beginValue = parameterMap.get(filedName + BEGIN)[0].trim();
addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE); addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE);
@@ -223,7 +228,8 @@ public class QueryGenerator {
//多字段排序 //多字段排序
public static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) { public static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
String column=null,order=null; String column=null;
String order=null;
if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) { if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
column = parameterMap.get(ORDER_COLUMN)[0]; column = parameterMap.get(ORDER_COLUMN)[0];
} }
@@ -329,16 +335,12 @@ public class QueryGenerator {
//update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284------------------- //update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284-------------------
//TODO 此处规则,只适用于 le lt ge gt //TODO 此处规则,只适用于 le lt ge gt
// step 2 .>= =< // step 2 .>= =<
if (rule == null && val.length() >= 3) { if (val.length() >= 3 && QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))) {
if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){ rule = QueryRuleEnum.getByValue(val.substring(0, 2));
rule = QueryRuleEnum.getByValue(val.substring(0, 2));
}
} }
// step 1 .> < // step 1 .> <
if (rule == null && val.length() >= 2) { if (rule == null && val.length() >= 2 && QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))) {
if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){ rule = QueryRuleEnum.getByValue(val.substring(0, 1));
rule = QueryRuleEnum.getByValue(val.substring(0, 1));
}
} }
//update-end--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284--------------------- //update-end--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284---------------------
@@ -608,7 +610,7 @@ public class QueryGenerator {
private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper<?> queryWrapper) { private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper<?> queryWrapper) {
QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions()); QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
if(rule.equals(QueryRuleEnum.IN) && ! propertyType.equals(String.class)) { if(QueryRuleEnum.IN.equals(rule) && ! propertyType.equals(String.class)) {
String[] values = dataRule.getRuleValue().split(","); String[] values = dataRule.getRuleValue().split(",");
Object[] objs = new Object[values.length]; Object[] objs = new Object[values.length];
for (int i = 0; i < values.length; i++) { for (int i = 0; i < values.length; i++) {
@@ -659,9 +661,9 @@ public class QueryGenerator {
public static String getSqlRuleValue(String sqlRule){ public static String getSqlRuleValue(String sqlRule){
try { try {
Set<String> varParams = getSqlRuleParams(sqlRule); Set<String> varParams = getSqlRuleParams(sqlRule);
for(String var:varParams){ for(String str:varParams){
String tempValue = converRuleValue(var); String tempValue = converRuleValue(str);
sqlRule = sqlRule.replace("#{"+var+"}",tempValue); sqlRule = sqlRule.replace("#{"+str+"}",tempValue);
} }
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
@@ -682,8 +684,8 @@ public class QueryGenerator {
Pattern p = Pattern.compile(regex); Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sql); Matcher m = p.matcher(sql);
while(m.find()){ while(m.find()){
String var = m.group(); String str = m.group();
varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}"))); varParams.add(str.substring(str.indexOf("{")+1,str.indexOf("}")));
} }
return varParams; return varParams;
} }
@@ -826,7 +828,7 @@ public class QueryGenerator {
private static String getInConditionValue(Object value,boolean isString) { private static String getInConditionValue(Object value,boolean isString) {
if(isString) { if(isString) {
String temp[] = value.toString().split(","); String[] temp = value.toString().split(",");
StringBuilder res= new StringBuilder(); StringBuilder res= new StringBuilder();
for (String string : temp) { for (String string : temp) {
if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
@@ -896,14 +898,17 @@ public class QueryGenerator {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
//权限查询 //权限查询
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap(); Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz); PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
String sql_and = " and "; String sqlAnd = " and ";
for (String c : ruleMap.keySet()) { for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
String c = entry.getKey();
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){ if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
sb.append(sql_and+getSqlRuleValue(ruleMap.get(c).getRuleValue())); sb.append(sqlAnd).append(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue()));
} }
} }
String name, column; String name;
String column;
for (int i = 0; i < origDescriptors.length; i++) { for (int i = 0; i < origDescriptors.length; i++) {
name = origDescriptors[i].getName(); name = origDescriptors[i].getName();
if (judgedIsUselessField(name)) { if (judgedIsUselessField(name)) {
@@ -925,7 +930,7 @@ public class QueryGenerator {
value = NumberUtils.parseNumber(dataRule.getRuleValue(),propType); value = NumberUtils.parseNumber(dataRule.getRuleValue(),propType);
} }
String filedSql = getSingleSqlByRule(rule, oConvertUtils.camelToUnderline(column), value,isString); String filedSql = getSingleSqlByRule(rule, oConvertUtils.camelToUnderline(column), value,isString);
sb.append(sql_and+filedSql); sb.append(sqlAnd).append(filedSql);
} }
} }
log.info("query auth sql is:"+sb.toString()); log.info("query auth sql is:"+sb.toString());
@@ -941,13 +946,16 @@ public class QueryGenerator {
public static void installAuthMplus(QueryWrapper<?> queryWrapper,Class<?> clazz) { public static void installAuthMplus(QueryWrapper<?> queryWrapper,Class<?> clazz) {
//权限查询 //权限查询
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap(); Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz); PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
for (String c : ruleMap.keySet()) { for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
String c = entry.getKey();
SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue();
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){ if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue()))); queryWrapper.and(i ->i.apply(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue())));
} }
} }
String name, column; String name;
String column;
for (int i = 0; i < origDescriptors.length; i++) { for (int i = 0; i < origDescriptors.length; i++) {
name = origDescriptors[i].getName(); name = origDescriptors[i].getName();
if (judgedIsUselessField(name)) { if (judgedIsUselessField(name)) {
@@ -980,15 +988,16 @@ public class QueryGenerator {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
//权限查询 //权限查询
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap(); Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
String sql_and = " and "; String sqlAnd = " and ";
for (String c : ruleMap.keySet()) { for (Map.Entry<String,SysPermissionDataRuleModel> entry : ruleMap.entrySet()) {
SysPermissionDataRuleModel dataRule = ruleMap.get(c); String c = entry.getKey();
SysPermissionDataRuleModel dataRule = entry.getValue();
String ruleValue = dataRule.getRuleValue(); String ruleValue = dataRule.getRuleValue();
if(oConvertUtils.isEmpty(ruleValue)){ if(oConvertUtils.isEmpty(ruleValue)){
continue; continue;
} }
if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){ if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
sb.append(sql_and+getSqlRuleValue(ruleValue)); sb.append(sqlAnd).append(getSqlRuleValue(ruleValue));
}else{ }else{
boolean isString = false; boolean isString = false;
ruleValue = ruleValue.trim(); ruleValue = ruleValue.trim();
@@ -999,7 +1008,7 @@ public class QueryGenerator {
QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions()); QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
String value = converRuleValue(ruleValue); String value = converRuleValue(ruleValue);
String filedSql = getSingleSqlByRule(rule, c, value,isString); String filedSql = getSingleSqlByRule(rule, c, value,isString);
sb.append(sql_and+filedSql); sb.append(sqlAnd).append(filedSql);
} }
} }
log.info("query auth sql is = "+sb.toString()); log.info("query auth sql is = "+sb.toString());
@@ -1028,9 +1037,7 @@ public class QueryGenerator {
Field[] fields; Field[] fields;
do{ do{
fields = clazz.getDeclaredFields(); fields = clazz.getDeclaredFields();
for(int i = 0;i<fields.length;i++){ list.addAll(Arrays.asList(fields));
list.add(fields[i]);
}
clazz = clazz.getSuperclass(); clazz = clazz.getSuperclass();
}while(clazz!= Object.class&&clazz!=null); }while(clazz!= Object.class&&clazz!=null);
return list; return list;
@@ -1058,7 +1065,7 @@ public class QueryGenerator {
if (field != null) { if (field != null) {
TableField tableField = field.getAnnotation(TableField.class); TableField tableField = field.getAnnotation(TableField.class);
if (tableField != null){ if (tableField != null){
if(tableField.exist() == false){ if(!tableField.exist()){
//如果设置了TableField false 这个字段不需要处理 //如果设置了TableField false 这个字段不需要处理
return null; return null;
}else{ }else{
@@ -1084,9 +1091,9 @@ public class QueryGenerator {
*/ */
private static String specialStrConvert(String value) { private static String specialStrConvert(String value) {
if (DataBaseConstant.DB_TYPE_MYSQL.equals(getDbType())) { if (DataBaseConstant.DB_TYPE_MYSQL.equals(getDbType())) {
String[] special_str = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(","); String[] specialStr = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
for (String str : special_str) { for (String str : specialStr) {
if (value.indexOf(str) !=-1) { if (value.contains(str)) {
value = value.replace(str, "\\" + str); value = value.replace(str, "\\" + str);
} }
} }