管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2023-03-28 7a481b56048d2356ed1b0e3eaef3e44a3d610f64
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;
    }
    /**