From 89f9b7d46346da4f9263d27f6ce20032b9458bd5 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 25 八月 2023 11:10:56 +0800 Subject: [PATCH] 元数据管理添加空间过滤条件 --- src/main/java/com/moon/server/controller/data/MetaController.java | 8 +++++--- src/main/java/com/moon/server/mapper/data/MetaMapper.java | 6 ++++-- src/main/java/com/moon/server/service/data/MetaService.java | 21 +++++++++++++++++---- src/main/resources/mapper/data/MetaMapper.xml | 6 ++++++ 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/moon/server/controller/data/MetaController.java b/src/main/java/com/moon/server/controller/data/MetaController.java index e93d318..9de1c7b 100644 --- a/src/main/java/com/moon/server/controller/data/MetaController.java +++ b/src/main/java/com/moon/server/controller/data/MetaController.java @@ -76,22 +76,24 @@ @ApiImplicitParam(name = "dircode", value = "鐩綍缂栫爜", dataType = "String", paramType = "query", example = "00"), @ApiImplicitParam(name = "verid", value = "鐗堟湰ID", dataType = "Integer", paramType = "query", example = "0"), @ApiImplicitParam(name = "name", value = "鍚嶇О", dataType = "String", paramType = "query", example = ""), + @ApiImplicitParam(name = "wkt", value = "WKT瀛楃涓�", dataType = "String", paramType = "query", example = "gAPpDbZ53XfoQfvT8dj/uhBWX5os8kBJQ1LrNvH3VX7byFQdUJMPiEr8Fkj0q2i1pw+L8KFrvR0MLXq2xaO21nlQQXmEPofJxpDQZwEWUIFZsToXo1kLRD3t6WQezxWB8YTzXHM20Ba73x/ZuuezVhOFOq1U8HKf1dXQdv7gBzEB6fWMmFDc3FuH8GDDHv3LfT86Gio9VgMO6ohlrUdf3ZKtTHeLSuzGF4t0RZuX97YBNo25IIzpeTfRTXBxfdxA"), @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"), @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1") }) @GetMapping(value = "/selectByPageAndCount") - public ResponseMsg<List<MetaEntity>> selectByPageAndCount(String depcode, String dircode, Integer verid, String name, Integer pageSize, Integer pageIndex) { + public ResponseMsg<List<MetaEntity>> selectByPageAndCount(String depcode, String dircode, Integer verid, String name, String wkt, Integer pageSize, Integer pageIndex) { try { if (pageSize < 1 || pageIndex < 1) { return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null); } + wkt = metaService.getGeometryFilter(wkt); - int count = metaService.selectCount(depcode, dircode, verid, name); + int count = metaService.selectCount(depcode, dircode, verid, name, wkt); if (count == 0) { return success(0, null); } - List<MetaEntity> rs = metaService.selectByPage(depcode, dircode, verid, name, pageSize, pageSize * (pageIndex - 1)); + List<MetaEntity> rs = metaService.selectByPage(depcode, dircode, verid, name, wkt, pageSize, pageSize * (pageIndex - 1)); return success(count, rs); } catch (Exception ex) { diff --git a/src/main/java/com/moon/server/mapper/data/MetaMapper.java b/src/main/java/com/moon/server/mapper/data/MetaMapper.java index 90a4dcc..70ab170 100644 --- a/src/main/java/com/moon/server/mapper/data/MetaMapper.java +++ b/src/main/java/com/moon/server/mapper/data/MetaMapper.java @@ -20,9 +20,10 @@ * @param dircode 鐩綍缂栫爜 * @param verid 鐗堟湰ID * @param name 鍚嶇О + * @param wkt WKT * @return 璁板綍鏁� */ - public Integer selectCount(String depcode, String dircode, Integer verid, String name); + public Integer selectCount(String depcode, String dircode, Integer verid, String name, String wkt); /** * 鍒嗛〉鏌ヨ @@ -31,11 +32,12 @@ * @param dircode 鐩綍缂栫爜 * @param verid 鐗堟湰ID * @param name 鍚嶇О + * @param wkt WKT * @param limit 璁板綍鏁� * @param offset 鍋忕Щ閲� * @return 鍒楄〃 */ - public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset); + public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, String wkt, Integer limit, Integer offset); /** * 鏍规嵁GUID鏌ヨGDB diff --git a/src/main/java/com/moon/server/service/data/MetaService.java b/src/main/java/com/moon/server/service/data/MetaService.java index bf25963..0a81ed8 100644 --- a/src/main/java/com/moon/server/service/data/MetaService.java +++ b/src/main/java/com/moon/server/service/data/MetaService.java @@ -48,21 +48,21 @@ private final static Log log = LogFactory.getLog(MetaService.class); @Override - public Integer selectCount(String depcode, String dircode, Integer verid, String name) { + public Integer selectCount(String depcode, String dircode, Integer verid, String name, String wkt) { depcode = StringHelper.getRightLike(depcode); dircode = StringHelper.getRightLike(dircode); name = StringHelper.getLikeUpperStr(name); - return metaMapper.selectCount(depcode, dircode, verid, name); + return metaMapper.selectCount(depcode, dircode, verid, name, wkt); } @Override - public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, Integer limit, Integer offset) { + public List<MetaEntity> selectByPage(String depcode, String dircode, Integer verid, String name, String wkt, Integer limit, Integer offset) { depcode = StringHelper.getRightLike(depcode); dircode = StringHelper.getRightLike(dircode); name = StringHelper.getLikeUpperStr(name); - return metaMapper.selectByPage(depcode, dircode, verid, name, limit, offset); + return metaMapper.selectByPage(depcode, dircode, verid, name, wkt, limit, offset); } @Override @@ -642,4 +642,17 @@ metaDownService.inserts(list); } + + /** + * 鑾峰彇绌洪棿杩囨护 + */ + public String getGeometryFilter(String wkt) throws Exception { + if (StringHelper.isEmpty(wkt)) { + return null; + } + + wkt = AesHelper.decrypt(wkt); + + return String.format("ST_Intersects(ST_GeomFromText('%s', %d), geom)", wkt, StaticData.I104903); + } } diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml index c70b3eb..2bb5f6f 100644 --- a/src/main/resources/mapper/data/MetaMapper.xml +++ b/src/main/resources/mapper/data/MetaMapper.xml @@ -17,6 +17,9 @@ <if test="name != null"> and upper(name) like #{name} </if> + <if test="wkt != null"> + and ${wkt} + </if> </where> </select> @@ -37,6 +40,9 @@ <if test="name != null"> and upper(name) like #{name} </if> + <if test="wkt != null"> + and ${wkt} + </if> </where> order by id desc limit #{limit} offset #{offset} -- Gitblit v1.9.3