初始提交:添加分时处理

This commit is contained in:
liuzhiming 2026-03-16 16:03:43 +08:00
parent b6ebfad7d4
commit 281ebf8acc
20 changed files with 655 additions and 5 deletions

View File

@ -18,4 +18,11 @@ public interface DnerHourlyPowerOutageEventMapper extends BaseMapper<DnerHourlyP
List<DnerHourlyPowerOutageEvent> selectListByConditions(@Param("orgCode") String orgCode,
@Param("startDate") String startDate,
@Param("endDate") String endDate);
/**
* 批量插入事件记录
* @param list 待插入的数据列表
* @return 插入成功的条数
*/
int batchInsert(List<DnerHourlyPowerOutageEvent> list);
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.DnerSiteAreaConfiguration;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 行政区划配置表 -- mapper类
*
@ -12,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface DnerSiteAreaConfigurationMapper extends BaseMapper<DnerSiteAreaConfiguration> {
List<DnerSiteAreaConfiguration> selectAll();
}

View File

@ -3,6 +3,9 @@ package com.southern.power.grid.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.NationalWeatherStation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 国家气象站 -- mapper类
@ -12,4 +15,12 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface NationalWeatherStationMapper extends BaseMapper<NationalWeatherStation> {
/**
* 按站号 + 时间范围查询时间字符串格式yyyy-MM-dd HH
*/
List<NationalWeatherStation> selectByStationAndTimeRange(
@Param("stationId") String stationId,
@Param("startTime") String startTime,
@Param("endTime") String endTime
);
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.NwSiteAreaConfiguration;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 南网区划配置表 Mapper接口
*
@ -12,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface NwSiteAreaConfigurationMapper extends BaseMapper<NwSiteAreaConfiguration> {
List<NwSiteAreaConfiguration> selectAll();
}

View File

@ -0,0 +1,9 @@
package com.southern.power.grid.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.NwSiteAreaConfiguration;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PowerGridConfigMapper extends BaseMapper<NwSiteAreaConfiguration> {
}

View File

@ -3,6 +3,9 @@ package com.southern.power.grid.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.RegionalWeatherStation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 区域气象站 -- mapper类
@ -12,4 +15,9 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface RegionalWeatherStationMapper extends BaseMapper<RegionalWeatherStation> {
List<RegionalWeatherStation> selectByStationAndTimeRange(
@Param("stationId") String stationId,
@Param("startTime") String startTime,
@Param("endTime") String endTime
);
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southern.power.grid.entity.WeatherSiteAreaConfiguration;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 气象区划配置表 Mapper 接口
*
@ -12,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface WeatherSiteAreaConfigurationMapper extends BaseMapper<WeatherSiteAreaConfiguration> {
List<WeatherSiteAreaConfiguration> selectAll();
}

View File

@ -11,6 +11,6 @@ import lombok.Data;
**/
@Data
public class DataExcelEntity {
@ExcelProperty(index = 0, value = "")
@ExcelProperty(value = "")
private String province;
}

View File

@ -0,0 +1,25 @@
package com.southern.power.grid.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ExcelHourlyOutageRowDTO {
/** 资料时次,对应分时表的 data_time */
private LocalDateTime dataTime;
/** Excel 中体现的南网省/地市局/区县局(用于映射) */
private String nwProvince;
private String nwCity;
private String nwDistrict;
/** 停电影响用户数等业务字段(示例) */
private Integer userCount;
private Integer outageState;
private Integer outageType;
// ... 根据你的 Excel 列补全
// getter/setter
}

View File

@ -0,0 +1,19 @@
package com.southern.power.grid.entity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class WeatherDataDTO {
private String stationId;
private String stationName;
private LocalDateTime dataTime;
private String temperature;
private String hourlyMaxTemperature;
private String hourlyMinTemperature;
private String hourlyPrecipitation;
private String dailyPrecipitation;
private String extremeWindSpeedHourly;
}

View File

@ -0,0 +1,19 @@
package com.southern.power.grid.service;
import com.southern.power.grid.entity.WeatherDataDTO;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
public interface WeatherDataService {
/**
* 根据站点ID + 起始日期从0点起向后7天 DB 查询并返回 7 天气象数据
*/
List<WeatherDataDTO> query7DaysWeather(String stationId, LocalDate startDate);
/**
* 从缓存若无则查库中获取指定 站点 + 时间点 对应的气象数据
*/
WeatherDataDTO getWeatherData(String stationId, LocalDateTime dateTime);
}

View File

@ -8,7 +8,9 @@ import com.southern.power.grid.service.IDnerHourlyPowerOutageEventService;
import com.southern.power.grid.utils.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -26,9 +28,12 @@ import java.util.stream.Collectors;
public class DnerHourlyPowerOutageEventServiceImpl
extends ServiceImpl<DnerHourlyPowerOutageEventMapper, DnerHourlyPowerOutageEvent>
implements IDnerHourlyPowerOutageEventService {
@Autowired
@Resource
private DnerHourlyPowerOutageEventMapper dnerHourlyPowerOutageEventMapper;
@Override
public HourlyPowerOutageEventChartVO queryIntradayData(String orgCode, String startDate, String endDate) {
List<DnerHourlyPowerOutageEvent> dataList = dnerHourlyPowerOutageEventMapper.selectListByConditions(
@ -70,4 +75,10 @@ public class DnerHourlyPowerOutageEventServiceImpl
result.setWindList(windList);
return result;
}
}

View File

@ -0,0 +1,158 @@
package com.southern.power.grid.service.impl;
import com.southern.power.grid.dao.DnerHourlyPowerOutageEventMapper;
import com.southern.power.grid.dao.NwSiteAreaConfigurationMapper;
import com.southern.power.grid.dao.WeatherSiteAreaConfigurationMapper;
import com.southern.power.grid.entity.DnerHourlyPowerOutageEvent;
import com.southern.power.grid.entity.ExcelHourlyOutageRowDTO;
import com.southern.power.grid.entity.NwSiteAreaConfiguration;
import com.southern.power.grid.entity.WeatherDataDTO;
import com.southern.power.grid.entity.WeatherSiteAreaConfiguration;
import com.southern.power.grid.service.WeatherDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class HourlyOutageExcelProcessService {
@Resource
private NwSiteAreaConfigurationMapper nwSiteAreaConfigurationMapper;
@Resource
private WeatherSiteAreaConfigurationMapper weatherSiteAreaConfigurationMapper;
@Resource
private WeatherDataService weatherDataService;
@Resource
private DnerHourlyPowerOutageEventMapper dnerHourlyPowerOutageEventMapper;
/**
* key = nw_province + "|" + nw_city + "|" + nw_district value = district_code
*/
private final Map<String, String> nwAreaMap = new HashMap<>();
/**
* key = district_code value = WeatherSiteAreaConfiguration包含 station_id/station_name
*/
private final Map<String, WeatherSiteAreaConfiguration> weatherAreaMap = new HashMap<>();
private static final DateTimeFormatter DB_DATETIME_STR =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* 对外主入口处理一批 Excel 解析后的数据按逻辑补齐气象数据并批量入库
*/
@Transactional(rollbackFor = Exception.class)
public void process(List<ExcelHourlyOutageRowDTO> excelRows) {
// 1. 加载南网配置表
loadNwAreaConfig();
// 2. 加载气象区划配置表
loadWeatherAreaConfig();
List<DnerHourlyPowerOutageEvent> toInsert = new ArrayList<>();
// 3 & 4. 循环处理 Excel
for (ExcelHourlyOutageRowDTO row : excelRows) {
// 3.1 根据南网省//区县 district_code
String districtCode = findDistrictCode(row.getNwProvince(), row.getNwCity(), row.getNwDistrict());
if (districtCode == null) {
// 找不到映射可记录日志或统计
continue;
}
// 3.2 district_code station_id
WeatherSiteAreaConfiguration weatherArea = weatherAreaMap.get(districtCode);
if (weatherArea == null || weatherArea.getStationId() == null) {
// 找不到对应气象站
continue;
}
String stationId = weatherArea.getStationId();
// 3.3 通过 stationId + 时间统一取7天气象数据内部做缓存
LocalDateTime dataTime = row.getDataTime();
WeatherDataDTO weatherData = weatherDataService.getWeatherData(stationId, dataTime);
// 3.4 组装分时停电事件实体
DnerHourlyPowerOutageEvent entity = buildHourlyEvent(row, districtCode, weatherData);
toInsert.add(entity);
}
if (!toInsert.isEmpty()) {
// 4. 批量入库
dnerHourlyPowerOutageEventMapper.batchInsert(toInsert);
}
}
private void loadNwAreaConfig() {
nwAreaMap.clear();
List<NwSiteAreaConfiguration> list = nwSiteAreaConfigurationMapper.selectAll();
if (list == null) return;
for (NwSiteAreaConfiguration cfg : list) {
String key = buildNwKey(cfg.getNwProvince(), cfg.getNwCity(), cfg.getNwDistrict());
if (cfg.getDistrictCode() != null && !cfg.getDistrictCode().isEmpty()) {
nwAreaMap.put(key, cfg.getDistrictCode());
}
}
}
private void loadWeatherAreaConfig() {
weatherAreaMap.clear();
List<WeatherSiteAreaConfiguration> list = weatherSiteAreaConfigurationMapper.selectAll();
if (list == null) return;
for (WeatherSiteAreaConfiguration cfg : list) {
if (cfg.getDistrictCode() != null && !cfg.getDistrictCode().isEmpty()) {
weatherAreaMap.put(cfg.getDistrictCode(), cfg);
}
}
}
private String buildNwKey(String province, String city, String district) {
return (province == null ? "" : province.trim()) + "|"
+ (city == null ? "" : city.trim()) + "|"
+ (district == null ? "" : district.trim());
}
private String findDistrictCode(String nwProvince, String nwCity, String nwDistrict) {
String key = buildNwKey(nwProvince, nwCity, nwDistrict);
return nwAreaMap.get(key);
}
private DnerHourlyPowerOutageEvent buildHourlyEvent(ExcelHourlyOutageRowDTO row,
String districtCode,
WeatherDataDTO weatherData) {
DnerHourlyPowerOutageEvent e = new DnerHourlyPowerOutageEvent();
e.setOrgCode(districtCode);
// 时间转成字符串入库到 data_time
if (row.getDataTime() != null) {
e.setDataTime(row.getDataTime().format(DB_DATETIME_STR));
}
// Excel 本身的业务字段
e.setUserCount(row.getUserCount());
e.setOutageState(row.getOutageState());
e.setOutageType(row.getOutageType());
// 气象字段如不存在数据可以为 null
if (weatherData != null) {
e.setTemperature(weatherData.getTemperature());
e.setHourlyMaxTemperature(weatherData.getHourlyMaxTemperature());
e.setHourlyMinTemperature(weatherData.getHourlyMinTemperature());
e.setHourlyPrecipitation(weatherData.getHourlyPrecipitation());
e.setDailyPrecipitation(weatherData.getDailyPrecipitation());
e.setExtremeWindSpeedHourly(weatherData.getExtremeWindSpeedHourly());
}
// create_by/update_by 可根据当前登录用户等进行填充
return e;
}
}

View File

@ -0,0 +1,129 @@
package com.southern.power.grid.service.impl;
import com.southern.power.grid.dao.NationalWeatherStationMapper;
import com.southern.power.grid.dao.RegionalWeatherStationMapper;
import com.southern.power.grid.entity.NationalWeatherStation;
import com.southern.power.grid.entity.RegionalWeatherStation;
import com.southern.power.grid.entity.WeatherDataDTO;
import com.southern.power.grid.service.WeatherDataService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Service
public class WeatherDataServiceImpl implements WeatherDataService {
@Resource
private NationalWeatherStationMapper nationalWeatherStationMapper;
@Resource
private RegionalWeatherStationMapper regionalWeatherStationMapper;
/**
* 缓存key = stationId + "|" + startDate(yyyy-MM-dd)value = Map<dataTime, WeatherDataDTO>
*/
private final Map<String, Map<LocalDateTime, WeatherDataDTO>> cache = new HashMap<>();
private static final DateTimeFormatter DB_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH");
@Override
public List<WeatherDataDTO> query7DaysWeather(String stationId, LocalDate startDate) {
LocalDateTime start = startDate.atStartOfDay();
LocalDateTime end = start.plusDays(7);
String startStr = start.format(DB_TIME_FORMAT);
String endStr = end.format(DB_TIME_FORMAT);
List<NationalWeatherStation> nationalList =
nationalWeatherStationMapper.selectByStationAndTimeRange(stationId, startStr, endStr);
List<RegionalWeatherStation> regionalList =
regionalWeatherStationMapper.selectByStationAndTimeRange(stationId, startStr, endStr);
List<WeatherDataDTO> result = new ArrayList<>();
if (nationalList != null) {
for (NationalWeatherStation n : nationalList) {
result.add(convertFromNational(n));
}
}
if (regionalList != null) {
for (RegionalWeatherStation r : regionalList) {
result.add(convertFromRegional(r));
}
}
return result;
}
@Override
public WeatherDataDTO getWeatherData(String stationId, LocalDateTime dateTime) {
if (stationId == null || dateTime == null) {
return null;
}
LocalDate startDate = dateTime.toLocalDate();
String windowKey = buildWindowKey(stationId, startDate);
Map<LocalDateTime, WeatherDataDTO> stationMap = cache.get(windowKey);
if (stationMap == null) {
stationMap = new HashMap<>();
List<WeatherDataDTO> list = query7DaysWeather(stationId, startDate);
if (list != null) {
for (WeatherDataDTO dto : list) {
if (dto.getDataTime() != null) {
stationMap.put(dto.getDataTime(), dto);
}
}
}
cache.put(windowKey, stationMap);
}
return stationMap.get(dateTime);
}
private String buildWindowKey(String stationId, LocalDate startDate) {
return stationId + "|" + startDate.toString();
}
private WeatherDataDTO convertFromNational(NationalWeatherStation n) {
WeatherDataDTO dto = new WeatherDataDTO();
dto.setStationId(n.getStationId());
dto.setStationName(n.getStationName());
dto.setDataTime(parseDataTime(n.getDataTime()));
dto.setTemperature(n.getTemperature());
dto.setHourlyMaxTemperature(n.getHourlyMaxTemperature());
dto.setHourlyMinTemperature(n.getHourlyMinTemperature());
dto.setHourlyPrecipitation(n.getHourlyPrecipitation());
dto.setDailyPrecipitation(n.getDailyPrecipitation());
dto.setExtremeWindSpeedHourly(n.getExtremeWindSpeedHourly());
return dto;
}
private WeatherDataDTO convertFromRegional(RegionalWeatherStation r) {
WeatherDataDTO dto = new WeatherDataDTO();
dto.setStationId(r.getStationId());
dto.setStationName(r.getStationName());
dto.setDataTime(parseDataTime(r.getDataTime()));
dto.setTemperature(r.getTemperature());
dto.setHourlyMaxTemperature(r.getHourlyMaxTemperature());
dto.setHourlyMinTemperature(r.getHourlyMinTemperature());
dto.setHourlyPrecipitation(r.getHourlyPrecipitation());
dto.setDailyPrecipitation(r.getDailyPrecipitation());
dto.setExtremeWindSpeedHourly(r.getExtremeWindSpeedHourly());
return dto;
}
private LocalDateTime parseDataTime(String dataTime) {
if (dataTime == null || dataTime.isEmpty()) return null;
// 你实际存的是 "yyyy-MM-dd HH:mm:ss" 还是 "yyyyMMddHH" 自己调整解析格式
try {
return LocalDateTime.parse(dataTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
} catch (Exception e) {
try {
return LocalDateTime.parse(dataTime, DateTimeFormatter.ofPattern("yyyyMMddHH"));
} catch (Exception ex) {
return null;
}
}
}
}

View File

@ -14,4 +14,32 @@
and data_time <![CDATA[ <= ]]> #{endDate}
order by data_time asc
</select>
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="id">
INSERT INTO dner_hourly_power_outage_event (
org_code, data_time, hourly_precipitation, daily_precipitation,
temperature, hourly_max_temperature, hourly_min_temperature,
extreme_wind_speed_hourly, user_count, outage_state, outage_type,
create_by, create_time, update_by, update_time
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.orgCode},
#{item.dataTime},
#{item.hourlyPrecipitation},
#{item.dailyPrecipitation},
#{item.temperature},
#{item.hourlyMaxTemperature},
#{item.hourlyMinTemperature},
#{item.extremeWindSpeedHourly},
#{item.userCount},
#{item.outageState},
#{item.outageType},
#{item.createBy},
NOW(), <!-- 创建时间使用数据库当前时间 -->
#{item.updateBy},
NOW() <!-- 修改时间使用数据库当前时间 -->
)
</foreach>
</insert>
</mapper>

View File

@ -0,0 +1,28 @@
<?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.DnerSiteAreaConfigurationMapper">
<resultMap id="BaseResultMap" type="com.southern.power.grid.entity.DnerSiteAreaConfiguration">
<id column="id" property="id"/>
<result column="province" property="province"/>
<result column="province_code" property="provinceCode"/>
<result column="city" property="city"/>
<result column="city_code" property="cityCode"/>
<result column="district" property="district"/>
<result column="district_code" property="districtCode"/>
<result column="create_by" property="createBy"/>
<result column="create_time" property="createTime"/>
<result column="update_by" property="updateBy"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
SELECT
id, province, province_code, city, city_code, district, district_code,
create_by, create_time, update_by, update_time
FROM dner_site_area_configuration
</select>
</mapper>

View File

@ -0,0 +1,68 @@
<?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.NationalWeatherStationMapper">
<resultMap id="BaseResultMap" type="com.southern.power.grid.entity.NationalWeatherStation">
<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 national_weather_station
WHERE station_id = #{stationId}
AND data_time &gt;= #{startTime}
AND data_time &lt;= #{endTime}
ORDER BY data_time
</select>
</mapper>

View File

@ -0,0 +1,27 @@
<?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.NwSiteAreaConfigurationMapper">
<resultMap id="BaseResultMap" type="com.southern.power.grid.entity.NwSiteAreaConfiguration">
<id column="id" property="id"/>
<result column="district_code" property="districtCode"/>
<result column="nw_province" property="nwProvince"/>
<result column="nw_city" property="nwCity"/>
<result column="nw_district" property="nwDistrict"/>
<result column="create_by" property="createBy"/>
<result column="create_time" property="createTime"/>
<result column="update_by" property="updateBy"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
SELECT
id, district_code, nw_province, nw_city, nw_district,
create_by, create_time, update_by, update_time
FROM nw_site_area_configuration
</select>
</mapper>

View File

@ -0,0 +1,68 @@
<?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>
</mapper>

View File

@ -0,0 +1,29 @@
<?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.WeatherSiteAreaConfigurationMapper">
<resultMap id="BaseResultMap" type="com.southern.power.grid.entity.WeatherSiteAreaConfiguration">
<id column="id" property="id"/>
<result column="district_code" property="districtCode"/>
<result column="weather_province" property="weatherProvince"/>
<result column="weather_city" property="weatherCity"/>
<result column="weather_district" property="weatherDistrict"/>
<result column="station_name" property="stationName"/>
<result column="station_id" property="stationId"/>
<result column="create_by" property="createBy"/>
<result column="create_time" property="createTime"/>
<result column="update_by" property="updateBy"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
SELECT
id, district_code, weather_province, weather_city, weather_district,
station_name, station_id,
create_by, create_time, update_by, update_time
FROM weather_site_area_configuration
</select>
</mapper>