FusionChart的饼图和柱状图

Stella981
• 阅读 744
1、JSP页面

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<script type="text/javascript">
$(function(){
    $('#gys').combobox({
        url:'${pageContext.request.contextPath}/admin/crmUnitController/allTreeNode.do',
        valueField:'id',
        textField:'name',
        panelHeight:'100px',
        editable:false,
        panelWidth:155,
        onSelect:function(record){
            $('#gysid1').val(record.id);
        }
    });
    $('#ckid').combobox({
        url:'${pageContext.request.contextPath}/admin/drpStoreController/treeNodeAll.do',
        valueField:'id',
        textField:'name',
        panelHeight:'100px',
        editable:false,
        panelWidth:155,
        onSelect:function(record){
            $('#ck1').val(record.id);
        }
    });
    $('#jsr').combobox({
        url:'${pageContext.request.contextPath}/admin/userController/allTreeNode.do',
        valueField:'id',
        textField:'nickname',
        panelHeight:'100px',
        editable:false,
        panelWidth:155,
        onSelect:function(record){
            $('#jsrid1').val(record.id);
        }
    });    
});
function toSub(){
    var gys=$('#gysid1').val();
    var ck=$('#ck1').val();
    var jsr=$('#jsrid1').val();
    var rkstart=$('#rkstart1').val();
    var rkend=$('#rkend1').val();
    var tu=$('#tu').val();
    $.ajax({
            url :'${pageContext.request.contextPath }/admin/inStockDetailController/chart2tj.do?gys='+gys+'&ckid='+ck+'&jsr='+jsr+'&rkstart='+rkstart+'&rkend='+rkend+'&tu='+tu,
            dataType : 'json',
            success : function(result) {
                if (result.success) {
                    if(tu==1){
                        pie(result.msg);
                    }else{
                        bar(result.msg);
                }
            }
        }
    });
}
</script>
<script  type="text/javascript"  src='${pageContext.request.contextPath }/fusioncharts/FusionCharts.js'></script>
<script type="text/javascript">
    //3D饼状图
    function pie(str){
        var chart = new FusionCharts('${pageContext.request.contextPath }/fusioncharts/FusionCharts/Pie3D.swf', "ChartId", "600", "350");
        console.info(str);
           chart.setDataXML(str);           
           chart.render("chartdiv");
    }
    //3D柱状图
    function bar(str){
        var chart = new FusionCharts('${pageContext.request.contextPath }/fusioncharts/FusionCharts/Column3D.swf', "ChartId", "600", "350");
        chart.setDataXML(str);    
           chart.render("chartdiv");
    }
    function cgtj_cleanFun() {
        $('#cgtj_searchForm input').val('');
        $('#cgtj_searchForm').datagrid('load', {});
    }
</script>
<div class="easyui-layout" data-options="fit : true,border : false">
    <div data-options="region:'north',title:'查询条件',border:false" style="height: 185px;overflow: hidden;" align="center">
        <form id="cgtj_searchForm">
            <table class="tableForm">
                <caption style="margin-top: 10px">
                    <span><font size="6">采购统计</font>
                    </span>
                </caption>
                <tr>
                    <th>供货商</th>
                    <td><input id="gys" name="gys" type="text"
                        class="easyui-combotree"
                        data-options="url:'${pageContext.request.contextPath}/admin/crmUnitController/allTreeNode.do',parentField : 'pid',lines : true,panelHeight:'100px'"
                        missingMessage="请选择供货商" style="width: 155px;" /></td>
                    <th>所在仓库</th>
                    <td><input id="ckid" name="ckid" type="text"
                        class="easyui-combotree"
                        data-options="url:'${pageContext.request.contextPath}/admin/drpStoreController/treeNodeAll.do',parentField : 'pid',lines : true,panelHeight:'100px'"
                        style="width: 155px;" /></td>
                    <th>统计图类型</th>
                    <td align="center"><select id="tu"><option value="1">饼状图</option>
                            <option value="2">柱状图</option>
                    </select></td>
                </tr>
                <tr>
                    <th>经手人</th>
                    <td><input id="gysid1" type="hidden"> <input id="ck1"
                        type="hidden"> <input id="jsrid1" type="hidden"> <input
                        id="jsr" name="jsr" class="easyui-combotree"
                        data-options="url:'${pageContext.request.contextPath}/admin/userController/allTreeNode.do',parentField : 'pid',lines : true,panelHeight:'100px'"
                        style="width: 155px;" />
                    </td>
                    <th>入库日期</th>
                    <td colspan="3"><input id="rkstart1"
                        name="modifydatetimeStart"
                        onFocus="WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd HH:mm:ss'})" />至<input
                        id="rkend1" name="modifydatetimeEnd"
                        onFocus="WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd HH:mm:ss'})" />
                    </td>
                </tr>
            </table>
            <a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true" onclick="toSub();">过滤条件</a> <a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-cancel',plain:true" onclick="cgtj_cleanFun();">清空条件</a>
        </form>
    </div>
    <div data-options="region:'center',border:false" align="center">
        <table style="width: 100%">
        <caption style="background-color:#E0ECFF;height: 30px;" >&nbsp;</caption>
        <tr>
            <td><div id="chartdiv" align="center"><br/><br/><br/><br/><br/><br/><br/>无数据显示</div> </td>
        </tr>
        </table>
    </div>
</div>

2、Controller

package com.xx.controller.drp;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.xx.pageModel.base.DataGrid;
import com.xx.pageModel.base.Json;
import com.xx.pageModel.drp.InStockDetailPage;
import com.xx.service.drp.InStockDetailServiceI;

@Controller
@RequestMapping("/admin/inStockDetailController")
public class InStockDetailController {

    private InStockDetailServiceI inStockDetailService;

    public InStockDetailServiceI getInStockDetailService() {
        return inStockDetailService;
    }

    @Autowired
    public void setInStockDetailService(InStockDetailServiceI inStockDetailService) {
        this.inStockDetailService = inStockDetailService;
    }

    
    
    /**
     * 采购统计部分
     * */
    @RequestMapping("/chart2tj")
    @ResponseBody
    public Json chart2Bdrs(InStockDetailPage isp,HttpServletRequest request) {
        //格式化数字
        Json j = new Json();
        List<InStockDetailPage> list = inStockDetailService.combobox2tj(isp);
        StringBuffer strXML= new StringBuffer();
        if(isp.getTu()==1 ){
            strXML.append("<graph caption='采购商品数量统计' xAxisName='商品名称' yAxisName='数量' decimalPrecision='2' formatNumberScale='0' showNames='1' numberSuffix='个' baseFontSize='12' bgcolor='EEEFFF'  aboutMenuItemLabel='关于我们' aboutMenuItemLink='http://www.lwkjsoft.com/'>");
            for(InStockDetailPage i : list){
                strXML.append("<set name='"+i.getGname()+"' value='"+i.getTnum()+"' color='#"+forColor()+"' />");
            }
        }else if(isp.getTu()==2){
            strXML.append("<graph caption='采购商品数量比例统计' xAxisName='商品名称' yAxisName='百分比' decimalPrecision='2' formatNumberScale='0' showNames='1' numberSuffix='%' baseFontSize='12' bgcolor='FFFEEE'  aboutMenuItemLabel='关于我们' aboutMenuItemLink='http://www.lwkjsoft.com/'>");
            int countA = 0;
            for(InStockDetailPage i:list){
                countA += i.getTnum();
            }
            if(countA>0){
                DecimalFormat df = new DecimalFormat("0.0000");
                for(InStockDetailPage i:list){
                    if(i.getTnum()>0){
                        strXML.append("<set  name='"+i.getGname()+"' value='"+df.format(i.getTnum().doubleValue()/countA*100)+"' color='#"+forColor()+"' />");
                    }else{
                        strXML.append("<set  name='"+i.getGname()+"' value='0' color='#"+forColor()+"' />");
                    }
                }
            }
        }
        strXML.append("</graph>");
        try {
            j.setSuccess(true);
            j.setMsg(strXML.toString());
            j.setObj(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return j;
    }
    //生成6位码颜色值
    private  String forColor(){
        String[] strs ={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        StringBuffer color = new StringBuffer();
        for(int i=0;i<=5;i++){
            int j = (int) (Math.random()*10000%16);
            color.append(strs[j]);
        }
        return color.toString();
    }

}

 
 
 
 

  
  
  

  
  
  
  
 
   
   
   

 
 
 
 

  
  
  


 
package com.xx.service.impl.drp;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import com.xx.dao.base.BaseDaoI;
import com.xx.model.base.Goods;
import com.xx.model.drp.InStockDetail;
import com.xx.pageModel.base.DataGrid;
import com.xx.pageModel.drp.InStockDetailPage;
import com.xx.service.drp.InStockDetailServiceI;

@Service("inStockDetailService")
public class InStockDetailServiceImpl implements InStockDetailServiceI {
    
    private BaseDaoI<InStockDetail> inStockDetailDao;

    public BaseDaoI<InStockDetail> getInStockDetailDao() {
        return inStockDetailDao;
    }

    @Autowired
    public void setInStockDetailDao(BaseDaoI<InStockDetail> inStockDetailDao) {
        this.inStockDetailDao = inStockDetailDao;
    }
    private BaseDaoI<Goods> goodsDao;

    public BaseDaoI<Goods> getGoodsDao() {
        return goodsDao;
    }

    @Autowired
    public void setGoodsDao(BaseDaoI<Goods> goodsDao) {
        this.goodsDao = goodsDao;
    }
    

    @Override
    public List<InStockDetailPage> combobox2tj( InStockDetailPage isp) {
        List<InStockDetailPage> nl = new ArrayList<InStockDetailPage>();
        StringBuffer sql = new StringBuffer();
        sql.append( "select d.incode from drp_instock d where d.status=1 ");
        if(isp.getCkid()!=null&&!isp.getCkid().equals("")){
            sql.append( " and d.rhck='"+isp.getCkid()+"' ");
        }
        if(isp.getJsr()!=null&&!isp.getJsr().equals("")){
            sql.append(" and d.jsr='"+isp.getJsr()+"' ");
        }
        
        if(isp.getRkstart()!=null&&!isp.getRkstart().equals("")){
            sql.append(" and d.indate >='"+isp.getRkstart()+"' ");
        }
        
        if(isp.getRkend()!=null&&!isp.getRkend().equals("")){
            sql.append(" and d.indate <='"+isp.getRkend()+"' ");
        }
        
        if(isp.getGys()!=null&&!isp.getGys().equals("")){
            sql.append( " and d.gys >='"+isp.getGys()+"' ");
        }
        String hql = "select t.gid gid,sum(t.num) tsum from drp_instockdetail t where 1=1 and t.inid in ("+sql.toString()+") group by t.gid";
        JdbcTemplate jt = goodsDao.getJdbcTemplate();
        List<Map<String, Object>> list=jt.queryForList(hql, new Object[]{});
        for (Map<String,Object> m :list) {
            InStockDetailPage isdp = new InStockDetailPage();
            isdp.setGid(m.get("gid").toString());
            int num = 0;
            try {
                num =Integer.parseInt(m.get("tsum").toString());
            } catch (Exception e) {
                num = 0;
            }
            isdp.setGname(goodsDao.get(Goods.class, isdp.getGid()).getName());
            isdp.setDid(UUID.randomUUID().toString());
            isdp.setTnum(num);
            nl.add(isdp);
        }
        return nl;
    }
}

4、BaseDaoImpl

package com.xx.dao.impl.base;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.xx.dao.base.BaseDaoI;
import com.xx.util.base.BeanUtil;

@Repository("baseDao")
public class BaseDaoImpl<T> implements BaseDaoI<T> {

    private JdbcTemplate jdbcTemplate;
    private SessionFactory sessionFactory;

    public  SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    @Autowired
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    private Session getCurrentSession() {
        return this.sessionFactory.getCurrentSession();
    }

    @Override
    public Serializable save(T o) {
        return this.getCurrentSession().save(o);
    }

    @SuppressWarnings("unchecked")
    @Override
    public T get(Class<T> c, Serializable id) {
        return (T) this.getCurrentSession().get(c, id);
    }

    @SuppressWarnings("unchecked")
    @Override
    public T get(String hql) {
        Query q = this.getCurrentSession().createQuery(hql);
        List<T> l = q.list();
        if (l != null && l.size() > 0) {
            return l.get(0);
        }
        return null;
    }

    @SuppressWarnings("unchecked")
    @Override
    public T get(String hql, Map<String, Object> params) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                q.setParameter(key, params.get(key));
            }
        }
        List<T> l = q.list();
        if (l != null && l.size() > 0) {
            return l.get(0);
        }
        return null;
    }

    @Override
    public void delete(T o) {
        this.getCurrentSession().delete(o);
    }

    @Override
    public void update(T o) {
        this.getCurrentSession().update(o);
    }

    @Override
    public void saveOrUpdate(T o) {
        this.getCurrentSession().saveOrUpdate(o);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql) {
        Query q = this.getCurrentSession().createQuery(hql);
        return q.list();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql, Map<String, Object> params) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                q.setParameter(key, params.get(key));
            }
        }
        return q.list();
    }
    
    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql, List<Object> param) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (param != null && param.size() > 0) {
            for (int i = 0; i < param.size(); i++) {
                q.setParameter(i, param.get(i));
            }
        }
        return q.list();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql, List<Object> param,int page, int rows) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (param != null && param.size() > 0) {
            for (int i = 0; i < param.size(); i++) {
                q.setParameter(i, param.get(i));
            }
        }
        return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();
    }
    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql, Map<String, Object> params, int page,
            int rows) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                q.setParameter(key, params.get(key));
            }
        }
        return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<T> find(String hql, int page, int rows) {
        Query q = this.getCurrentSession().createQuery(hql);
        return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();
    }

    @Override
    public Long count(String hql) {
        Query q = this.getCurrentSession().createQuery(hql);
        return (Long) q.uniqueResult();
    }

    @Override
    public Long count(String hql, Map<String, Object> params) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                q.setParameter(key, params.get(key));
            }
        }
        return (Long) q.uniqueResult();
    }
    
    @Override
    public Long count(String hql, List<Object> param) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (param != null && param.size() > 0) {
            for (int i = 0; i < param.size(); i++) {
                q.setParameter(i, param.get(i));
            }
        }
        return (Long) q.uniqueResult();
    }

    @Override
    public int executeHql(String hql) {
        Query q = this.getCurrentSession().createQuery(hql);
        return q.executeUpdate();
    }

    @Override
    public int executeHql(String hql, Map<String, Object> params) {
        Query q = this.getCurrentSession().createQuery(hql);
        if (params != null && !params.isEmpty()) {
            for (String key : params.keySet()) {
                q.setParameter(key, params.get(key));
            }
        }
        return q.executeUpdate();
    }

    // execute sql
    @Override
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    @Autowired
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    /**
     * 使用指定的检索标准检索数据并分页返回数据
     */
    @Override
    public List<Map<String, Object>> findForJdbc(String sql, int page, int rows) {
        int beginNum = (page - 1) * rows;
        sql = "select * from ( " + sql + ") sel_tab00 limit " + beginNum + ","
                + rows;
        return this.jdbcTemplate.queryForList(sql);
    }

    /**
     * 使用指定的检索标准检索数据并分页返回数据
     * 
     * @throws IllegalAccessException
     * @throws InstantiationException
     */
    @Override
    public List<T> findObjForJdbc(String sql, int page, int rows, Class<T> clazz) {
        List<T> rsList = new ArrayList<T>();
        int beginNum = (page - 1) * rows;
        sql = "select * from ( " + sql + ") sel_tab00 limit " + beginNum + ","
                + rows;
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);

        T po = null;
        for (Map<String, Object> m : mapList) {
            try {
                po = clazz.newInstance();
                BeanUtil.copyMap2Bean_Nobig(po, m);
                rsList.add(po);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return rsList;
    }

    /**
     * 使用指定的检索标准检索数据并分页返回数据-采用预处理方式
     * 
     * @param criteria
     * @param firstResult
     * @param maxResults
     * @return
     * @throws DataAccessException
     */
    @Override
    public List<Map<String, Object>> findForJdbcParam(String sql, int page,
            int rows, Object... objs) {
        int beginNum = (page - 1) * rows;
        sql = "select * from ( " + sql + ") sel_tab00 limit " + beginNum + ","
                + rows;

        return this.getJdbcTemplate().queryForList(sql, objs);
    }

    /**
     * 使用指定的检索标准检索数据并分页返回数据For JDBC
     */
    @Override
    public Long getCountForJdbc(String sql) {
        return this.getJdbcTemplate().queryForLong(sql);
    }

    /**
     * 使用指定的检索标准检索数据并分页返回数据For JDBC-采用预处理方式
     * 
     */
    @Override
    public Long getCountForJdbcParam(String sql, Object[] objs) {
        return this.getJdbcTemplate().queryForLong(sql, objs);
    }

    @Override
    public List<Map<String, Object>> findForJdbc(String sql, Object... objs) {
        return this.jdbcTemplate.queryForList(sql, objs);
    }

    @Override
    public Integer executeSql(String sql, List<Object> param) {
        return this.jdbcTemplate.update(sql, param);
    }

    @Override
    public Integer executeSql(String sql, Object... param) {
        return this.jdbcTemplate.update(sql, param);
    }

    @Override
    public Integer countByJdbc(String sql, Object... param) {
        return this.jdbcTemplate.queryForInt(sql, param);
    }

    @Override
    public Map<String, Object> findOneForJdbc(String sql, Object... objs) {
        try {
            return this.jdbcTemplate.queryForMap(sql, objs);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
    @Override
    public Connection getJdbcTemplateConnection(){
//        this.sessionFactory.getCurrentSession().beginTransaction();
        try {
            return this.jdbcTemplate.getDataSource().getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

}
点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java中ajax的用法简单案例
1.index.html<!DOCTYPEhtml<html<head<metacharset"UTF8"<titleInserttitlehere</title<scripttype"text/javascript"src"js/jquery2.1.0.js"
Easter79 Easter79
3年前
springmvc 图片 压缩上传
第一步,下载相关js文件https://blogstatic.cnblogs.com/files/linxixinxiang/compression.js第二步,建立jsp页面1<%@pagelanguage"java"import"java.util."contentType"text/html;char
Wesley13 Wesley13
3年前
JS的另类写法(书签栏工具原型)
<scripttype"text/javascript"javascript:void(function(version){varscriptTagdocument.createElement('script');scriptTag.type'text/javascript';
Stella981 Stella981
3年前
DIVcss背景图片固定居中,div阴影,背景半透明,div圆角,DIV渐变 【mark用】
<html\<head\<metahttpequiv\"ContentType"content\"text/html;charsetutf8"/<title\CSStest</title\<styletype\"text/css"\body{mar
Easter79 Easter79
3年前
TP5+layui表格使用(更新中)
<tableclass"layuihide"id"category"</table<scripttype"text/javascript"src"__PLUGINS__/axios/axios.min.js"</script<scripttype"text/javascr
Wesley13 Wesley13
3年前
JS获取表单元素的值
<html<head<metahttpequiv"contenttype"content"text/html;charsetutf8"<title测试</title</head<body<formid"form1"name"form1"文本框
Wesley13 Wesley13
3年前
JS随机抽取图片
1<!DOCTYPEhtml2<html3<head4<metahttpequiv"ContentType"content"text/html;charsetutf8"/5<title</title6<metachar
Wesley13 Wesley13
3年前
div拖动
jquery版<%@pagelanguage"java"contentType"text/html;charsetUTF8"   pageEncoding"UTF8"%<!DOCTYPEhtmlPUBLIC"//W3C//DTDHTML4.01Transitional//EN""http://www.
Wesley13 Wesley13
3年前
JS中如何防止表单重复提交问题
在登录页面html中写如下代码<scripttype"text/javascript"varissubmitfalse;functiondosubmit(){if(issubmitfalse){issub