暂降模块,图表生成替换

This commit is contained in:
wr
2023-06-28 15:30:17 +08:00
parent 57d2c0840b
commit 2eb2a41744
19 changed files with 500 additions and 1844 deletions

View File

@@ -4,15 +4,14 @@ import cn.hutool.core.lang.Console;
import com.njcn.echarts.pojo.bo.TolerateData;
import com.njcn.echarts.pojo.constant.PicCommonData;
import org.icepear.echarts.Option;
import org.icepear.echarts.charts.bar.BarItemStyle;
import org.icepear.echarts.charts.bar.BarLabel;
import org.icepear.echarts.charts.bar.BarSeries;
import org.icepear.echarts.charts.line.LineSeries;
import org.icepear.echarts.charts.pie.PieLabel;
import org.icepear.echarts.charts.pie.PieSeries;
import org.icepear.echarts.charts.scatter.ScatterSeries;
import org.icepear.echarts.components.coord.AxisNameTextStyle;
import org.icepear.echarts.components.coord.SplitLine;
import org.icepear.echarts.components.coord.ValueAxisLabel;
import org.icepear.echarts.components.coord.*;
import org.icepear.echarts.components.coord.cartesian.CategoryAxis;
import org.icepear.echarts.components.coord.cartesian.LogAxis;
import org.icepear.echarts.components.coord.cartesian.ValueAxis;
@@ -21,6 +20,8 @@ import org.icepear.echarts.components.legend.Legend;
import org.icepear.echarts.components.title.Title;
import org.icepear.echarts.components.tooltip.Tooltip;
import org.icepear.echarts.components.visualMap.ContinousVisualMap;
import org.icepear.echarts.origin.chart.bar.BarItemStyleOption;
import org.icepear.echarts.origin.coord.AxisLabelBaseOption;
import org.icepear.echarts.origin.util.SeriesOption;
import org.icepear.echarts.render.Engine;
@@ -222,5 +223,237 @@ public class LineGenerator {
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成区域统计
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateRegionOption(List<String> xData, List<Integer> yData) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
//背景色
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("区域统计"));
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"暂降次数"}).setLeft(10).setShow(true));
//颜色
persistentTimeOption.setColor("orange");
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName("地区\n(监测点数)")
.setAxisLabel(new LogAxisLabel().setShow(true).setFontSize(10).setRotate(0))
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(xData.toArray())
);
//纵坐标
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
//配置占比
BarSeries proportion = new BarSeries()
.setName("暂降次数")
.setBarWidth(30)
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(yData);
persistentTimeOption.setSeries(new SeriesOption[]{proportion});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成电压暂降,已关联未关联得次数
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateAssociatedUnassociatedOption(List<String> eventValue, List<Integer> pereventValue, List<Integer> pereventValue1, String xName) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
//背景色
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText(xName));
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"未关联暂降次数", "已关联处理事件"}).setLeft(10).setShow(true));
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName(xName)
.setAxisLabel(new LogAxisLabel().setShow(true).setFontSize(7).setRotate(0))
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(eventValue.toArray())
);
//纵坐标
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
//配置占比
BarSeries proportion = new BarSeries()
.setName("未关联暂降次数")
.setStack("事件总数")
.setItemStyle(new BarItemStyle().setColor("orange").setBorderColor("orange").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(pereventValue);
BarSeries proportion2 = new BarSeries()
.setName("已关联处理事件")
.setStack("事件总数")
.setItemStyle(new BarItemStyle().setColor("#ccc").setBorderColor("#ccc").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(pereventValue1);
persistentTimeOption.setSeries(new SeriesOption[]{proportion,proportion2});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成电压等级统计
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateVoltageLevelOption(List<String> xData, List<Integer> yData) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
//背景色
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("电压等级"));
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"暂降次数"}).setLeft(10).setShow(true));
//颜色
persistentTimeOption.setColor("orange");
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName("电压等级\n(监测点数)")
.setAxisLabel(new LogAxisLabel().setShow(true).setFontSize(8).setRotate(0).setFontWeight("bold"))
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(xData.toArray())
);
//纵坐标
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
//配置占比
BarSeries proportion = new BarSeries()
.setName("暂降次数")
.setBarWidth(30)
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(yData);
persistentTimeOption.setSeries(new SeriesOption[]{proportion});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成设备运行情况
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateRegionDeviceOption(List<String> xData, List<Integer> onlineData,List<Integer> offlineData,String subtext,String xName) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
//背景色
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("设备运行情况")
.setSubtext(subtext)
);
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"在线", "离线"}).setLeft(10).setShow(true));
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName(xName)
.setAxisLabel(new LogAxisLabel().setShow(true).setFontSize(7).setRotate(0).setFontWeight("bold"))
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(xData.toArray())
);
//纵坐标
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
//配置占比
BarSeries proportion = new BarSeries()
.setName("在线")
.setStack("account")
.setItemStyle(new BarItemStyle().setColor("green").setBorderColor("green").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(onlineData);
BarSeries proportion2 = new BarSeries()
.setName("离线")
.setStack("account")
.setItemStyle(new BarItemStyle().setColor("orange").setBorderColor("orange").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(offlineData);
persistentTimeOption.setSeries(new SeriesOption[]{proportion,proportion2});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成暂态事件次数
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateFrequencyOption(List<String> xData, List<Integer> dip,List<Integer> interruptions,List<Integer> rise,String subtext,String xName) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
//背景色
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("暂态事件次数")
.setSubtext(subtext)
);
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"暂降次数", "中断次数","暂升次数"}).setLeft(10).setShow(true));
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName(xName)
.setAxisLabel(new LogAxisLabel().setShow(true).setFontSize(7).setRotate(0).setFontWeight("bold"))
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(xData.toArray())
);
//纵坐标
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
//配置占比
BarSeries proportion = new BarSeries()
.setName("暂降次数")
.setStack("account")
.setItemStyle(new BarItemStyle().setColor("#ff9966").setBorderColor("#ff9966").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(dip);
BarSeries proportion2 = new BarSeries()
.setName("中断次数")
.setStack("account")
.setItemStyle(new BarItemStyle().setColor("#00dd00").setBorderColor("#00dd00").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(interruptions);
BarSeries proportion3 = new BarSeries()
.setName("暂升次数")
.setStack("account")
.setItemStyle(new BarItemStyle().setColor("#0066ff").setBorderColor("#0066ff").setBorderWidth(2).setBorderRadius(0))
.setLabel(new BarLabel().setShow(true).setColor("#8B008B"))
.setData(rise);
persistentTimeOption.setSeries(new SeriesOption[]{proportion,proportion2,proportion3});
return ENGINE.renderJsonOption(persistentTimeOption);
}
}

View File

@@ -229,4 +229,109 @@ public class DrawPicUtil {
String eventDensityJson = BarGenerator.generateEventDensity(data);
return drawPic(eventDensityJson, width, height);
}
/***
* 绘制生成区域统计图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventRegion(List<String> xData, List<Integer> yData) {
return drawEventRegion(xData,yData, 0, 0);
}
/***
* 绘制生成区域统计图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventRegion(List<String> xData, List<Integer> yData, int width, int height) {
String eventDensityJson = LineGenerator.generateRegionOption(xData,yData);
return drawPic(eventDensityJson, width, height);
}
/***
* 绘制生成电压暂降,已关联未关联得次数图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventAssociatedUnassociated(List<String> eventValue, List<Integer> pereventValue, List<Integer> pereventValue1, String xName) {
return drawEventAssociatedUnassociated(eventValue,pereventValue,pereventValue1,xName, 0, 0);
}
/***
* 绘制生成电压暂降,已关联未关联得次数图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventAssociatedUnassociated(List<String> eventValue, List<Integer> pereventValue, List<Integer> pereventValue1, String xName, int width, int height) {
String eventDensityJson = LineGenerator.generateAssociatedUnassociatedOption(eventValue,pereventValue,pereventValue1,xName);
return drawPic(eventDensityJson, width, height);
}
/***
* 绘制生成区域统计图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventVoltageLevel(List<String> xData, List<Integer> yData) {
return drawEventVoltageLevel(xData,yData, 0, 0);
}
/***
* 绘制生成区域统计图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventVoltageLevel(List<String> xData, List<Integer> yData, int width, int height) {
String eventDensityJson = LineGenerator.generateVoltageLevelOption(xData,yData);
return drawPic(eventDensityJson, width, height);
}
/***
* 绘制生成设备运行情况图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventRegionDevice(List<String> xData, List<Integer> onlineData,List<Integer> offlineData,String subtext,String xName) {
return drawEventRegionDevice(xData,onlineData,offlineData,subtext,xName, 0, 0);
}
/***
* 绘制生成设备运行情况图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventRegionDevice(List<String> xData, List<Integer> onlineData,List<Integer> offlineData,String subtext,String xName, int width, int height) {
String eventDensityJson = LineGenerator.generateRegionDeviceOption(xData,onlineData,offlineData,subtext,xName);
return drawPic(eventDensityJson, width, height);
}
/***
* 绘制生成暂态事件次数图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventFrequency(List<String> xData, List<Integer> dip,List<Integer> interruptions,List<Integer> rise,String subtext,String xName) {
return drawEventFrequency(xData,dip,interruptions,rise,subtext,xName, 0, 0);
}
/***
* 绘制生成暂态事件次数图
* @author hongawen
* @date 2023/6/21 11:01
* @return String base64数据
*/
public String drawEventFrequency(List<String> xData, List<Integer> dip,List<Integer> interruptions,List<Integer> rise,String subtext,String xName, int width, int height) {
String eventDensityJson = LineGenerator.generateFrequencyOption(xData,dip,interruptions,rise,subtext,xName);
return drawPic(eventDensityJson, width, height);
}
}