JeecgBoot icon indicating copy to clipboard operation
JeecgBoot copied to clipboard

多个column排序不同顺序的补充修改

Open 157677678 opened this issue 1 year ago • 0 comments

版本号:

当前最新版(3.6.1)

问题描述:

前端传过来的column 如果是有多个 比如“id,createTime” 只能有一个顺序 多个顺序不支持

截图&代码:

https://github.com/jeecgboot/jeecg-boot/blob/master/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java里 283行 image

修改代码为:
           //有多个order且有多个顺序
           if (column.contains(",") && order.contains(",")) {
               String[] columnArray = column.split(",");

               String[] orderArray = order.split(",");
               for (int i = 0; i < columnArray.length; i++) {
                   String columnStr = oConvertUtils.camelToUnderline(columnArray[i]);
                   if (i<orderArray.length){
                       //有一一对应的升序或降序
                       if (orderArray[i].toUpperCase().indexOf(ORDER_TYPE_ASC) >= 0) {
                           queryWrapper.orderByAsc(columnStr);
                       }else {
                           queryWrapper.orderByDesc(columnStr);
                       }
                   }else{
                       //没有设定,默认为降序
                       queryWrapper.orderByDesc(columnStr);
                   }

               }
           } else {
               //update-begin--Author:scott  Date: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:scott  Date:20210531 for:36 多条件排序无效问题修正-------
           }

157677678 avatar Dec 26 '23 03:12 157677678