添加暂态事件波形图后台绘图并保存文件服务器

This commit is contained in:
2023-09-21 16:19:25 +08:00
parent 7de4f8f551
commit 2d3d21504b
25 changed files with 183 additions and 1644 deletions

View File

@@ -1,6 +1,5 @@
package com.njcn.echarts.json;
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;
@@ -8,8 +7,6 @@ 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.*;
import org.icepear.echarts.components.coord.cartesian.CategoryAxis;
@@ -17,17 +14,14 @@ import org.icepear.echarts.components.coord.cartesian.LogAxis;
import org.icepear.echarts.components.coord.cartesian.ValueAxis;
import org.icepear.echarts.components.grid.Grid;
import org.icepear.echarts.components.legend.Legend;
import org.icepear.echarts.components.text.Label;
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;
import java.util.Arrays;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Map;
/**
@@ -252,7 +246,7 @@ public class LineGenerator {
persistentTimeOption.setYAxis(new ValueAxis()
.setName("(次)")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
);
);
//配置占比
@@ -264,6 +258,7 @@ public class LineGenerator {
persistentTimeOption.setSeries(new SeriesOption[]{proportion});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 生成电压暂降,已关联未关联得次数
* @author hongawen
@@ -307,7 +302,7 @@ public class LineGenerator {
.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});
persistentTimeOption.setSeries(new SeriesOption[]{proportion, proportion2});
return ENGINE.renderJsonOption(persistentTimeOption);
}
@@ -358,7 +353,7 @@ public class LineGenerator {
* @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) {
public static String generateRegionDeviceOption(List<String> xData, List<Integer> onlineData, List<Integer> offlineData, String subtext, String xName) {
Option persistentTimeOption = new Option();
//取消渲染动画
persistentTimeOption.setAnimation(false);
@@ -398,7 +393,7 @@ public class LineGenerator {
.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});
persistentTimeOption.setSeries(new SeriesOption[]{proportion, proportion2});
return ENGINE.renderJsonOption(persistentTimeOption);
}
@@ -407,7 +402,7 @@ public class LineGenerator {
* @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) {
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);
@@ -418,7 +413,7 @@ public class LineGenerator {
.setSubtext(subtext)
);
//设置图例
persistentTimeOption.setLegend(new Legend().setData(new String[]{"暂降次数", "中断次数","暂升次数"}).setLeft(10).setShow(true));
persistentTimeOption.setLegend(new Legend().setData(new String[]{"暂降次数", "中断次数", "暂升次数"}).setLeft(10).setShow(true));
//横坐标
persistentTimeOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
@@ -453,7 +448,73 @@ public class LineGenerator {
.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});
persistentTimeOption.setSeries(new SeriesOption[]{proportion, proportion2, proportion3});
return ENGINE.renderJsonOption(persistentTimeOption);
}
/***
* 准备波形json
* @author hongawen
* @date 2023/9/21 9:41
* @return String
*/
public static String generateWaveOption(String title, List<List<Float>> aValue, List<List<Float>> bValue, List<List<Float>> cValue, String unit, Float max, Float min, String a, String b, String c, List<String> colors, Boolean isOpen) {
DecimalFormat df1 = new DecimalFormat("#.00");
DecimalFormat df2 = new DecimalFormat("#");
Option instantOption = new Option();
//取消渲染动画
instantOption.setAnimation(false);
//背景色
instantOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
instantOption.setTitle(new Title()
.setText(title)
.setLeft(PicCommonData.CENTER)
.setTextStyle(new Label().setFontSize(14))
);
//配置颜色
instantOption.setColor(colors.toArray(new String[colors.size()]));
//配置图例
if (isOpen) {
instantOption.setLegend(new Legend().setData(new String[]{a, b}).setLeft("10px"));
} else {
instantOption.setLegend(new Legend().setData(new String[]{a, b, c}).setLeft("10px"));
}
//上下左右的图内间距
instantOption.setGrid(new Grid().setTop("60px").setLeft("55px").setRight("40px").setBottom("10%"));
//横坐标
instantOption.setXAxis(new ValueAxis().setName("ms")
.setMax(df2.format(aValue.get(0).get(0)))
.setMin(df2.format(aValue.get(aValue.size() - 1).get(0)))
.setSplitLine(new SplitLine().setShow(false))
.setAxisLine(new AxisLine().setOnZero(false))
.setMinInterval(1)
);
//纵坐标
instantOption.setYAxis(new ValueAxis()
.setName(unit)
.setMax(df1.format(max * 1.1))
.setMin(df1.format(min * 1.1))
.setPosition(PicCommonData.LEFT)
.setAxisLine(new AxisLine().setShow(false).setOnZero(false))
);
//数据信息
LineSeries aSeries = new LineSeries()
.setName(a)
.setSmooth(true)
.setSymbol("none")
.setData(aValue);
LineSeries bSeries = new LineSeries()
.setName(b)
.setSmooth(true)
.setSymbol("none")
.setData(bValue);
LineSeries cSeries = new LineSeries()
.setName(c)
.setSmooth(true)
.setSymbol("none")
.setData(cValue);
instantOption.setSeries(new LineSeries[]{aSeries, bSeries, cSeries});
return ENGINE.renderJsonOption(instantOption);
}
}