【fix sonar】QueryGenerator文件

This commit is contained in:
梁琦涛
2023-03-13 11:18:55 +08:00
parent b2a10d0363
commit 20e66a0eee
@@ -158,7 +158,7 @@ public class QueryGenerator {
//区间查询 //区间查询
doIntervalQuery(queryWrapper, parameterMap, type, name, column); doIntervalQuery(queryWrapper, parameterMap, type, name, column);
//判断单值 参数带不同标识字符串 走不同的查询 //判断单值 参数带不同标识字符串 走不同的查询
// 这种前后带逗号的支持分割后模糊查询需要否 使多选字段的查询生效 //TODO 这种前后带逗号的支持分割后模糊查询需要否 使多选字段的查询生效
addQueryWapper(queryWrapper, column, value); addQueryWapper(queryWrapper, column, value);
} catch (Exception e) { } catch (Exception e) {
@@ -195,8 +195,8 @@ public class QueryGenerator {
value = replaceValue(rule,value); value = replaceValue(rule,value);
// add -begin 添加判断为字符串时设为全模糊查询 // add -begin 添加判断为字符串时设为全模糊查询
//if( (rule==null || QueryRuleEnum.EQ.equals(rule)) && "class java.lang.String".equals(type)) { //if( (rule==null || QueryRuleEnum.EQ.equals(rule)) && "class java.lang.String".equals(type)) {
// 可以设置左右模糊或全模糊,因人而异 // 可以设置左右模糊或全模糊,因人而异
//rule = QueryRuleEnum.LIKE; //rule = QueryRuleEnum.LIKE;
//} //}
// add -end 添加判断为字符串时设为全模糊查询 // add -end 添加判断为字符串时设为全模糊查询
addEasyQuery(queryWrapper, column, rule, value); addEasyQuery(queryWrapper, column, rule, value);
@@ -277,25 +277,25 @@ public class QueryGenerator {
if(parameterMap!=null&& parameterMap.containsKey(SUPER_QUERY_PARAMS)){ if(parameterMap!=null&& parameterMap.containsKey(SUPER_QUERY_PARAMS)){
String superQueryParams = parameterMap.get(SUPER_QUERY_PARAMS)[0]; String superQueryParams = parameterMap.get(SUPER_QUERY_PARAMS)[0];
String superQueryMatchType = parameterMap.get(SUPER_QUERY_MATCH_TYPE) != null ? parameterMap.get(SUPER_QUERY_MATCH_TYPE)[0] : MatchTypeEnum.AND.getValue(); String superQueryMatchType = parameterMap.get(SUPER_QUERY_MATCH_TYPE) != null ? parameterMap.get(SUPER_QUERY_MATCH_TYPE)[0] : MatchTypeEnum.AND.getValue();
MatchTypeEnum matchType = MatchTypeEnum.getByValue(superQueryMatchType); MatchTypeEnum matchType = MatchTypeEnum.getByValue(superQueryMatchType);
// update-begin--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 ------- // update-begin--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
try { try {
superQueryParams = URLDecoder.decode(superQueryParams, "UTF-8"); superQueryParams = URLDecoder.decode(superQueryParams, "UTF-8");
List<QueryCondition> conditions = JSON.parseArray(superQueryParams, QueryCondition.class); List<QueryCondition> conditions = JSON.parseArray(superQueryParams, QueryCondition.class);
if (conditions == null || conditions.isEmpty()) { if (conditions == null || conditions.isEmpty()) {
return; return;
} }
log.info("---高级查询参数-->" + conditions.toString()); log.info("---高级查询参数-->" + conditions.toString());
queryWrapper.and(andWrapper -> { queryWrapper.and(andWrapper -> {
andQueryWapper(fieldColumnMap, matchType, conditions, andWrapper); andQueryWapper(fieldColumnMap, matchType, conditions, andWrapper);
}); });
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("--高级查询参数转码失败:" + superQueryParams, e); log.error("--高级查询参数转码失败:" + superQueryParams, e);
} catch (Exception e) { } catch (Exception e) {
log.error("--高级查询拼接失败:" + e.getMessage()); log.error("--高级查询拼接失败:" + e.getMessage());
e.printStackTrace(); e.printStackTrace();
} }
// update-end--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 ------- // update-end--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
} }
} }
@@ -344,7 +344,7 @@ public class QueryGenerator {
QueryRuleEnum rule =null; QueryRuleEnum rule =null;
//update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284------------------- //update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284-------------------
// 此处规则,只适用于 le lt ge gt //TODO 此处规则,只适用于 le lt ge gt
// step 2 .>= =< // step 2 .>= =<
if (val.length() >= 3 && QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))) { if (val.length() >= 3 && QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))) {
rule = QueryRuleEnum.getByValue(val.substring(0, 2)); rule = QueryRuleEnum.getByValue(val.substring(0, 2));
@@ -360,7 +360,7 @@ public class QueryGenerator {
// step 4 in // step 4 in
if (rule == null && val.contains(COMMA)) { if (rule == null && val.contains(COMMA)) {
// in 查询这里应该有个bug 如果一字段本身就是多选 此时用in查询 未必能查询出来 //TODO in 查询这里应该有个bug 如果一字段本身就是多选 此时用in查询 未必能查询出来
rule = QueryRuleEnum.IN; rule = QueryRuleEnum.IN;
} }
// step 5 != // step 5 !=
@@ -430,7 +430,7 @@ public class QueryGenerator {
}else { }else {
//update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284------------------- //update-begin--Author:scott Date:20190724 forinitQueryWrapper组装sql查询条件错误 #284-------------------
if(val.startsWith(rule.getValue())){ if(val.startsWith(rule.getValue())){
// 此处逻辑应该注释掉-> 如果查询内容中带有查询匹配规则符号,就会被截取的(比如:>=您好) //TODO 此处逻辑应该注释掉-> 如果查询内容中带有查询匹配规则符号,就会被截取的(比如:>=您好)
value = val.replaceFirst(rule.getValue(),""); value = val.replaceFirst(rule.getValue(),"");
}else if(val.startsWith(rule.getCondition()+QUERY_SEPARATE_KEYWORD)){ }else if(val.startsWith(rule.getCondition()+QUERY_SEPARATE_KEYWORD)){
value = val.replaceFirst(rule.getCondition()+QUERY_SEPARATE_KEYWORD,"").trim(); value = val.replaceFirst(rule.getCondition()+QUERY_SEPARATE_KEYWORD,"").trim();
@@ -451,30 +451,30 @@ public class QueryGenerator {
} }
switch (type) { switch (type) {
case "class java.lang.Integer": case "class java.lang.Integer":
temp = Integer.parseInt(value); temp = Integer.parseInt(value);
break; break;
case "class java.math.BigDecimal": case "class java.math.BigDecimal":
temp = new BigDecimal(value); temp = new BigDecimal(value);
break; break;
case "class java.lang.Short": case "class java.lang.Short":
temp = Short.parseShort(value); temp = Short.parseShort(value);
break; break;
case "class java.lang.Long": case "class java.lang.Long":
temp = Long.parseLong(value); temp = Long.parseLong(value);
break; break;
case "class java.lang.Float": case "class java.lang.Float":
temp = Float.parseFloat(value); temp = Float.parseFloat(value);
break; break;
case "class java.lang.Double": case "class java.lang.Double":
temp = Double.parseDouble(value); temp = Double.parseDouble(value);
break; break;
case "class java.util.Date": case "class java.util.Date":
temp = getDateQueryByRule(value, rule); temp = getDateQueryByRule(value, rule);
break; break;
default: default:
temp = value; temp = value;
break; break;
} }
addEasyQuery(queryWrapper, name, rule, temp); addEasyQuery(queryWrapper, name, rule, temp);
} }
@@ -497,7 +497,7 @@ public class QueryGenerator {
//比较小于 //比较小于
date = getTime().parse(value + " 23:59:59"); date = getTime().parse(value + " 23:59:59");
} }
// 日期类型比较特殊 可能oracle下不一定好使 //TODO 日期类型比较特殊 可能oracle下不一定好使
} }
if(date==null) { if(date==null) {
date = getTime().parse(value); date = getTime().parse(value);
@@ -506,7 +506,7 @@ public class QueryGenerator {
} }
/** /**
* 根据规则走不同的查询 * 根据规则走不同的查询
* @param queryWrapper QueryWrapper * @param queryWrapper QueryWrapper
* @param name 字段名字 * @param name 字段名字
* @param rule 查询规则 * @param rule 查询规则
@@ -519,51 +519,51 @@ public class QueryGenerator {
name = oConvertUtils.camelToUnderline(name); name = oConvertUtils.camelToUnderline(name);
log.info("--查询规则-->"+name+" "+rule.getValue()+" "+value); log.info("--查询规则-->"+name+" "+rule.getValue()+" "+value);
switch (rule) { switch (rule) {
case GT: case GT:
queryWrapper.gt(name, value); queryWrapper.gt(name, value);
break; break;
case GE: case GE:
queryWrapper.ge(name, value); queryWrapper.ge(name, value);
break; break;
case LT: case LT:
queryWrapper.lt(name, value); queryWrapper.lt(name, value);
break; break;
case LE: case LE:
queryWrapper.le(name, value); queryWrapper.le(name, value);
break; break;
case EQ: case EQ:
case EQ_WITH_ADD: case EQ_WITH_ADD:
queryWrapper.eq(name, value); queryWrapper.eq(name, value);
break; break;
case NE: case NE:
queryWrapper.ne(name, value); queryWrapper.ne(name, value);
break; break;
case IN: case IN:
if(value instanceof String) { if(value instanceof String) {
queryWrapper.in(name, (Object[])value.toString().split(",")); queryWrapper.in(name, (Object[])value.toString().split(","));
}else if(value instanceof String[]) { }else if(value instanceof String[]) {
queryWrapper.in(name, (Object[]) value); queryWrapper.in(name, (Object[]) value);
} }
//update-begin-author:taoyan date:20200909 for:【bug】in 类型多值查询 不适配postgresql #1671 //update-begin-author:taoyan date:20200909 for:【bug】in 类型多值查询 不适配postgresql #1671
else if(value.getClass().isArray()) { else if(value.getClass().isArray()) {
queryWrapper.in(name, (Object[])value); queryWrapper.in(name, (Object[])value);
}else { }else {
queryWrapper.in(name, value); queryWrapper.in(name, value);
} }
//update-end-author:taoyan date:20200909 for:【bug】in 类型多值查询 不适配postgresql #1671 //update-end-author:taoyan date:20200909 for:【bug】in 类型多值查询 不适配postgresql #1671
break; break;
case LIKE: case LIKE:
queryWrapper.like(name, value); queryWrapper.like(name, value);
break; break;
case LEFT_LIKE: case LEFT_LIKE:
queryWrapper.likeLeft(name, value); queryWrapper.likeLeft(name, value);
break; break;
case RIGHT_LIKE: case RIGHT_LIKE:
queryWrapper.likeRight(name, value); queryWrapper.likeRight(name, value);
break; break;
default: default:
log.info("--查询规则未匹配到---"); log.info("--查询规则未匹配到---");
break; break;
} }
} }
/** /**
@@ -656,12 +656,12 @@ public class QueryGenerator {
} }
/** /**
* @author: scott * @author: scott
* @Description: 去掉值前后单引号 * @Description: 去掉值前后单引号
* @date: 2020/3/19 21:26 * @date: 2020/3/19 21:26
* @param ruleValue: * @param ruleValue:
* @Return: java.lang.String * @Return: java.lang.String
*/ */
public static String trimSingleQuote(String ruleValue) { public static String trimSingleQuote(String ruleValue) {
if (oConvertUtils.isEmpty(ruleValue)) { if (oConvertUtils.isEmpty(ruleValue)) {
return ""; return "";
@@ -750,42 +750,42 @@ public class QueryGenerator {
String res = ""; String res = "";
String like = " like "; String like = " like ";
switch (rule) { switch (rule) {
case GT: case GT:
res =field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType); res =field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case GE: case GE:
res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType); res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case LT: case LT:
res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType); res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case LE: case LE:
res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType); res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case EQ: case EQ:
res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType); res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case EQ_WITH_ADD: case EQ_WITH_ADD:
res = field+" = "+getFieldConditionValue(value, isString, dataBaseType); res = field+" = "+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case NE: case NE:
res = field+" <> "+getFieldConditionValue(value, isString, dataBaseType); res = field+" <> "+getFieldConditionValue(value, isString, dataBaseType);
break; break;
case IN: case IN:
res = field + " in "+getInConditionValue(value, isString); res = field + " in "+getInConditionValue(value, isString);
break; break;
case LIKE: case LIKE:
res = field + like+getLikeConditionValue(value); res = field + like+getLikeConditionValue(value);
break; break;
case LEFT_LIKE: case LEFT_LIKE:
res = field + like+getLikeConditionValue(value); res = field + like+getLikeConditionValue(value);
break; break;
case RIGHT_LIKE: case RIGHT_LIKE:
res = field + like+getLikeConditionValue(value); res = field + like+getLikeConditionValue(value);
break; break;
default: default:
res = field+" = "+getFieldConditionValue(value, isString, dataBaseType); res = field+" = "+getFieldConditionValue(value, isString, dataBaseType);
break; break;
} }
return res; return res;
} }
@@ -969,7 +969,7 @@ public class QueryGenerator {
} }
/** /**
* 根据权限相关配置 组装mp需要的权限 * 根据权限相关配置 组装mp需要的权限
* @param queryWrapper * @param queryWrapper
* @param clazz * @param clazz
* @return * @return