| | |
| | | } |
| | | |
| | | /** |
| | | * 查询DB中溢出单位编码的查询包装 |
| | | * 查询DB中溢出单位编码的查询包装器 |
| | | */ |
| | | private <T> QueryWrapper<T> getWrapper4DbOverflow(UserEntity ue, DownloadReqEntity dr) { |
| | | QueryWrapper<T> wrapper = new QueryWrapper<T>(); |
| | |
| | | /** |
| | | * 请求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; |
| | | } |
| | | |
| | | /** |