管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-12-24 dd6183027575e9a335a7d4f2d145aec947969a34
1
已添加1个文件
已修改6个文件
228 ■■■■ 文件已修改
data/db_fn.sql 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_tab.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/ts.sql 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/all/BaseQueryController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/all/BaseQueryService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/show/DataLibService.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_fn.sql
@@ -336,27 +336,18 @@
select * from lf.sys_token where to_char(create_time,'yyyy-MM-dd') = '2022-09-30';
select fn_rec_query(depid,'dep') depName,fn_rec_query(dirid,'dir') dirName,fn_ver(verid) verName,fn_uname(createuser) createName,fn_uname(updateuser) updateName from bd.dlg_agnp limit 10;
select ns,tab,tab_desc,field,type from lf.sys_dict;
select type from lf.sys_dict group by type;
select * from lf.sys_dict where ns='bd' and tab='dlg_agnp';
select count(distinct tab) from lf.sys_dict where tab like '%b_b%';
select * from bd.b_borehole where endholtime <= '1978-06-29' limit 10;
select c.relname tab, cast(obj_description(c.oid) as varchar) desc, a.attnum num, a.attname col, t.typname type, d.description bak
from pg_attribute a left join pg_description d on d.objoid = a.attrelid and d.objsubid = a.attnum left join
pg_class c on a.attrelid = c.oid left join pg_type t on a.atttypid = t.oid where a.attnum >= 0 and reltype>0 and
relnamespace in (29258) order by c.relname;
select t.typname type
from pg_attribute a left join pg_description d on d.objoid = a.attrelid and d.objsubid = a.attnum left join
pg_class c on a.attrelid = c.oid left join pg_type t on a.atttypid = t.oid where a.attnum >= 0 and reltype>0 and
relnamespace in (29258) group by type;
select count(*) from lf.sys_downlog a inner join lf.sys_user b on a.create_user = b.id inner join lf.sys_download c on a.downid = c.id
WHERE 1 = 1 and b.uname like '%管理员%' and c.type = 3 and a.create_time >= ? and a.create_time <= ?
select * from lf.sys_download where id in (80,100);
select * from lf.sys_downlog;
data/db_tab.sql
@@ -441,7 +441,7 @@
comment on column lf.sys_role.depid is '单位ID';
comment on column lf.sys_role.name is '名称';
comment on column lf.sys_role.descr is '描述';
comment on column lf.sys_role.is_admin is '是否为管理员:0-否,1-是';
comment on column lf.sys_role.is_admin is '是/否为管理员:0-普通会员,1-超级管理员,2-数据管理员';
comment on column lf.sys_role.create_user is '创建人ID';
comment on column lf.sys_role.create_time is '创建时间';
comment on column lf.sys_role.update_user is '更新人ID';
data/ts.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
-----------------------------------------------------------------------
select count(*) from bd.dlg_25w_resa; -- 157217
select count(*) from bd.dlg_25w_boul; -- 7453
select count(*) from bd.dlg_agnp;     -- 3248
select count(*) from bd.dlg_25w_hyda; -- 297884
select count(*) from bd.dlg_25w_hydl; -- 2212590
select count(*) from bd.dlg_25w_lrdl; -- 4690386
select count(*) from bd.dlg_25w_lrrl; -- 51338
select count(*) from bs.m_pipeline;   -- 26
select * from bd.dlg_25w_resa order by gid limit 10;
select * from bd.dlg_25w_boul order by gid limit 10;
select * from bd.dlg_agnp     order by gid limit 10;
----------------------------------------------------------------------- è®¾ç½®æ•°æ®å•位
select * from lf.sys_dep;
-- pid = 15, ç”Ÿäº§ä¸šåŠ¡éƒ¨é—¨
update bd.dlg_25w_resa set depid = 20 where gid % 7 = 0; -- çº¿è·¯å®¤
update bd.dlg_25w_resa set depid = 21 where gid % 7 = 1; -- ç©¿è·¨è¶Šå®¤
--update bd.dlg_25w_resa set depid = 22 where gid % 7 = 2; -- åœŸå»ºå®¤
-- pid = 38, å‹˜å¯Ÿäº‹ä¸šéƒ¨
update bd.dlg_25w_resa set depid = 55 where gid % 7 = 3; -- å‹˜å¯Ÿå®¤
--update bd.dlg_25w_resa set depid = 56 where gid % 7 = 4; -- å²©åœŸè®¾è®¡å®¤
--update bd.dlg_25w_resa set depid = 54 where gid % 7 = 5; -- æµ‹ç»˜å®¤
update bd.dlg_25w_boul set depid = 20 where gid % 7 = 0; -- çº¿è·¯å®¤
update bd.dlg_25w_boul set depid = 21 where gid % 7 = 1; -- ç©¿è·¨è¶Šå®¤
update bd.dlg_25w_boul set depid = 55 where gid % 7 = 3; -- å‹˜å¯Ÿå®¤
update bd.dlg_agnp     set depid = 20 where gid % 7 = 0; -- çº¿è·¯å®¤
update bd.dlg_agnp     set depid = 21 where gid % 7 = 1; -- ç©¿è·¨è¶Šå®¤
update bd.dlg_agnp     set depid = 55 where gid % 7 = 3; -- å‹˜å¯Ÿå®¤
update bd.dlg_25w_resa set depid = 22 where depid is null or depid = 0; -- åœŸå»ºå®¤
update bd.dlg_25w_boul set depid = 22 where depid is null or depid = 0; -- åœŸå»ºå®¤
update bd.dlg_agnp     set depid = 22 where depid is null or depid = 0; -- åœŸå»ºå®¤
update bd.dlg_agnp set depid = null where gid = 3247;
update bd.dlg_agnp set depid = 0    where gid = 3246;
select depid from bd.dlg_25w_resa group by depid order by depid;
select depid from bd.dlg_25w_boul group by depid order by depid;
select depid from bd.dlg_agnp     group by depid order by depid;
----------------------------------------------------------------------- è®¾ç½®ç”¨æˆ·
select * from lf.sys_user order by id;
update lf.sys_user set depid = 20 where uname = '线路室';   -- id = 2
update lf.sys_user set depid = 21 where uname = '穿跨越室'; -- id = 3
update lf.sys_user set depid = 55 where uname = '勘察室';   -- id = 5
----------------------------------------------------------------------- è®¾ç½®è§’色
select * from lf.sys_role order by id;
delete from lf.sys_role where id between 2 and 11;
insert into lf.sys_role (depid,name,descr,is_admin,create_user) values (20,'线路室-数据管理员', '数据管理员',2,1);
insert into lf.sys_role (depid,name,descr,is_admin,create_user) values (21,'穿跨越室-数据管理员','数据管理员',2,1);
insert into lf.sys_role (depid,name,descr,is_admin,create_user) values (55,'勘察室-数据管理员',  '数据管理员',2,1);
-----------------------------------------------------------------------
select depid from bd.dlg_25w_boul where depid != ANY(fn_rec_array(15, 'dep')) group by depid order by depid;
select * from lf.sys_dep;
select fn_rec_array(38, 'dep');
select depid from bd.dlg_25w_boul where depid > 0 and depid != ALL(fn_rec_array(38, 'dep'))
where ST_Intersects(geom, ST_PolygonFromText('POLYGON ((115.94927385452 32.3754479115071 0,121.989371092554 32.2766788010181 0,121.850621222894 29.6874200067864 0,115.9727267226 29.7835368627922 0,115.94927385452 32.3754479115071 0))', 0))
group by depid;
select count(*) from bd.dlg_25w_resa -- 103,6964,180
where ST_Intersects(geom, ST_PolygonFromText('POLYGON ((115.94927385452 32.3754479115071 0,121.989371092554 32.2766788010181 0,121.850621222894 29.6874200067864 0,115.9727267226 29.7835368627922 0,115.94927385452 32.3754479115071 0))', 4490))
group by depid;
select max(gid) from bd.dlg_agnp --3248
src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -368,6 +368,32 @@
    }
    @SysLog()
    @ApiOperation(value = "查询DB中溢出的单位ID")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "reqEntity", value = "请求下载实体", dataType = "DownloadReqEntity", paramType = "body")
    })
    @ResponseBody
    @PostMapping(value = "/selectDbOverflowDep")
    public ResponseMsg<Object> selectDbOverflowDep(@RequestBody DownloadReqEntity reqEntity, HttpServletRequest req, HttpServletResponse res) {
        try {
            if (null == reqEntity || null == reqEntity.getEntities() || reqEntity.getEntities().isEmpty()) {
                return fail("请选择要下载的实体名");
            }
            reqEntity.setWkt(AesHelper.decrypt(reqEntity.getWkt()));
            if (StringHelper.isEmpty(reqEntity.getWkt())) {
                return fail("请选择要下载的WKT范围");
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            List<Integer> list = dataLibService.selectDbOverflowDep(ue, reqEntity.getEntities(), reqEntity.getWkt());
            return success(list);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
    @SysLog()
    @ApiOperation(value = "请求DB数据下载")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "reqEntity", value = "请求下载实体", dataType = "DownloadReqEntity", paramType = "body")
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -4,6 +4,8 @@
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
 * ç©ºé—´åŸºç¡€Mapper
 * @author WWW
@@ -39,6 +41,23 @@
    public String selectGeometryType(@Param("tab") String tab);
    /**
     * æŸ¥è¯¢DB中溢出的单位ID
     *
     * @param tab       è¡¨å
     * @param depid     å•位ID
     * @param geoFilter ç©ºé—´è¿‡æ»¤æ¡ä»¶
     * @return æº¢å‡ºçš„单位ID
     */
    @Select("<script>" +
            " select depid from ${tab} where depid > 0 and depid != ALL(fn_rec_array(#{depid}, 'dep'))" +
            " <if test='geoFilter != null'>" +
            "  and ${geoFilter}" +
            " </if>" +
            " group by depid" +
            "</script>")
    public List<Integer> selectDbOverflowDep(@Param("tab") String tab, @Param("depid") Integer depid, @Param("geoFilter") String geoFilter);
    /**
     * æ›´æ–°ç©ºé—´ä½ç½®
     *
     * @param tab è¡¨å
src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -142,7 +142,9 @@
            wkt = AesHelper.decrypt(wkt);
            Integer srid = getSrid((GeomBaseMapper) basicMapper);
            wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
            if (null != srid) {
                wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
            }
        }
    }
src/main/java/com/lf/server/service/show/DataLibService.java
@@ -16,10 +16,7 @@
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * èµ„料馆
@@ -40,6 +37,54 @@
    BaseQueryService baseQueryService;
    private final static Log log = LogFactory.getLog(DataLibService.class);
    /**
     * æŸ¥è¯¢DB中溢出的单位ID
     */
    public List<Integer> selectDbOverflowDep(UserEntity ue, List<String> entities, String wkt) {
        List<Integer> rs = new ArrayList<>();
        for (String enity : entities) {
            try {
                GeomBaseMapper<?> baseMapper = ClassHelper.getGeoBaseMapper(enity);
                if (null == baseMapper) {
                    continue;
                }
                QueryWrapper wrapper = new QueryWrapper();
                wrapper.select("depid");
                wrapper.gt("depid", 0);
                wrapper.apply(String.format("depid != ALL(fn_rec_array(%d, 'dep')", ue.getDepid()));
                Integer srid = baseQueryService.getSrid(baseMapper);
                if (null != srid) {
                    wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
                }
                List<Integer> ids = baseMapper.selectList(wrapper);
                addDepIds(rs, ids);
            } catch (Exception ex) {
                log.error(ex.getMessage(), ex);
            }
        }
        return rs;
    }
    /**
     * æ·»åŠ å•ä½ID
     */
    private void addDepIds(List<Integer> rs, List<Integer> ids) {
        if (null == ids || ids.isEmpty()) {
            return;
        }
        for (Integer id : ids) {
            if (!rs.contains(id)) {
                rs.add(id);
            }
        }
    }
    /**
     * åˆ›å»ºZip包
@@ -82,7 +127,7 @@
        Map<String, List<?>> map = new HashMap<>(5);
        for (String enity : entities) {
            try {
                GeomBaseMapper baseMapper = ClassHelper.getGeoBaseMapper(enity);
                GeomBaseMapper<?> baseMapper = ClassHelper.getGeoBaseMapper(enity);
                if (null == baseMapper) {
                    continue;
                }
@@ -97,7 +142,7 @@
                    map.put(enity, list);
                }
            } catch (Exception ex) {
                //
                log.error(ex.getMessage(), ex);
            }
        }
@@ -110,8 +155,11 @@
    private QueryWrapper createWrapper(GeomBaseMapper baseMapper, String wkt) {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.select("ST_AsText(geom) as geom, *");
        Integer srid = baseQueryService.getSrid(baseMapper);
        wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
        if (null != srid) {
            wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
        }
        return wrapper;
    }