From 7a481b56048d2356ed1b0e3eaef3e44a3d610f64 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 28 三月 2023 09:28:40 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/show/DataLibService.java | 69 ++++++++++++++++++++++++++++++++-- 1 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lf/server/service/show/DataLibService.java b/src/main/java/com/lf/server/service/show/DataLibService.java index 24a644a..9e7b76c 100644 --- a/src/main/java/com/lf/server/service/show/DataLibService.java +++ b/src/main/java/com/lf/server/service/show/DataLibService.java @@ -104,7 +104,7 @@ } /** - * 鏌ヨDB涓孩鍑哄崟浣嶇紪鐮佺殑鏌ヨ鍖呰 + * 鏌ヨDB涓孩鍑哄崟浣嶇紪鐮佺殑鏌ヨ鍖呰鍣� */ private <T> QueryWrapper<T> getWrapper4DbOverflow(UserEntity ue, DownloadReqEntity dr) { QueryWrapper<T> wrapper = new QueryWrapper<T>(); @@ -147,12 +147,71 @@ /** * 璇锋眰DB鏁版嵁涓嬭浇 */ - public String downloadDbReq(UserEntity ue, DownloadReqEntity dr) throws Exception { - if (!StringHelper.isEmpty(dr.getWkt())) { - return downloadDbReq4Wkt(ue, dr); + public String downloadDbReq(UserEntity ue, DownloadReqEntity dr) { + Map<String, List<?>> map = queryData(dr); + if (map.size() == 0) { + return null; } - return downloadDbReq4Prop(ue, dr); + return null; + } + + /** + * 鏌ヨ鏁版嵁 + */ + private Map<String, List<?>> queryData(DownloadReqEntity dr) { + Map<String, List<?>> map = new HashMap<>(3); + for (String enity : dr.getEntities()) { + try { + BasicMapper baseMapper = ClassHelper.getBasicMapper(enity); + if (null == baseMapper) { + continue; + } + + QueryWrapper wrapper = createQueryWrapper(baseMapper, dr); + List<?> list = baseMapper.selectList(wrapper); + if (null == list || list.size() == 0) { + continue; + } + + if (!map.containsKey(enity)) { + map.put(enity, list); + } + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } + + return map; + } + + /** + * 鍒涘缓鏌ヨ鍖呰鍣� + */ + private <T> QueryWrapper<T> createQueryWrapper(BasicMapper baseMapper, DownloadReqEntity dr) { + QueryWrapper<T> wrapper = new QueryWrapper<T>(); + + String dirs = copeCodes(dr.getDirs(), "dirid"); + if (!StringHelper.isEmpty(dirs)) { + wrapper.apply(dirs); + } + if (!StringHelper.isEmpty(dr.getDepcode())) { + wrapper.likeRight("depid", dr.getDepcode()); + } + if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(dr.getWkt())) { + wrapper.select("ST_AsText(geom) as geom, *"); + Integer srid = baseQueryService.getSrid((GeomBaseMapper) baseMapper); + if (null != srid) { + wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", dr.getWkt(), srid)); + } + } + if (null != dr.getIds() && dr.getIds().size() > 0) { + wrapper.apply(String.format("gid in (%s)", StringHelper.join(dr.getIds(), ","))); + } else { + baseQueryService.addFilterWrapper(wrapper, dr.getFilter()); + } + + return wrapper; } /** -- Gitblit v1.9.3