mszxylj 发表于 2022-6-17 13:57:30

doMultiFieldsOrder多字段排序方法存在问题

# 版本号:3.2.0

# 问题描述:
org.jeecg.common.system.query.QueryGenerator 对象doMultiFieldsOrder();多字段排序方法存在问题没有读取注解 @TableField 里 value 的值。
# 截图&代码:

/**多字段排序 TODO 需要修改前端*/
private static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
   String column=null,order=null;
   if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
      column = parameterMap.get(ORDER_COLUMN)[0];
   }
   if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) {
      order = parameterMap.get(ORDER_TYPE)[0];
   }
       log.debug("排序规则>>列:" + column + ",排序方式:" + order);
   if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) {
      //字典字段,去掉字典翻译文本后缀
      if(column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
         column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
      }
      //SQL注入check
      SqlInjectionUtil.filterContent(column);

      //update-begin--Author:scottDate:20210531 for:36 多条件排序无效问题修正-------
      // 排序规则修改
      // 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc"
      // 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc"
      if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) {
         //queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column));
         String columnStr = oConvertUtils.camelToUnderline(column);
         String[] columnArray = columnStr.split(",");
         queryWrapper.orderByAsc(Arrays.asList(columnArray));
      } else {
         //queryWrapper.orderByDesc(oConvertUtils.camelToUnderline(column));
         String columnStr = oConvertUtils.camelToUnderline(column);
         String[] columnArray = columnStr.split(",");
         queryWrapper.orderByDesc(Arrays.asList(columnArray));
      }
      //update-end--Author:scottDate:20210531 for:36 多条件排序无效问题修正-------
   }
}


页: [1]
查看完整版本: doMultiFieldsOrder多字段排序方法存在问题