洪城义警-正式版后台
zengh
2022-05-26 4310c19a73f960dfd79c90cfe960cf564b068f72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package org.springblade.modules.pie;
 
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.springframework.web.bind.annotation.RestController;
 
import java.awt.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
 
@RestController
public class JFreeChartUtil {
 
 
 
    public JFreeChartUtil() {
    }
 
    public static void main(String[] args) {
        DefaultPieDataset pds = new DefaultPieDataset();
 
        pds.setValue("00点", 100);
        pds.setValue("04点", 200);
        pds.setValue("08点", 300);
        String filePath = "d:/pie.jpg";
        createPieChart(pds);
 
    }
 
    public static void createPieChart(DefaultPieDataset pds) {
 
//        AnimalHeatService animalHeatService = new AnimalHeatServiceImpl();
//
//        AnimalHeatVo animalHeatVo = new AnimalHeatVo();
//        animalHeatVo.setStatus(1);
//        animalHeatVo.setBegTime("2021-04-01 00:00:00");
//        animalHeatVo.setEndTime("2021-04-01 00:00:00");
//
//        List<ReportReturnData> heatExcels = animalHeatService.getAnimalHeatPie(animalHeatVo);
 
        try {
            // 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
            JFreeChart chart = ChartFactory.createPieChart("体温数据分布图", pds, false, false, true);
            // 如果不使用Font,中文将显示不出来
            Font font = new Font("宋体", Font.BOLD, 24);
            // 设置图片标题的字体
            chart.getTitle().setFont(font);
            // 得到图块,准备设置标签的字体
            PiePlot plot = (PiePlot) chart.getPlot();
            // 设置标签字体
            plot.setLabelFont(font);
            plot.setStartAngle(new Float(3.14f / 2f));
            // 设置plot的前景色透明度
            plot.setForegroundAlpha(0.7f);
            // 设置plot的背景色透明度
            plot.setBackgroundAlpha(0.0f);
            // 设置标签生成器(默认{0})
            // {0}:key {1}:value {2}:百分比 {3}:sum
            plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}占{2})"));
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
            ArrayList<ImageData> list = new ArrayList<>();
            ImageData imageData = new ImageData();
            try {
                // 将图表写入到ByteArrayOutputStream流中
                ChartUtilities.writeChartAsJPEG(bos, chart, 800, 700);
                InputStream inputStream = new ByteArrayInputStream(bos.toByteArray());
                String fileName = "imageWrite" + System.currentTimeMillis() + ".xlsx";
                imageData.setInputStream(inputStream);
                list.add(imageData);
                //写入
                ExcelWriter excelWriter  = EasyExcel.write(fileName).build();
 
                WriteSheet writeSheet = EasyExcel.writerSheet(0, "模板0").head(ImageData.class).build();
                excelWriter.write(list, writeSheet);
 
//                WriteSheet writeSheet0 = EasyExcel.writerSheet(1, "模板1").head(ReportReturnData.class).build();
//                excelWriter.write(heatExcels, writeSheet0);
 
                excelWriter.finish();
 
 
                //EasyExcel.write(fileName, ImageData.class).sheet().doWrite(list);
                //EasyExcel.write(fileName, ImageData.class).sheet().doWrite(list);
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 将内存中的图片写到本地硬盘
            //ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 600, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
        }
    }
}