diff --git a/shandan-browser/src/main/java/com/keyware/shandan/browser/entity/SearchConditionVo.java b/shandan-browser/src/main/java/com/keyware/shandan/browser/entity/SearchConditionVo.java index d35edce..9801690 100644 --- a/shandan-browser/src/main/java/com/keyware/shandan/browser/entity/SearchConditionVo.java +++ b/shandan-browser/src/main/java/com/keyware/shandan/browser/entity/SearchConditionVo.java @@ -125,19 +125,11 @@ public class SearchConditionVo extends PageVo implements Serializable { //排序方式 private String sort; - public String getField() { - return " " + field; - } - - public String getSort() { - return " " + sort; - } - /** * @return order by sql语句 */ public String getOrderBy() { - return isEmpty() ? Strings.EMPTY : " order by" + getField() + " " + getSort(); + return isEmpty() ? Strings.EMPTY : " order by " + getField() + " " + getSort(); } public boolean isEmpty() { diff --git a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java index 981b742..550ff53 100644 --- a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java +++ b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java @@ -1,5 +1,7 @@ package com.keyware.shandan.browser.service; +import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.keyware.shandan.bianmu.entity.DirectoryResource; @@ -16,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import java.lang.reflect.Field; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -96,6 +99,19 @@ public class MetadataSearchService { } }); }); + + // 排序设置 + SearchConditionVo.Sort sort = condition.getSort(); + if(sort != null && sort.getSort() != null ){ + // 通过反射获取资源类字段注解中的数据库表相关的列名 + Field field = ReflectUtil.getField(DirectoryResource.class, sort.getField().trim()); + if(field != null){ + TableField tableField = field.getAnnotation(TableField.class); + if(tableField != null && StringUtils.hasText(tableField.value())){ + queryWrapper.orderBy(true, sort.getSort().equalsIgnoreCase("asc"), tableField.value()); + } + } + } return queryWrapper; } diff --git a/shandan-browser/src/main/resources/static/js/browser.js b/shandan-browser/src/main/resources/static/js/browser.js index 66da19e..7dd35af 100644 --- a/shandan-browser/src/main/resources/static/js/browser.js +++ b/shandan-browser/src/main/resources/static/js/browser.js @@ -134,6 +134,7 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop url: `${ctx}/search/metadata/all/page/${id}`, height: 'full-110', method: 'post', + autoSort: false, defaultToolbar: [{ title: '导出' //标题 , layEvent: 'export' //事件名,用于 toolbar 事件中使用 @@ -143,17 +144,17 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop limit: 30, cols: [[ {field: 'id', title: 'ID', hide: true}, - {field: 'resourceName', title: '数据名称', width: 300}, - {field: 'resourceComment', title: '中文注释/描述'}, - {field: 'directoryPath', title: '资源路径'}, - {field: 'themeTask', title: '主题任务', hide: true}, + {field: 'resourceName', title: '数据名称', width: 300,sort: true}, + {field: 'resourceComment', title: '中文注释/描述',sort: true}, + {field: 'directoryPath', title: '资源路径',sort: true}, + {field: 'themeTask', title: '主题任务', hide: true,sort: true}, { field: 'dataSource', title: '数据来源', width: 160, - templet: (data) => DICT.getText("data_source", data.dataSource) || data.dataSource || '' + templet: (data) => DICT.getText("data_source", data.dataSource) || data.dataSource || '',sort: true }, - {field: 'taskTime', title: '任务时间', width: 180, align: 'center'}, + {field: 'taskTime', title: '任务时间', width: 180, align: 'center',sort: true}, {field: 'modifyTime', title: '注册时间', width: 160, align: 'center', hide: true}, {fixed: 'right', title: '操作', toolbar: '#rowToolBar', width: 100, align: 'center'} ]], @@ -172,6 +173,16 @@ layui.use(['layer', 'listPage', 'globalTree', 'gtable', 'form', 'element', 'drop } }, }); + metaListTable.gtable.on('sort', function(data){ + console.info(data); + const {field, type} = data; + let sort = type; + if(!sort || sort === 'null'){ + sort = undefined; + } + metaListTable.where.sort={field: field.trim(), sort: sort} + beginSearch(); + }) metaListTable.addTableRowEvent('export', function (obj) { if (id === DIR_ROOT_ID) { showErrorMsg('不允许导出根目录数据');