diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/TestUtil.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/TestUtil.java deleted file mode 100644 index 05949ea0f..000000000 --- a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/TestUtil.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.njcn.echarts; - -import cn.hutool.json.JSONObject; -import com.github.abel533.echarts.code.Tool; -import com.github.abel533.echarts.code.Trigger; -import com.github.abel533.echarts.json.GsonOption; -import com.github.abel533.echarts.series.Line; -import com.njcn.common.pojo.response.HttpResult; -import lombok.extern.slf4j.Slf4j; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestTemplate; - - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年03月02日 18:59 - */ -@Slf4j -public class TestUtil { - - public static void main(String[] args) throws Exception { - JSONObject s = testEchart(); - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity forEntity = restTemplate.getForEntity("http://192.168.1.14:8910?opt={1}", HttpResult.class,s.toString()); - - System.out.println(forEntity.getBody().getData()); - - System.out.println(1); - - } - - public static JSONObject testEchart() { - String[] types = {"ECS", "实例", "CPU", "MEM"}; - int[][] datas = { - {120, 132, 101, 134, 90, 230, 210}, - {220, 182, 191, 234, 290, 330, 310}, - {150, 232, 201, 154, 190, 330, 410}, - {150, 232, 201, 154, 190, 330, 410} - }; - String title = "资源增长情况"; - GsonOption option = new GsonOption(); - option.title().text(title).x("left");// 大标题、位置 - // 提示工具 - option.tooltip().trigger(Trigger.axis);// 在轴上触发提示数据 - // 工具栏 - option.toolbox().show(true).feature(Tool.saveAsImage);// 显示,保存为图片 - option.legend(types);// 图例 - com.github.abel533.echarts.axis.CategoryAxis category = new com.github.abel533.echarts.axis.CategoryAxis();// 轴分类 - category.data("2019-03-09", "2019-03-02", "2019-03-16"); - category.boundaryGap(false);// 起始和结束两端空白策略 - //循环数据 - for (int i = 0; i < types.length; i++) { - Line line = new Line();// 三条线,三个对象 - String type = types[i]; - line.name(type).stack("总量"); - for (int j = 0; j < datas[i].length; j++) { - line.data(datas[i][j]); - } - option.series(line); - } - if (true) {// 横轴为类别、纵轴为值 - option.xAxis(category);// x轴 - // y轴 - com.github.abel533.echarts.axis.ValueAxis ecsY = new com.github.abel533.echarts.axis.ValueAxis(); - ecsY.name("ECS 台").position("left").axisLine().lineStyle().color("#1E90FF"); - option.yAxis(ecsY); - } else {// 横轴为值、纵轴为类别 - option.xAxis(new com.github.abel533.echarts.axis.ValueAxis());// x轴 - option.yAxis(category);// y轴 - } - - String optionStr = option.toString().replace(" ", ""); - System.out.println(optionStr); - JSONObject jsonObject = new JSONObject(optionStr); - - return jsonObject; - } - - - - - -} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/bar/BarOptionUtil.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/bar/BarOptionUtil.java new file mode 100644 index 000000000..f9c39aec3 --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/bar/BarOptionUtil.java @@ -0,0 +1,84 @@ +package com.njcn.echarts.bar; + +import cn.hutool.json.JSONObject; +import com.github.abel533.echarts.Grid; +import com.github.abel533.echarts.axis.AxisLabel; +import com.github.abel533.echarts.axis.CategoryAxis; +import com.github.abel533.echarts.axis.SplitLine; +import com.github.abel533.echarts.axis.ValueAxis; +import com.github.abel533.echarts.code.AxisType; +import com.github.abel533.echarts.code.SeriesType; +import com.github.abel533.echarts.json.GsonOption; +import com.github.abel533.echarts.series.Bar; +import com.njcn.common.pojo.response.HttpResult; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * + * 用于组装柱状图的option数据 + * + * @author hongawen + * @version 1.0.0 + * @date 2022年08月18日 10:58 + */ +public class BarOptionUtil { + + + public static void main(String[] args) { + JSONObject optionJson = testEchart(); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity forEntity = restTemplate.getForEntity("http://192.168.1.13:8910?opt={1}&width={2}&height={3}", HttpResult.class, optionJson.toString(), 714, 300); + //返回图片对应的base64 + System.out.println(forEntity.getBody().getData()); + System.out.println(1); + + } + + public static JSONObject testEchart() { + List xName = Stream.of("江苏省", "四川省", "海南省").collect(Collectors.toList()); + GsonOption option = new GsonOption(); + // 大标题、位置 + String title = "区域统计"; + option.title().text(title).x("center"); + // 提示工具 + // 在轴上触发提示数据 + option.tooltip().show(false); + // 工具栏 + // 显示,保存为图片 + option.toolbox().show(false); + // 图例 + option.color("#FF7E50"); + option.legend("暂降次数"); + //控制图标在dataroom中的位置大小 + option.grid(new Grid().left("3%").right("15%").bottom("5%").containLabel(true)); + // 轴分类 + CategoryAxis xAxis = new CategoryAxis(); + xAxis.data(xName.toArray()); + xAxis.splitLine(new SplitLine().show(false)); + xAxis.name("地区\n(监测点数)"); + xAxis.axisLabel(new AxisLabel().interval(0).show(true)); + // 起始和结束两端空白策略 + xAxis.boundaryGap(true); + // x轴 + option.xAxis(xAxis); + //循环数据 + Bar bar = new Bar(); + bar.setType(SeriesType.bar); + bar.barMaxWidth(30); + bar.data(30, 48, 66); + option.series(bar); + // y轴 + ValueAxis yAxis = new ValueAxis(); + yAxis.name("(次)").type(AxisType.value); + option.yAxis(yAxis); + String optionStr = option.toString().replace(" ", ""); + return new JSONObject(optionStr); + } + + +} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/line/LineOptionUtil.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/line/LineOptionUtil.java new file mode 100644 index 000000000..1757cee76 --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/line/LineOptionUtil.java @@ -0,0 +1,78 @@ +package com.njcn.echarts.line; + +import cn.hutool.json.JSONObject; +import com.github.abel533.echarts.Grid; +import com.github.abel533.echarts.axis.AxisLabel; +import com.github.abel533.echarts.axis.CategoryAxis; +import com.github.abel533.echarts.axis.SplitLine; +import com.github.abel533.echarts.axis.ValueAxis; +import com.github.abel533.echarts.code.AxisType; +import com.github.abel533.echarts.code.NameLocation; +import com.github.abel533.echarts.code.SeriesType; +import com.github.abel533.echarts.json.GsonOption; +import com.github.abel533.echarts.series.Bar; +import com.github.abel533.echarts.series.Line; +import com.njcn.common.pojo.response.HttpResult; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年08月18日 14:39 + */ +public class LineOptionUtil { + + + public static void main(String[] args) { + JSONObject optionJson = testEchart(); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity forEntity = restTemplate.getForEntity("http://192.168.1.13:8910?opt={1}&width={2}&height={3}", HttpResult.class, optionJson.toString(), 714, 300); + //返回图片对应的base64 + System.out.println(forEntity.getBody().getData()); + System.out.println(1); + + } + + public static JSONObject testEchart() { + List xName = Stream.of("0", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%").collect(Collectors.toList()); + GsonOption option = new GsonOption(); + option.backgroundColor("#F9F9F9"); + // 大标题、位置 + String title = "暂降幅值的概率分布函数"; + option.title().text(title).x("center"); + // 提示工具 + // 在轴上触发提示数据 + option.tooltip().show(false); + // 工具栏 + // 显示,保存为图片 + option.toolbox().show(false); + // 图例 + option.color("#FF7E50"); + //控制图标在dataroom中的位置大小 + option.grid(new Grid().left("3%").right("11%").bottom("5%").containLabel(true)); + // 轴分类 + CategoryAxis xAxis = new CategoryAxis(); + xAxis.data(xName.toArray()); + xAxis.nameGap(5); + xAxis.name("暂降幅值"); + // 起始和结束两端空白策略 + xAxis.boundaryGap(false); + // x轴 + option.xAxis(xAxis); + Line line = new Line("暂降幅值"); + line.setType(SeriesType.line); + line.data(0, 10, 11, 15, 16, 30, 48, 66, 75, 89); + option.series(line); + // y轴 + ValueAxis yAxis = new ValueAxis(); + yAxis.name("概率分布").type(AxisType.value).nameGap(50).nameLocation(NameLocation.middle).axisLabel(new AxisLabel().formatter("{value} %")); + option.yAxis(yAxis); + String optionStr = option.toString().replace(" ", ""); + return new JSONObject(optionStr); + } +} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/constant/PicCommonData.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/constant/PicCommonData.java new file mode 100644 index 000000000..356986fca --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/constant/PicCommonData.java @@ -0,0 +1,40 @@ +package com.njcn.echarts.pojo.constant; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年08月18日 10:39 + */ +public interface PicCommonData { + + /** + * 图形常见宽度 + */ + Integer COMMON_ECHART_WIDTH = 714; + + /** + * 图形常见高度 + */ + Integer COMMON_ECHART_HEIGHT = 300; + + /** + * word中图形常见宽度 + */ + Integer COMMON_POI_WIDTH = 410; + + /** + * word中图形常见高度 + */ + Integer COMMON_POI_HEIGHT = 170; + + /** + * word中地图常见高度 + */ + Integer COMMON_POI_MAP_HEIGHT = 210; + + + + + + +} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/enums/EchartResponseEnum.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/enums/EchartResponseEnum.java new file mode 100644 index 000000000..5f72066b8 --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/pojo/enums/EchartResponseEnum.java @@ -0,0 +1,27 @@ +package com.njcn.echarts.pojo.enums; + +import lombok.Getter; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2021年12月20日 09:56 + */ +@Getter +public enum EchartResponseEnum { + + /** + * 画图模块异常响应码的范围: + */ + ECHART_COMMON_ERROR("A01001","后台远程绘制echart图异常") + ; + + private final String code; + + private final String message; + + EchartResponseEnum(String code, String message) { + this.code = code; + this.message = message; + } +} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/util/DrawPicUtil.java b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/util/DrawPicUtil.java new file mode 100644 index 000000000..c26474b03 --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/util/DrawPicUtil.java @@ -0,0 +1,46 @@ +package com.njcn.echarts.util; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpStatus; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.echarts.pojo.enums.EchartResponseEnum; +import lombok.RequiredArgsConstructor; +import org.springframework.http.RequestEntity; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.util.Objects; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年08月18日 10:27 + */ +@Component +@RequiredArgsConstructor +public class DrawPicUtil { + + private final RestTemplate restTemplate; + + + /** + * 请求目标服务器绘制echart图 + * @param url 目标url,例:http://192.168.1.13:8910?opt={1}&width={2}&height={3} + * @param option 图形参数 + * @param width 图形宽度 + * @param height 图形高度 + * @return 图形的base64数据 + */ + public String drawPic(String url,String option,int width,int height){ + ResponseEntity result = restTemplate.getForEntity(url, HttpResult.class, option, width, height); + if(result.getStatusCodeValue() != HttpStatus.HTTP_OK || Objects.isNull(Objects.requireNonNull(result.getBody()).getData())){ + throw new BusinessException(EchartResponseEnum.ECHART_COMMON_ERROR); + } + return result.getBody().getData().toString(); + } + + + +} diff --git a/pqs-common/common-echarts/src/main/java/com/njcn/echarts/webEchart.js b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/webEchart.js new file mode 100644 index 000000000..2701bd51a --- /dev/null +++ b/pqs-common/common-echarts/src/main/java/com/njcn/echarts/webEchart.js @@ -0,0 +1,42 @@ +var option1 = { + backgroundColor : '#f9f9f9',//背景色, + title : { + text : '暂降幅值的概率分布函数', + x : 'center' + }, + animation : false, + legend : { + show : false, + data : [ '暂降幅值' ] + }, + calculable : true, + xAxis : [ { + type : 'category', + boundaryGap : false, + name : '暂降幅值', + nameLocation : 'center', + nameGap : 20, + nameTextStyle : { + fontSize : 15 + }, + data : [ '0', '10%', '20%', '30%', '40%', '50%', '60%', + '70%', '80%', '90%' ] + } ], + yAxis : [ { + type : 'value', + name : '概率分布', + nameLocation : 'center', + nameGap : 40, + nameTextStyle : { + fontSize : 15 + }, + axisLabel : { + formatter : '{value} %' + } + } ], + series : [ { + name : '暂降幅值', + type : 'line', + data : eventValue + } ] +}; \ No newline at end of file diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/config/FeignConfig.java b/pqs-common/common-web/src/main/java/com/njcn/web/config/FeignConfig.java index 849d00acc..6a9071d7f 100644 --- a/pqs-common/common-web/src/main/java/com/njcn/web/config/FeignConfig.java +++ b/pqs-common/common-web/src/main/java/com/njcn/web/config/FeignConfig.java @@ -1,6 +1,5 @@ package com.njcn.web.config; -import com.nimbusds.jose.JWSObject; import com.njcn.common.pojo.constant.SecurityConstants; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/config/WebConfig.java b/pqs-common/common-web/src/main/java/com/njcn/web/config/WebConfig.java new file mode 100644 index 000000000..b16f54423 --- /dev/null +++ b/pqs-common/common-web/src/main/java/com/njcn/web/config/WebConfig.java @@ -0,0 +1,23 @@ +package com.njcn.web.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年08月18日 10:21 + */ +@Configuration +public class WebConfig { + + /** + * 配置请求对象 + */ + @Bean + public RestTemplate create() { + return new RestTemplate(); + } + +} diff --git a/pqs-common/pom.xml b/pqs-common/pom.xml index 3c900be94..7dfe0edd9 100644 --- a/pqs-common/pom.xml +++ b/pqs-common/pom.xml @@ -21,7 +21,7 @@ common-autocode common-influxdb common-poi - + common-echarts