From 9db8d773af4f886cf0652b0ce303631a90692a50 Mon Sep 17 00:00:00 2001
From: wuww <252740454@qq.com>
Date: 星期日, 04 五月 2025 14:28:24 +0800
Subject: [PATCH] 调用UW的Bat

---
 src/main/java/com/se/nsl/service/ResolveService.java |   89 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 87 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java
index 0c7d47a..fd7425a 100644
--- a/src/main/java/com/se/nsl/service/ResolveService.java
+++ b/src/main/java/com/se/nsl/service/ResolveService.java
@@ -1,20 +1,31 @@
 package com.se.nsl.service;
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.se.nsl.config.PropertiesConfig;
 import com.se.nsl.domain.po.DataPo;
 import com.se.nsl.domain.po.Simu;
 import com.se.nsl.domain.po.SimuData;
+import com.se.nsl.domain.vo.ConfigVo;
+import com.se.nsl.helper.ComHelper;
 import com.se.nsl.helper.StringHelper;
 import com.se.nsl.helper.WebHelper;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.gdal.ogr.Geometry;
 import org.gdal.ogr.ogr;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.sql.Timestamp;
 import java.util.Date;
 import java.util.concurrent.ExecutorService;
@@ -29,6 +40,8 @@
 
     @Resource
     PropertiesConfig config;
+    @Autowired
+    private UwService uwService;
 
     public int start(Simu simu) {
         Date now = new Date();
@@ -77,7 +90,10 @@
         try {
             DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class);
 
-            update(simu, 1, null);
+            update(simu, 1, "寮�濮�");
+
+            initArgs(data);
+            String rs = callUwSolver(data);
             //gedbService.copeVectors(token, data, db);
 
             //update(simu, 3, null);
@@ -101,7 +117,76 @@
         simuService.updateById(simu);
     }
 
-    private void initArgs(){
+    /**
+     * 鍒濆鍖栧弬鏁�
+     */
+    private void initArgs(DataPo data) throws IOException {
+        String inPath = config.getInPath() + File.separator + data.getInPath();
+        createDir(inPath);
+        createDir(inPath + File.separator + "depth");
+        createDir(inPath + File.separator + "velocity");
+        createDir(config.getOutPath() + File.separator + data.getOutPath());
 
+        // 涓存椂澶嶅埗楂樼▼tif锛屼互鍚庨渶瑕佽嚜琛屽垏鍓�
+        File uwBat = new File(config.getUwSolverBat());
+        String sourceTif = uwBat.getParent() + File.separator + "data" + File.separator + "Hillzone.tif";
+        String targetTif = inPath + File.separator + config.getDemFile();
+        Files.copy(Paths.get(sourceTif), Paths.get(targetTif), StandardCopyOption.REPLACE_EXISTING);
+    }
+
+    private void createDir(String path) {
+        File f = new File(path);
+        if (f.exists() && f.isDirectory()) {
+            FileUtil.del(f);
+        }
+        f.mkdirs();
+    }
+
+    /**
+     * 璋冪敤UWSolver
+     */
+    private String callUwSolver(DataPo data) throws Exception {
+        File uwBat = new File(config.getUwSolverBat());
+
+        ConfigVo vo = new ConfigVo(data.getDuration(), config.getSaveFrames());
+        //String configFile = uwBat.getParent() + File.separator + data.getInPath() + ".json";
+        String configFile = config.getInPath() + File.separator + data.getInPath() + File.separator + data.getInPath() + ".json";
+        ComHelper.writeJson(configFile, JSON.toJSONString(vo));
+
+        String cmd = String.format("%s %s", config.getUwSolverBat(), configFile);
+
+        return callBat(cmd);
+    }
+
+    private String callZarr2tif(DataPo data) throws Exception {
+        String cmd = "";
+
+        return callBat(cmd);
+    }
+
+    private String callBat(String cmd) {
+        try {
+            ProcessBuilder pb = new ProcessBuilder("cmd", "/c", cmd);
+            pb.redirectErrorStream(true); // 鍚堝苟閿欒娴佸埌鏍囧噯杈撳嚭
+
+            Process process = pb.start();
+            process.getOutputStream().close();
+
+            /*StringBuilder sb = new StringBuilder();
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"))) {
+                String line;
+                while ((line = reader.readLine()) != null) {
+                    System.out.println(line);
+                    sb.append(line);
+                }
+            }*/
+
+            int exitCode = process.waitFor();
+
+            return "ok"; // sb.toString();
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            return null;
+        }
     }
 }

--
Gitblit v1.9.3