管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-04 8aa79d9913374a471c80f5855a773850b87f601c
1
已修改6个文件
95 ■■■■ 文件已修改
data/db_fn.sql 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/all/BaseQueryController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/all/RedisCacheKey.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/all/BaseQueryService.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
说明.txt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/db_fn.sql
@@ -276,6 +276,20 @@
select * from lf.sys_domain where dom_name='dlg25gbcode';
select * from bd.dlg_25w_aanp limit 10;
select * from bd.dlg_25w_agnp
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))
limit 10;
select st_srid(geom) from bd.dlg_25w_agnp limit 1;
select * from bd.dlg_25w_agnp where class != 'BB' limit 1;
src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -20,6 +20,7 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@@ -36,11 +37,11 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"),
            @ApiImplicitParam(name = "filter", value = "过滤条件", dataType = "String", paramType = "query", example = "gid >= 50 and name like '县' and objectid < 5000.0"),
            @ApiImplicitParam(name = "wkt", value = "WKT(著名文本)", dataType = "String", paramType = "query", example = "gAPpDbZ53XfoQfvT8dj/uhBWX5os8kBJQ1LrNvH3VX7byFQdUJMPiEr8Fkj0q2i1pw+L8KFrvR0MLXq2xaO21nlQQXmEPofJxpDQZwEWUIFZsToXo1kLRD3t6WQezxWB8YTzXHM20Ba73x/ZuuezVhOFOq1U8HKf1dXQdv7gBzEB6fWMmFDc3FuH8GDDHv3LfT86Gio9VgMO6ohlrUdf3ZKtTHeLSuzGF4t0RZuX97YBNo25IIzpeTfRTXBxfdxA"),
            @ApiImplicitParam(name = "srid", value = "空间引用标识符", dataType = "Integer", paramType = "query", example = "4326")
            @ApiImplicitParam(name = "wkt", value = "WKT(著名文本)", dataType = "String", paramType = "query", example = "gAPpDbZ53XfoQfvT8dj/uhBWX5os8kBJQ1LrNvH3VX7byFQdUJMPiEr8Fkj0q2i1pw+L8KFrvR0MLXq2xaO21nlQQXmEPofJxpDQZwEWUIFZsToXo1kLRD3t6WQezxWB8YTzXHM20Ba73x/ZuuezVhOFOq1U8HKf1dXQdv7gBzEB6fWMmFDc3FuH8GDDHv3LfT86Gio9VgMO6ohlrUdf3ZKtTHeLSuzGF4t0RZuX97YBNo25IIzpeTfRTXBxfdxA")
    })
    @GetMapping({"/selectCount"})
    public ResponseMsg<Long> selectCount(String name, String filter, String wkt, Integer srid) {
    @GetMapping(value = "/selectCount")
    @PostMapping(value = "/selectCount")
    public ResponseMsg<Long> selectCount(String name, String filter, String wkt) {
        try {
            BasicMapper baseMapper = baseQueryService.getBasicMapper(name);
            if (baseMapper == null) {
@@ -49,7 +50,7 @@
            QueryWrapper wrapper = new QueryWrapper();
            baseQueryService.addFilterWrapper(wrapper, filter);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt);
            long count = baseMapper.selectCount(wrapper);
@@ -65,12 +66,13 @@
            @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"),
            @ApiImplicitParam(name = "filter", value = "过滤条件", dataType = "String", paramType = "query", example = ""),
            @ApiImplicitParam(name = "wkt", value = "WKT(著名文本)", dataType = "String", paramType = "query", example = ""),
            @ApiImplicitParam(name = "srid", value = "空间引用标识符", dataType = "Integer", paramType = "query", example = "4326"),
            //@ApiImplicitParam(name = "srid", value = "空间引用标识符", dataType = "Integer", paramType = "query", example = "4326"),
            @ApiImplicitParam(name = "pageIndex", value = "分页数(从1开始)", dataType = "Integer", paramType = "query", example = "1"),
            @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "Integer", paramType = "query", example = "10")
    })
    @GetMapping(value = "/selectByPage")
    public ResponseMsg<List<Object>> selectByPage(String name, String filter, String wkt, Integer srid, Integer pageIndex, Integer pageSize) {
    @PostMapping(value = "/selectByPage")
    public ResponseMsg<List<Object>> selectByPage(String name, String filter, String wkt, Integer pageIndex, Integer pageSize) {
        try {
            BasicMapper baseMapper = baseQueryService.getBasicMapper(name);
            if (baseMapper == null) {
@@ -79,7 +81,7 @@
            QueryWrapper wrapper = new QueryWrapper();
            baseQueryService.addFilterWrapper(wrapper, filter);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt);
            Page<Object> page = new Page<>(pageIndex, pageSize);
            page.addOrder(OrderItem.asc("gid"));
src/main/java/com/lf/server/entity/all/RedisCacheKey.java
@@ -67,4 +67,11 @@
    public static String blacklistKey(String key) {
        return "blacklist:" + key;
    }
    /**
     * å‡ ä½•对象的空间参考键
     */
    public static String sridKey(String key) {
        return "geom:srid:" + key;
    }
}
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -16,6 +16,15 @@
     * @param gid GID
     * @return WKT
     */
    @Select("select st_astext(geom) geom from ${tab} where gid = #{gid}")
    @Select("select ST_AsText(geom) geom from ${tab} where gid = #{gid}")
    public String selectWktById(@Param("tab") String tab, @Param("gid") Integer gid);
    /**
     * æ ¹æ®è¡¨åæŸ¥è¯¢ç©ºé—´å‚考
     *
     * @param tab è¡¨å
     * @return SRID
     */
    @Select("select ST_SRID(geom) from ${tab} limit 1")
    public Integer selectSrid(@Param("tab") String tab);
}
src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lf.server.entity.all.RedisCacheKey;
import com.lf.server.entity.ctrl.IdNameEntity;
import com.lf.server.entity.ctrl.TabEntity;
import com.lf.server.entity.data.DictEntity;
@@ -13,11 +14,13 @@
import com.lf.server.mapper.all.BasicMapper;
import com.lf.server.mapper.all.GeomBaseMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.cache.RedisCache;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
 * çˆ¶æŸ¥è¯¢æœåŠ¡ç±»
@@ -27,6 +30,9 @@
public class BaseQueryService implements BaseQueryMapper {
    @Autowired
    BaseQueryMapper baseQueryMapper;
    @Autowired
    RedisService redisService;
    /**
     * è¡¨åMap
@@ -161,17 +167,41 @@
     * @param basicMapper çˆ¶Mapper
     * @param wrapper     QueryWrapper
     * @param wkt         WKT(著名文本)
     * @param srid        ç©ºé—´å¼•用标识符
     * @throws Exception å¼‚常
     */
    public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception {
        if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) {
    public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt) throws Exception {
        if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt)) {
            wkt = AesHelper.decrypt(wkt);
            wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid));
            Integer srid = getSrid((GeomBaseMapper) basicMapper);
            wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid));
        }
    }
    /**
     * èŽ·å–å‡ ä½•å¯¹è±¡çš„ç©ºé—´å‚è€ƒ
     *
     * @param basicMapper ç©ºé—´åŸºç¡€Mapper
     * @return SRID
     */
    private Integer getSrid(GeomBaseMapper basicMapper) {
        String tab = getTabName(basicMapper);
        String key = RedisCacheKey.sridKey(tab);
        Object obj = redisService.get(key);
        if (obj instanceof Integer) {
            return (Integer) obj;
        }
        Integer srid = basicMapper.selectSrid(tab);
        if (srid != null) {
            redisService.put(key, srid, 5, TimeUnit.MINUTES);
        }
        return srid;
    }
    /**
     * æ ¹æ®Mapper获取表名
     *
     * @param basicMapper Mapper
˵Ã÷.txt
@@ -31,16 +31,15 @@
30.开发上传Shp文件功能
31.使用Gdal读取Shp文件,读取后删除文件
32.修改字典表的数据结构,变更所有涉及的后台方法
33.开发值域表的操作接口 <
34.
35.
33.开发值域表的操作接口
34.修改字典管理、值域管理的接口
35.对用户、菜单、角色、资源进行授权 <
36.
37.
38.
39.
40.
-----------------------------------------------
.对用户、菜单、角色、资源进行授权
.添加查询角色、菜单、资源权限接口
.开发根据实体名称动态查询表的记录数
.开发根据实体名称进行动态分页查询