From 428851fa44382ddd420d88dc79ee944162e5f93a Mon Sep 17 00:00:00 2001 From: xingjinshuang <xingjs@qq.com> Date: 星期四, 26 十二月 2024 17:18:52 +0800 Subject: [PATCH] @xingjs@20241226@添加查询管线工具类,修改解决查询站点接口token存在无法获取的情况,解决后可正常获取token,并查询出需要的站点;解析shp文件获取站点范围;新增把降水CSV文件内容解析保存到数据库中;计算CSV文件中的降水时间和降水总量 --- src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java | 39 +++++++++++++++++++++++++++++++++++++++ src/main/java/com/se/simu/controller/SimuController.java | 11 ++++++----- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index 3e9aee1..50ff53a 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/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("瑙f瀽绔欑偣闆ㄩ噺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涔嬮棿"); } diff --git a/src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java b/src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java index 1d35646..7dcf5fa 100644 --- a/src/main/java/com/se/simu/utils/CsvToSQLiteUtils.java +++ b/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; + } } -- Gitblit v1.9.3