管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2024-12-18 0c8cd957630d43aa71183d34ecb1faf60689f8a4
src/main/java/com/lf/server/service/data/MetaService.java
@@ -10,6 +10,7 @@
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.*;
import com.lf.server.mapper.all.BasicMapper;
import com.lf.server.mapper.all.GeomBaseMapper;
import com.lf.server.mapper.data.MetaMapper;
import com.lf.server.service.all.BaseQueryService;
import com.lf.server.service.sys.MetaDownService;
@@ -65,6 +66,11 @@
    }
    @Override
    public List<MetaEntity> selectGdbByGuid(String guid) {
        return metaMapper.selectGdbByGuid(guid);
    }
    @Override
    public Integer selectMetasForCount(String depcode, String dirs, String name) {
        depcode = StringHelper.getRightLike(depcode);
        name = StringHelper.getLikeUpperStr(name);
@@ -114,13 +120,18 @@
    }
    @Override
    public MetaEntity selectByGuid(String guid, String tab) {
        return metaMapper.selectByGuid(guid, tab);
    public MetaEntity selectByGuid(String guid, String dircode, String tab) {
        return metaMapper.selectByGuid(guid, dircode, tab);
    }
    @Override
    public List<MetaEntity> selectByIdsForTab(String ids) {
        return metaMapper.selectByIdsForTab(ids);
    }
    @Override
    public List<MetaEntity> selectByIds(String ids) {
        return metaMapper.selectByIds(ids);
    }
    @Override
@@ -145,6 +156,11 @@
        depcode = StringHelper.getRightLike(depcode);
        return metaMapper.selectMetaOverflowDep(ids, depcode);
    }
    @Override
    public Integer selectCountByPath(String path) {
        return metaMapper.selectCountByPath(path);
    }
    @Override
@@ -177,14 +193,18 @@
     */
    public Integer deletes(List<Integer> list) {
        String ids = StringHelper.join(list, ",");
        List<MetaEntity> metas = selectByIds(ids);
        String sql = null;
        List<MetaEntity> metas = selectByIdsForTab(ids);
        if (null != metas && metas.size() > 0) {
            sql = getDelTabsSql(metas);
        List<MetaEntity> tabMetas = selectByIdsForTab(ids);
        if (null != tabMetas && tabMetas.size() > 0) {
            sql = getDelTabsSql(tabMetas);
        }
        return deletes(sql, ids);
        int rows = deletes(sql, ids);
        deleteMetaFiles(metas);
        return rows;
    }
    /**
@@ -238,6 +258,9 @@
            if (str.contains("bs.s_explorationpoint ")) {
                list.add(str.replace("bs.s_explorationpoint ", "bs.s_surveyworksite "));
            }
            if (str.contains("bs.m_surface_deformation_data ")) {
                list.add(str.replace("bs.m_surface_deformation_data ", "bs.m_surface_deformation_data_date "));
            }
            i++;
        }
@@ -260,6 +283,75 @@
    }
    /**
     * 删除元数据文件
     */
    private void deleteMetaFiles(List<MetaEntity> metas) {
        String uploadPath = pathHelper.getConfig().getUploadPath();
        for (MetaEntity meta : metas) {
            if (StringHelper.isEmpty(meta.getPath())) {
                continue;
            }
            Integer rows = selectCountByPath(meta.getPath());
            if (rows > 0) {
                continue;
            }
            try {
                String file = uploadPath + File.separator + meta.getPath();
                switch ("." + meta.getType()) {
                    case StaticData.MPT:
                        deleteFiles(file, meta.getType(), StaticData.MPT_EXT);
                        break;
                    case StaticData.JPG:
                        deleteFiles(file, meta.getType(), StaticData.JPG_EXT);
                        break;
                    case StaticData.IMG:
                        deleteFiles(file, meta.getType(), StaticData.IMG_EXT);
                        break;
                    case StaticData.TIF:
                        deleteFiles(file, meta.getType(), StaticData.TIF_EXT);
                        break;
                    case StaticData.TIFF:
                        deleteFiles(file, meta.getType(), StaticData.TIFF_EXT);
                        break;
                    case StaticData.SHP:
                        deleteFiles(file, meta.getType(), StaticData.SHP_EXT);
                        break;
                    case StaticData.GDB:
                    case StaticData.OSGB:
                        FileHelper.deleteDir(file);
                        break;
                    default:
                        deleteFiles(file, meta.getType(), null);
                        break;
                }
            } catch (Exception ex) {
                log.error(ex.getMessage(), ex);
            }
        }
    }
    /**
     * 删除多个文件
     */
    private void deleteFiles(String file, String type, List<String> extList) {
        File f = new File(file);
        if (f.exists() && !f.isDirectory()) {
            f.delete();
        }
        if (null == extList || extList.isEmpty()) {
            return;
        }
        for (String ext : extList) {
            f = new File(file.replace("." + type, ext));
            if (f.exists() && !f.isDirectory()) {
                f.delete();
            }
        }
    }
    /**
     * 查看文件
     */
    public void downloadForView(String guid, boolean inline, HttpServletResponse res) {
@@ -269,7 +361,7 @@
                return;
            }
            MetaEntity me = selectByGuid(guid, null);
            MetaEntity me = selectByGuid(guid, null, null);
            if (me == null) {
                WebHelper.writeStr2Page(res, StaticData.NO_FILE);
                return;
@@ -455,6 +547,9 @@
        String filter = String.format("parentid in (%s)", StringHelper.join(ids, ","));
        QueryWrapper<T> wrapper = new QueryWrapper<T>();
        if (baseMapper instanceof GeomBaseMapper) {
            wrapper.select("ST_AsText(geom) as geom, *");
        }
        wrapper.apply(filter);
        return wrapper;
@@ -505,6 +600,9 @@
                    case StaticData.MPT:
                        addMultiFile(uploadPath, mf, zip, params, StaticData.MPT_EXT);
                        break;
                    case StaticData.JPG:
                        addMultiFile(uploadPath, mf, zip, params, StaticData.JPG_EXT);
                        break;
                    case StaticData.IMG:
                        addMultiFile(uploadPath, mf, zip, params, StaticData.IMG_EXT);
                        break;
@@ -518,6 +616,8 @@
                        addMultiFile(uploadPath, mf, zip, params, StaticData.SHP_EXT);
                        break;
                    case StaticData.GDB:
                        continue;
                    case StaticData.OSGB:
                        addFolderFile(uploadPath, mf, zip, params);
                        break;
                    default:
@@ -591,7 +691,7 @@
    private DownloadEntity getDownloadEntity(UserEntity ue, String file, String pwd) {
        DownloadEntity de = new DownloadEntity();
        de.setName(FileHelper.getFileName(file));
        // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告
        // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告,7-附件文件,8-瓦片文件
        de.setType(3);
        de.setSizes(FileHelper.sizeToMb(new File(file).length()));
        de.setDepid(ue.getDepid());