登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学无止境

一点积累,与大家分享

 
 
 

日志

 
 

Column柱状图  

2010-05-27 16:30:45|  分类: java技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ajax + struts2 + google 制作的柱状图
jsp:
<%@page pageEncoding="utf-8" language="java"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>
      当前持仓基金收益率对比图
    </title>
    <script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('visualization', '1', {packages: ['corechart']});
    </script>
    <script type="text/javascript">
    $.ajax({
                    type:"post",
                    url:"ZHYield.do",
                    dataType:"json",
                    data:'jsonParam.f0010=517',
                    success:function(data){
                        drawVisualization(data);
                    }
                });
      function drawVisualization(jsondata) {
            var data = new google.visualization.DataTable(); 
           
          data.addColumn('string', '月份数');
          data.addColumn('number', '账本回报');
          data.addColumn('number', '好基池');
          data.addColumn('number', '同类平均');
          //y3m: 账本3个月回报 ; y6m 账本6个月回报
          //h3m: 好基池 3个月回报 ;h6m 好基池 6个月回报
          //t3m: 同类平均 3个月回报 ;t6m: 同类平均 6个月回报
          data.addRow(["3个月", jsondata.map.y3m , jsondata.map.h3m, jsondata.map.t3m]);
          data.addRow(["6个月", jsondata.map.y6m , jsondata.map.h6m, jsondata.map.t6m]);
          
        // Create and draw the visualization.
        new google.visualization.ColumnChart(document.getElementById('visualization')).
            draw(data,
                 { width:440, height:260 }
            );
      }

     // google.setOnLoadCallback(drawVisualization);
    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <div id="visualization" style="width: 600px; height: 400px;"></div>
  </body>
</html>

struts2:
<action name="ZHYield" class="JsonAction" method="ZHYield">
            <result type="json" />
            <interceptor-ref name="defaultStack" />
        </action>

java类:
mport com.googlecode.jsonplugin.annotations.JSON;
public class JsonAction {
 
    /**
     * JSON返回值,返回结果封装在此MAP中
     */
    private Map map;
    /**
     * 用于封装JSON请求传入参数
     */
    private JsonParam jsonParam;
   
    public class JsonParam {
           private String f0010; //传入参数1
           private String f0020; //传入参数2 ....
           public String getF0010() {
                return f0010;
          }

         public void setF0010(String f0010) {
              this.f0010 = f0010;
         }

        public String getF0020() {
           return f0020;
       }

        public void setF0020(String f0020) {
             this.f0020 = f0020;
       }
      }

        private BookReportService bookReportService ;
  
    @JSON(serialize = false)
    public BookReportService getBookReportService() {
        return bookReportService;
    }

    public void setBookReportService(BookReportService reportService) {
        this.bookReportService = reportService;
    }
  /**
     * 基金组合收益对比图
     */
    public String ZHYield()
    {
        try {
            //取用户申购的基金代码、购买市值
            List<FundInfo> list = bookReportService.getFundListByAccountId(Integer.parseInt(jsonParam.getF0010()));
            String[] symbols = new String[list.size()];
            Double[] markets = new Double[list.size()];
            Double markettotal = 0d;
            //计算总市值
            int i = 0 ;
            for(FundInfo info :list)
            {    
                if(info.getMarketValue()!=0)
                {
                    symbols[i] =info.getSymbol();
                    markets[i] = info.getMarketValue() ;
                    markettotal += markets[i];
                }
                i++;
            }
            //计算权重
            i = 0;
            for(Double d :markets)
            {
                markets[i] = d/markettotal ;
                i++;
            }
         
             
            //当前个基3个月收益统计
            Double y3m =  bookReportService.getTzzhYield(symbols, markets, 0);
            BigDecimal y31 = new BigDecimal(y3m).setScale(2, BigDecimal.ROUND_HALF_UP);
            //当前个基6个月收益统计
            Double y6m = bookReportService.getTzzhYield(symbols, markets, 1);
            BigDecimal y61 = new BigDecimal(y6m).setScale(2, BigDecimal.ROUND_HALF_UP);
            //好基池3个月收益统计
            Double hcj3m = bookReportService.getHjcYield(symbols, markets, 90)*100;
            BigDecimal hcj31 = new BigDecimal(hcj3m).setScale(2, BigDecimal.ROUND_HALF_UP);
            //好基池6个月收益统计
            Double hcj6m = bookReportService.getHjcYield(symbols, markets, 180)*100;
            BigDecimal hcj61 = new BigDecimal(hcj6m).setScale(2, BigDecimal.ROUND_HALF_UP);
            //同类平均3个月收益统计
            Double tlpj3m = bookReportService.getZhTlpjYield(symbols, markets, 90)*100;
            BigDecimal tlpj31 = new BigDecimal(tlpj3m).setScale(2, BigDecimal.ROUND_HALF_UP);
            //同类平均6个月收益统计
            Double tlpj6m = bookReportService.getZhTlpjYield(symbols, markets, 180)*100;
            BigDecimal tlpj61 = new BigDecimal(tlpj6m).setScale(2, BigDecimal.ROUND_HALF_UP);
           
            //设置map各值
            map =  new HashMap();
            map.put("y3m", y31.doubleValue());
            map.put("y6m", y61.doubleValue());
           
            map.put("h3m", hcj31.doubleValue());
            map.put("h6m", hcj61.doubleValue());
           
            map.put("t3m", tlpj31.doubleValue());
            map.put("t6m", tlpj61.doubleValue());
           
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (WebException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "success";
    }

例子url:http://www.fund858.com/bookreport.do?id=758

  评论这张
 
阅读(675)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018