From 0aee44b467e8afb547cf775da687c6b3ff4fb239 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 23 四月 2023 15:39:41 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/show/InquiryService.java |   56 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/lf/server/service/show/InquiryService.java b/src/main/java/com/lf/server/service/show/InquiryService.java
index 51a0a1a..943eb4c 100644
--- a/src/main/java/com/lf/server/service/show/InquiryService.java
+++ b/src/main/java/com/lf/server/service/show/InquiryService.java
@@ -1,20 +1,21 @@
 package com.lf.server.service.show;
 
-import com.lf.server.config.PropertiesConfig;
 import com.lf.server.entity.all.StaticData;
 import com.lf.server.entity.ctrl.DownloadTileEntity;
 import com.lf.server.entity.ctrl.ShpRecordEntity;
 import com.lf.server.entity.data.MetaFileEntity;
 import com.lf.server.entity.data.PublishEntity;
 import com.lf.server.entity.sys.UserEntity;
-import com.lf.server.helper.FileHelper;
-import com.lf.server.helper.ShpHelper;
-import com.lf.server.helper.StringHelper;
+import com.lf.server.helper.*;
+import net.lingala.zip4j.ZipFile;
+import net.lingala.zip4j.model.ZipParameters;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.io.FileInputStream;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,7 +25,7 @@
 @Service
 public class InquiryService {
     @Resource
-    PropertiesConfig config;
+    PathHelper pathHelper;
 
     /**
      * 璇诲彇Shp绗竴鏉¤褰曠殑WKT
@@ -51,14 +52,21 @@
      * 鎵撳寘鐡︾墖
      */
     public String zipTiles(DownloadTileEntity dt, PublishEntity pub, UserEntity ue) {
-        if (!TilePathExist(pub)) {
+        if (!isTilePathExist(pub)) {
             return null;
         }
 
-        List<String> list = findTiles(dt, pub);
+        List<File> list = findTiles(dt, pub);
         if (list.isEmpty()) {
             return null;
         }
+
+        String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date());
+        String zipFile = pathHelper.getDownloadFullPath() + File.separator + tempName + ".zip";
+
+        ZipFile zip = Zip4jHelper.createZipFile(zipFile, dt.getPwd());
+        ZipParameters params = Zip4jHelper.getZipParams(true);
+        addFiles(zip, params, list, pub.getPath() + File.separator);
 
         return "aaa";
     }
@@ -66,8 +74,8 @@
     /**
      * 鐡︾墖璺緞鏄惁瀛樺湪
      */
-    private boolean TilePathExist(PublishEntity pub) {
-        String tilePath = config.getTilePath().replace("2d\\tiles", "") + File.separator + pub.getPath();
+    private boolean isTilePathExist(PublishEntity pub) {
+        String tilePath = pathHelper.getConfig().getTilePath().replace("2d\\tiles", "") + File.separator + pub.getPath();
 
         File f = new File(tilePath);
         if (!f.exists() || !f.isDirectory()) {
@@ -82,8 +90,8 @@
     /**
      * 鏌ユ壘鐡︾墖
      */
-    private List<String> findTiles(DownloadTileEntity dt, PublishEntity pub) {
-        List<String> list = new ArrayList<>();
+    private List<File> findTiles(DownloadTileEntity dt, PublishEntity pub) {
+        List<File> list = new ArrayList<>();
         for (int i = 0; i < StaticData.I23; i++) {
             findTilesByZoom(dt, pub, i, list);
         }
@@ -94,12 +102,34 @@
     /**
      * 鏍规嵁灞傛鏌ユ壘鐡︾墖
      */
-    private void findTilesByZoom(DownloadTileEntity dt, PublishEntity pub, int zoom, List<String> list) {
+    private void findTilesByZoom(DownloadTileEntity dt, PublishEntity pub, int zoom, List<File> list) {
         File f = new File(pub.getPath() + File.separator + zoom);
         if (!f.exists() || !f.isDirectory()) {
             return;
         }
 
-        //
+        int x = 0;
+        int y = 0;
+        // 鍏抽敭绠楁硶
+
+        String pngPath = String.format("%s\\%d\\%d.png", pub.getPath(), x, y);
+        File pngFile = new File(pngPath);
+        if (pngFile.exists()) {
+            list.add(pngFile);
+        }
+    }
+
+    /**
+     * 娣诲姞鏂囦欢鑷冲帇缂╁寘
+     */
+    private void addFiles(ZipFile zip, ZipParameters params, List<File> list, String basePath) {
+        for (File f : list) {
+            try {
+                params.setFileNameInZip(f.getPath().replace(basePath, ""));
+                zip.addStream(new FileInputStream(f), params);
+            } catch (Exception e) {
+                //
+            }
+        }
     }
 }

--
Gitblit v1.9.3