Xiajijian
2025-10-28 502730fd95761286a0bd530435d54217d9e4db35
ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -12,8 +12,10 @@
import com.ard.route.domain.WaypointTurnReq;
import com.ard.route.domain.kml.*;
import com.ard.route.domain.route.ArdRouteInformation;
import com.ard.route.domain.vo.KmzInfoVO;
import com.ard.route.enums.kml.ExitOnRCLostEnums;
import com.ard.route.service.IArdRouteInformationService;
import com.ard.route.util.FileUtils;
import com.ard.route.util.RouteFileUtils;
import com.ard.route.service.UavRouteService;
import com.thoughtworks.xstream.XStream;
@@ -29,10 +31,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -221,4 +220,25 @@
            }
        }
    }
    @Override
    public KmzInfoVO parseKmz(String fileUrl) throws IOException {
        KmzInfoVO kmzInfoVO = new KmzInfoVO();
        File file = FileUtils.downloadUrlToTempFile(fileUrl);
        try (ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(FileUtil.getInputStream(file))) {
            ArchiveEntry entry;
            while (!Objects.isNull(entry = archiveInputStream.getNextEntry())) {
                String name = entry.getName();
                if (name.toLowerCase().endsWith(".kml")) {
                    kmzInfoVO.setKmlInfo(RouteFileUtils.parseKml(archiveInputStream));
                } else if (name.toLowerCase().endsWith(".wpml")) {
                    kmzInfoVO.setWpmlInfo(RouteFileUtils.parseKml(archiveInputStream));
                }
            }
            return kmzInfoVO;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}