From 97629da6a002b534da10f828187fd6cd65941aa4 Mon Sep 17 00:00:00 2001
From: dcb <xgybdcb@163.com>
Date: 星期一, 07 七月 2025 17:14:13 +0800
Subject: [PATCH] 模拟间隔支持毫秒级

---
 src/main/java/com/se/nsl/domain/vo/ResultVo.java                     |    8 ++++----
 src/main/java/com/se/nsl/service/ResolveService.java                 |    4 ++--
 src/main/java/com/se/nsl/config/PropertiesConfig.java                |    6 +++---
 src/main/java/com/se/nsl/service/RealTimeSimulationService.java      |   12 ++++++------
 src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java        |   10 +++++-----
 src/main/java/com/se/nsl/domain/vo/ConfigVo.java                     |    3 ++-
 src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java |   14 ++++++--------
 7 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/se/nsl/config/PropertiesConfig.java b/src/main/java/com/se/nsl/config/PropertiesConfig.java
index 6d50206..31ee946 100644
--- a/src/main/java/com/se/nsl/config/PropertiesConfig.java
+++ b/src/main/java/com/se/nsl/config/PropertiesConfig.java
@@ -66,7 +66,7 @@
 
     private Integer saveFrames;
 
-    private Integer saveFrameInterval;
+    private Double saveFrameInterval;
 
     private List<Integer> sizes;
 
@@ -296,11 +296,11 @@
         this.saveFrames = saveFrames;
     }
 
-    public Integer getSaveFrameInterval() {
+    public Double getSaveFrameInterval() {
         return saveFrameInterval;
     }
 
-    public void setSaveFrameInterval(Integer saveFrameInterval) {
+    public void setSaveFrameInterval(Double saveFrameInterval) {
         this.saveFrameInterval = saveFrameInterval;
     }
 
diff --git a/src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java b/src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java
index f85f573..8e9bbf7 100644
--- a/src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java
+++ b/src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java
@@ -9,7 +9,7 @@
 
     private String url;
     private String token;
-    private int realTimeInterval;
+    private Double frameInterval;
     private int requestOffsetMinutes; //闆ㄩ噺璁¤姹傞棿闅旂殑鏃堕棿锛屼负浜嗕究浜庤幏鍙栦竴涓寖鍥村唴闆ㄩ噺鏁版嵁
     private double offsetDays;
 
@@ -29,12 +29,12 @@
         this.token = token;
     }
 
-    public int getRealTimeInterval() {
-        return realTimeInterval;
+    public Double getFrameInterval() {
+        return frameInterval;
     }
 
-    public void setRealTimeInterval(int realTimeInterval) {
-        this.realTimeInterval = realTimeInterval;
+    public void setFrameInterval(Double frameInterval) {
+        this.frameInterval = frameInterval;
     }
 
     public int getRequestOffsetMinutes() {
diff --git a/src/main/java/com/se/nsl/domain/vo/ConfigVo.java b/src/main/java/com/se/nsl/domain/vo/ConfigVo.java
index 022994b..c629b96 100644
--- a/src/main/java/com/se/nsl/domain/vo/ConfigVo.java
+++ b/src/main/java/com/se/nsl/domain/vo/ConfigVo.java
@@ -62,7 +62,8 @@
         this.landuse = landuse;
         this.raingage = Arrays.asList(raingage, "mm/min");
         this.duration = duration;
-        int saveInterval = duration / frames - 5; // 淇鏈�鍚庝竴甯у彲鑳戒负绌烘暟鎹�
+//        int saveInterval = duration / frames - 5; // 淇鏈�鍚庝竴甯у彲鑳戒负绌烘暟鎹�
+        double saveInterval = (double)duration / frames;
         this.result = new ResultVo(saveName, frames, saveInterval, saveMode, startTime);
     }
 
diff --git a/src/main/java/com/se/nsl/domain/vo/ResultVo.java b/src/main/java/com/se/nsl/domain/vo/ResultVo.java
index 2a20068..358307c 100644
--- a/src/main/java/com/se/nsl/domain/vo/ResultVo.java
+++ b/src/main/java/com/se/nsl/domain/vo/ResultVo.java
@@ -21,7 +21,7 @@
 //    @JsonIgnore
     private Integer lastFrames;
 
-    private Integer save_interval;
+    private Double save_interval;
 
     private Integer save_start;
 
@@ -33,7 +33,7 @@
         this.save_filter = 0.015D;
     }
 
-    public ResultVo(String saveName, int frames, int saveInterval,
+    public ResultVo(String saveName, int frames, double saveInterval,
                     String saveMode, String startTime) {
         this();
 
@@ -93,11 +93,11 @@
         this.lastFrames = lastFrames;
     }
 
-    public Integer getSave_interval() {
+    public Double getSave_interval() {
         return save_interval;
     }
 
-    public void setSave_interval(Integer save_interval) {
+    public void setSave_interval(Double save_interval) {
         this.save_interval = save_interval;
     }
 
diff --git a/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java b/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java
index 3dea2ae..025e141 100644
--- a/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java
+++ b/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java
@@ -59,8 +59,6 @@
     private final Map<Integer, TaskStatus> taskStatusMap = new ConcurrentHashMap<>();
     // 瀛樺偍浠诲姟鎵ц鐨凢uture瀵硅薄锛岀敤浜庡彇娑堜换鍔�
     private final Map<String, Future<?>> taskFutureMap = new ConcurrentHashMap<>();
-//    @Autowired
-//    private ThreadPoolTaskExecutor taskExecutor;
 
     @Async("realTimeExecutor")
     public void startSimulation(Simu simu) throws IOException {
@@ -245,13 +243,13 @@
             configVo.setStation(stationFile.getAbsolutePath());
         }
         int realTimeSimulateTime = 300; //妯℃嫙鏃堕棿锛岄粯璁や负5min锛屽嵆300s
-        int realTimeInterval = rtsConfig.getRealTimeInterval(); //姣忓抚鐨勯棿闅旀椂闂�
+        Double realTimeInterval = rtsConfig.getFrameInterval(); //姣忓抚鐨勯棿闅旀椂闂�
         List<String> rainGauge = new ArrayList<>();
         rainGauge.add(newDatFile.getAbsolutePath());//raingage file
         rainGauge.add("mm/min");
         configVo.setRaingage(rainGauge);
         String saveName = serviceNameDir + File.separator + RESULT_ZARR;
-        ResultVo result = new ResultVo(saveName, realTimeSimulateTime / realTimeInterval,
+        ResultVo result = new ResultVo(saveName, (int) (realTimeSimulateTime / realTimeInterval),
                 realTimeInterval, "continue", null);
         result.setSave_interval(realTimeInterval);
         result.setSave_timestamp0(TimeFormatUtil.formatTime(currentTime, YYYY_MM_DD_HH_MM_SS));
@@ -270,7 +268,7 @@
             configVo.setStation(stationFile.getAbsolutePath());
         }
         int realTimeSimulateTime = 300; //妯℃嫙鏃堕棿锛岄粯璁や负5min锛屽嵆300s
-        int realTimeInterval = rtsConfig.getRealTimeInterval(); //姣忓抚鐨勯棿闅旀椂闂�
+        Double frameInterval = rtsConfig.getFrameInterval(); //姣忓抚鐨勯棿闅旀椂闂�
         configVo.getRaingage().set(0, newDatFile.getAbsolutePath()); //raingage file
         ResultVo result = configVo.getResult();
         Integer lastFrames = result.getLastFrames();
@@ -278,10 +276,10 @@
             lastFrames = 0;
         }
         Integer saveStart = result.getSave_start();
-        Integer saveInterval = result.getSave_interval();
+        Double saveInterval = result.getSave_interval();
         Integer saveFrames = result.getSave_frames();
-        int newStartPoint = saveStart + (saveFrames - lastFrames) * saveInterval;
-        int newSaveFrames = saveFrames + (realTimeSimulateTime / realTimeInterval);
+        int newStartPoint = (int) (saveStart + (saveFrames - lastFrames) * saveInterval);
+        int newSaveFrames = (int) (saveFrames + (realTimeSimulateTime / frameInterval));
         result.setSave_start(newStartPoint); //璧峰鏃堕棿瑕佸湪涓婃鏃堕棿鐨勫熀纭�涓婂紑濮�
         result.setLastFrames(saveFrames);
         result.setSave_frames(newSaveFrames); //淇濈暀5甯э紝鍦ㄥ師鏉ョ殑鍩虹涓婂鍔�5甯�
diff --git a/src/main/java/com/se/nsl/service/RealTimeSimulationService.java b/src/main/java/com/se/nsl/service/RealTimeSimulationService.java
index d31d879..308b480 100644
--- a/src/main/java/com/se/nsl/service/RealTimeSimulationService.java
+++ b/src/main/java/com/se/nsl/service/RealTimeSimulationService.java
@@ -187,13 +187,13 @@
             configVo.setStation(stationFile.getAbsolutePath());
         }
         int realTimeSimulateTime = 300; //妯℃嫙鏃堕棿锛岄粯璁や负5min锛屽嵆300s
-        int realTimeInterval = rtsConfig.getRealTimeInterval(); //姣忓抚鐨勯棿闅旀椂闂�
+        Double realTimeInterval = rtsConfig.getFrameInterval(); //姣忓抚鐨勯棿闅旀椂闂�
         List<String> rainGauge = new ArrayList<>();
         rainGauge.add(newDatFile.getAbsolutePath());//raingage file
         rainGauge.add("mm/min");
         configVo.setRaingage(rainGauge);
         String saveName = serviceNameDir + File.separator + RESULT_ZARR;
-        ResultVo result = new ResultVo(saveName, realTimeSimulateTime / realTimeInterval,
+        ResultVo result = new ResultVo(saveName, (int) (realTimeSimulateTime / realTimeInterval),
                 realTimeInterval,"continue", null);
         result.setSave_interval(realTimeInterval);
         result.setSave_timestamp0(TimeFormatUtil.formatTime(currentTime, YYYY_MM_DD_HH_MM_SS));
@@ -212,7 +212,7 @@
             configVo.setStation(stationFile.getAbsolutePath());
         }
         int realTimeSimulateTime = 300; //妯℃嫙鏃堕棿锛岄粯璁や负5min锛屽嵆300s
-        int realTimeInterval = rtsConfig.getRealTimeInterval(); //姣忓抚鐨勯棿闅旀椂闂�
+        Double realTimeInterval = rtsConfig.getFrameInterval(); //姣忓抚鐨勯棿闅旀椂闂�
         configVo.getRaingage().set(0, newDatFile.getAbsolutePath()); //raingage file
         ResultVo result = configVo.getResult();
         Integer lastFrames = result.getLastFrames();
@@ -220,10 +220,10 @@
             lastFrames = 0;
         }
         Integer saveStart = result.getSave_start();
-        Integer saveInterval = result.getSave_interval();
+        Double saveInterval = result.getSave_interval();
         Integer saveFrames = result.getSave_frames();
-        int newStartPoint = saveStart + (saveFrames - lastFrames) * saveInterval;
-        int newSaveFrames = saveFrames + (realTimeSimulateTime / realTimeInterval);
+        int newStartPoint = (int) (saveStart + (saveFrames - lastFrames) * saveInterval);
+        int newSaveFrames = (int) (saveFrames + (realTimeSimulateTime / realTimeInterval));
         result.setSave_start(newStartPoint); //璧峰鏃堕棿瑕佸湪涓婃鏃堕棿鐨勫熀纭�涓婂紑濮�
         result.setLastFrames(saveFrames);
         result.setSave_frames(newSaveFrames); //淇濈暀5甯э紝鍦ㄥ師鏉ョ殑鍩虹涓婂鍔�5甯�
diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java
index 01b4c9f..2df9766 100644
--- a/src/main/java/com/se/nsl/service/ResolveService.java
+++ b/src/main/java/com/se/nsl/service/ResolveService.java
@@ -334,8 +334,8 @@
         String rainfallFile = (inPath + File.separator + "rainfall.dat");
         String saveName = inPath + File.separator + "result.zarr";
 //        ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, config.getSaveFrames());
-        Integer saveFrameInterval = config.getSaveFrameInterval();
-        int saveFrames = duration / 60 / saveFrameInterval;
+        Double saveFrameInterval = config.getSaveFrameInterval();
+        int saveFrames = (int) (duration / saveFrameInterval);
         Short type = simu.getType();
         SimulateType simulateType = SimulateType.of(type);
         String saveMode = simulateType.getSaveMode();

--
Gitblit v1.9.3