소스 검색

水力模型相关 : 自来水泵原始数据采集, 水位预测逻辑编写

1037015548@qq.com 6 달 전
부모
커밋
b7daf786dd
1개의 변경된 파일28개의 추가작업 그리고 22개의 파일을 삭제
  1. 28 22
      dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/zilaishuiSource/ZilaishuiRealListDao.java

+ 28 - 22
dc3-gateway/src/main/java/io/github/pnoker/gateway/dbdao/zilaishuiSource/ZilaishuiRealListDao.java

@@ -367,28 +367,34 @@ public class ZilaishuiRealListDao {
     }
 
     public void insertForecastData() {
-        String sql = "DO $$ " +
-                "DECLARE " +
-                "dd INTEGER := 0; " +
-                "BEGIN " +
-                "WHILE dd <= 5 LOOP " +
-                "INSERT INTO tb_m_hourlevel(device_code, date, hour, hour_forecast_actual_level) " +
-                "SELECT FF.device_code, CURRENT_DATE + (dd || 'day')::interval, FF.hour, FF.future " +
-                "FROM (SELECT CC.device_code, CC.hour, " +
-                "CAST(avg(CC.hour_actual_water_level) FILTER (WHERE CC.hour_actual_water_level <> 'NaN') + " +
-                "(sign(random() - 0.5) * (random() * 0.3)) AS NUMERIC(18, 2)) as future " +
-                "FROM (SELECT device_code, date, hour FROM tb_m_hourlevel " +
-                "WHERE date = CURRENT_DATE - INTERVAL '7 days' " +
-                "GROUP BY device_code, date, hour) BB " +
-                "JOIN tb_m_hourlevel CC " +
-                "ON BB.device_code = CC.device_code AND BB.hour = CC.hour AND CC.date >= BB.date " +
-                "GROUP BY CC.device_code, CC.hour " +
-                "ORDER BY CC.device_code DESC, CC.hour DESC) FF " +
-                "ON CONFLICT (device_code, date, hour) " +
-                "DO UPDATE SET hour_forecast_actual_level = excluded.hour_forecast_actual_level; " +
-                "dd := dd + 1; " +
-                "END LOOP; " +
-                "END $$;";
+        String sql = "DO $$\n" +
+                "DECLARE\n" +
+                "    dd INTEGER := 0;\n" +
+                "BEGIN\n" +
+                "    WHILE dd <= 5 LOOP\n" +
+                "        INSERT INTO tb_m_hourlevel(device_code, date, hour, hour_forecast_actual_level)\n" +
+                "        SELECT FF.device_code,\n" +
+                "               CURRENT_DATE + (dd || 'day')::interval,\n" +
+                "               FF.hour,\n" +
+                "               FF.future\n" +
+                "        FROM (SELECT \n" +
+                "                     CC.device_code,\n" +
+                "                     CC.hour,\n" +
+                "                     CAST(avg(CC.hour_actual_water_level) FILTER (WHERE CC.hour_actual_water_level <> 'NaN') + \n" +
+                "                          (sign(random() - 0.5) * (random() * 0.3)) AS NUMERIC(18, 2)) as future\n" +
+                "              FROM (SELECT device_code, CURRENT_DATE - (7 || 'day')::interval AS date, hour\n" +
+                "                    FROM tb_m_hourlevel \n" +
+                "                    WHERE date >= CURRENT_DATE - (7 || 'day')::interval AND date <= CURRENT_DATE\n" +
+                "                    GROUP BY device_code, hour) BB\n" +
+                "              JOIN tb_m_hourlevel CC\n" +
+                "              ON BB.device_code = CC.device_code AND BB.hour = CC.hour AND CC.date >= BB.date\n" +
+                "              GROUP BY CC.device_code, CC.hour\n" +
+                "              ORDER BY CC.device_code DESC, CC.hour DESC) FF\n" +
+                "        ON CONFLICT (device_code, date, hour)\n" +
+                "        DO UPDATE SET hour_forecast_actual_level = excluded.hour_forecast_actual_level;\n" +
+                "        dd := dd + 1;\n" +
+                "    END LOOP;\n" +
+                "END $$";
         JdbcTemplate pgJdbc = new JdbcTemplate(child2DataSource);
         pgJdbc.execute(sql);
     }