/*
- 报表的Action
*/
public class ReportAction {
private IReportBiz reportBiz;
/*
- 销售统计报表
*/
public void setReportBiz(IReportBiz reportBiz) {
this.reportBiz = reportBiz;
}
public void orderReport() {
List list = reportBiz.ordersReport();
write(JSON.toJSONString(list));
}
/**
-
输出字符串
-
@param jsonString
*/
public void write(String jsonString) {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding(“UTF-8”);
try {
response.getWriter().print(jsonString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(4)添加上诉所有的配置文件
a、resources/applicationContext_dao.xml当中
b、resources/applicationContext_biz.xml
c、applicationContext_action.xml
d、struts.xml
(5)修改完以上的内依旧不能运行,将SQL转换为HQL
原生SQL与HQL的区别:
a、不能直接用表名、用类名、首字母大写
b、多的一方订单属性=1的一方的别名
package com.itzheng.erp.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import com.itzheng.erp.dao.IRepportDao;
public class ReportDao extends HibernateDaoSupport implements IRepportDao {
@Override
public List ordersReport() {
String hql = "select new Map(gt.name as name ,sum(ol.money) as y) "
-
" from Goodstype gt,Goods gs,Orderdetail ol,Orders o "
-
"where "
-
"gs.goodstype=gt "
-
"and ol.orders = o "
-
"and ol.goodsuuid = gs.uuid "
-
"and o.type = ‘2’ "
-
"group by gt.name ";
return getHibernateTemplate().find(hql);
}
}
访问测试
5、销售报表前端
(1)创建report_order.html
href=“ui/themes/default/easyui.css”>
开始日期:
截止日期:
查询
(2)创建report.js
$(function() {
// 表格数据初始化
$(‘#grid’).datagrid({
url:‘report_orderReport’,
columns : [[
{field:‘name’,title:‘商品类型’,width:100},
{field:‘y’,title:‘销售额’,width:100},
]],
singleSelect : true
});
// 条件查询
$(‘#btnSearch’).bind(‘click’, function() {
var formdata = $(‘#searchForm’).serializeJSON();
$(‘#grid’).datagrid(‘load’, formdata);
});
});
6、销售报表_实现日期查询
(1)修改IRepportDao和ReportDao
package com.itzheng.erp.dao;
import java.util.Date;
import java.util.List;
/*
- 报表数据访问接口
*/
public interface IRepportDao {
/*
- 销售统计报表
*/
List ordersReport(Date startDate,Date endDate);
}
package com.itzheng.erp.dao.impl;
import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import com.itzheng.erp.dao.IRepportDao;
public class ReportDao extends HibernateDaoSupport implements IRepportDao {
@Override
public List ordersReport(Date startDate,Date endDate) {
String hql = "select new Map(gt.name as name ,sum(ol.money) as y) "
-
" from Goodstype gt,Goods gs,Orderdetail ol,Orders o "
-
"where "
-
"gs.goodstype=gt "
-
"and ol.orders = o "
-
"and ol.goodsuuid = gs.uuid "
-
"and o.type = ‘2’ "
-
"group by gt.name ";
return getHibernateTemplate().find(hql);
}
}
(2)修改IReportBiz和ReportBiz
package com.itzheng.erp.biz;
import java.util.Date;
import java.util.List;
/*
- 报表的业务接口
*/
public interface IReportBiz {
/*
- 销售统计报表
*/
List ordersReport(Date startDate,Date endDate);
}
(3)修改ReportAction,添加startDate和endDate属性以及对应的set方法
package com.itzheng.erp.action;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSON;
import com.itzheng.erp.biz.IReportBiz;
/*
- 报表的Action
*/
public class ReportAction {
private IReportBiz reportBiz;
private Date startDate;
private Date endDate;
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
/*
- 销售统计报表
*/
public void setReportBiz(IReportBiz reportBiz) {
this.reportBiz = reportBiz;
}
public void orderReport() {
List list = reportBiz.ordersReport(startDate,endDate);
write(JSON.toJSONString(list));
}
/**
-
输出字符串
-
@param jsonString
*/
public void write(String jsonString) {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding(“UTF-8”);
try {
response.getWriter().print(jsonString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(4)修改report_order.html和report.js
$(function() {
// 表格数据初始化
$(‘#grid’).datagrid({
url:‘report_orderReport’,
columns : [[
{field:‘name’,title:‘商品类型’,width:100},
{field:‘y’,title:‘销售额’,width:100},
]],
singleSelect : true
});
// 条件查询
$(‘#btnSearch’).bind(‘click’, function() {
var formdata = $(‘#searchForm’).serializeJSON();
if(formdata.endDate != ‘’){
formdata+= “23:59:59”
}
$(‘#grid’).datagrid(‘load’, formdata);
});
});
(5)修改ReportDao
package com.itzheng.erp.dao.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import com.itzheng.erp.dao.IRepportDao;
public class ReportDao extends HibernateDaoSupport implements IRepportDao {
@Override
public List ordersReport(Date startDate,Date endDate) {
String hql = "select new Map(gt.name as name ,sum(ol.money) as y) "
-
" from Goodstype gt,Goods gs,Orderdetail ol,Orders o "
-
"where "
-
"gs.goodstype=gt "
-
"and ol.orders = o "
-
"and ol.goodsuuid = gs.uuid "
-
"and o.type = ‘2’ ";
List dateList = new ArrayList();
if(startDate != null) {
hql += "and o.createtime >= ? ";
dateList.add(startDate);
}
if(endDate != null) {
hql += "and o.createtime <= ? ";
dateList.add(endDate);
}
hql += "group by gt.name ";
return getHibernateTemplate().find(hql,dateList.toArray(new Date[]{}));
}
}
运行测试
7、销售报表_数组转换,修改ReportDao
1、JFreeChart(Java)
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
入门demo
在 D 盘根目录生成饼图图片 chart.png
在 D 盘根目录生成饼图图片 chart.png
1)创建JfreeChartDemo工程,创建Maven progect
2)引入相关jar包
3)创建类
4)JFreeCharDemo当中创建main方法并创建DefaultPieDataset对象,向该对象当中设置对应的值
package com.itzheng.demo;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeCharDemo {
public static void main(String[] args) throws IOException {
DefaultPieDataset dataSet = new DefaultPieDataset();
//设置数据集
dataSet.setValue(“家电”, 10086);
dataSet.setValue(“百货”, 9527);
dataSet .setValue(“食品”, 110110);
//参数1:title = 图标的标题
//参数2:PieDataset = 数据集(这里是dataSet)
//参数3:true = 设置是否显示下标题(legend)
//参数4:toopltip:鼠标移动过去的提示
//参数5:url是否为超链接
JFreeChart chart = ChartFactory.createPieChart(“标题”,dataSet,true,false,false);
//保存到本地目录下
//参数1:文件名称,本地的目录
//参数2:图标对象
//参数3:图标的宽度
//参数4:图标的高度
ChartUtilities.saveChartAsPNG(new File(“d:\pie.png”), chart, 500, 500);
}
}
运行上诉程序
成功创建图表
2、Highcharts (JavaScript)
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。
HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
HighCharts 界面美观,由于使用JavaScript编写,所以不需要像Flash和Java那样需要插件才可以运行,而且运行速度快。
另外HighCharts还有很好的兼容性,能够完美支持当前大多数浏览器
我们的ERP项目就采用HighCharts
(1)入门Demo,hightchart的实例
1)创建report_order.html,并引入report.js
开始日期:
截止日期:
查询
2)将highchars.js 拷贝到ui文件夹,并在页面 report_order.html 中引入highchars.js
3)将exporting.js 拷贝到ui文件夹,并在页面 report_order.html 中引入exporting.js
4)创建report.js
$(function() {
// 表格数据初始化
$(‘#grid’).datagrid({
url:‘report_orderReport’,
columns : [[
{field:‘name’,title:‘商品类型’,width:100},
{field:‘y’,title:‘销售额’,width:100},
]],
singleSelect : true,
onLoadSuccess:function(data){
//alert(JSON.stringify(data));
//显示图
showChart(data.rows);
}
});
//点击查询按钮
$(‘#btnSearch’).bind(‘click’,function(){
//把表单数据转换成json对象
var formdata = $(‘#searchForm’).serializeJSON();
if(formdata.endDate != ‘’){
formdata.endDate += " 23:59:59";
}
$(‘#grid’).datagrid(‘load’,formdata);
});
});
//显示图
function showChart(_data){
// Build the chart
$(‘#pieChart’).highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: ‘pie’
},
title: {
text: ‘销售统计’
},
tooltip: {
pointFormat:‘{series.name}: {point.percentage:.1f}%’
},
plotOptions:{
pie:{
allowPointSelect: true,
cursor: ‘pointer’,
dataLabels: {
enabled: true
},
showInLegend: true
}
},
series: [{
name: “比例”,
colorByPoint: true,
data: _data
}]
});
}
6)运行测试
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
n(data){
//alert(JSON.stringify(data));
//显示图
showChart(data.rows);
}
});
//点击查询按钮
$(‘#btnSearch’).bind(‘click’,function(){
//把表单数据转换成json对象
var formdata = $(‘#searchForm’).serializeJSON();
if(formdata.endDate != ‘’){
formdata.endDate += " 23:59:59";
}
$(‘#grid’).datagrid(‘load’,formdata);
});
});
//显示图
function showChart(_data){
// Build the chart
$(‘#pieChart’).highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: ‘pie’
},
title: {
text: ‘销售统计’
},
tooltip: {
pointFormat:‘{series.name}: {point.percentage:.1f}%’
},
plotOptions:{
pie:{
allowPointSelect: true,
cursor: ‘pointer’,
dataLabels: {
enabled: true
},
showInLegend: true
}
},
series: [{
name: “比例”,
colorByPoint: true,
data: _data
}]
});
}
6)运行测试
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
[外链图片转存中…(img-y7ZWSMoz-1714342572108)]
[外链图片转存中…(img-g3gYaGuS-1714342572109)]