From f918a225523c658e8c7ee2c6d823dc3088104ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Thu, 9 Mar 2023 17:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=20sonar=E3=80=91QueryGenerator?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/system/query/QueryGenerator.java | 93 ++++++++++--------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/query/QueryGenerator.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/query/QueryGenerator.java index c7db9891..ca39251b 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/query/QueryGenerator.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/query/QueryGenerator.java @@ -115,17 +115,21 @@ public class QueryGenerator { */ //区间条件组装 模糊查询 高级查询组装 简单排序 权限查询 - PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj); + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj); Map ruleMap = getRuleMap(); //权限规则自定义SQL表达式 - for (String c : ruleMap.keySet()) { + for (Map.Entry entry : ruleMap.entrySet()) { + String c = entry.getKey(); + SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue(); 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 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询------- //定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题 Map fieldColumnMap = new HashMap<>(); @@ -204,7 +208,8 @@ public class QueryGenerator { */ private static void doIntervalQuery(QueryWrapper queryWrapper, Map 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)) { beginValue = parameterMap.get(filedName + BEGIN)[0].trim(); addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE); @@ -223,7 +228,8 @@ public class QueryGenerator { //多字段排序 public static void doMultiFieldsOrder(QueryWrapper queryWrapper,Map parameterMap) { - String column=null,order=null; + String column=null; + String order=null; if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) { column = parameterMap.get(ORDER_COLUMN)[0]; } @@ -329,16 +335,12 @@ public class QueryGenerator { //update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- //TODO 此处规则,只适用于 le lt ge gt // step 2 .>= =< - if (rule == null && val.length() >= 3) { - if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){ - rule = QueryRuleEnum.getByValue(val.substring(0, 2)); - } + if (val.length() >= 3 && QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))) { + rule = QueryRuleEnum.getByValue(val.substring(0, 2)); } // step 1 .> < - if (rule == null && val.length() >= 2) { - if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){ - rule = QueryRuleEnum.getByValue(val.substring(0, 1)); - } + if (rule == null && val.length() >= 2 && QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))) { + rule = QueryRuleEnum.getByValue(val.substring(0, 1)); } //update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284--------------------- @@ -608,7 +610,7 @@ public class QueryGenerator { private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper queryWrapper) { 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(","); Object[] objs = new Object[values.length]; for (int i = 0; i < values.length; i++) { @@ -659,9 +661,9 @@ public class QueryGenerator { public static String getSqlRuleValue(String sqlRule){ try { Set varParams = getSqlRuleParams(sqlRule); - for(String var:varParams){ - String tempValue = converRuleValue(var); - sqlRule = sqlRule.replace("#{"+var+"}",tempValue); + for(String str:varParams){ + String tempValue = converRuleValue(str); + sqlRule = sqlRule.replace("#{"+str+"}",tempValue); } } catch (Exception e) { log.error(e.getMessage(), e); @@ -682,8 +684,8 @@ public class QueryGenerator { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(sql); while(m.find()){ - String var = m.group(); - varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}"))); + String str = m.group(); + varParams.add(str.substring(str.indexOf("{")+1,str.indexOf("}"))); } return varParams; } @@ -826,7 +828,7 @@ public class QueryGenerator { private static String getInConditionValue(Object value,boolean isString) { if(isString) { - String temp[] = value.toString().split(","); + String[] temp = value.toString().split(","); StringBuilder res= new StringBuilder(); for (String string : temp) { if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ @@ -896,14 +898,17 @@ public class QueryGenerator { StringBuilder sb = new StringBuilder(); //权限查询 Map ruleMap = getRuleMap(); - PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz); - String sql_and = " and "; - for (String c : ruleMap.keySet()) { + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz); + String sqlAnd = " and "; + for (Map.Entry entry : ruleMap.entrySet()) { + String c = entry.getKey(); + SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue(); 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++) { name = origDescriptors[i].getName(); if (judgedIsUselessField(name)) { @@ -925,7 +930,7 @@ public class QueryGenerator { value = NumberUtils.parseNumber(dataRule.getRuleValue(),propType); } 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()); @@ -941,13 +946,16 @@ public class QueryGenerator { public static void installAuthMplus(QueryWrapper queryWrapper,Class clazz) { //权限查询 Map ruleMap = getRuleMap(); - PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz); - for (String c : ruleMap.keySet()) { + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz); + for (Map.Entry entry : ruleMap.entrySet()) { + String c = entry.getKey(); + SysPermissionDataRuleModel sysPermissionDataRuleModel = entry.getValue(); 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++) { name = origDescriptors[i].getName(); if (judgedIsUselessField(name)) { @@ -980,15 +988,16 @@ public class QueryGenerator { StringBuilder sb = new StringBuilder(); //权限查询 Map ruleMap = getRuleMap(); - String sql_and = " and "; - for (String c : ruleMap.keySet()) { - SysPermissionDataRuleModel dataRule = ruleMap.get(c); + String sqlAnd = " and "; + for (Map.Entry entry : ruleMap.entrySet()) { + String c = entry.getKey(); + SysPermissionDataRuleModel dataRule = entry.getValue(); String ruleValue = dataRule.getRuleValue(); if(oConvertUtils.isEmpty(ruleValue)){ continue; } if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){ - sb.append(sql_and+getSqlRuleValue(ruleValue)); + sb.append(sqlAnd).append(getSqlRuleValue(ruleValue)); }else{ boolean isString = false; ruleValue = ruleValue.trim(); @@ -999,7 +1008,7 @@ public class QueryGenerator { QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions()); String value = converRuleValue(ruleValue); 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()); @@ -1028,9 +1037,7 @@ public class QueryGenerator { Field[] fields; do{ fields = clazz.getDeclaredFields(); - for(int i = 0;i