ai-china-southern-power-gri.../src/main/resources/mapper/RegionalWeatherStationMapper.xml
fsyud 2f65f85143 feat(weather): 添加历史天气数据同步逻辑
- 在定时任务中增加首次同步判断,若没有历史数据则从最早的气象站记录开始同步
- 新增获取最早气象站数据时间的方法,用于确定历史同步起点
- 添加按地区编码和时间范围批量查询气象数据的方法,优化数据获取性能
- 更新.gitignore文件,排除CLAUDE.md文件
2026-04-14 15:33:14 +08:00

102 lines
5.4 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 必须 = Mapper 接口全类名 -->
<mapper namespace="com.southern.power.grid.dao.RegionalWeatherStationMapper">
<resultMap id="BaseResultMap" type="com.southern.power.grid.entity.RegionalWeatherStation">
<id column="id" property="id"/>
<result column="data_time" property="dataTime"/>
<result column="station_id" property="stationId"/>
<result column="station_name" property="stationName"/>
<result column="station_pressure" property="stationPressure"/>
<result column="hourly_max_pressure" property="hourlyMaxPressure"/>
<result column="hourly_min_pressure" property="hourlyMinPressure"/>
<result column="temperature" property="temperature"/>
<result column="hourly_max_temperature" property="hourlyMaxTemperature"/>
<result column="hourly_min_temperature" property="hourlyMinTemperature"/>
<result column="dew_point_temperature" property="dewPointTemperature"/>
<result column="relative_humidity" property="relativeHumidity"/>
<result column="water_vapor_pressure" property="waterVaporPressure"/>
<result column="hourly_precipitation" property="hourlyPrecipitation"/>
<result column="daily_precipitation" property="dailyPrecipitation"/>
<result column="wind_direction_2min" property="windDirection2min"/>
<result column="wind_speed_2min" property="windSpeed2min"/>
<result column="wind_direction_10min" property="windDirection10min"/>
<result column="wind_speed_10min" property="windSpeed10min"/>
<result column="max_wind_direction_hourly" property="maxWindDirectionHourly"/>
<result column="max_wind_speed_hourly" property="maxWindSpeedHourly"/>
<result column="instantaneous_wind_direction" property="instantaneousWindDirection"/>
<result column="instantaneous_wind_speed" property="instantaneousWindSpeed"/>
<result column="extreme_wind_direction_hourly" property="extremeWindDirectionHourly"/>
<result column="extreme_wind_speed_hourly" property="extremeWindSpeedHourly"/>
<result column="extreme_wind_time_hourly" property="extremeWindTimeHourly"/>
<result column="min_visibility_hourly" property="minVisibilityHourly"/>
<result column="province" property="province"/>
<result column="city" property="city"/>
<result column="district" property="district"/>
<result column="latitude" property="latitude"/>
<result column="longitude" property="longitude"/>
<result column="altitude" property="altitude"/>
<result column="create_time" property="createTime"/>
<result column="import_time" property="importTime"/>
</resultMap>
<select id="selectByStationAndTimeRange" resultMap="BaseResultMap">
SELECT
id, data_time, station_id, station_name,
station_pressure, hourly_max_pressure, hourly_min_pressure,
temperature, hourly_max_temperature, hourly_min_temperature,
dew_point_temperature, relative_humidity, water_vapor_pressure,
hourly_precipitation, daily_precipitation,
wind_direction_2min, wind_speed_2min,
wind_direction_10min, wind_speed_10min,
max_wind_direction_hourly, max_wind_speed_hourly,
instantaneous_wind_direction, instantaneous_wind_speed,
extreme_wind_direction_hourly, extreme_wind_speed_hourly, extreme_wind_time_hourly,
min_visibility_hourly,
province, city, district,
latitude, longitude, altitude,
create_time, import_time
FROM regional_weather_station
WHERE station_id = #{stationId}
AND data_time &gt;= #{startTime}
AND data_time &lt;= #{endTime}
ORDER BY data_time
</select>
<select id="getSyncData" resultType="com.southern.power.grid.entity.RegionalWeatherStation">
select id,
data_time,
hourly_max_pressure,
hourly_min_pressure,
temperature,
hourly_max_temperature,
hourly_min_temperature,
dew_point_temperature,
relative_humidity,
hourly_precipitation,
daily_precipitation,
max_wind_direction_hourly,
max_wind_speed_hourly,
instantaneous_wind_direction,
instantaneous_wind_speed,
extreme_wind_direction_hourly,
extreme_wind_speed_hourly,
extreme_wind_time_hourly,
min_visibility_hourly,
province,
city,
district
from regional_weather_station
where data_time = #{prevHourDate}
</select>
<select id="getSyncOldDataStartDate" resultType="java.lang.String">
SELECT data_time
FROM regional_weather_station
ORDER BY data_time
LIMIT 1
</select>
</mapper>