【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();
//权限规则自定义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)){
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查询-------
//定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题
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 {
// 添加 判断是否有区间值
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<String, String[]> 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 forinitQueryWrapper组装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 forinitQueryWrapper组装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<String> 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<String,SysPermissionDataRuleModel> 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<String,SysPermissionDataRuleModel> 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<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz);
for (String c : ruleMap.keySet()) {
PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(clazz);
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)){
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<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
String sql_and = " and ";
for (String c : ruleMap.keySet()) {
SysPermissionDataRuleModel dataRule = ruleMap.get(c);
String sqlAnd = " and ";
for (Map.Entry<String,SysPermissionDataRuleModel> 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<fields.length;i++){
list.add(fields[i]);
}
list.addAll(Arrays.asList(fields));
clazz = clazz.getSuperclass();
}while(clazz!= Object.class&&clazz!=null);
return list;
@@ -1058,7 +1065,7 @@ public class QueryGenerator {
if (field != null) {
TableField tableField = field.getAnnotation(TableField.class);
if (tableField != null){
if(tableField.exist() == false){
if(!tableField.exist()){
//如果设置了TableField false 这个字段不需要处理
return null;
}else{
@@ -1084,9 +1091,9 @@ public class QueryGenerator {
*/
private static String specialStrConvert(String value) {
if (DataBaseConstant.DB_TYPE_MYSQL.equals(getDbType())) {
String[] special_str = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
for (String str : special_str) {
if (value.indexOf(str) !=-1) {
String[] specialStr = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
for (String str : specialStr) {
if (value.contains(str)) {
value = value.replace(str, "\\" + str);
}
}