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 ++++++++++++++++++++++++++++++++++++++++- src/main/java/com/lf/server/mapper/data/MetaMapper.java | 8 ++++ src/main/resources/application.yml | 8 ++-- src/main/resources/mapper/data/MetaMapper.xml | 6 +++ 4 files changed, 99 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/lf/server/mapper/data/MetaMapper.java b/src/main/java/com/lf/server/mapper/data/MetaMapper.java index a73303e..4ab08a1 100644 --- a/src/main/java/com/lf/server/mapper/data/MetaMapper.java +++ b/src/main/java/com/lf/server/mapper/data/MetaMapper.java @@ -178,6 +178,14 @@ public List<String> selectMetaOverflowDep(String ids, String depcode); /** + * 鏍规嵁璺緞鏌ヨ鏂囦欢鍚� + * + * @param path 璺緞 + * @return 鏂囦欢鏁� + */ + public Integer selectCountByPath(String path); + + /** * 鎻掑叆涓�鏉� * * @param entity 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) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7f3bda5..3ddebc2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -46,11 +46,11 @@ name: prod # JDBC 鍩烘湰閰嶇疆 ¤tSchema=public #url: jdbc:postgresql://103.85.165.99:5433/langfang?useAffectedRows=true - url: jdbc:postgresql://192.168.20.205:5433/langfang?useAffectedRows=true - #url: jdbc:postgresql://127.0.0.1:5433/langfang?useAffectedRows=true + #url: jdbc:postgresql://192.168.20.205:5433/langfang?useAffectedRows=true + url: jdbc:postgresql://127.0.0.1:5433/langfang?useAffectedRows=true username: postgres - password: Postgres!_14_Lf - #password: postgres + #password: Postgres!_14_Lf + password: postgres driver-class-name: org.postgresql.Driver platform: POSTGRESQL type: com.alibaba.druid.pool.DruidDataSource diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml index 1311d29..00223b3 100644 --- a/src/main/resources/mapper/data/MetaMapper.xml +++ b/src/main/resources/mapper/data/MetaMapper.xml @@ -205,6 +205,12 @@ order by depcode; </select> + <select id="selectCountByPath" resultType="java.lang.Integer"> + with a as (select count(*) from lf.sys_meta where path = #{path}), + b as (select count(*) from lf.sys_attach where path = #{path}) + select a.count + b.count "count" from a, b; + </select> + <insert id="insert" parameterType="com.lf.server.entity.data.MetaEntity"> <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> select currval('lf.sys_meta_id_seq'::regclass) as id -- Gitblit v1.9.3