智销功能_图表展示

什么是报表

  向上级报告情况的表格。简单的说:报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:

    “报表 = 多样的格式 + 动态的数据

    表格:详细数据

    图表: 直观

图表展示

  • 两种技术:flash(actionscript),h5(画布)
  • flash缺点:不安全,容易崩溃
  • IE的话只能是flash的方式
  • 两个框架:highchart(收费,支持IE),echart(百度,开源免费)

前端使用

1引入相应的js

<!-- 引入highcharts的js支持 -->
<script src="/js/plugin/highcharts/code/highcharts.js"></script>
<script src="/js/plugin/highcharts/code/highcharts-3d.js"></script>
<script src="/js/plugin/highcharts/code/modules/exporting.js"></script>
<script src="/js/plugin/highcharts/code/modules/export-data.js"></script>

2 弹出div进行展示

  1. 准备弹出来的
<!-- 一个弹出框,里面要装一个form表单 -->
<div id="chartDialog" class="easyui-dialog" title="图表展示"
     data-options="height:400,width:600,closed:true,modal:true">
    <div id="container" style="height: 320px"></div>
</div>
  1. 点击3D按钮弹出图表
show3d(){
    chartDialog.dialog("center").dialog("open");
    //拿到表单中的所有数据
    var params = searchForm.serializeObject();
    //通过Ajax到后台拿到相应的值[{name:xxx,y:10},]
    $.post("/purchasebillitem/findCharts",params,function (data) {
        //注意这里有一个异步问题
        var chart = Highcharts.chart(‘container‘, {
            chart: {
                type: ‘pie‘, //饼图
                options3d: {
                    enabled: true,
                    alpha: 45,
                    beta: 0
                }
            },
            title: {
                text: ‘我是一个头‘
            },
            tooltip: {
                pointFormat: ‘{series.name}: <b>{point.percentage:.1f}%</b>‘
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: ‘pointer‘,
                    depth: 35,
                    dataLabels: {
                        enabled: true,
                        format: ‘{point.name}‘
                    }
                }
            },
            series: [{
                type: ‘pie‘,
                name: ‘浏览器有‘,
                data: data
            }]
        });
    })
}

后台获取参数

1.修改query中的方法

// where o.bill.status = ? and o.xxx =? ...
//接收参数的变量
private List params = new ArrayList();
//准备一个方法,返回JPQL的查询条件
public String createWhereJPQL(){
    StringBuilder jpql = new StringBuilder();
    //开始时间
    if(beginDate!=null){
        jpql.append(" and o.bill.vdate >= ? ");
        params.add(beginDate);
    }
    //结束时间
    if(endDate!=null){
        jpql.append(" and o.bill.vdate < ? ");
        params.add(DateUtils.addDays(endDate, 1));
    }
    //状态
    if(status!=null){
        jpql.append(" and o.bill.status = ? ");
        params.add(status);
    }
    //第一个条件必需是where开头
    return jpql.toString().replaceFirst("and", "where");
}
//创建分组的JPQL
public String createGroupBy(){
    String groupStr = "o.bill.supplier.name";
    switch (groupBy){
        case 1:{
            groupStr="o.bill.buyer.username";
            break;
        }
        case 2:{
            groupStr="MONTH(o.bill.vdate)";
            break;
        }
    }
    return groupStr;
}

2.PurchasebillitemServiceImpl

/**
 * 查询图表需要的数据
 * @param query
 */
@Override
public List<Map> findCharts(PurchasebillitemQuery query){
    List<Map> mapList = new ArrayList<>();

    //拿到条件JPQL
    String whereJPQL = query.createWhereJPQL();
    //拿到条件对应的参数
    List params = query.getParams();
    //准备分组的条件
    String groupBy = query.createGroupBy();
    //根据供应商分组拿到的数据
    String jpql = "select "+groupBy+",sum(o.amount) from Purchasebillitem o "+whereJPQL+" group by "+groupBy;
    List<Object[]> list = findByJpql(jpql,params.toArray());
    //需要把一个List<Object[]> -> List<Map>
    for (Object[] objects : list) {
        Map map = new HashMap();
        map.put("name", objects[0]);
        map.put("y", objects[1]);
        mapList.add(map);
    }
    return mapList;
}

原文地址:https://www.cnblogs.com/yh9264426/p/10623241.html

时间: 2024-08-24 15:32:33

智销功能_图表展示的相关文章

智销功能_产品订单

一.组合关系 1.组合就是强聚合,聚合是双向的多对一,一对多 2.配置最强级联,一方放弃维护交给多方维护,单据都是使用的组合关系 3.保存的时候双方都能找到对象 一方配置 多方配置 二.日期查询 1.SpringMVC获取日期和设置日期 2.Easyui的日期控件 3.解决查询有时分秒的问题 三.明细问题 1.控件的含义 2.数据的修改 3.添加修改细节 (1)添加是清空明细 (2)修改回显 (3)保存时提交数据 (4)双向找到对方 (5)解决n-to-n问题 原文地址:https://www.

智销功能

sssdj:SpringMVC + Spring + SpringDataJpa-> 现在比较流行的一种设计(Spring全家桶) 要集成三大框架(Spring+SpringMVC+SpringDataJpa) 什么是JPA JPA:(Java Persistence API) ORM的规范 JPA是规范,Hibernate是它的实现(不唯一,但最好) 最底层的操作还是JDBC(引入驱动包) 什么是ORM o(对象,java面向对象) r(关系,关系型数据库) m(映射) 基本项目搭建 1.1使

knockout+echarts实现图表展示

一.需要学习的知识 knockout, require, director, echarts, jquery.简单的入一下门,网上的资料很多,最直接就是进官网校习. 二.效果展示 三.require的配置 require.config.js中可以配置我们的自定义模块的加载. require.config({ baseUrl: ".", paths: { text: "requirejs/text", jquery: "jquery/jquery-1.11.

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

Oracle 11 g duplicate功能_复制dataguard备库

Qracle 11g duplicate功能 不用备份源库,通过网络复制出standby库 1.在standby上grid用户配置listener 注意是指定oracle用户的家目录: 监听状态: [[email protected] ~]$lsnrctl LSNRCTL for Linux:Version 11.2.0.4.0 - Production on 19-MAY-2014 18:46:15 Copyright (c)1991, 2013, Oracle.  All rights re

赵雅智_Android案例_刮刮乐

实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <I

第2章 用图表展示数据

2.1 用图表表示定性数据 1.频数分布表 对数据进行分类,列出所有的类别,然后统计每一类别的频数. 频数:频数分布表中落在某一特定类别的数据个数叫做频数. 有两个变量交叉分类的频数分布表称为列联表,也称交叉表. 定性数据,除了用频数分布表,还可以使用比例.百分比.比率等统计量进行描述. 比例:一个样本中各类别的频数与全部频数之比,通常用于反映样本的构成或结构. 百分比:将样本乘以100得到的数值称为百分比. 比率:样本(或总体)中各不同类别频数之间的比值. 定性数据的图示:条形图.帕累托特图.

通过百度echarts实现数据图表展示功能

现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解echarts是个怎样技术的开发者来说,可以到echarts官网进行学习了解,官网有详细的API文档和实例供大家参考学习. 2.以下是我在工作中实现整理出来的实例源码: 公用的支持js文件 echarts.js.echarts.min.js,还有其他的图表需要支持的js文件也可以到官网下载 echa

ANDROID GRIDVIEW仿微信图片多选功能_显示本地相册图片多选效果

前段时间我分享过一个多图选择器实现了批示图片选择的问题.可以不会把系统的图库 一张一张的选择要上传的图片 http://dwtedx.com/itshare_171.html 那么今天再和大家分享一个非常棒的源代码.实现仿微信的图片选择功能(多图选择哦) 话不多说.有图有真像.先上图片 本例子主要实现了以下功能点 1.默认显示图片最多的文件夹图片.以及底部显示图片总数量 2.点击底部.弹出popupWindow.popupWindow包含所有含有图片的文件夹.以及显示每个文件夹中图片数量 3.选