dcb
2025-07-07 97629da6a002b534da10f828187fd6cd65941aa4
模拟间隔支持毫秒级
已修改7个文件
57 ■■■■ 文件已修改
src/main/java/com/se/nsl/config/PropertiesConfig.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/config/RealTimeSimulationConfig.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/domain/vo/ConfigVo.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/domain/vo/ResultVo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/service/RealTimeSimulationService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/service/ResolveService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
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() {
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);
    }
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;
    }
src/main/java/com/se/nsl/service/RealTimeSimulationAsyncService.java
@@ -59,8 +59,6 @@
    private final Map<Integer, TaskStatus> taskStatusMap = new ConcurrentHashMap<>();
    // 存储任务执行的Future对象,用于取消任务
    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帧
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帧
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();