From 87812d4e1d13cfce6567a0177d77389e0774f203 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 21 十一月 2022 16:51:26 +0800 Subject: [PATCH] 数据入库:开发shp数据入库(进行中) --- src/main/java/com/lf/server/helper/ShpHelper.java | 7 ++ src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java | 10 +++ src/main/java/com/lf/server/controller/data/DataLoaderController.java | 4 src/main/java/com/lf/server/service/data/DataLoaderService.java | 158 +++++++++++++++++++++++++++++++++------------------- 4 files changed, 118 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/lf/server/controller/data/DataLoaderController.java b/src/main/java/com/lf/server/controller/data/DataLoaderController.java index 00fc08f..0dc18f5 100644 --- a/src/main/java/com/lf/server/controller/data/DataLoaderController.java +++ b/src/main/java/com/lf/server/controller/data/DataLoaderController.java @@ -92,9 +92,9 @@ me.setBatch(StringHelper.YMDHMS_FORMAT.format(new Date(me.getCreateTime().getTime()))); me.setCreateUser(ue.getId()); - int rows = dataLoaderService.insertFiles(me, entity.getFileEntities(), entity.getTabEntities()); + dataLoaderService.insertFiles(me, entity.getFileEntities(), entity.getTabEntities()); - return success("鎴愬姛", rows); + return success("鎴愬姛", entity.getTabEntities()); } catch (Exception ex) { return fail(ex.getMessage(), null); } diff --git a/src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java b/src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java index a28581c..c6dd197 100644 --- a/src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java +++ b/src/main/java/com/lf/server/entity/ctrl/TabMapperEntity.java @@ -32,6 +32,8 @@ private String entity; + private Integer rows; + public String getFileName() { return fileName; } @@ -71,4 +73,12 @@ public void setEntity(String entity) { this.entity = entity; } + + public Integer getRows() { + return rows; + } + + public void setRows(Integer rows) { + this.rows = rows; + } } diff --git a/src/main/java/com/lf/server/helper/ShpHelper.java b/src/main/java/com/lf/server/helper/ShpHelper.java index cfcac9c..9a94d5a 100644 --- a/src/main/java/com/lf/server/helper/ShpHelper.java +++ b/src/main/java/com/lf/server/helper/ShpHelper.java @@ -193,4 +193,11 @@ return -1; } } + + public static <T> List<T> readData(Class clazz,String filePath) { + List<T> list = new ArrayList<>(); + + + return list; + } } diff --git a/src/main/java/com/lf/server/service/data/DataLoaderService.java b/src/main/java/com/lf/server/service/data/DataLoaderService.java index 5595ade..0ce285b 100644 --- a/src/main/java/com/lf/server/service/data/DataLoaderService.java +++ b/src/main/java/com/lf/server/service/data/DataLoaderService.java @@ -1,11 +1,11 @@ package com.lf.server.service.data; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lf.server.entity.all.BaseEntity; import com.lf.server.entity.ctrl.TabMapperEntity; import com.lf.server.entity.data.MetaEntity; import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.helper.*; +import com.lf.server.mapper.all.BasicMapper; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import com.lf.server.service.all.BaseUploadService; @@ -203,14 +203,14 @@ /** * 鎻掑叆鏂囦欢 */ - public int insertFiles(MetaEntity entity, List<MetaFileEntity> list, List<TabMapperEntity> tabs) { - int count = 0; + public void insertFiles(MetaEntity entity, List<MetaFileEntity> list, List<TabMapperEntity> tabs) { try { String temp = pathHelper.getConfig().getTempPath(); - String root = pathHelper.getUploadFullPath(); + String full = pathHelper.getUploadFullPath(); + String root = pathHelper.getConfig().getUploadPath(); for (MetaFileEntity mf : list) { - String filePath = getFilePath(temp, root, mf); + String filePath = getFilePath(temp, full, mf); if (null == filePath) { continue; } @@ -228,15 +228,26 @@ } // 鍏ュ簱 - if (null != me.getType() && insertDb(me, mfe, tabs) > 0) { - count++; + switch (me.getType()) { + case "xls": + insertXls(root, mfe, tabs); + break; + case "shp": + insertShp(temp + "_zip", mfe, tabs); + break; + case "gdb": + insertGdb(temp + "_zip", mfe, tabs); + break; + case "mdb": + insertMdb(temp + "_zip", mfe, tabs); + break; + default: + break; } } } catch (Exception ex) { log.error(ex.getMessage(), ex); } - - return count; } /** @@ -325,68 +336,59 @@ } /** - * 鎻掑叆鏁版嵁搴� - */ - private Integer insertDb(MetaEntity me, MetaFileEntity mfe, List<TabMapperEntity> tabs) { - String root = pathHelper.getConfig().getUploadPath(); - switch (me.getType()) { - case "xls": - return insertXls(root, mfe, tabs); - case "mdb": - return insertMdb(root, mfe, tabs); - case "shp": - return insertShp(root, mfe, tabs); - case "gdb": - return insertGdb(root, mfe, tabs); - default: - return 0; - } - } - - /** * 鎻掑叆Excel */ - private Integer insertXls(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + private void insertXls(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { TabMapperEntity tab = getTabEntity(mfe, tabs); - if (null == tab) { - return 0; + if (null == tab|| StringHelper.isEmpty(tab.getEntity())) { + return; } - BaseMapper baseMapper = ClassHelper.getBasicMapper(tab.getEntity()); - if (null == baseMapper) { - return 0; + BasicMapper basicMapper = ClassHelper.getBasicMapper(tab.getEntity()); + if (null == basicMapper) { + return; } - String className = ClassHelper.getClassName(baseMapper); + String className = ClassHelper.getClassName(basicMapper); Class clazz = ClassHelper.getEntityClass(className); if (null == clazz) { - return 0; + return; } List<?> list = ExcelHelper.readExcel(clazz, root + File.separator + mfe.getPath()); if (null == list || list.isEmpty()) { - return 0; + return; } - setCreateInfo(list, mfe); int rows = 0; for (int i = 0, c = list.size(); i < c; i++) { - rows += baseMapper.insert(list.get(i)); + rows += basicMapper.insert(list.get(i)); + } + if (basicMapper instanceof GeomBaseMapper) { + GeomBaseMapper geomBaseMapper = (GeomBaseMapper) basicMapper; + updateXlsGeom(geomBaseMapper, list); } - if (baseMapper instanceof GeomBaseMapper) { - GeomBaseMapper geomBaseMapper = (GeomBaseMapper) baseMapper; - updateGeom(geomBaseMapper, list); + tab.setRows(rows); + } + + /** + * 鑾峰彇琛ㄦ槧灏勫疄浣撶被 + */ + private TabMapperEntity getTabEntity(MetaFileEntity mfe, List<TabMapperEntity> tabs) { + for (TabMapperEntity tab : tabs) { + if (tab.getFileName().equals(mfe.getName())) { + return tab; + } } - return rows; + return null; } /** * 璁剧疆鍒涘缓淇℃伅 */ - @SuppressWarnings("AlibabaRemoveCommentedCode") private <T> void setCreateInfo(List<T> list, MetaFileEntity mfe) { try { for (T t : list) { @@ -406,7 +408,7 @@ /** * 璁剧疆绌洪棿淇℃伅 */ - private <T> void updateGeom(GeomBaseMapper geomBaseMapper, List<T> list) { + private <T> void updateXlsGeom(GeomBaseMapper geomBaseMapper, List<T> list) { try { String tabName = BaseQueryService.getTabName(geomBaseMapper); for (T t : list) { @@ -430,19 +432,62 @@ } /** - * 鎻掑叆MDB + * 鎻掑叆SHP */ - private Integer insertMdb(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + private void insertShp(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + for (TabMapperEntity tab : tabs) { + if (!tab.getFileName().equals(mfe.getName()) || StringHelper.isEmpty(tab.getEntity())) { + continue; + } - return 0; + BasicMapper basicMapper = ClassHelper.getBasicMapper(tab.getEntity()); + if (null == basicMapper) { + continue; + } + + String className = ClassHelper.getClassName(basicMapper); + Class clazz = ClassHelper.getEntityClass(className); + if (null == clazz) { + continue; + } + + List<?> list = ShpHelper.readData(clazz, root + File.separator + tab.getSubPath()); + if (null == list || list.isEmpty()) { + continue; + } + setCreateInfo(list, mfe); + + Integer rows = basicMapper.insertBatch(list); + if (basicMapper instanceof GeomBaseMapper) { + GeomBaseMapper geomBaseMapper = (GeomBaseMapper) basicMapper; + updateXlsGeom(geomBaseMapper, list); + } + + tab.setRows(rows); + } } /** - * 鎻掑叆SHP + * 璁剧疆绌洪棿淇℃伅 */ - private Integer insertShp(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { + private <T> void updateDbGeom(GeomBaseMapper geomBaseMapper, List<T> list) { + try { + String tabName = BaseQueryService.getTabName(geomBaseMapper); + for (T t : list) { + BaseEntity baseEntity = (BaseEntity) t; + Integer gid = baseEntity.getGid(); - return 0; + Field gField = t.getClass().getDeclaredField("geom"); + gField.setAccessible(true); + Object obj = gField.get(t); + + if (null != obj) { + geomBaseMapper.updateGeom(tabName, gid, (String) obj); + } + } + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } } /** @@ -454,15 +499,10 @@ } /** - * 鑾峰彇琛ㄦ槧灏勫疄浣撶被 + * 鎻掑叆MDB */ - private TabMapperEntity getTabEntity(MetaFileEntity mfe, List<TabMapperEntity> tabs) { - for (TabMapperEntity tab : tabs) { - if (tab.getFileName().equals(mfe.getName())) { - return tab; - } - } + private Integer insertMdb(String root, MetaFileEntity mfe, List<TabMapperEntity> tabs) { - return null; + return 0; } } -- Gitblit v1.9.3