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

View File

@ -34,17 +34,19 @@ public class DailyPowerOutageEventVO {
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 List<Integer> ma10;
private List<Integer> ma20;
private List<Integer> ma30;
private KLineVO faultUserKline;
/**
* 计划K线图
*/
private KLineVO scheduledUserKline;
/**
* 日累计降雨量
@ -82,7 +84,6 @@ public class DailyPowerOutageEventVO {
List<DailyChartCollectVO> collectVOList;
public void initList() {
kline = new ArrayList<>();
userCounts = new ArrayList<>();
cumulativeRain = new ArrayList<>();
avgRain = new ArrayList<>();
@ -90,11 +91,14 @@ public class DailyPowerOutageEventVO {
maxTemp = new ArrayList<>();
minTemp = new ArrayList<>();
windSpeed = new ArrayList<>();
ma5 = new ArrayList<>();
ma10 = new ArrayList<>();
ma20 = new ArrayList<>();
ma30 = new ArrayList<>();
faultUserCountList = 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.DailyPowerOutageEventVO;
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.utils.TimeUtil;
import lombok.NonNull;
@ -57,9 +58,25 @@ public class DnerDailyPowerOutageEventServiceImpl
List<DailyChartCollectVO> collectVOList = new ArrayList<>();
for (int i = 0; i < result.getUserCounts().size(); i++) {
collectVOList.add(new DailyChartCollectVO().setUserCount(result.getUserCounts().get(i))
.setKlineObj(result.getKline().get(i)).setMa5Obj(result.getMa5().get(i))
.setMa10Obj(result.getMa10().get(i)).setMa20Obj(result.getMa20().get(i))
.setMa30Obj(result.getMa30().get(i)).setCumulativeRainObj(result.getCumulativeRain().get(i))
.setKlineSingle(new KLineSingleVO()
.setKlineObj(result.getUserKline().getKline().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))
.setMaxTempObj(result.getMaxTemp().get(i)).setMinTempObj(result.getMinTemp().get(i))
.setWindSpeedObj(result.getWindSpeed().get(i))
@ -71,18 +88,33 @@ public class DnerDailyPowerOutageEventServiceImpl
private static void setDailyData(DnerDailyPowerOutageEvent event, DailyPowerOutageEventVO result,
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.getAvgRain().add(Double.valueOf(event.getHourlyPrecipitation()));
result.getAvgTemp().add(Double.valueOf(event.getTemperature()));
result.getMaxTemp().add(Double.valueOf(event.getHourlyMaxTemperature()));
result.getMinTemp().add(Double.valueOf(event.getHourlyMinTemperature()));
result.getMa5().add(getMa(event, dateTimeAndEntityMap, 5));
result.getMa10().add(getMa(event, dateTimeAndEntityMap, 10));
result.getMa20().add(getMa(event, dateTimeAndEntityMap, 20));
result.getMa30().add(getMa(event, dateTimeAndEntityMap, 30));
// 总的
result.getUserKline().getKline().add(Arrays.asList(event.getStarUserCount(), event.getEndUserCount(),
event.getMinUserCount(), event.getMaxUserCount()));
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.getUserCounts().add(event.getUserCount());
result.getFaultUserCountList().add(event.getFaultUserCount());
@ -91,16 +123,29 @@ public class DnerDailyPowerOutageEventServiceImpl
private static void setZeroData(DailyPowerOutageEventVO result) {
List<Integer> klineE = Arrays.asList(0, 0, 0, 0);
result.getKline().add(klineE);
result.getCumulativeRain().add(0.0);
result.getAvgRain().add(0.0);
result.getAvgTemp().add(0.0);
result.getMaxTemp().add(0.0);
result.getMinTemp().add(0.0);
result.getMa5().add(0);
result.getMa10().add(0);
result.getMa20().add(0);
result.getMa30().add(0);
// 总的
result.getUserKline().getKline().add(klineE);
result.getUserKline().getMa5().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.getUserCounts().add(0);
result.getFaultUserCountList().add(0);
@ -109,10 +154,29 @@ public class DnerDailyPowerOutageEventServiceImpl
private static int getMa(DnerDailyPowerOutageEvent event,
Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap,
int maNum) {
int maNum, int maType) {
int userCount = 0;
List<String> maDateList = TimeUtil.getBetweenDates(
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) {
DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date);
if (!Objects.isNull(outageEvent)) {

View File

@ -7,7 +7,9 @@
<select id="selectListByConditions">
select `id`, `org_code`, `data_time`, `hourly_precipitation`, `daily_precipitation`, `temperature`,
`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`
from dner_daily_power_outage_event
where org_code = #{orgCode}