From bf6109a746afe7d184f0d14241a5b44d4f95a1bc Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 18 九月 2023 14:40:45 +0800 Subject: [PATCH] 添加删除元数据功能 --- src/main/java/com/lf/server/service/data/MetaService.java | 84 ++++++++++++++++++++++++++++++++++++++++- 1 files changed, 81 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/lf/server/service/data/MetaService.java b/src/main/java/com/lf/server/service/data/MetaService.java index e9b42e4..1c412e7 100644 --- a/src/main/java/com/lf/server/service/data/MetaService.java +++ b/src/main/java/com/lf/server/service/data/MetaService.java @@ -159,6 +159,11 @@ } @Override + public Integer selectCountByPath(String path) { + return metaMapper.selectCountByPath(path); + } + + @Override public Integer insert(MetaEntity entity) { return metaMapper.insert(entity); } @@ -188,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) { + List<MetaEntity> tabMetas = selectByIdsForTab(ids); + if (null != tabMetas && tabMetas.size() > 0) { sql = getDelTabsSql(metas); } - return deletes(sql, ids); + int rows = deletes(sql, ids); + deleteMetaFiles(metas); + + return rows; } /** @@ -274,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) { -- Gitblit v1.9.3