zoukankan      html  css  js  c++  java
  • 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;
            }
        }

    效果图:

  • 相关阅读:
    [Codeforces 1245D] Shichikuji and Power Grid (最小生成树)
    [BZOJ 1535] [Luogu 3426]SZA-Template (KMP+fail树+双向链表)
    [BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂)
    [Codeforces 1246B] Power Products (STL+分解质因数)
    [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)
    [BZOJ5306] [HAOI2018]染色(容斥原理+NTT)
    [Codeforces 1239D]Catowise City(2-SAT)
    [BZOJ 3527] [ZJOI2014]力(FFT)
    [BZOJ 3456]城市规划(cdq分治+FFT)
    【2-SAT(最小字典序/暴力染色)】HDU1814-Peaceful Commission
  • 原文地址:https://www.cnblogs.com/winkey4986/p/3049772.html
Copyright © 2011-2022 走看看