From 4f83150fbdfbbf2e5021be56595a4429a866756e Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 09 一月 2023 14:47:31 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/all/BaseUploadService.java | 262 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 217 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/lf/server/service/all/BaseUploadService.java b/src/main/java/com/lf/server/service/all/BaseUploadService.java index e26ba25..676e767 100644 --- a/src/main/java/com/lf/server/service/all/BaseUploadService.java +++ b/src/main/java/com/lf/server/service/all/BaseUploadService.java @@ -1,10 +1,8 @@ package com.lf.server.service.all; -import com.lf.server.entity.data.MetaEntity; +import com.lf.server.entity.ctrl.TabMapperEntity; import com.lf.server.entity.data.MetaFileEntity; -import com.lf.server.helper.FileHelper; -import com.lf.server.helper.PathHelper; -import com.lf.server.helper.StringHelper; +import com.lf.server.helper.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +13,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; -import java.io.IOException; import java.lang.reflect.Field; import java.sql.Timestamp; import java.util.*; @@ -26,50 +23,22 @@ */ @Service public class BaseUploadService { + private final static String XLS = ".xls"; + + private final static String MDB = ".mdb"; + + private final static String GDB = ".gdb"; + + private final static String SHP_ZIP = ".shp.zip"; + + private final static String GDB_ZIP = ".gdb.zip"; + + private final static String ZIP = ".zip"; + @Autowired public PathHelper pathHelper; public final Log log = LogFactory.getLog(getClass()); - - /** - * 鏌ヨ鏂囦欢 - */ - public List<MetaFileEntity> selectFiles(String subPath, List<String> extList) { - String root = pathHelper.getConfig().getTempPath() + File.separator + subPath; - - File file = new File(root); - if (!file.exists() && !file.isDirectory()) { - return null; - } - File[] files = file.listFiles(); - if (null == files || files.length == 0) { - return null; - } - - List<MetaFileEntity> list = new ArrayList<>(); - for (File f : files) { - String fileName = FileHelper.getFileName(f.getPath()); - if (null != extList) { - String extName = FileHelper.getExtension(fileName); - if (!extList.contains(extName)) { - continue; - } - } - - double sizes = FileHelper.sizeToMb(f.length()); - String filePath = subPath + File.separator + fileName; - - MetaFileEntity mf = new MetaFileEntity(); - mf.setName(fileName); - mf.setSizes(sizes); - mf.setPath(filePath); - mf.setGuid(FileHelper.getFileMd5(f.getPath())); - - list.add(mf); - } - - return list; - } /** * 鏌ヨ鐩綍 @@ -161,6 +130,46 @@ } /** + * 鏌ヨ鏂囦欢 + */ + public List<MetaFileEntity> selectFiles(String subPath, List<String> extList) { + String root = pathHelper.getConfig().getTempPath() + File.separator + subPath; + + File file = new File(root); + if (!file.exists() && !file.isDirectory()) { + return null; + } + File[] files = file.listFiles(); + if (null == files || files.length == 0) { + return null; + } + + List<MetaFileEntity> list = new ArrayList<>(); + for (File f : files) { + String fileName = FileHelper.getFileName(f.getPath()); + if (null != extList) { + String extName = FileHelper.getExtension(fileName); + if (!extList.contains(extName)) { + continue; + } + } + + double sizes = FileHelper.sizeToMb(f.length()); + String filePath = subPath + File.separator + fileName; + + MetaFileEntity mf = new MetaFileEntity(); + mf.setName(fileName); + mf.setSizes(sizes); + mf.setPath(filePath); + mf.setGuid(FileHelper.getFileMd5(f.getPath())); + + list.add(mf); + } + + return list; + } + + /** * 鍒犻櫎鏂囦欢 */ public Integer deleteFiles(List<MetaFileEntity> list) { @@ -183,6 +192,169 @@ } /** + * 鏌ヨ鏄犲皠 + */ + public List<TabMapperEntity> selectMappers(String subPath) { + String root = pathHelper.getConfig().getTempPath() + File.separator + subPath; + + File file = new File(root); + if (!file.exists() && !file.isDirectory()) { + return null; + } + + File[] files = file.listFiles(); + if (null == files || files.length == 0) { + return null; + } + + File zipFile = new File(root + "_zip"); + if (!zipFile.exists() || !zipFile.isDirectory()) { + zipFile.mkdirs(); + } + + return getMappers(zipFile.getPath(), files); + } + + /** + * 鑾峰彇鏄犲皠 + */ + private List<TabMapperEntity> getMappers(String zipPath, File[] files) { + String temp = pathHelper.getConfig().getTempPath(); + + List<TabMapperEntity> list = new ArrayList<>(); + for (File f : files) { + String fileName = FileHelper.getFileName(f.getPath()); + if (fileName.contains(XLS)) { + String path = f.getPath().replace(temp + File.separator, ""); + list.add(new TabMapperEntity(fileName, "xls", null, path)); + continue; + } + if (fileName.contains(MDB)) { + String path = f.getPath().replace(temp + File.separator, ""); + List<String> tabs = MdbHelper.getTabNames(f.getPath()); + for (String tab : tabs) { + list.add(new TabMapperEntity(fileName, "mdb", tab, path)); + } + continue; + } + if (fileName.contains(SHP_ZIP)) { + String subPath = zipPath + File.separator + f.getName().toLowerCase().replace(".zip", ""); + ZipHelper.unzip(f.getPath(), subPath); + getShpFiles(f.getName(), subPath, list); + continue; + } + if (fileName.contains(GDB_ZIP)) { + String subPath = zipPath + File.separator + f.getName().toLowerCase().replace(".zip", ""); + ZipHelper.unzip(f.getPath(), subPath); + getGdbFiles(f.getName(), subPath, list); + continue; + } + if (fileName.contains(ZIP)) { + // 鏆傛椂涓嶅疄鐜� + } + } + + return list; + } + + /** + * 鑾峰彇Shp鏂囦欢 + */ + private void getShpFiles(String sourceName, String subPath, List<TabMapperEntity> list) { + List<String> files = new ArrayList<>(); + getShpFiles(subPath, files); + + String root = pathHelper.getConfig().getTempPath() + File.separator; + for (String file : files) { + String name = FileHelper.getFileName(file); + String path = file.replace(root, ""); + list.add(new TabMapperEntity(sourceName, "shp", name, path)); + } + } + + /** + * 鑾峰彇Shp鏂囦欢 + */ + private void getShpFiles(String shpPath, List<String> list) { + File file = new File(shpPath); + + File[] files = file.listFiles(); + if (null == files || files.length == 0) { + return; + } + + for (File f : files) { + if (f.isDirectory()) { + getShpFiles(f.getPath(), list); + continue; + } + + if (f.getName().toLowerCase().endsWith(".shp")) { + list.add(f.getPath()); + } + } + } + + /** + * 鑾峰彇Gdb鏂囦欢 + */ + private void getGdbFiles(String sourceName, String subPath, List<TabMapperEntity> list) { + List<String> files = new ArrayList<>(); + getGdbFiles(subPath, files); + + String root = pathHelper.getConfig().getTempPath() + File.separator; + for (String file : files) { + String path = file.replace(root, ""); + List<String> tabs = GdbHelper.getTabNames(file); + for (String tab : tabs) { + list.add(new TabMapperEntity(sourceName, "gdb", tab, path)); + } + } + } + + /** + * 鑾峰彇Gdb鏂囦欢 + */ + private void getGdbFiles(String shpPath, List<String> list) { + File file = new File(shpPath); + + File[] files = file.listFiles(); + if (null == files || files.length == 0) { + return; + } + + for (File f : files) { + if (!f.isDirectory()) { + continue; + } + + if (isGdbFile(f)) { + list.add(f.getPath()); + continue; + } + + getGdbFiles(f.getPath(), list); + } + } + + private boolean isGdbFile(File f) { + if (f.getName().toLowerCase().endsWith(GDB)) { + File[] files = f.listFiles(); + if (null == files || files.length == 0) { + return false; + } + + for (File file : files) { + if ("gdb".equals(file.getName())) { + return true; + } + } + } + + return false; + } + + /** * 鑾峰彇鍙傛暟 * Enumeration<String> headers = req.getHeaderNames(); * Enumeration<String> attributes = req.getAttributeNames(); -- Gitblit v1.9.3