From f31f0991c0d2036e563b886f57de4cf45d3c72cb Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期二, 01 七月 2025 14:51:59 +0800 Subject: [PATCH] 实时模拟异步功能实现 --- src/main/java/com/se/nsl/service/ResolveService.java | 125 ++++------------------------------------- 1 files changed, 14 insertions(+), 111 deletions(-) diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index a78e688..01b4c9f 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -342,6 +342,7 @@ String startTime = TimeFormatUtil.formatDate(data.getStartTime()); ConfigVo vo = new ConfigVo(terrainFile, landuseFile, terrainFile, rainfallFile, saveName, duration, saveFrames, saveMode, startTime); + vo.setEvaporation(config.getEvaporation()); vo.getResult().setSave_filter(config.getSaveFilter()); String configFile = config.getInPath() + File.separator + data.getInPath() + File.separator + data.getInPath() + ".json"; // ComHelper.writeJson(configFile, JSON.toJSONString(vo)); @@ -517,115 +518,17 @@ Files.write(Paths.get(dat), list, StandardCharsets.UTF_8); } - //瀹炴椂妯℃嫙 -// public String realTimeSimulate(RealTimeInput input) throws IOException { -// long currentTime = System.currentTimeMillis(); -// //鏍规嵁鏈嶅姟鎵惧埌鎸囧畾鐨勬枃浠跺す -// String serviceName = input.getServiceName(); -// File serviceNameDir = new File(config.getInPath(), serviceName); -// //鐢熸垚涓�涓柊鐨勯洦閲忔枃浠�,闇�瑕佸師鍏堥洦閲忔枃浠剁殑涓�浜涗俊鎭紝鎵�浠ラ渶瑕佸厛璇诲彇鏃х殑 -// String[] values = readTheOldFirstLineRainfallValue(serviceNameDir); -// File newDatFile = generateNewRainfallFile(input, values, serviceNameDir, currentTime); -// -// //鐢熸垚涓�涓柊鐨勭敓鎴恴arr鐨勯厤缃枃浠� -// File newConfigFile = generateNewZarrConfigFile(serviceNameDir, serviceName, currentTime, newDatFile); -// //鎵ц姹傝В鍣ㄨ繍绠� -// String cmd = String.format("%s \"%s\"", config.getUwSolverBat(), newConfigFile); -// callBat2(cmd); -// -// //鐢熸垚涓�涓柊鐨剒arr杞瑃if鐨刯son鏂囦欢 -// File newZarr2TifJson = generateNewZarr2TifJson(serviceNameDir, currentTime); -// //鎵цzarr杞瑃if -// String zarr2TifCmd = String.format("%s \"%s\"", config.getZarr2tifBat(), newZarr2TifJson); -// callBat2(zarr2TifCmd); -// //杩斿洖鏂扮殑layer.json鍚嶇О -// return generateLayerJsonAndPng(serviceName, serviceNameDir, currentTime); -// -// } - -// private String generateLayerJsonAndPng(String serviceName, File serviceNameDir, long currentTime) throws IOException { -// ResultDto resultDto = new ResultDto(); -// resultDto.setServiceName(serviceName); -// File temp = Paths.get(config.getOutPath(), serviceName, "temp").toFile(); -// if (!temp.exists()) temp.mkdir(); -// resultDto.setTemp(temp.getAbsolutePath()); -// resultDto.setOutPath(Paths.get(config.getOutPath(), serviceName).toString()); -// File dem = new File(serviceNameDir, "DEM.tif"); -// resultDto.setTerrainFile(dem.getAbsolutePath()); -// File newDepthDir = new File(serviceNameDir + File.separator + "depth_" + currentTime); -// resultDto.setWaterPath(newDepthDir.getAbsolutePath()); -// LayerDto layerDto = new LayerDto(config.getVer(), 4548, config.getSizes()); -// String newLayerJsonName = "layer_" + currentTime + ".json"; -// layerDto.setName(newLayerJsonName); -// testService.processRealTime(resultDto, layerDto); -// return newLayerJsonName; -// } - -// private File generateNewZarr2TifJson(File serviceNameDir, long currentTime) throws IOException { -// File srcZarr2TifJson = new File(serviceNameDir, "zarr2tif.json"); -// Zarr2Tif zarr2Tif = mapper.readValue(srcZarr2TifJson, Zarr2Tif.class); -// //淇敼zarr2tif瀵硅薄涓殑瀛楁 -//// String stamp = TimeFormatUtil.formatTime(currentTime, "yyyy-MM-dd HH:mm:ss"); -//// zarr2Tif.setStart_timestamp(stamp); -//// String newZarrPath = serviceNameDir + File.separator + "result_" + currentTime + ".zarr"; -// String newZarrPath = serviceNameDir + File.separator + "result.zarr"; -// zarr2Tif.setZarr_file(newZarrPath); -// zarr2Tif.setGeotiff_dir(serviceNameDir + File.separator + "depth_" + currentTime); -// File newZarr2TifJson = new File(serviceNameDir, "zarr2tif_" + currentTime + ".json"); -// mapper.writeValue(newZarr2TifJson, zarr2Tif); -// return newZarr2TifJson; -// } - -// private File generateNewZarrConfigFile(File serviceNameDir, String serviceName, long currentTime, File newDatFile) throws IOException { -// File configFile = new File(serviceNameDir, serviceName + ".json"); -// ConfigVo configVo = mapper.readValue(configFile, ConfigVo.class); -// int simulateTime = 300; //妯℃嫙鏃堕棿锛岄粯璁や负5min锛屽嵆300s -// int intervalTime = 60; //姣忓抚鐨勯棿闅旀椂闂达紝榛樿涓�60s,60s鐢熸垚涓�甯� -// configVo.getRaingage().set(0, newDatFile.getAbsolutePath()); //raingage file -// ResultVo result = configVo.getResult(); -// Integer oldDuration = configVo.getDuration(); -//// result.setSave_start(oldDuration); //璧峰鏃堕棿瑕佸湪涓婃鏃堕棿鐨勫熀纭�涓婂紑濮� -// configVo.setDuration(oldDuration + simulateTime); //鍥哄畾涓�5min -// result.setSave_interval(intervalTime); -// result.setSave_frames(result.getSave_frames() + (simulateTime / intervalTime)); //淇濈暀5甯э紝鍦ㄥ師鏉ョ殑鍩虹涓婂鍔�5甯� -//// String newZarrPath = serviceNameDir + File.separator + "result_" + currentTime + ".zarr"; -// String newZarrPath = serviceNameDir + File.separator + "result.zarr"; -// result.setSave_name(newZarrPath); -// File newConfigFile = new File(serviceNameDir, currentTime + ".json"); -// mapper.writeValue(newConfigFile, configVo); -// return newConfigFile; -// } - -// private File generateNewRainfallFile(RealTimeInput input, String[] values, File serviceNameDir, long currentTime) throws IOException { -// String station = values[0]; -// double lon = Double.parseDouble(values[1]); -// double lat = Double.parseDouble(values[2]); -// String title = config.getRainfallTitle(); -// List<String> newLines = new ArrayList<>(); -// newLines.add(title); -// List<RealTimeInput.RealTimeData> data = input.getData(); -// for (RealTimeInput.RealTimeData rd : data) { -// LocalDateTime dateTime = rd.getDateTime(); -// int year = dateTime.getYear(); -// int month = dateTime.getMonthValue(); -// int day = dateTime.getDayOfMonth(); -// int hour = dateTime.getHour(); -// int minute = dateTime.getMinute(); -// double intensity = rd.getIntensity(); //淇濈暀鎸囧畾浣嶆暟灏忔暟 -// String l = String.format("%s %s %s %s %s %s %s %s %s", -// station, lon, lat, year, month, day, hour, minute, String.format("%.6f", intensity)); -// newLines.add(l); -// } -// File newDatFile = new File(serviceNameDir, "rainfall_" + currentTime + ".dat"); -// if (!newDatFile.exists()) newDatFile.createNewFile(); -// Files.write(newDatFile.toPath(), newLines, StandardOpenOption.TRUNCATE_EXISTING); -// return newDatFile; -// } - -// private static String[] readTheOldFirstLineRainfallValue(File serviceNameDir) throws IOException { -// File srcRailfallFile = new File(serviceNameDir, "rainfall.dat"); -// List<String> lines = Files.readAllLines(srcRailfallFile.toPath()); -// String secondLine = lines.get(1); -// return secondLine.split(" "); -// } + public List<String> simulationResults(String serviceName) { + String outPath = config.getOutPath(); + File serviceNameDir = new File(outPath, serviceName); + List<String> res = new ArrayList<>(); + File[] files = serviceNameDir.listFiles(); + for (File file : files) { + String name = file.getName(); + if (name.startsWith("layer")) { + res.add(name); + } + } + return res; + } } -- Gitblit v1.9.3