|
@@ -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);
|
|
|
}
|