2026-04-13提交:分时图和K线图的Y轴规则
This commit is contained in:
parent
6d60db333b
commit
95bff13881
@ -0,0 +1,33 @@
|
||||
package com.southern.power.grid.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 图表Y轴规则
|
||||
*
|
||||
* @Author junzhangfm
|
||||
* @Date 2026-04-13
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ChartYScaleRuleVO implements Serializable {
|
||||
private static final long serialVersionUID = 5346512918646769812L;
|
||||
|
||||
/**
|
||||
* 最小值
|
||||
*/
|
||||
Integer min;
|
||||
|
||||
/**
|
||||
* 最大值
|
||||
*/
|
||||
Integer max;
|
||||
|
||||
/**
|
||||
* 刻度
|
||||
*/
|
||||
Double interval;
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.southern.power.grid.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 日K图表Y轴规则汇总
|
||||
*
|
||||
* @Author junzhangfm
|
||||
* @Date 2026-04-13
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class DailyChartYScaleRuleCollectVO implements Serializable {
|
||||
private static final long serialVersionUID = -905304104974547434L;
|
||||
|
||||
/**
|
||||
* 全部停电 ma规则
|
||||
*/
|
||||
private ChartYScaleRuleVO maRule;
|
||||
|
||||
/**
|
||||
* 停电影响用户总数
|
||||
*/
|
||||
private ChartYScaleRuleVO userCountRule;
|
||||
|
||||
/**
|
||||
* 日累计降水量
|
||||
*/
|
||||
private ChartYScaleRuleVO dailyPrecipitationRule;
|
||||
|
||||
/**
|
||||
* 气温
|
||||
*/
|
||||
private ChartYScaleRuleVO temperatureRule;
|
||||
|
||||
/**
|
||||
* 日极大风速
|
||||
*/
|
||||
private ChartYScaleRuleVO extremeWindSpeedRule;
|
||||
}
|
||||
@ -81,7 +81,12 @@ public class DailyPowerOutageEventVO {
|
||||
/**
|
||||
* 汇总集合
|
||||
*/
|
||||
List<DailyChartCollectVO> collectVOList;
|
||||
private List<DailyChartCollectVO> collectVOList;
|
||||
|
||||
/**
|
||||
* 日K图Y轴规则汇总
|
||||
*/
|
||||
private DailyChartYScaleRuleCollectVO dailyChartYScaleRuleCollect;
|
||||
|
||||
public void initList() {
|
||||
userCounts = new ArrayList<>();
|
||||
@ -99,6 +104,9 @@ public class DailyPowerOutageEventVO {
|
||||
.setMa20(new ArrayList<>()).setMa30(new ArrayList<>());
|
||||
scheduledUserKline = new KLineVO().setKline(new ArrayList<>()).setMa5(new ArrayList<>()).setMa10(new ArrayList<>())
|
||||
.setMa20(new ArrayList<>()).setMa30(new ArrayList<>());
|
||||
|
||||
ChartYScaleRuleVO chartYScaleRuleVO = new ChartYScaleRuleVO().setMin(0).setMax(100).setInterval(10.0);
|
||||
dailyChartYScaleRuleCollect = new DailyChartYScaleRuleCollectVO().setMaRule(chartYScaleRuleVO)
|
||||
.setUserCountRule(chartYScaleRuleVO).setDailyPrecipitationRule(chartYScaleRuleVO)
|
||||
.setTemperatureRule(chartYScaleRuleVO).setExtremeWindSpeedRule(chartYScaleRuleVO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
package com.southern.power.grid.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 分时图表Y轴规则汇总
|
||||
*
|
||||
* @Author junzhangfm
|
||||
* @Date 2026-04-13
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class HourlyChartYScaleRuleCollectVO implements Serializable {
|
||||
private static final long serialVersionUID = -6099537585608567152L;
|
||||
|
||||
/**
|
||||
* 小时故障停电用户数
|
||||
*/
|
||||
private ChartYScaleRuleVO faultUserCountRule;
|
||||
|
||||
/**
|
||||
* 小时计划停电用户数
|
||||
*/
|
||||
private ChartYScaleRuleVO scheduledUserCountRule;
|
||||
|
||||
/**
|
||||
* 小时降雨量
|
||||
*/
|
||||
private ChartYScaleRuleVO precRule;
|
||||
|
||||
/**
|
||||
* 平均气温
|
||||
*/
|
||||
private ChartYScaleRuleVO avgTemRule;
|
||||
|
||||
/**
|
||||
* 小时最大气温
|
||||
*/
|
||||
private ChartYScaleRuleVO maxTemRule;
|
||||
|
||||
|
||||
/**
|
||||
* 小时最低气温
|
||||
*/
|
||||
private ChartYScaleRuleVO minTemRule;
|
||||
|
||||
/**
|
||||
* 小时极大风速
|
||||
*/
|
||||
private ChartYScaleRuleVO windRule;
|
||||
}
|
||||
@ -63,6 +63,11 @@ public class HourlyPowerOutageEventChartVO {
|
||||
*/
|
||||
private List<HourlyChartCollectVO> collectVOList;
|
||||
|
||||
/**
|
||||
* Y轴规则汇总
|
||||
*/
|
||||
private HourlyChartYScaleRuleCollectVO hourlyChartYScaleRuleCollect;
|
||||
|
||||
public void initList() {
|
||||
powerOutageUserCountList = new ArrayList<>();
|
||||
faultUserCountList = new ArrayList<>();
|
||||
@ -72,5 +77,10 @@ public class HourlyPowerOutageEventChartVO {
|
||||
minTemList = new ArrayList<>();
|
||||
precList = new ArrayList<>();
|
||||
windList = new ArrayList<>();
|
||||
ChartYScaleRuleVO chartYScaleRuleVO = new ChartYScaleRuleVO().setMin(0).setMax(100).setInterval(10.0);
|
||||
hourlyChartYScaleRuleCollect = new HourlyChartYScaleRuleCollectVO().setPrecRule(chartYScaleRuleVO)
|
||||
.setAvgTemRule(chartYScaleRuleVO).setMaxTemRule(chartYScaleRuleVO).setMinTemRule(chartYScaleRuleVO)
|
||||
.setWindRule(chartYScaleRuleVO).setScheduledUserCountRule(chartYScaleRuleVO)
|
||||
.setFaultUserCountRule(chartYScaleRuleVO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.southern.power.grid.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.southern.power.grid.dao.DnerDailyPowerOutageEventMapper;
|
||||
import com.southern.power.grid.entity.DailyChartCollectVO;
|
||||
@ -8,6 +9,7 @@ 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 com.southern.power.grid.utils.ToolUtils;
|
||||
import lombok.NonNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -15,6 +17,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 日K线停电事件 -- service实现类
|
||||
@ -43,17 +46,63 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
dateTimeList.forEach(e -> { // 遍历开始时间和结束时间的日期
|
||||
DnerDailyPowerOutageEvent event = dateTimeAndEntityMap.get(e);
|
||||
if (Objects.isNull(event)) { // 数据为空,全部默认为0值
|
||||
setZeroData(result);
|
||||
setZeroData(result, dateTimeAndEntityMap, e);
|
||||
} else { // 数据不为空,正常赋值
|
||||
setDailyData(event, result, dateTimeAndEntityMap);
|
||||
}
|
||||
});
|
||||
result.setFullDates(dateTimeList.stream().map(
|
||||
e -> e.replace("-", "/")).collect(Collectors.toList())); // 日期列表
|
||||
// 汇总单个节点数据
|
||||
result.setCollectVOList(getCollectVOList(result));
|
||||
// 汇总日K图Y轴规则
|
||||
handleYScaleRule(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void handleYScaleRule(DailyPowerOutageEventVO result) {
|
||||
List<Integer> kLineList = new ArrayList<>();
|
||||
result.getUserKline().getKline().forEach(kLineList::addAll);
|
||||
kLineList.addAll(result.getUserKline().getMa5());
|
||||
kLineList.addAll(result.getUserKline().getMa10());
|
||||
kLineList.addAll(result.getUserKline().getMa20());
|
||||
kLineList.addAll(result.getUserKline().getMa30());
|
||||
result.getFaultUserKline().getKline().forEach(kLineList::addAll);
|
||||
kLineList.addAll(result.getFaultUserKline().getMa5());
|
||||
kLineList.addAll(result.getFaultUserKline().getMa10());
|
||||
kLineList.addAll(result.getFaultUserKline().getMa20());
|
||||
kLineList.addAll(result.getFaultUserKline().getMa30());
|
||||
result.getScheduledUserKline().getKline().forEach(kLineList::addAll);
|
||||
kLineList.addAll(result.getScheduledUserKline().getMa5());
|
||||
kLineList.addAll(result.getScheduledUserKline().getMa10());
|
||||
kLineList.addAll(result.getScheduledUserKline().getMa20());
|
||||
kLineList.addAll(result.getScheduledUserKline().getMa30());
|
||||
if (!CollectionUtil.isEmpty(kLineList)) {
|
||||
result.getDailyChartYScaleRuleCollect().setMaRule(ToolUtils.getRule(kLineList));
|
||||
}
|
||||
List<Integer> userCountList = new ArrayList<>();
|
||||
userCountList.addAll(result.getUserCounts());
|
||||
userCountList.addAll(result.getFaultUserCountList());
|
||||
userCountList.addAll(result.getScheduledUserCountList());
|
||||
if (!CollectionUtil.isEmpty(userCountList)) {
|
||||
result.getDailyChartYScaleRuleCollect().setUserCountRule(ToolUtils.getRule(userCountList));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getCumulativeRain())) {
|
||||
result.getDailyChartYScaleRuleCollect().setDailyPrecipitationRule(
|
||||
ToolUtils.getRule(result.getCumulativeRain()));
|
||||
}
|
||||
List<Double> tempList = new ArrayList<>();
|
||||
tempList.addAll(result.getAvgTemp());
|
||||
tempList.addAll(result.getMaxTemp());
|
||||
tempList.addAll(result.getMinTemp());
|
||||
if (!CollectionUtil.isEmpty(tempList)) {
|
||||
result.getDailyChartYScaleRuleCollect().setDailyPrecipitationRule(ToolUtils.getRule(tempList));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getWindSpeed())) {
|
||||
result.getDailyChartYScaleRuleCollect().setExtremeWindSpeedRule(ToolUtils.getRule(result.getWindSpeed()));
|
||||
}
|
||||
}
|
||||
|
||||
private static @NonNull List<DailyChartCollectVO> getCollectVOList(DailyPowerOutageEventVO result) {
|
||||
List<DailyChartCollectVO> collectVOList = new ArrayList<>();
|
||||
for (int i = 0; i < result.getUserCounts().size(); i++) {
|
||||
@ -96,32 +145,34 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
// 总的
|
||||
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.getUserKline().getMa5().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 5, 0));
|
||||
result.getUserKline().getMa10().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 10, 0));
|
||||
result.getUserKline().getMa20().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 20, 0));
|
||||
result.getUserKline().getMa30().add(getMa(event.getDataTime(), 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.getFaultUserKline().getMa5().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 5, 1));
|
||||
result.getFaultUserKline().getMa10().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 10, 1));
|
||||
result.getFaultUserKline().getMa20().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 20, 1));
|
||||
result.getFaultUserKline().getMa30().add(getMa(event.getDataTime(), 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.getScheduledUserKline().getMa5().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 5, 2));
|
||||
result.getScheduledUserKline().getMa10().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 10, 2));
|
||||
result.getScheduledUserKline().getMa20().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 20, 2));
|
||||
result.getScheduledUserKline().getMa30().add(getMa(event.getDataTime(), dateTimeAndEntityMap, 30, 2));
|
||||
result.getWindSpeed().add(Double.valueOf(event.getExtremeWindSpeedHourly()));
|
||||
result.getUserCounts().add(event.getUserCount());
|
||||
result.getFaultUserCountList().add(event.getFaultUserCount());
|
||||
result.getScheduledUserCountList().add(event.getScheduledUserCount());
|
||||
}
|
||||
|
||||
private static void setZeroData(DailyPowerOutageEventVO result) {
|
||||
private static void setZeroData(DailyPowerOutageEventVO result,
|
||||
Map<String,DnerDailyPowerOutageEvent> dateTimeAndEntityMap,
|
||||
String dataTime) {
|
||||
List<Integer> klineE = Arrays.asList(0, 0, 0, 0);
|
||||
result.getCumulativeRain().add(0.0);
|
||||
result.getAvgRain().add(0.0);
|
||||
@ -130,34 +181,34 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
result.getMinTemp().add(0.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.getUserKline().getMa5().add(getMa(dataTime, dateTimeAndEntityMap, 5, 0));
|
||||
result.getUserKline().getMa10().add(getMa(dataTime, dateTimeAndEntityMap, 10, 0));
|
||||
result.getUserKline().getMa20().add(getMa(dataTime, dateTimeAndEntityMap, 20, 0));
|
||||
result.getUserKline().getMa30().add(getMa(dataTime, dateTimeAndEntityMap, 30, 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.getFaultUserKline().getMa5().add(getMa(dataTime, dateTimeAndEntityMap, 5, 1));
|
||||
result.getFaultUserKline().getMa10().add(getMa(dataTime, dateTimeAndEntityMap, 10, 1));
|
||||
result.getFaultUserKline().getMa20().add(getMa(dataTime, dateTimeAndEntityMap, 20, 1));
|
||||
result.getFaultUserKline().getMa30().add(getMa(dataTime, dateTimeAndEntityMap, 30, 1));
|
||||
// 故障
|
||||
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.getScheduledUserKline().getMa5().add(getMa(dataTime, dateTimeAndEntityMap, 5, 2));
|
||||
result.getScheduledUserKline().getMa10().add(getMa(dataTime, dateTimeAndEntityMap, 10, 2));
|
||||
result.getScheduledUserKline().getMa20().add(getMa(dataTime, dateTimeAndEntityMap, 20, 2));
|
||||
result.getScheduledUserKline().getMa30().add(getMa(dataTime, dateTimeAndEntityMap, 30, 2));
|
||||
result.getWindSpeed().add(0.0);
|
||||
result.getUserCounts().add(0);
|
||||
result.getFaultUserCountList().add(0);
|
||||
result.getScheduledUserCountList().add(0);
|
||||
}
|
||||
|
||||
private static int getMa(DnerDailyPowerOutageEvent event,
|
||||
private static int getMa(String dataTime,
|
||||
Map<String, DnerDailyPowerOutageEvent> dateTimeAndEntityMap,
|
||||
int maNum, int maType) {
|
||||
int userCount = 0;
|
||||
List<String> maDateList = TimeUtil.getBetweenDates(
|
||||
TimeUtil.getBeforeNumDays(event.getDataTime(), maNum - 1), event.getDataTime());
|
||||
TimeUtil.getBeforeNumDays(dataTime, maNum - 1), dataTime);
|
||||
if (1 == maType) { // 故障类
|
||||
for (String date : maDateList) {
|
||||
DnerDailyPowerOutageEvent outageEvent = dateTimeAndEntityMap.get(date);
|
||||
@ -165,7 +216,7 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
userCount += outageEvent.getFaultEndUserCount();
|
||||
}
|
||||
}
|
||||
return userCount/maNum;
|
||||
return (userCount + maNum - 1)/maNum; // 向上取整
|
||||
}
|
||||
if (2 == maType) { // 计划类
|
||||
for (String date : maDateList) {
|
||||
@ -174,7 +225,7 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
userCount += outageEvent.getScheduledEndUserCount();
|
||||
}
|
||||
}
|
||||
return userCount/maNum;
|
||||
return (userCount + maNum - 1)/maNum;
|
||||
}
|
||||
// 总的
|
||||
for (String date : maDateList) {
|
||||
@ -183,6 +234,6 @@ public class DnerDailyPowerOutageEventServiceImpl
|
||||
userCount += outageEvent.getEndUserCount();
|
||||
}
|
||||
}
|
||||
return userCount/maNum;
|
||||
return (userCount + maNum - 1)/maNum;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.southern.power.grid.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.southern.power.grid.dao.DnerHourlyPowerOutageEventMapper;
|
||||
import com.southern.power.grid.entity.DnerHourlyPowerOutageEvent;
|
||||
@ -7,6 +8,7 @@ import com.southern.power.grid.entity.HourlyChartCollectVO;
|
||||
import com.southern.power.grid.entity.HourlyPowerOutageEventChartVO;
|
||||
import com.southern.power.grid.service.IDnerHourlyPowerOutageEventService;
|
||||
import com.southern.power.grid.utils.TimeUtil;
|
||||
import com.southern.power.grid.utils.ToolUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -53,6 +55,7 @@ public class DnerHourlyPowerOutageEventServiceImpl
|
||||
}
|
||||
});
|
||||
result.setDateList(TimeUtil.generateHourList(startDate, endDate)); // 日期列表
|
||||
// 汇总单个节点数据
|
||||
List<HourlyChartCollectVO> collectVOList = new ArrayList<>();
|
||||
for (int i = 0; i < result.getPowerOutageUserCountList().size(); i++) {
|
||||
collectVOList.add(new HourlyChartCollectVO()
|
||||
@ -63,9 +66,42 @@ public class DnerHourlyPowerOutageEventServiceImpl
|
||||
.setScheduledUserCount(result.getScheduledUserCountList().get(i)));
|
||||
}
|
||||
result.setCollectVOList(collectVOList);
|
||||
// 汇总分时图Y轴规则
|
||||
handleYScaleRule(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void handleYScaleRule(HourlyPowerOutageEventChartVO result) {
|
||||
if (!CollectionUtil.isEmpty(result.getFaultUserCountList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setFaultUserCountRule(
|
||||
ToolUtils.getRule(result.getFaultUserCountList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getScheduledUserCountList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setScheduledUserCountRule(
|
||||
ToolUtils.getRule(result.getScheduledUserCountList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getPrecList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setPrecRule(
|
||||
ToolUtils.getRule(result.getPrecList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getAvgTemList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setAvgTemRule(
|
||||
ToolUtils.getRule(result.getAvgTemList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getMaxTemList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setMaxTemRule(
|
||||
ToolUtils.getRule(result.getMaxTemList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getMinTemList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setMinTemRule(
|
||||
ToolUtils.getRule(result.getMinTemList()));
|
||||
}
|
||||
if (!CollectionUtil.isEmpty(result.getWindList())) {
|
||||
result.getHourlyChartYScaleRuleCollect().setWindRule(
|
||||
ToolUtils.getRule(result.getWindList()));
|
||||
}
|
||||
}
|
||||
|
||||
private static void setHourlyData(HourlyPowerOutageEventChartVO result, DnerHourlyPowerOutageEvent event) {
|
||||
result.getPowerOutageUserCountList().add(event.getUserCount()); // 停电影响用户总数
|
||||
result.getFaultUserCountList().add(event.getFaultUserCount()); // 故障停电影响用户总数
|
||||
|
||||
34
src/main/java/com/southern/power/grid/utils/ToolUtils.java
Normal file
34
src/main/java/com/southern/power/grid/utils/ToolUtils.java
Normal file
@ -0,0 +1,34 @@
|
||||
package com.southern.power.grid.utils;
|
||||
|
||||
import com.southern.power.grid.entity.ChartYScaleRuleVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 工具类
|
||||
*
|
||||
* @Author junzhangfm
|
||||
* @Date 2026-04-13
|
||||
*/
|
||||
public class ToolUtils {
|
||||
public static ChartYScaleRuleVO getRule(List<? extends Number> list) {
|
||||
Number first = list.get(0);
|
||||
if (first instanceof Integer) {
|
||||
int min = list.stream().mapToInt(Number::intValue).min().orElse(0);
|
||||
int max = list.stream().mapToInt(Number::intValue).max().orElse(0);
|
||||
max = max == 0 ? 100 : max;
|
||||
double interval = Math.round((double) (max - min) / 10 * 10) / 10.0;
|
||||
return new ChartYScaleRuleVO().setMin(min).setMax(max).setInterval(interval);
|
||||
} else if (first instanceof Double) {
|
||||
double min = list.stream().mapToDouble(Number::doubleValue).min().orElse(0);
|
||||
int floorMin = (int) Math.floor(min);
|
||||
double max = list.stream().mapToDouble(Number::doubleValue).max().orElse(0);
|
||||
int ceilMax = (int) Math.ceil(max);
|
||||
ceilMax = ceilMax == 0 ? 100 : ceilMax;
|
||||
double interval = Math.round((double) (ceilMax - floorMin) / 10 * 10) / 10.0;
|
||||
return new ChartYScaleRuleVO().setMin(floorMin).setMax(ceilMax).setInterval(interval);
|
||||
} else {
|
||||
throw new RuntimeException("Only supports the data types of Integer and Double!");
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user