diff --git a/Doc/长春云校部署与开发.txt b/Doc/长春云校部署与开发.txt new file mode 100644 index 00000000..73098edb --- /dev/null +++ b/Doc/长春云校部署与开发.txt @@ -0,0 +1,26 @@ +A、方案 +二枢纽机房 + +步骤: +让申健把我们需要的数据写入到教学组的一台Mysql实例中,比如: +host:10.10.15.178 +port:43306 +user:ccyx +pwd:dsideal +database:ccyx_statistics + +目前金阳给的VPN无法连接到我们当初部署的主机,已经联系白阅明进行检查维修,但不敢保证一定能到期修复。 + +B、方案 +如果因服务器硬件或网络限制等原因,造成最终无法实现部署到二枢纽机房的话,另一个部署办法就是部署到华为政务云,这里有我们的服务器可以使用。 + +采用www.ccsjy.cn的门户站主机:Windows+VPN的方式就可以连接到二枢纽的主机,将申健给出的数据进行读取后写入到部署到www.ccsjy.cn的DataEase或者MaxKB数据库中。 + +https://10.10.200.18/ui/#/login + + +AI教育助手 +1、提供李科长最常用的学校、班级数、教职工数、专任教师数、学生数的EXCEL表格下载。 +2、有关长春云校的统计分析EXCEL下载。 +3、长春云校的一些相关知识。 +4、长春云校课程建设情况的EXCEL下载,思维导图展示等。 diff --git a/pom.xml b/pom.xml index de470025..fb39c0e4 100644 --- a/pom.xml +++ b/pom.xml @@ -204,6 +204,7 @@ poi-ooxml 5.2.5 + org.jsoup diff --git a/src/main/java/UnitTest/WordDocumentGenerator.java b/src/main/java/UnitTest/WordDocumentGenerator.java new file mode 100644 index 00000000..44a525a4 --- /dev/null +++ b/src/main/java/UnitTest/WordDocumentGenerator.java @@ -0,0 +1,70 @@ +package UnitTest; + +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xddf.usermodel.chart.*; +import org.apache.poi.xwpf.usermodel.*; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class WordDocumentGenerator { + public static void main(String[] args) throws Exception { + String templatePath = "D:\\word\\line-chart-template.docx"; + + InputStream is = new FileInputStream(templatePath); + XWPFDocument doc = new XWPFDocument(is); + + //模拟统计图数据 + //系列 + String[] seriesTitles = {"日处理能力(kg)", "湿垃圾(kg)", "干垃圾(kg)"}; + //x轴 + String[] categories = {"2020-02-20", "2020-02-21", "2020-02-22", "2020-02-23", "2020-02-24", "2020-02-25", "2020-02-26"}; + List values = new ArrayList<>(); + //日处理能力 + Number[] value1 = {1000, 1000, 1000, 1000, 1000, 1000, 1000}; + //湿垃圾 + Number[] value2 = {450.2, 622.1, 514, 384.7, 486.5, 688.9, 711.1}; + //干垃圾 + Number[] value3 = {200.2, 321.4, 266, 156.5, 232.2, 325.5, 319.5}; + + values.add(value1); + values.add(value2); + values.add(value3); + + XWPFChart xChart = doc.getCharts().get(0);//获取第1个图表 + generateChart(xChart, seriesTitles, categories, values); + + try (FileOutputStream fos = new FileOutputStream("D:\\word\\test.docx")) { + doc.write(fos); + } + + } + + public static void generateChart(XWPFChart chart, String[] series, String[] categories, List values) { + String chartTitle = "收运量统计图"; + final List data = chart.getChartSeries();//不知道这个ChartSeries代表什么意思 + final XDDFLineChartData line = (XDDFLineChartData) data.get(0);//这里一般获取第一个,我们这里是折线图就是XDDFLineChartData + + final int numOfPoints = categories.length; + + final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0)); + + final XDDFDataSource categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, 0); + for (int i = 0; i < values.size(); i++) { + final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, i + 1, i + 1)); + Number[] value = values.get(i); + final XDDFNumericalDataSource valuesData = XDDFDataSourcesFactory.fromArray(value, valuesDataRange, i + 1); + XDDFChartData.Series ser;//图表中的系列 + ser = line.getSeries().get(i); + ser.replaceData(categoriesData, valuesData); + CellReference cellReference = chart.setSheetTitle(series[i], 1);//修改系列标题 + ser.setTitle(series[i], cellReference); + } + + chart.plot(line); + chart.setTitleText(chartTitle);//折线图标题 + chart.setTitleOverlay(false); + } +} diff --git a/数据分析报告.docx b/数据分析报告.docx new file mode 100644 index 00000000..359ecc2a Binary files /dev/null and b/数据分析报告.docx differ diff --git a/销售数据分析报告.docx b/销售数据分析报告.docx new file mode 100644 index 00000000..efc5e886 Binary files /dev/null and b/销售数据分析报告.docx differ