src/main/java/com/se/simu/controller/SimuController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/se/simu/controller/SimuController.java
@@ -265,19 +265,20 @@ // 1 读取CSV 文件 CsvToSQLiteUtils.readCsvSaveLocal(stationRainFile, tableName); // 获取仿真时间 duration Integer duration = CsvToSQLiteUtils.getDuration(tableName); log.info("仿真时间 duration = {}", duration); vo.setDuration(duration); // 获取降雨总量 total Double total = CsvToSQLiteUtils.getTotal(tableName); log.info("降雨总量 total = {}", total); vo.setTotal(total); } catch (Exception e) { log.error("解析站点雨量CSV文件失败"); } // TODO: 2024/12/24 根据这些文件的地址,获取文件内容,创建仿真视图 try { if (null == vo.getTotal() || vo.getTotal() < 1 || vo.getTotal() > 1000) { return fail("降雨量不能为空,且取值在1~1000之间"); } if (null == vo.getDuration() || vo.getDuration() < 1 || vo.getDuration() > 10080) { return fail("仿真时长不能为空,且取值在1~10080之间"); } src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java
@@ -230,4 +230,43 @@ } } public static Double getTotal(String tableName) { // 1. 创建SQLite数据库连接 try (Connection conn = DriverManager.getConnection("jdbc:sqlite:rainfall.db")) { if (conn != null) { // 2. 执行SQL查询 String queryDataSql = "SELECT sum(rainfall_difference) AS total" + "FROM " + " (SELECT ABS( " + " (SELECT rainfall" + " FROM " + tableName + " WHERE station_name = s.station_name" + " ORDER BY datetime ASC LIMIT 1) - " + " (SELECT rainfall" + " FROM " + tableName + " WHERE station_name = s.station_name" + " ORDER BY datetime DESC LIMIT 1) ) AS rainfall_difference" + " FROM " + tableName + "s" + " GROUP BY station_name)"; // 3. 处理查询结果 try (PreparedStatement pstmt = conn.prepareStatement(queryDataSql)) { ResultSet rs = pstmt.executeQuery(); while (rs.next()) { // 获取总和 return rs.getDouble("total"); } } catch (SQLException e) { System.err.println("查询数据时出错: " + e.getMessage()); } } } catch (SQLException e) { System.err.println("SQLite连接失败: " + e.getMessage()); } return null; } public static Integer getDuration(String tableName) { return 1440; } }