管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-10-29 1b603d3b281d022baed62967d7d7eba63b454ec2
1
已添加1个文件
已修改7个文件
152 ■■■■ 文件已修改
src/main/java/com/lf/server/config/InitConfig.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/controller/all/BaseQueryController.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/helper/ClassHelper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/helper/StringHelper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/BasicMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/all/BaseQueryService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/service/show/LocateService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/InitConfig.java
@@ -10,7 +10,6 @@
import com.lf.server.entity.bd.DlgAgnpEntity;
import com.lf.server.helper.AesHelper;
import com.lf.server.helper.PathHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.mapper.bd.DlgAgnpMapper;
import com.lf.server.service.all.PermsService;
import com.lf.server.service.sys.ArgsService;
@@ -82,8 +81,10 @@
    }
    private void testMybatisPlus() {
        List<String> list0 = dlgAgnpMapper.selectFuzzy("bd.dlg_agnp", "name", "%县%");
        DlgAgnpEntity dlg = dlgAgnpMapper.selectById(1);
        String wkt = dlgAgnpMapper.selectWktById(2);
        String wkt = dlgAgnpMapper.selectWktById("bd.dlg_agnp", 2);
        Map<String, Object> map = new HashMap<String, Object>(3);
        map.put("gid", 2);
src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -1,7 +1,6 @@
package com.lf.server.controller.all;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,6 +8,7 @@
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.helper.AesHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.mapper.all.BasicMapper;
import com.lf.server.mapper.all.GeomBaseMapper;
import com.lf.server.service.all.BaseQueryService;
import io.swagger.annotations.ApiImplicitParam;
@@ -38,13 +38,13 @@
    @GetMapping({"/selectCount"})
    public ResponseMsg<Long> selectCount(String name, String filter, String wkt, Integer srid) {
        try {
            BaseMapper baseMapper = baseQueryService.getBaseMapper(name);
            BasicMapper baseMapper = baseQueryService.getBasicMapper(name);
            if (baseMapper == null) {
                return fail("查询对象不存在", null);
            }
            QueryWrapper wrapper = new QueryWrapper();
            baseQueryService.addFilterWrapper(baseMapper, wrapper, filter);
            baseQueryService.addFilterWrapper(wrapper, filter);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid);
            long count = baseMapper.selectCount(wrapper);
@@ -68,13 +68,13 @@
    @GetMapping(value = "/selectByPage")
    public ResponseMsg<List<Object>> selectByPage(String name, String filter, String wkt, Integer srid, Integer pageIndex, Integer pageSize) {
        try {
            BaseMapper baseMapper = baseQueryService.getBaseMapper(name);
            BasicMapper baseMapper = baseQueryService.getBasicMapper(name);
            if (baseMapper == null) {
                return fail("查询对象不存在", null);
            }
            QueryWrapper wrapper = new QueryWrapper();
            baseQueryService.addFilterWrapper(baseMapper, wrapper, filter);
            baseQueryService.addFilterWrapper(wrapper, filter);
            baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid);
            Page<Object> page = new Page<>(pageIndex, pageSize);
@@ -101,7 +101,12 @@
                return fail("查询对象不存在", null);
            }
            String wkt = baseMapper.selectWktById(gid);
            String tab = baseQueryService.getTabName(baseMapper);
            if (StringHelper.isNull(tab)) {
                return fail("查询对象不存在", null);
            }
            String wkt = baseMapper.selectWktById(tab, gid);
            if (!StringHelper.isEmpty(wkt)) {
                wkt = AesHelper.encrypt(wkt);
            }
@@ -111,4 +116,36 @@
            return fail(ex.getMessage(), null);
        }
    }
    @SysLog()
    @ApiOperation(value = "模糊搜索")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"),
            @ApiImplicitParam(name = "field", value = "字段", dataType = "String", paramType = "query", example = "name"),
            @ApiImplicitParam(name = "value", value = "值", dataType = "String", paramType = "query", example = "'县'")
    })
    @GetMapping(value = "/selectFuzzy")
    public ResponseMsg<List<String>> selectFuzzy(String name, String field, String value) {
        try {
            BasicMapper baseMapper = baseQueryService.getBasicMapper(name);
            if (baseMapper == null) {
                return fail("查询对象不存在", null);
            }
            String tab = baseQueryService.getTabName(baseMapper);
            if (StringHelper.isNull(tab)) {
                return fail("查询对象不存在", null);
            }
            if (StringHelper.isEmpty(field) || StringHelper.isSqlInjection(field)) {
                return fail("查询字段不正确", null);
            }
            value = value == null ? StringHelper.getLikeStr("") : StringHelper.getLikeStr(value.replace("'", ""));
            List<String> rs = baseMapper.selectFuzzy(tab, field, value);
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
        }
    }
}
src/main/java/com/lf/server/helper/ClassHelper.java
@@ -35,7 +35,7 @@
     * @param baseMapper çˆ¶Mapper
     * @return å®žä½“ç±»
     */
    public static Object createInstanceByBaseMapper(BaseMapper baseMapper) {
    public static Object createEntityByMapper(BaseMapper baseMapper) {
        String className = baseMapper.getClass().getName().replace(".mapper", ".entity").replace("Mapper", "Entity");
        return createInstance(className);
src/main/java/com/lf/server/helper/StringHelper.java
@@ -116,8 +116,8 @@
    /**
     * èŽ·å– like å­—符串
     */
    public static String getLikeStr(String name) {
        return StringHelper.isEmpty(name) ? null : "%" + name.trim() + "%";
    public static String getLikeStr(String str) {
        return StringHelper.isEmpty(str) ? null : "%" + str.trim() + "%";
    }
    /**
src/main/java/com/lf/server/mapper/all/BasicMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.lf.server.mapper.all;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * åŸºç¡€Mapper
 * @author WWW
 * @param <T> æ³›åž‹
 */
public interface BasicMapper<T> extends BaseMapper<T> {
    /**
     * æ¨¡ç³Šæœç´¢
     *
     * @param tab   è¡¨å
     * @param field å­—段
     * @param value å€¼
     * @return ç»“果列表
     */
    @Select("select ${field} from ${tab} where ${field} like #{value} order by ${field} limit 10")
    public List<String> selectFuzzy(@Param("tab") String tab, @Param("field") String field, @Param("value") String value);
}
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -1,21 +1,21 @@
package com.lf.server.mapper.all;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
 * ç©ºé—´åŸºç¡€Mapper
 * @author WWW
 * @param <T>
 * @param <T> æ³›åž‹
 */
public interface GeomBaseMapper<T> extends BaseMapper<T> {
public interface GeomBaseMapper<T> extends BasicMapper<T> {
    /**
     * æ ¹æ®ID查询WKT
     *
     * @param gid
     * @return
     * @param tab è¡¨å
     * @param gid GID
     * @return WKT
     */
    @Select("select st_astext(geom) geom from bd.dlg_agnp where gid = #{gid}")
    public String selectWktById(@Param("gid") Integer gid);
    @Select("select st_astext(geom) geom from ${tab} where gid = #{gid}")
    public String selectWktById(@Param("tab") String tab, @Param("gid") Integer gid);
}
src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -1,10 +1,10 @@
package com.lf.server.service.all;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lf.server.helper.AesHelper;
import com.lf.server.helper.ClassHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.mapper.all.BasicMapper;
import com.lf.server.mapper.all.GeomBaseMapper;
import org.springframework.stereotype.Service;
@@ -20,17 +20,17 @@
     * @param name Mapper名
     * @return BaseMapper
     */
    public BaseMapper getBaseMapper(String name) {
    public BasicMapper getBasicMapper(String name) {
        if (StringHelper.isEmpty(name)) {
            return null;
        }
        Object obj = ClassHelper.getBean(name.trim() + "Mapper");
        if (!(obj instanceof BaseMapper)) {
        if (!(obj instanceof BasicMapper)) {
            return null;
        }
        return (BaseMapper) obj;
        return (BasicMapper) obj;
    }
    /**
@@ -55,11 +55,10 @@
    /**
     * æ·»åŠ è¿‡æ»¤æ¡ä»¶
     *
     * @param baseMapper çˆ¶Mapper
     * @param wrapper    QueryWrapper
     * @param filter     åŽŸå§‹è¿‡æ»¤æ¡ä»¶å­—ç¬¦ä¸²
     * @param wrapper QueryWrapper
     * @param filter  åŽŸå§‹è¿‡æ»¤æ¡ä»¶å­—ç¬¦ä¸²
     */
    public void addFilterWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String filter) {
    public void addFilterWrapper(QueryWrapper wrapper, String filter) {
        if (StringHelper.isEmpty(filter)) {
            return;
        }
@@ -140,16 +139,31 @@
    /**
     * æ·»åŠ ç©ºé—´è¿‡æ»¤æ¡ä»¶
     *
     * @param baseMapper çˆ¶Mapper
     * @param wrapper    QueryWrapper
     * @param wkt        WKT(著名文本)
     * @param srid       ç©ºé—´å¼•用标识符
     * @param basicMapper çˆ¶Mapper
     * @param wrapper     QueryWrapper
     * @param wkt         WKT(著名文本)
     * @param srid        ç©ºé—´å¼•用标识符
     * @throws Exception å¼‚常
     */
    public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception {
        if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) {
    public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception {
        if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) {
            wkt = AesHelper.decrypt(wkt);
            wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid));
        }
    }
    /**
     * æ ¹æ®Mapper获取表名
     *
     * @param basicMapper Mapper
     * @return è¡¨å
     */
    public String getTabName(BasicMapper basicMapper) {
        Object obj = ClassHelper.createEntityByMapper(basicMapper);
        if (obj == null) {
            return null;
        }
        return null;
    }
}
src/main/java/com/lf/server/service/show/LocateService.java
@@ -6,6 +6,7 @@
import com.lf.server.entity.bd.DlgAgnpEntity;
import com.lf.server.helper.StringHelper;
import com.lf.server.mapper.bd.DlgAgnpMapper;
import com.lf.server.service.all.BaseQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -17,6 +18,9 @@
public class LocateService {
    @Autowired
    DlgAgnpMapper dlgAgnpMapper;
    @Autowired
    BaseQueryService baseQueryService;
    public Page<DlgAgnpEntity> selectAddrByPage(String name, Integer pageSize, Integer pageIndex) {
        Page<DlgAgnpEntity> paging = new Page<>(pageIndex, pageSize);
@@ -32,6 +36,11 @@
    }
    public String selectWktById(Integer id) {
        return dlgAgnpMapper.selectWktById(id);
        String tab = baseQueryService.getTabName(dlgAgnpMapper);
        if (StringHelper.isNull(tab)) {
            return null;
        }
        return dlgAgnpMapper.selectWktById(tab, id);
    }
}