【fix sonar】QueryGenerator文件
This commit is contained in:
+77
-46
@@ -15,6 +15,8 @@ import com.jero.common.util.oConvertUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.beanutils.PropertyUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.util.NumberUtils;
|
||||
|
||||
import java.beans.PropertyDescriptor;
|
||||
@@ -157,6 +159,22 @@ public class QueryGenerator {
|
||||
doIntervalQuery(queryWrapper, parameterMap, type, name, column);
|
||||
//判断单值 参数带不同标识字符串 走不同的查询
|
||||
//TODO 这种前后带逗号的支持分割后模糊查询需要否 使多选字段的查询生效
|
||||
addQueryWapper(queryWrapper, column, value);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
// 排序逻辑 处理
|
||||
doMultiFieldsOrder(queryWrapper, parameterMap);
|
||||
|
||||
//高级查询
|
||||
doSuperQuery(queryWrapper, parameterMap, fieldColumnMap);
|
||||
// update-end--Author:taoyan Date:20200923 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询-------
|
||||
|
||||
}
|
||||
|
||||
private static void addQueryWapper(QueryWrapper<?> queryWrapper, String column, Object value) {
|
||||
if (null != value && value.toString().startsWith(COMMA) && value.toString().endsWith(COMMA)) {
|
||||
String multiLikeval = value.toString().replace(",,", COMMA);
|
||||
String[] vals = multiLikeval.substring(1, multiLikeval.length()).split(COMMA);
|
||||
@@ -183,18 +201,6 @@ public class QueryGenerator {
|
||||
// add -end 添加判断为字符串时设为全模糊查询
|
||||
addEasyQuery(queryWrapper, column, rule, value);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
// 排序逻辑 处理
|
||||
doMultiFieldsOrder(queryWrapper, parameterMap);
|
||||
|
||||
//高级查询
|
||||
doSuperQuery(queryWrapper, parameterMap, fieldColumnMap);
|
||||
// update-end--Author:taoyan Date:20200923 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询-------
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -281,6 +287,19 @@ public class QueryGenerator {
|
||||
}
|
||||
log.info("---高级查询参数-->" + conditions.toString());
|
||||
queryWrapper.and(andWrapper -> {
|
||||
andQueryWapper(fieldColumnMap, matchType, conditions, andWrapper);
|
||||
});
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
log.error("--高级查询参数转码失败:" + superQueryParams, e);
|
||||
} catch (Exception e) {
|
||||
log.error("--高级查询拼接失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
// update-end--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
|
||||
}
|
||||
}
|
||||
|
||||
private static void andQueryWapper(Map<String, String> fieldColumnMap, MatchTypeEnum matchType, List<QueryCondition> conditions, QueryWrapper<?> andWrapper) {
|
||||
for (int i = 0; i < conditions.size(); i++) {
|
||||
QueryCondition rule = conditions.get(i);
|
||||
if (oConvertUtils.isNotEmpty(rule.getField())
|
||||
@@ -305,16 +324,8 @@ public class QueryGenerator {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
log.error("--高级查询参数转码失败:" + superQueryParams, e);
|
||||
} catch (Exception e) {
|
||||
log.error("--高级查询拼接失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
// update-end--Author:sunjianlei Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据所传的值 转化成对应的比较方式
|
||||
* 支持><= like in !
|
||||
@@ -345,15 +356,7 @@ public class QueryGenerator {
|
||||
//update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284---------------------
|
||||
|
||||
// step 3 like
|
||||
if (rule == null && val.contains(STAR)) {
|
||||
if (val.startsWith(STAR) && val.endsWith(STAR)) {
|
||||
rule = QueryRuleEnum.LIKE;
|
||||
} else if (val.startsWith(STAR)) {
|
||||
rule = QueryRuleEnum.LEFT_LIKE;
|
||||
} else if(val.endsWith(STAR)){
|
||||
rule = QueryRuleEnum.RIGHT_LIKE;
|
||||
}
|
||||
}
|
||||
rule = getQueryRuleEnum(val, rule);
|
||||
|
||||
// step 4 in
|
||||
if (rule == null && val.contains(COMMA)) {
|
||||
@@ -379,6 +382,20 @@ public class QueryGenerator {
|
||||
return rule != null ? rule : QueryRuleEnum.EQ;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static QueryRuleEnum getQueryRuleEnum(String val, QueryRuleEnum rule) {
|
||||
if (rule == null && val.contains(STAR)) {
|
||||
if (val.startsWith(STAR) && val.endsWith(STAR)) {
|
||||
rule = QueryRuleEnum.LIKE;
|
||||
} else if (val.startsWith(STAR)) {
|
||||
rule = QueryRuleEnum.LEFT_LIKE;
|
||||
} else if(val.endsWith(STAR)){
|
||||
rule = QueryRuleEnum.RIGHT_LIKE;
|
||||
}
|
||||
}
|
||||
return rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换掉关键字字符
|
||||
*
|
||||
@@ -864,7 +881,25 @@ public class QueryGenerator {
|
||||
return "'"+str.substring(0,str.length()-1)+"%'";
|
||||
}
|
||||
}else {
|
||||
if(str.indexOf("%")>=0) {
|
||||
return getReturn(str);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getReturn(String str) {
|
||||
if(str.contains("%")) {
|
||||
return getSubReturn(str);
|
||||
}else {
|
||||
if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
|
||||
return "N'%"+str+"%'";
|
||||
}else{
|
||||
return "'%"+str+"%'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getSubReturn(String str) {
|
||||
if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
|
||||
if(str.startsWith("'") && str.endsWith("'")){
|
||||
return "N"+str;
|
||||
@@ -878,14 +913,6 @@ public class QueryGenerator {
|
||||
return "'"+str+"'";
|
||||
}
|
||||
}
|
||||
}else {
|
||||
if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
|
||||
return "N'%"+str+"%'";
|
||||
}else{
|
||||
return "'%"+str+"%'";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -900,13 +927,7 @@ public class QueryGenerator {
|
||||
Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
|
||||
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(sqlAnd).append(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue()));
|
||||
}
|
||||
}
|
||||
appendStr(sb, ruleMap, sqlAnd);
|
||||
String name;
|
||||
String column;
|
||||
for (int i = 0; i < origDescriptors.length; i++) {
|
||||
@@ -937,6 +958,16 @@ public class QueryGenerator {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static void appendStr(StringBuilder sb, Map<String, SysPermissionDataRuleModel> ruleMap, String sqlAnd) {
|
||||
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(sqlAnd).append(getSqlRuleValue(sysPermissionDataRuleModel.getRuleValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据权限相关配置 组装mp需要的权限
|
||||
* @param queryWrapper
|
||||
|
||||
Reference in New Issue
Block a user