初始提交:添加分时处理
This commit is contained in:
parent
b6ebfad7d4
commit
281ebf8acc
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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> {
|
||||
}
|
||||
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -11,6 +11,6 @@ import lombok.Data;
|
||||
**/
|
||||
@Data
|
||||
public class DataExcelEntity {
|
||||
@ExcelProperty(index = 0, value = "省份")
|
||||
@ExcelProperty(value = "省")
|
||||
private String province;
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
@ -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>
|
||||
68
src/main/resources/mapper/NationalWeatherStationMapper.xml
Normal file
68
src/main/resources/mapper/NationalWeatherStationMapper.xml
Normal 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 >= #{startTime}
|
||||
AND data_time <= #{endTime}
|
||||
ORDER BY data_time
|
||||
</select>
|
||||
</mapper>
|
||||
27
src/main/resources/mapper/NwSiteAreaConfigurationMapper.xml
Normal file
27
src/main/resources/mapper/NwSiteAreaConfigurationMapper.xml
Normal 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>
|
||||
68
src/main/resources/mapper/RegionalWeatherStationMapper.xml
Normal file
68
src/main/resources/mapper/RegionalWeatherStationMapper.xml
Normal 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 >= #{startTime}
|
||||
AND data_time <= #{endTime}
|
||||
ORDER BY data_time
|
||||
</select>
|
||||
</mapper>
|
||||
@ -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>
|
||||
Loading…
x
Reference in New Issue
Block a user