管道基础大数据平台系统开发-【后端】-Server
13693261870
2023-06-28 07bc9f972be6765642339506e6e31bc23de75406
资料馆的数据库分页查询添加根据资料类别过滤功能
已修改5个文件
89 ■■■■ 文件已修改
data/db_cx.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/all/BaseQueryController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/all/BaseQueryService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/all/BaseQueryMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_cx.sql
@@ -66,8 +66,9 @@
select id,uid,uname,pwd from lf.sys_user order by uid;
select * from lf.sys_meta where type='osgb' order by id desc limit 20;
select * from lf.sys_token where token ='c36e4f94-dfde-401e-9967-2c4a449f1300';
select * from lf.sys_user where id=61;
select bak,count(*) from lf.sys_dict group by bak order by bak;
src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -424,11 +424,12 @@
            @ApiImplicitParam(name = "depcode", value = "单位编码", dataType = "String", paramType = "query", example = "00"),
            @ApiImplicitParam(name = "dirs", value = "目录编码", dataType = "String", paramType = "query", example = "00,01"),
            @ApiImplicitParam(name = "tab", value = "表名", dataType = "String", paramType = "query", example = "dlg_"),
            @ApiImplicitParam(name = "types", value = "类别", dataType = "String", paramType = "query", example = "测绘(ESV)"),
            @ApiImplicitParam(name = "hasGeom", value = "含有Geom字段", dataType = "Boolean", paramType = "query", example = "false"),
            @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "Integer", paramType = "query", example = "10"),
            @ApiImplicitParam(name = "pageIndex", value = "分页数(从1开始)", dataType = "Integer", paramType = "query", example = "1")
    })
    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
    public ResponseMsg<Object> selectTabsByPage(String depcode, String dirs, String tab, String types, Boolean hasGeom, Integer pageSize, Integer pageIndex) {
        try {
            if (pageSize < 1 || pageIndex < 1) {
                return fail("每页页数或分页数小于1", null);
@@ -445,14 +446,15 @@
            if (dirs != null) {
                filters += String.format(" and %s", dirs);
            }
            String typesFilter = getTypesFilter(types);
            String field = null == hasGeom || !hasGeom ? "gid" : "geom";
            int count = baseQueryService.selectTabsForCount(tab, field);
            int count = baseQueryService.selectTabsForCount(tab, typesFilter, field);
            if (count == 0) {
                return success(0, null);
            }
            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, field, filters, pageSize, pageSize * (pageIndex - 1));
            List<TabEntity> rs = baseQueryService.selectTabsByPage(tab, typesFilter, field, filters, pageSize, pageSize * (pageIndex - 1));
            return success(count, rs);
        } catch (Exception ex) {
@@ -460,6 +462,48 @@
        }
    }
    /**
     * 获取类别过滤条件
     */
    private String getTypesFilter(String types) {
        if (StringHelper.isEmpty(types)) {
            return null;
        }
        List<String> list = new ArrayList<>();
        for (String type : types.split(StaticData.COMMA)) {
            switch (type) {
                case "测绘(ESV)":
                    list.add("bak like '工程数据/测绘%'");
                    break;
                case "勘察(EGE)":
                    list.add("bak like '工程数据/勘察%'");
                    break;
                case "地灾(EGD)":
                    list.add("bak like '工程数据/地灾%'");
                    break;
                case "洞库(EGD)":
                    list.add("bak like '工程数据/洞库%'");
                    break;
                case "基础测绘":
                    list.add("bak like '基础数据/测绘%'");
                    break;
                case "基础地灾":
                    list.add("bak like '基础数据/地灾%'");
                    break;
                case "基础勘察":
                    list.add("bak like '基础数据/勘察%'");
                    break;
                case "合规数据":
                case "管理数据":
                default:
                    break;
            }
        }
        return list.isEmpty() ? null : StringHelper.join(list, " or ");
    }
    @SysLog()
    @ApiOperation(value = "查询字段信息")
    @ApiImplicitParams({
src/main/java/com/lf/server/mapper/all/BaseQueryMapper.java
@@ -37,23 +37,25 @@
    /**
     * 根据表名查询记录数
     *
     * @param tab   表名
     * @param field 字段
     * @param tab         表名
     * @param typesFilter 类别
     * @param field       字段
     * @return
     */
    public Integer selectTabsForCount(String tab, String field);
    public Integer selectTabsForCount(String tab, String typesFilter, String field);
    /**
     * 根据表名分页查询
     *
     * @param tab     表名
     * @param field   字段
     * @param filters 过滤条件
     * @param limit   记录数
     * @param offset  偏移量
     * @param tab         表名
     * @param typesFilter 类别
     * @param field       字段
     * @param filters     过滤条件
     * @param limit       记录数
     * @param offset      偏移量
     * @return
     */
    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset);
    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset);
    /**
     * 查询字段信息
src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -265,17 +265,17 @@
    }
    @Override
    public Integer selectTabsForCount(String tab, String field) {
    public Integer selectTabsForCount(String tab, String typesFilter, String field) {
        tab = StringHelper.getLikeUpperStr(tab);
        return baseQueryMapper.selectTabsForCount(tab, field);
        return baseQueryMapper.selectTabsForCount(tab, typesFilter, field);
    }
    @Override
    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) {
    public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) {
        tab = StringHelper.getLikeUpperStr(tab);
        return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset);
        return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset);
    }
    @Override
src/main/resources/mapper/all/BaseQueryMapper.xml
@@ -28,6 +28,9 @@
            <if test="tab != null">
                and upper(tab) like #{tab} or upper(tab_desc) like #{tab}
            </if>
            <if test="typesFilter != null">
                and (${typesFilter})
            </if>
        </where>
    </select>
@@ -39,6 +42,9 @@
            <if test="tab != null">
                and (upper(tab) like #{tab} or upper(tab_desc) like #{tab})
            </if>
            <if test="typesFilter != null">
                and (${typesFilter})
            </if>
        </where>
        order by id
        limit #{limit} offset #{offset};