From 71e6f7b5e94f0cfb322772201069053c762e3e41 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 29 十二月 2022 17:57:44 +0800 Subject: [PATCH] 12.29.6 --- src/main/java/com/lf/server/service/show/PipelineService.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 159 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/lf/server/service/show/PipelineService.java b/src/main/java/com/lf/server/service/show/PipelineService.java index 959ebd5..e750f2c 100644 --- a/src/main/java/com/lf/server/service/show/PipelineService.java +++ b/src/main/java/com/lf/server/service/show/PipelineService.java @@ -1,11 +1,31 @@ package com.lf.server.service.show; +import com.lf.server.entity.data.DownloadEntity; +import com.lf.server.entity.data.MetaFileEntity; import com.lf.server.entity.show.PipelineEntity; +import com.lf.server.entity.sys.UserEntity; +import com.lf.server.helper.*; +import com.lf.server.mapper.all.GeomBaseMapper; +import com.lf.server.mapper.data.DownloadMapper; import com.lf.server.mapper.show.PipelineMapper; +import net.lingala.zip4j.ZipFile; +import net.lingala.zip4j.model.FileHeader; +import net.lingala.zip4j.model.ZipParameters; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.gdal.ogr.DataSource; +import org.gdal.ogr.Driver; +import org.gdal.ogr.Layer; +import org.gdal.ogr.ogr; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.File; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; /** * 绠¢亾鍒嗘瀽鏈嶅姟绫� @@ -14,7 +34,15 @@ @Service public class PipelineService implements PipelineMapper { @Autowired + PathHelper pathHelper; + + @Autowired + DownloadMapper downloadMapper; + + @Autowired PipelineMapper pipelineMapper; + + private final static Log log = LogFactory.getLog(PipelineService.class); @Override public List<PipelineEntity> selectSegNames() { @@ -30,4 +58,135 @@ public List<PipelineEntity> selectAnalysisResult(String tab, Integer gid) { return pipelineMapper.selectAnalysisResult(tab, gid); } + + /** + * 鍒涘缓Zip鍖� + * + * @param ue 鐢ㄦ埛瀹炰綋 + * @param map 绠¢亾鍒嗘瀽鏁版嵁闆嗗悎 + * @param pwd 瀵嗙爜 + * @return 涓嬭浇鏂囦欢GUID + */ + public String createZipFile(UserEntity ue, Map<String, List<?>> map, String pwd) throws Exception { + if (map.size() == 0) { + return null; + } + + String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date()); + String tempPath = pathHelper.getTempPath(tempName); + String filePath = tempPath + File.separator + tempName + ".gdb"; + + File file = new File(filePath); + if (file.exists() && file.isDirectory()) { + FileHelper.deleteDir(filePath); + } + //createGdb(filePath, map); + + String zipName = tempName + ".gdb.zip"; + String zipFile = pathHelper.getDownloadFullPath() + File.separator + zipName; + + ZipFile zip = Zip4jHelper.createZipFile(zipFile, pwd); + ZipParameters params = Zip4jHelper.getZipParams(); + addZipFiles(zip, params, file.listFiles()); + + String dbPwd = Md5Helper.reverse(Md5Helper.generate(pwd)); + DownloadEntity downloadEntity = getDownloadEntity(ue, zipFile, dbPwd); + int rows = downloadMapper.insert(downloadEntity); + + return rows > 0 ? downloadEntity.getGuid() : null; + } + + /** + * 鍒涘缓GDB + */ + public static void createGdb(String filePath, Map<String, List<?>> map) throws Exception { + Driver driver = null; + DataSource dataSource = null; + try { + driver = ogr.GetDriverByName("FileGDB"); + if (null == driver) { + log.error("GdbHelper.createGdb.driver(FileGDB) is null."); + return; + } + dataSource = driver.CreateDataSource(filePath, null); + if (null == dataSource) { + log.error("GdbHelper.createGdb.dataSource is null. " + filePath); + return; + } + + for (String key : map.keySet()) { + Layer layer = null; + try { + +// layer = createLayer(dataSource, baseMapper); +// if (null == layer) { +// continue; +// } +// +// String className = ClassHelper.getClassName(baseMapper); +// Class clazz = ClassHelper.getEntityClass(className); +// if (null == clazz) { +// continue; +// } +// +// List<Field> fields = new ArrayList<>(); +// // fields.add(getGeomField(clazz)) +// getFields(clazz, fields); +// addLayerField(layer, fields); +// +// setLayerData(layer, fields, map.get(key)); + } finally { + if (null != layer) { + layer.delete(); + } + } + } + + dataSource.SyncToDisk(); + dataSource.FlushCache(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + throw ex; + } finally { + GdbHelper.delete(dataSource, driver); + } + } + + /** + * 娣诲姞Zip鏂囦欢 + */ + private void addZipFiles(ZipFile zip, ZipParameters params, File[] files) { + if (null == files || files.length == 0) { + return; + } + + for (File f : files) { + try { + zip.addFile(f, params); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } + } + + /** + * 鑾峰彇涓嬭浇瀹炰綋绫� + */ + private DownloadEntity getDownloadEntity(UserEntity ue, String file, String pwd) throws Exception { + DownloadEntity de = new DownloadEntity(); + de.setName(FileHelper.getFileName(file)); + // 1-Shp鏂囦欢锛�2-涓撻鍥撅紝3-鍏冩暟鎹紝4-涓氬姟鏁版嵁锛�5-绠¢亾鍒嗘瀽 + de.setType(5); + de.setSizes(FileHelper.sizeToMb(new File(file).length())); + de.setDepid(ue.getDepid()); + de.setDcount(0); + de.setPwd(pwd); + de.setUrl(FileHelper.getRelativePath(file)); + de.setDescr("绠¢亾鍒嗘瀽鏂囦欢"); + de.setGuid(FileHelper.getFileMd5(file)); + de.setCreateUser(ue.getId()); + // de.setGeom(null) + + return de; + } } -- Gitblit v1.9.3