Java全栈开发---Java ERP系统开发:商业ERP(十)销售统计

/*

  • 报表的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
Insert title here

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
Insert title here

开始日期:

截止日期:

查询

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)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值