FusionCharts报表——StackedColumn图工具类

StackedColumn图工具类:

import java.util.ArrayList;

import java.util.LinkedHashSet;

import java.util.List;

import java.util.Set;



import org.apache.commons.lang.StringUtils;



/**

 * 

<chart  bgColor='FFFFFF'  caption='手术' shownames='1' showvalues='0'   showSum='1' decimals='0' overlapColumns='0'>

<categories>

<category label='心内监护室' />

<category label='口腔科一病区' />

<category label='眼科一病区' />

<category label='心研所监护室' />

<category label='中医肛肠病区' />

</categories>

<dataset seriesName='进行中'  showValues='0'>

<set value='5' />

<set value='4' />

<set value='3' />

<set value='2' />

<set value='1' />

</dataset>

<dataset seriesName='已完成'  showValues='0'>

<set value='1' />

<set value='1' />

<set value='2' />

<set value='0' />

<set value='1' />

</dataset>

<dataset seriesName='预约'  showValues='0'>

<set value='3' />

<set value='2' />

<set value='1' />

<set value='1' />

<set value='1' />

</dataset>

</chart>

 * 

 * 

 * 

 */

public class StackedColumnChartHelper {

    private String caption;// 标题

    private String clickURL;

    private List<DateSet> dataSets = new ArrayList<DateSet>();

    private Set<String> categoryList = new LinkedHashSet();



    public DateSet createDataSet(){

        return new DateSet();

    }

    public class DateSet {

        private String seriesName;

        private StringBuilder setString = new StringBuilder();



        public void addSetItem(Number value, String color) {

            if(StringUtils.isBlank(color)){

                setString.append("<set value='" + value.toString() + "' showValues='0'/>");

            }else{

                setString.append("<set value='" + value.toString() + "' color='"

                        + color + "' showValues='0'/>");

            }

        }



        public String getSeriesName() {

            return seriesName;

        }



        public void setSeriesName(String seriesName) {

            this.seriesName = seriesName;

        }



        @Override

        public String toString() {

            return "<dataset seriesName='" + seriesName + "'>" + setString

                    + "</dataset>";

        }

    }



    public void addDateSet(DateSet dataSet) {

        dataSets.add(dataSet);

    }



    public void addCategory(String category) {

        categoryList.add(category);

    }



    public String createChartXmlData() {

        StringBuilder builder = new StringBuilder();

        builder.append("<chart showValues='1'  bgColor='FFFFFF'  caption='"+caption+"' ");

                

        if (StringUtils.isNotBlank(clickURL)) {

            builder.append("clickURL='" + clickURL + "' ");

        }

        builder.append("shownames='1' showvalues='0'   showSum='1' decimals='0' overlapColumns='0'>");

        StringBuilder categoriesBuilder = new StringBuilder("<categories>");

        for (String category : categoryList) {

            categoriesBuilder.append("<category label='" + category + "' />");

        }

        categoriesBuilder.append("</categories>");

        builder.append(categoriesBuilder);



        StringBuilder datasetBuilder = new StringBuilder();

        for (DateSet dataSet : dataSets) {

            datasetBuilder.append(dataSet.toString());

        }

        builder.append(datasetBuilder);

        builder.append("</chart>");



        return builder.toString();

    }



    public String getCaption() {

        return caption;

    }



    public void setCaption(String caption) {

        this.caption = caption;

    }



    public String getClickURL() {

        return clickURL;

    }



    public void setClickURL(String clickURL) {

        this.clickURL = clickURL;

    }



}

使用方法:

private String getStackedColumnChartXml(List<WaterAndPowerVo> ls,String caption){

        try {

            String clickUrl = "";

            StackedColumnChartHelper helper=new StackedColumnChartHelper();

            helper.setCaption(caption);

            helper.setClickURL(clickUrl);

            StackedColumnChartHelper.DateSet dataSet1=helper.createDataSet();

            StackedColumnChartHelper.DateSet dataSet2=helper.createDataSet();

            dataSet1.setSeriesName("水费");

            dataSet2.setSeriesName("电费");

            helper.addDateSet(dataSet1);

            helper.addDateSet(dataSet2);

            for(WaterAndPowerVo waterAndPowerVo:ls){

                helper.addCategory(waterAndPowerVo.getMonth());

                dataSet1.addSetItem(waterAndPowerVo.getWaterPrice(), "");

                dataSet2.addSetItem(waterAndPowerVo.getPowerPrice(), "");

            }

            String xmlData = helper.createChartXmlData();

            return xmlData;

        } catch (Exception e) {

            e.printStackTrace();

            return null;

        }

    }

效果图:

FusionCharts报表——StackedColumn图工具类

你可能感兴趣的:(FusionCharts)