2026-03-25提交:查询接口调整

This commit is contained in:
junzhangfm 2026-03-25 17:45:34 +08:00
parent 5c0b0b99c4
commit fd06ec8cf7
6 changed files with 166 additions and 36 deletions

View File

@ -30,17 +30,19 @@ public class DailyChartCollectVO {
private Integer scheduledUserCount; private Integer scheduledUserCount;
/** /**
* K线数组每一项包含起始值结束值最低最高 * 单个时间点的总K线指标
*/ */
private List<Integer> klineObj; private KLineSingleVO klineSingle;
/** /**
* 近5/10/20/30日其下各县区23时停电用户数累加/县数量 * 单个时间点的故障类K线指标
*/ */
private Integer ma5Obj; private KLineSingleVO faultKlineSingle;
private Integer ma10Obj;
private Integer ma20Obj; /**
private Integer ma30Obj; * 单个时间点的计划类K线指标
*/
private KLineSingleVO scheduledKlineSingle;
/** /**
* 日累计降雨量 * 日累计降雨量

View File

@ -34,17 +34,19 @@ public class DailyPowerOutageEventVO {
private List<Integer> scheduledUserCountList; private List<Integer> scheduledUserCountList;
/** /**
* K线数组每一项包含起始值结束值最低最高 * K线
*/ */
private List<List<Integer>> kline; private KLineVO userKline;
/** /**
* 近5/10/20/30日其下各县区23时停电用户数累加/县数量 * 故障K线图
*/ */
private List<Integer> ma5; private KLineVO faultUserKline;
private List<Integer> ma10;
private List<Integer> ma20; /**
private List<Integer> ma30; * 计划K线图
*/
private KLineVO scheduledUserKline;
/** /**
* 日累计降雨量 * 日累计降雨量
@ -82,7 +84,6 @@ public class DailyPowerOutageEventVO {
List<DailyChartCollectVO> collectVOList; List<DailyChartCollectVO> collectVOList;
public void initList() { public void initList() {
kline = new ArrayList<>();
userCounts = new ArrayList<>(); userCounts = new ArrayList<>();
cumulativeRain = new ArrayList<>(); cumulativeRain = new ArrayList<>();
avgRain = new ArrayList<>(); avgRain = new ArrayList<>();
@ -90,11 +91,14 @@ public class DailyPowerOutageEventVO {
maxTemp = new ArrayList<>(); maxTemp = new ArrayList<>();
minTemp = new ArrayList<>(); minTemp = new ArrayList<>();
windSpeed = new ArrayList<>(); windSpeed = new ArrayList<>();
ma5 = new ArrayList<>();
ma10 = new ArrayList<>();
ma20 = new ArrayList<>();
ma30 = new ArrayList<>();
faultUserCountList = new ArrayList<>(); faultUserCountList = new ArrayList<>();
scheduledUserCountList = new ArrayList<>(); scheduledUserCountList = new ArrayList<>();
userKline = new KLineVO().setKline(new ArrayList<>()).setMa5(new ArrayList<>()).setMa10(new ArrayList<>())
.setMa20(new ArrayList<>()).setMa30(new ArrayList<>());
faultUserKline = new KLineVO().setKline(new ArrayList<>()).setMa5(new ArrayList<>()).setMa10(new ArrayList<>())
.setMa20(new ArrayList<>()).setMa30(new ArrayList<>());
scheduledUserKline = new KLineVO().setKline(new ArrayList<>()).setMa5(new ArrayList<>()).setMa10(new ArrayList<>())
.setMa20(new ArrayList<>()).setMa30(new ArrayList<>());
} }
} }

View File

@ -0,0 +1,29 @@
package com.southern.power.grid.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 单个时间点的K线指标
*
* @author: junzhangfm
* @date: 2026/3/25
**/
@Data
@Accessors(chain = true)
public class KLineSingleVO {
/**
* K线数组每一项包含起始值结束值最低最高
*/
private List<Integer> klineObj;
/**
* 近5/10/20/30日其下各县区23时停电用户数累加/县数量
*/
private Integer ma5Obj;
private Integer ma10Obj;
private Integer ma20Obj;
private Integer ma30Obj;
}

View File

@ -0,0 +1,29 @@
package com.southern.power.grid.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* K线图实体
*
* @author: junzhangfm
* @date: 2026/3/25
**/
@Data
@Accessors(chain = true)
public class KLineVO {
/**
* K线数组每一项包含起始值结束值最低最高
*/
private List<List<Integer>> kline;
/**
* 近5/10/20/30日其下各县区23时停电用户数累加/县数量
*/
private List<Integer> ma5;
private List<Integer> ma10;
private List<Integer> ma20;
private List<Integer> ma30;
}

View File

@ -5,6 +5,7 @@ import com.southern.power.grid.dao.DnerDailyPowerOutageEventMapper;
import com.southern.power.grid.entity.DailyChartCollectVO; import com.southern.power.grid.entity.DailyChartCollectVO;
import com.southern.power.grid.entity.DailyPowerOutageEventVO; import com.southern.power.grid.entity.DailyPowerOutageEventVO;
import com.southern.power.grid.entity.DnerDailyPowerOutageEvent; import com.southern.power.grid.entity.DnerDailyPowerOutageEvent;
import com.southern.power.grid.entity.KLineSingleVO;
import com.southern.power.grid.service.IDnerDailyPowerOutageEventService; import com.southern.power.grid.service.IDnerDailyPowerOutageEventService;
import com.southern.power.grid.utils.TimeUtil; import com.southern.power.grid.utils.TimeUtil;
import lombok.NonNull; import lombok.NonNull;
@ -57,9 +58,25 @@ public class DnerDailyPowerOutageEventServiceImpl
List<DailyChartCollectVO> collectVOList = new ArrayList<>(); List<DailyChartCollectVO> collectVOList = new ArrayList<>();
for (int i = 0; i < result.getUserCounts().size(); i++) { for (int i = 0; i < result.getUserCounts().size(); i++) {
collectVOList.add(new DailyChartCollectVO().setUserCount(result.getUserCounts().get(i)) collectVOList.add(new DailyChartCollectVO().setUserCount(result.getUserCounts().get(i))
.setKlineObj(result.getKline().get(i)).setMa5Obj(result.getMa5().get(i)) .setKlineSingle(new KLineSingleVO()
.setMa10Obj(result.getMa10().get(i)).setMa20Obj(result.getMa20().get(i)) .setKlineObj(result.getUserKline().getKline().get(i))
.setMa30Obj(result.getMa30().get(i)).setCumulativeRainObj(result.getCumulativeRain().get(i)) .setMa5Obj(result.getUserKline().getMa5().get(i))
.setMa10Obj(result.getUserKline().getMa10().get(i))
.setMa20Obj(result.getUserKline().getMa20().get(i))
.setMa30Obj(result.getUserKline().getMa30().get(i)))
.setFaultKlineSingle(new KLineSingleVO()
.setKlineObj(result.getFaultUserKline().getKline().get(i))
.setMa5Obj(result.getFaultUserKline().getMa5().get(i))
.setMa10Obj(result.getFaultUserKline().getMa10().get(i))
.setMa20Obj(result.getFaultUserKline().getMa20().get(i))
.setMa30Obj(result.getFaultUserKline().getMa30().get(i)))
.setScheduledKlineSingle(new KLineSingleVO()
.setKlineObj(result.getScheduledUserKline().getKline().get(i))
.setMa5Obj(result.getScheduledUserKline().getMa5().get(i))
.setMa10Obj(result.getScheduledUserKline().getMa10().get(i))
.setMa20Obj(result.getScheduledUserKline().getMa20().get(i))
.setMa30Obj(result.getScheduledUserKline().getMa30().get(i)))
.setCumulativeRainObj(result.getCumulativeRain().get(i))
.setAvgRainObj(result.getAvgRain().get(i)).setAvgTempObj(result.getAvgTemp().get(i)) .setAvgRainObj(result.getAvgRain().get(i)).setAvgTempObj(result.getAvgTemp().get(i))
.setMaxTempObj(result.getMaxTemp().get(i)).setMinTempObj(result.getMinTemp().get(i)) .setMaxTempObj(result.getMaxTemp().get(i)).setMinTempObj(result.getMinTemp().get(i))
.setWindSpeedObj(result.getWindSpeed().get(i)) .setWindSpeedObj(result.getWindSpeed().get(i))
@ -71,18 +88,33 @@ public class DnerDailyPowerOutageEventServiceImpl
private static void setDailyData(DnerDailyPowerOutageEvent event, DailyPowerOutageEventVO result, private static void setDailyData(DnerDailyPowerOutageEvent event, DailyPowerOutageEventVO result,
Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap) { Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap) {
List<Integer> klineE = Arrays.asList(event.getStarUserCount(), event.getEndUserCount(),
event.getMinUserCount(), event.getMaxUserCount());
result.getKline().add(klineE);
result.getCumulativeRain().add(Double.valueOf(event.getDailyPrecipitation())); result.getCumulativeRain().add(Double.valueOf(event.getDailyPrecipitation()));
result.getAvgRain().add(Double.valueOf(event.getHourlyPrecipitation())); result.getAvgRain().add(Double.valueOf(event.getHourlyPrecipitation()));
result.getAvgTemp().add(Double.valueOf(event.getTemperature())); result.getAvgTemp().add(Double.valueOf(event.getTemperature()));
result.getMaxTemp().add(Double.valueOf(event.getHourlyMaxTemperature())); result.getMaxTemp().add(Double.valueOf(event.getHourlyMaxTemperature()));
result.getMinTemp().add(Double.valueOf(event.getHourlyMinTemperature())); result.getMinTemp().add(Double.valueOf(event.getHourlyMinTemperature()));
result.getMa5().add(getMa(event, dateTimeAndEntityMap, 5)); // 总的
result.getMa10().add(getMa(event, dateTimeAndEntityMap, 10)); result.getUserKline().getKline().add(Arrays.asList(event.getStarUserCount(), event.getEndUserCount(),
result.getMa20().add(getMa(event, dateTimeAndEntityMap, 20)); event.getMinUserCount(), event.getMaxUserCount()));
result.getMa30().add(getMa(event, dateTimeAndEntityMap, 30)); result.getUserKline().getMa5().add(getMa(event, dateTimeAndEntityMap, 5, 0));
result.getUserKline().getMa10().add(getMa(event, dateTimeAndEntityMap, 10, 0));
result.getUserKline().getMa20().add(getMa(event, dateTimeAndEntityMap, 20, 0));
result.getUserKline().getMa30().add(getMa(event, dateTimeAndEntityMap, 30, 0));
// 计划
result.getFaultUserKline().getKline().add(Arrays.asList(event.getFaultStarUserCount(),
event.getFaultEndUserCount(), event.getFaultMinUserCount(), event.getFaultMaxUserCount()));
result.getFaultUserKline().getMa5().add(getMa(event, dateTimeAndEntityMap, 5, 1));
result.getFaultUserKline().getMa10().add(getMa(event, dateTimeAndEntityMap, 10, 1));
result.getFaultUserKline().getMa20().add(getMa(event, dateTimeAndEntityMap, 20, 1));
result.getFaultUserKline().getMa30().add(getMa(event, dateTimeAndEntityMap, 30, 1));
// 故障
result.getScheduledUserKline().getKline().add(Arrays.asList(
event.getScheduledStarUserCount(), event.getScheduledEndUserCount(),
event.getScheduledMinUserCount(), event.getScheduledMaxUserCount()));
result.getScheduledUserKline().getMa5().add(getMa(event, dateTimeAndEntityMap, 5, 2));
result.getScheduledUserKline().getMa10().add(getMa(event, dateTimeAndEntityMap, 10, 2));
result.getScheduledUserKline().getMa20().add(getMa(event, dateTimeAndEntityMap, 20, 2));
result.getScheduledUserKline().getMa30().add(getMa(event, dateTimeAndEntityMap, 30, 2));
result.getWindSpeed().add(Double.valueOf(event.getExtremeWindSpeedHourly())); result.getWindSpeed().add(Double.valueOf(event.getExtremeWindSpeedHourly()));
result.getUserCounts().add(event.getUserCount()); result.getUserCounts().add(event.getUserCount());
result.getFaultUserCountList().add(event.getFaultUserCount()); result.getFaultUserCountList().add(event.getFaultUserCount());
@ -91,16 +123,29 @@ public class DnerDailyPowerOutageEventServiceImpl
private static void setZeroData(DailyPowerOutageEventVO result) { private static void setZeroData(DailyPowerOutageEventVO result) {
List<Integer> klineE = Arrays.asList(0, 0, 0, 0); List<Integer> klineE = Arrays.asList(0, 0, 0, 0);
result.getKline().add(klineE);
result.getCumulativeRain().add(0.0); result.getCumulativeRain().add(0.0);
result.getAvgRain().add(0.0); result.getAvgRain().add(0.0);
result.getAvgTemp().add(0.0); result.getAvgTemp().add(0.0);
result.getMaxTemp().add(0.0); result.getMaxTemp().add(0.0);
result.getMinTemp().add(0.0); result.getMinTemp().add(0.0);
result.getMa5().add(0); // 总的
result.getMa10().add(0); result.getUserKline().getKline().add(klineE);
result.getMa20().add(0); result.getUserKline().getMa5().add(0);
result.getMa30().add(0); result.getUserKline().getMa10().add(0);
result.getUserKline().getMa20().add(0);
result.getUserKline().getMa30().add(0);
// 计划
result.getFaultUserKline().getKline().add(klineE);
result.getFaultUserKline().getMa5().add(0);
result.getFaultUserKline().getMa10().add(0);
result.getFaultUserKline().getMa20().add(0);
result.getFaultUserKline().getMa30().add(0);
// 故障
result.getScheduledUserKline().getKline().add(klineE);
result.getScheduledUserKline().getMa5().add(0);
result.getScheduledUserKline().getMa10().add(0);
result.getScheduledUserKline().getMa20().add(0);
result.getScheduledUserKline().getMa30().add(0);
result.getWindSpeed().add(0.0); result.getWindSpeed().add(0.0);
result.getUserCounts().add(0); result.getUserCounts().add(0);
result.getFaultUserCountList().add(0); result.getFaultUserCountList().add(0);
@ -109,10 +154,29 @@ public class DnerDailyPowerOutageEventServiceImpl
private static int getMa(DnerDailyPowerOutageEvent event, private static int getMa(DnerDailyPowerOutageEvent event,
Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap, Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap,
int maNum) { int maNum, int maType) {
int userCount = 0; int userCount = 0;
List<String> maDateList = TimeUtil.getBetweenDates( List<String> maDateList = TimeUtil.getBetweenDates(
TimeUtil.getBeforeNumDays(event.getDataTime(), maNum - 1), event.getDataTime()); TimeUtil.getBeforeNumDays(event.getDataTime(), maNum - 1), event.getDataTime());
if (1 == maType) { // 故障类
for (String date : maDateList) {
DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date);
if (!Objects.isNull(outageEvent)) {
userCount += outageEvent.getFaultEndUserCount();
}
}
return userCount/maNum;
}
if (2 == maType) { // 计划类
for (String date : maDateList) {
DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date);
if (!Objects.isNull(outageEvent)) {
userCount += outageEvent.getScheduledEndUserCount();
}
}
return userCount/maNum;
}
// 总的
for (String date : maDateList) { for (String date : maDateList) {
DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date); DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date);
if (!Objects.isNull(outageEvent)) { if (!Objects.isNull(outageEvent)) {

View File

@ -7,7 +7,9 @@
<select id="selectListByConditions"> <select id="selectListByConditions">
select `id`, `org_code`, `data_time`, `hourly_precipitation`, `daily_precipitation`, `temperature`, select `id`, `org_code`, `data_time`, `hourly_precipitation`, `daily_precipitation`, `temperature`,
`hourly_max_temperature`, `hourly_min_temperature`, `extreme_wind_speed_hourly`, `user_count`, `hourly_max_temperature`, `hourly_min_temperature`, `extreme_wind_speed_hourly`, `user_count`,
`star_user_count`, `end_user_count`, `min_user_count`, `max_user_count`, `outage_state`, `outage_type`, `star_user_count`, `end_user_count`, `min_user_count`, `max_user_count`, `fault_star_user_count`,
`fault_end_user_count`, `fault_min_user_count`, `fault_max_user_count`, `scheduled_star_user_count`,
`scheduled_end_user_count`,`scheduled_min_user_count`,`scheduled_max_user_count`,
`create_by`, `create_time`, `update_by`, `update_time`, `fault_user_count`, `scheduled_user_count` `create_by`, `create_time`, `update_by`, `update_time`, `fault_user_count`, `scheduled_user_count`
from dner_daily_power_outage_event from dner_daily_power_outage_event
where org_code = #{orgCode} where org_code = #{orgCode}