From 73ca802381bd76cc1a5bd608e4a1e5ef12de88a2 Mon Sep 17 00:00:00 2001
From: wuww <252740454@qq.com>
Date: 星期日, 04 五月 2025 20:46:46 +0800
Subject: [PATCH] 完成求解器对接~

---
 src/main/java/com/se/nsl/controller/SimuController.java |    2 
 src/main/java/com/se/nsl/service/ResolveService.java    |   66 +++++++++++++++++++++++++++-----
 src/main/java/com/se/nsl/service/TestService.java       |   10 +++--
 src/main/resources/application-dev.yml                  |    2 
 4 files changed, 63 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/se/nsl/controller/SimuController.java b/src/main/java/com/se/nsl/controller/SimuController.java
index 51e9489..3abe23e 100644
--- a/src/main/java/com/se/nsl/controller/SimuController.java
+++ b/src/main/java/com/se/nsl/controller/SimuController.java
@@ -107,7 +107,7 @@
             SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
             if (null == data) return fail("鏂规鏁版嵁鏍煎紡(JSON)涓嶆纭�");
 
-            if (simu.getStatus() != 0) return fail("鏂规姝e湪杩愯鎴栧凡瀹屾垚");
+            //if (simu.getStatus() != 0) return fail("鏂规姝e湪杩愯鎴栧凡瀹屾垚");
             if (StringUtils.isEmpty(simu.getGeom())) return fail("鏂规鐨勫浘褰负绌�");
 
             int rows = resolveService.start(simu);
diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java
index fd7425a..462aae4 100644
--- a/src/main/java/com/se/nsl/service/ResolveService.java
+++ b/src/main/java/com/se/nsl/service/ResolveService.java
@@ -13,6 +13,7 @@
 import com.se.nsl.helper.WebHelper;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.axis.utils.StringUtils;
 import org.gdal.ogr.Geometry;
 import org.gdal.ogr.ogr;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +28,8 @@
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -40,8 +43,12 @@
 
     @Resource
     PropertiesConfig config;
-    @Autowired
-    private UwService uwService;
+
+    @Resource
+    UwService uwService;
+
+    @Resource
+    TestService testService;
 
     public int start(Simu simu) {
         Date now = new Date();
@@ -90,17 +97,17 @@
         try {
             DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class);
 
-            update(simu, 1, "寮�濮�");
-
+            update(simu, 1, "鍒濆鍖栧弬鏁�");
             initArgs(data);
-            String rs = callUwSolver(data);
-            //gedbService.copeVectors(token, data, db);
 
-            //update(simu, 3, null);
-            //gedbService.copeDem(token, data);
+            update(simu, 2, "璋冪敤姹傝В鍣�");
+            callUwSolver(data);
 
-            //update(simu, 4, null);
-            //uwService.createRainFile(data);
+            update(simu, 3, "璋冪敤Zarr杞琓if");
+            callZarr2tif(data);
+
+            update(simu, 4, "瑙f瀽鏁版嵁");
+            createNsl(data);
 
             update(simu, 10, "瀹屾垚");
         } catch (Exception ex) {
@@ -158,8 +165,17 @@
         return callBat(cmd);
     }
 
+    /**
+     * 璋冪敤zarr2tif
+     */
     private String callZarr2tif(DataPo data) throws Exception {
-        String cmd = "";
+        File uwBat = new File(config.getUwSolverBat());
+        String zarrFile = uwBat.getParent() + File.separator + "result.zarr";
+        String inPath = config.getInPath() + File.separator + data.getInPath();
+        String terrainFile = inPath + File.separator + config.getDemFile();
+        String waterPath = inPath + File.separator + "depth";
+
+        String cmd = String.format("%s \"%s\" \"%s\" \"%s\" \"%s\"", config.getZarr2tifBat(), "depth", zarrFile, terrainFile, waterPath);
 
         return callBat(cmd);
     }
@@ -189,4 +205,32 @@
             return null;
         }
     }
+
+    private void createNsl(DataPo data) throws Exception {
+        String inPath = config.getInPath() + File.separator + data.getInPath() + File.separator + "depth";
+        procTifs(inPath, inPath, data.getStartTime());
+
+        testService.test(data);
+    }
+
+    private void procTifs(String tifPath, String outPath, Date startTime) {
+        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(startTime);
+
+        for (File file : new File(tifPath).listFiles()) {
+            if (!file.exists() || !file.isDirectory()) continue;
+
+            File tif = new File(tifPath + "\\" + file.getName() + File.separator + "depth.tif");
+            if (!tif.exists() || tif.isDirectory()) continue;
+
+            calendar.add(Calendar.SECOND, 1);
+            String newName = df.format(calendar.getTime());
+            String newFile = outPath + File.separator + newName + ".tif";
+
+            System.out.println(newFile);
+            tif.renameTo(new File(newFile));
+            file.delete();
+        }
+    }
 }
diff --git a/src/main/java/com/se/nsl/service/TestService.java b/src/main/java/com/se/nsl/service/TestService.java
index c5d56d2..83c562e 100644
--- a/src/main/java/com/se/nsl/service/TestService.java
+++ b/src/main/java/com/se/nsl/service/TestService.java
@@ -240,8 +240,8 @@
             }
         });*/
 
-        int c = files.size();
-        int step = c <= 1 ? 1 : c / 10;
+        int c = files.size(), step = files.size() / 10;
+        if (step < 1) step = 1;
         for (int i = 0; i < c; i += step) {
             Dataset ds = null;
             try {
@@ -625,8 +625,10 @@
         layer.getWaters().setFiles(null);
         layer.getTerrain().setEpsg(null);
         layer.getExtension().setDiffer(null);
-        layer.setWaterUrl("/hls/w" + dto.getOutPath() + ".m3u8");
-        layer.setFlowUrl("/hls/f" + dto.getOutPath() + ".m3u8");
+
+        String path = dto.getOutPath().replace(config.getOutPath() + File.separator, "");
+        layer.setWaterUrl("/hls/w" + path + ".m3u8");
+        layer.setFlowUrl("/hls/f" + path + ".m3u8");
 
         String json = JSON.toJSONString(layer);
         // String json = JSONUtil.toJsonPrettyStr(layer);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 2fc80e2..5e15daf 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -142,7 +142,7 @@
   solverBat: D:\other\simu\uwsolver\run_solver.bat
   sww2tifBat: D:\other\simu\uwsolver\sww2tif.bat
   uwSolverBat: D:\other\simu\uwsolver\CudaUWSolver.Demo.NoVis.20250430\start.bat
-  zarr2tifBat: D:\other\simu\uwsolver\zarr2tif 1.0\CudaUWSolver.Demo.NoVis.20250430\start.bat
+  zarr2tifBat: D:\other\simu\uwsolver\zarr2tif1.0\start.bat
   saveFrames: 10
   #sizes: 64,128,256,512,1024,2048,4096
   sizes: 1024

--
Gitblit v1.9.3