Highcharts学习小计之决策分析

来源:互联网 发布:腾讯软件中心 编辑:程序博客网 时间:2024/05/22 03:05

一 简介

        项目中使用Highcharts技术,第一次使用,记录下

二 页面源码
         /*按类型*/
         if('eventType' == '<%=analysiType%>'){
            getEventCataInfoByEventType();
            
         }
     /*按类型*/
    function getEventCataInfoByEventType(){
        var param = getParam();
        
        //柱状图数据
        var jsonXData = [];//x-数据
        var jsonyRegData = [];//y-登记数据
        var jsonyDoneData = [];//y-结案数据
        
        $.getJSON("/enforce/event/event_getEventCataInfoByEventType.action?"+param, function(json) {
                /**[表格信息][start]**/
                var retHtml = "<table class='shujuj' ><tr class='taitou'><td width='25%'>大类</td><td width='35%' colspan='-4' >中类</td><td width='20%' >登记数</td><td width='20%' >结案数</td></tr>";
                $.each(json, function(id, object) {
                        var parantName = object.parentName;
                        var count= object.count;
                        var reCount = object.reCount;
                        var doCount = object.doCount;
                        var child =  object.child;
                        retHtml += "<tr><td rowspan='"+count+"'<label for='checkbox'></label> ";
                        retHtml += "<label for='checkbox'>"+parantName+"</label></td>";
                        
                        for(var i=0;i<child.length;i++){
                            var childJson = eval(child[i]);
                            var doneNum = childJson.doneNum;
                            var name = childJson.name;
                            var registerNum = childJson.registerNum;
                            
                            //柱状图数据获取
                            jsonXData.push(name);
                            jsonyRegData.push(registerNum);
                            jsonyDoneData.push(doneNum);
                            
<!--                            for (var key in childJson) {-->
<!--                                alert("childJson["+key+"]"+childJson[key]);-->
<!--                            }-->
<!--                            -->
                            
                                retHtml += "<td colspan='-4'><a href='javascript:void(0)' onclick=javascript:xiaolei('"+parantName+"','"+name+"');>"+name+"</a></td>";
                                retHtml += "<td>"+registerNum+"</td>";
                                retHtml += "<td>"+doneNum+"</td></tr>";
                            
                        }
                        
                        retHtml += "<tr><td colspan='2' bgcolor='#F2F2F2'>小计</td>";
                        retHtml += "<td bgcolor='#F2F2F2' >"+reCount+"</td>";
                        retHtml += "<td bgcolor='#F2F2F2' >"+doCount+"</td></tr>";
                    
                    });
                    retHtml += "</table>";
                    $("#eventTable").html(retHtml);
                    
                    /**[表格信息][end]**/
                    /**[柱状图][start]**/
                    var series = [
                            {
                                name:"登记数",
                                data:jsonyRegData
                            },
                            {
                                name:"结案数",
                                data:jsonyDoneData
                            }
                            
                    ];
                    
                    getHighchartsBar("eventBar","按类别",jsonXData,"数量/件",series,-60);
                    /**[柱状图][end]**/
                    
                }
        );
        
    }
三 后台源码

/**
     * 决策分析-事件统计(事件类型)
     */
    public void getEventCataInfoByEventType(){
        String whereJaStr = getSearchJaSqlWhereStr();
        String whereStr = getSearchSqlWhereStr();
        List<NormalMessageBO> list = eventService.getEventCataInfoByEventType(whereStr,whereJaStr);
        List<Map<String,Object>> retList = new ArrayList();
        //retHtml.append("<table class='shujuj' ><tr class='taitou'><td width='18%'>大类</td><td width='28%' colspan='-4' >中类</td><td width='30%' >登记数</td><td width='24%' >结案数</td></tr>");
        //前父编码
        String preParentCode = "";
        //父map
        Map<String,Object> map = new HashMap<String,Object>();
        List<Map<String,Object>> childList = new ArrayList<Map<String,Object>>();
        
        //同一大类的种类数
        int count = 0;
        //登记数小计
        int reCount = 0;
        //结案数小计
        int doCount = 0;
        for(Object object:list)
        {
            Object[] obj =(Object[])object;
            //parentCode
            String parentCode = String.valueOf(obj[0]);
            //parentName
            String parentName  = String.valueOf(obj[1]);
            //name
            String name  = String.valueOf(obj[2]);
            //registerNum登记数
            String reNum = String.valueOf(obj[3]);
            int registerNum = Integer.parseInt(reNum);
            //doneNum结案数
            String doNum = String.valueOf(obj[4]);
            int doneNum = Integer.parseInt(doNum);
            Map<String,Object> childMap = new HashMap<String,Object>();
            childMap.put("name", name);
            childMap.put("registerNum", registerNum);
            childMap.put("doneNum", doneNum);
            
            if(!preParentCode.equalsIgnoreCase(parentCode)){
                preParentCode = parentCode;
                count = 1;
                reCount = registerNum;
                doCount = doneNum;
                map = new HashMap<String,Object>();
                childList = new ArrayList();
                childList.add(childMap);
                map.put("parentName",parentName);
                map.put("reCount", reCount);
                map.put("doCount", doCount);
                map.put("count", count);
                map.put("child", childList);
                retList.add(map);
            }else {
                count++;
                reCount += registerNum;
                doCount += doneNum;
                map = retList.get(retList.size()-1);
                childList = (List<Map<String, Object>>) map.get("child");
                childList.add(childMap);
                map.put("reCount", reCount);
                map.put("doCount", doCount);
                map.put("count", count);
            }
            
            
        }
        
        this.outJsonArray(retList);
    }
   

四 效果展示


五 总结

     highcharts技术是java web项目中使用的非常普遍的技术,其图形样式可以满足大多数项目的需求

原创粉丝点击