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