From 0e6106783b59c2c4e173ad4b709c1415686e7505 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期一, 14 七月 2025 15:02:22 +0800 Subject: [PATCH] 停止实时模拟时更新停止时间 --- src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java | 39 +++++++++++++++++++++++---------------- 1 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java b/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java index 3dea2ae..31d2a9b 100644 --- a/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java +++ b/src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java @@ -19,12 +19,15 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; +import org.springframework.web.client.ResourceAccessException; import javax.annotation.Resource; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; +import java.sql.Timestamp; +import java.time.Instant; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -58,9 +61,7 @@ // 瀛樺偍浠诲姟鎵ц鐘舵�� private final Map<Integer, TaskStatus> taskStatusMap = new ConcurrentHashMap<>(); // 瀛樺偍浠诲姟鎵ц鐨凢uture瀵硅薄锛岀敤浜庡彇娑堜换鍔� - private final Map<String, Future<?>> taskFutureMap = new ConcurrentHashMap<>(); -// @Autowired -// private ThreadPoolTaskExecutor taskExecutor; +// private final Map<String, Future<?>> taskFutureMap = new ConcurrentHashMap<>(); @Async("realTimeExecutor") public void startSimulation(Simu simu) throws IOException { @@ -113,6 +114,8 @@ //鏇存柊妯℃嫙浠诲姟鐨勮繍琛岀姸鎬佸埌鏁版嵁搴� private void updateTaskStatus(Simu simu, String result) { simu.setResult(result); + Timestamp now = Timestamp.from(Instant.now()); + simu.setUpdateTime(now); simuMapper.updateResult(simu); } @@ -245,13 +248,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 +273,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 +281,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甯� @@ -315,7 +318,7 @@ //灏嗛洦閲忚涓┖鍊硷紙intensity涓�-1锛夌殑閮ㄥ垎濉厖鍊� private void fillEmptyValue(List<RainRecord> rainRecords) { - double[] rainValues = rainRecords.stream().mapToDouble(r -> r.getIntensity()).toArray(); + double[] rainValues = rainRecords.stream().mapToDouble(RainRecord::getIntensity).toArray(); double[] forwardValues = forwardFill(rainValues); double[] backwordValues = backwordFill(rainValues); for (int i = 0; i < rainRecords.size(); i++) { @@ -388,12 +391,16 @@ input.setFilterObject(filterObject); String url = rtsConfig.getUrl(); String token = rtsConfig.getToken(); - ResponseEntity<String> post = HttpRequestUtil.post(url, input, String.class, token); - String body = post.getBody(); - JsonNode jsonNode = mapper.readTree(body); - JsonNode pageData = jsonNode.get("data").get("pageData"); - if (!pageData.isEmpty()) { - return pageData.get(0).get("value").asDouble(); + try { + ResponseEntity<String> post = HttpRequestUtil.post(url, input, String.class, token); + String body = post.getBody(); + JsonNode jsonNode = mapper.readTree(body); + JsonNode pageData = jsonNode.get("data").get("pageData"); + if (!pageData.isEmpty()) { + return pageData.get(0).get("value").asDouble(); + } + } catch (ResourceAccessException e) { + log.error("鏃犳硶鑾峰彇鍒伴洦閲忕珯鏁版嵁:", e); } return -1D; } -- Gitblit v1.9.3