From f984496e9bb3612ce38040a5dd0be548b181e971 Mon Sep 17 00:00:00 2001
From: dcb <xgybdcb@163.com>
Date: 星期四, 22 五月 2025 16:13:54 +0800
Subject: [PATCH] 修复时间轴问题

---
 src/main/resources/mybatis.xml                       |    4 +
 src/main/java/com/se/nsl/service/ResolveService.java |   11 +++++
 src/main/java/com/se/nsl/service/TestService.java    |   46 ++++++++++------------
 3 files changed, 34 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java
index 63b3fa5..cfe6efc 100644
--- a/src/main/java/com/se/nsl/service/ResolveService.java
+++ b/src/main/java/com/se/nsl/service/ResolveService.java
@@ -40,6 +40,8 @@
 import java.nio.file.StandardCopyOption;
 import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -273,7 +275,14 @@
 
         int duration = 3600 * data.getDuration(); // 绉掓暟
         if (null != data.getRainfalls() && data.getRainfalls().size() > 1) {
-            duration = (int) (Math.abs(data.getRainfalls().get(data.getRainfalls().size() - 1).getTime().getTime() - data.getRainfalls().get(0).getTime().getTime()) / 60);
+            List<Rainfall> rainfalls = data.getRainfalls();
+            int size = rainfalls.size();
+            Rainfall last = rainfalls.get(size - 1);
+            Rainfall first = rainfalls.get(0);
+            Instant end = last.getTime().toInstant();
+            Instant start = first.getTime().toInstant();
+            long diff = ChronoUnit.SECONDS.between(end, start);
+            duration = (int) (Math.abs(diff));
         }
 
         String inPath = config.getInPath() + File.separator + data.getInPath();
diff --git a/src/main/java/com/se/nsl/service/TestService.java b/src/main/java/com/se/nsl/service/TestService.java
index 401352b..fda8f1e 100644
--- a/src/main/java/com/se/nsl/service/TestService.java
+++ b/src/main/java/com/se/nsl/service/TestService.java
@@ -22,6 +22,10 @@
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.List;
 
@@ -197,6 +201,21 @@
     }
 
     public void setWaterData(LayerDto layer, List<String> files) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        for (String file : files) {
+            String fileName = ComHelper.getNameWithExt(file);
+            // 瑙f瀽涓� LocalDateTime锛堥粯璁ゅ熀浜庣郴缁熸椂鍖猴紝鍙兘闇�鎸囧畾鏃跺尯锛�
+            LocalDateTime dateTime = LocalDateTime.parse(fileName, formatter);
+            // 杞崲涓� UTC 鏃堕棿鎴筹紙鎺ㄨ崘锛岄伩鍏嶆椂鍖烘涔夛級
+            Instant utcInstant = dateTime.atZone(ZoneId.of("UTC")).toInstant();
+            long timestamp = utcInstant.toEpochMilli();
+            layer.getWaters().getData().add(timestamp);
+        }
+        layer.getDuration().setStart(layer.getWaters().getData().get(0));
+        layer.getDuration().setEnd(layer.getWaters().getData().get(layer.getWaters().getData().size() - 1));
+    }
+
+    /*public void setWaterData(LayerDto layer, List<String> files) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(new Date());
         calendar.set(Calendar.MILLISECOND, 0);
@@ -221,7 +240,7 @@
         }
         layer.getDuration().setStart(layer.getWaters().getData().get(0));
         layer.getDuration().setEnd(layer.getWaters().getData().get(layer.getWaters().getData().size() - 1));
-    }
+    }*/
 
     public void setWaterHeight(LayerDto layer, List<String> files) {
         int c = files.size(), step = files.size() / 10;
@@ -244,29 +263,6 @@
         layer.getExtension().setMaxHeight(ComHelper.getMaxVal(layer.getExtension().getMaxHeight(), 1000000));
         layer.getExtension().setMinHeight(ComHelper.getMaxVal(layer.getExtension().getMinHeight(), 1000000));
         layer.getExtension().setDiffer();
-    }
-
-    private double[] readTifBbox(Dataset ds) {
-        // 1. 鑾峰彇鍥惧儚灏哄
-        int width = ds.getRasterXSize();
-        int height = ds.getRasterYSize();
-
-        // 2. 鑾峰彇GeoTransform鍙傛暟
-        double[] geoTransform = new double[6];
-        ds.GetGeoTransform(geoTransform);
-
-        // 3. 瑙f瀽GeoTransform鍙傛暟锛堢粡绾害鍧愭爣锛�
-        double originLon = geoTransform[0];  // 宸︿笂瑙掔粡搴�
-        double originLat = geoTransform[3];  // 宸︿笂瑙掔含搴�
-        double pixelWidth = geoTransform[1];  // 缁忓害鏂瑰悜鍒嗚鲸鐜囷紙搴�/鍍忕礌锛�
-        double pixelHeight = geoTransform[5]; // 绾害鏂瑰悜鍒嗚鲸鐜囷紙搴�/鍍忕礌锛岄�氬父涓鸿礋锛�
-
-        // 4. 璁$畻鍥涜嚦鑼冨洿锛堢粡绾害锛�
-        double minLon = Math.min(originLon, originLon + width * pixelWidth);
-        double maxLon = Math.max(originLon, originLon + width * pixelWidth);
-        double minLat = Math.min(originLat, originLat + height * pixelHeight);
-        double maxLat = Math.max(originLat, originLat + height * pixelHeight);
-        return new double[] {minLon, maxLon, minLat, maxLat};
     }
 
     public void processWaters(ResultDto dto, List<String> files, LayerDto layer) {
@@ -434,7 +430,7 @@
         for (int[] sizes : layer.getTerrain().getSize()) {
             String name = ComHelper.getNameWithExt(ds.GetDescription()) + "_" + sizes[0] + "_" + sizes[1];
             String tif = dto.getTemp() + File.separator + name + ".tif";
-            ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer);
+//            ComHelper.Resample(ds, tif, sizes[0], sizes[1], layer);
             if (!new File(tif).exists()) continue;
 
             String png = flowPath + File.separator + sizes[0] + "_" + sizes[1] + ".png";
diff --git a/src/main/resources/mybatis.xml b/src/main/resources/mybatis.xml
index 7ed3666..d45cc1a 100644
--- a/src/main/resources/mybatis.xml
+++ b/src/main/resources/mybatis.xml
@@ -29,7 +29,9 @@
         <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�-->
         <setting name="callSettersOnNulls" value="true"/>
         <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
-        <setting name="logImpl" value="STDOUT_LOGGING" />
+        <!--鎺у埗鍙拌緭鍑� -->
+<!--        <setting name="logImpl" value="STDOUT_LOGGING" />-->
+        <setting name="logImpl" value="NO_LOGGING" />
     </settings>
     <typeAliases>
         <package name="com.se.nsl.domain"/>

--
Gitblit v1.9.3