2.5.2. 报表

通过脚本设置报表SQL数据源

位置 触发时机 可以获取的环境变量(参数) 返回值
报表->基本->sql数据源->数据源sql脚本 报表打开时触发 WebUserCurrentDocument 类型:String含义:sql查询语句

示例代码:

//获取的是查询条件,组合成SQL数据源
(function () {
    var doc = getCurrentDocument();
    var ProjectName = doc.getItemValueAsString("S_ProjectName");
    var ProjectCode = doc.getItemValueAsString("S_ProjectCode");
    var ProjectPhase = doc.getItemValueAsString("S_ProjectPhase");

    var sql = "select t.* from(select domainid, domainid as id ,item_selectplatform, item_platform,item_projectname , item_projectcode, item_ProjectPhase,item_ProductionPlace,count(*) as item_count from tlk_sample_vehicle_plan s where 1 = 1 group by domainid, item_selectplatform, item_platform,item_projectname, item_projectcode, item_projectphase,item_ProductionPlace) t where 1=1";
    if (isNotNull(ProjectName)) {
        sql += " and item_projectname like '%" + ProjectName + "%'"
    }

    if (isNotNull(ProjectCode)) {
        sql += " and item_projectcode like '%" + ProjectCode + "%'"
    }

    if (isNotNull(ProjectPhase)) {
        sql += " and item_ProjectPhase like '%" + ProjectPhase + "%'"
    }
    return sql;
})()

通过脚本设置报表存储过程数据源

位置 触发时机 可以获取的环境变量(参数) 返回值
报表->基本->sql数据源->存储过程数据源 报表打开时触发 WebUserCurrentDocument 类型:string含义:存储过程查询语句

示例代码:

通过脚本设置报表自定义数据源

位置 触发时机 可以获取的环境变量(参数) 返回值
报表->基本->sql数据源->自定义数据源 报表打开时触发 CurrentDocument,WebUser 类型:DRDataSource对象含义:自定义数据源

示例代码:

//通过脚本自定义报表数据源
(function () {
    var DRDataSource = Packages.cn.myapps.runtime.report.model.DRDataSource;  //系统自定义类
    var BigDecimal = Packages.java.math.BigDecimal;
    var Double = Packages.java.lang.Double;
    var dataSource = new DRDataSource("A", "B", "C", "D", "E"); //新建一个类的实例
    dataSource.add("chain", new Double(350), new Double(300), new Double(200), new Double(200));
    dataSource.add("abel", new Double(300), new Double(500), new Double(200), new Double(600));
    dataSource.add("quan", new Double(450), new Double(250), new Double(300), new Double(200));
    return dataSource; //返回实例
})()

通过脚本设置报表内容

位置 触发时机 可以获取的环境变量(参数) 返回值
报表->内容->脚本 报表打开时触发 WebUserCurrentDocument 类型:Report对象含义:返回报表内容

示例代码:

//通过脚本定义打印图表
(function () {
    var FontBuilder = Packages.net.sf.dynamicreports.report.builder.style.FontBuilder;//系统自定义类
    var DynamicReports = Packages.net.sf.dynamicreports.report.builder.DynamicReports;
    var Templates = Packages.cn.myapps.report.examples.Templates;
    var TextColumnBuilder = Packages.net.sf.dynamicreports.report.builder.column.TextColumnBuilder;
    var DRDataSource = Packages.net.sf.dynamicreports.report.datasource.DRDataSource;
    var DRException = Packages.net.sf.dynamicreports.report.exception.DRException;
    var JRDataSource = Packages.net.sf.jasperreports.engine.JRDataSource;

    var BigDecimal = Packages.java.math.BigDecimal;
    var Integer = Packages.java.lang.Integer;

    function createDataSource() {
        var dataSource = new DRDataSource("item", "quantity", "unitprice");//新建一个类的实例
        dataSource.add("Tablet", new Integer(350), new BigDecimal(300));
        dataSource.add("Laptop", new Integer(300), new BigDecimal(500));
        dataSource.add("Smartphone", new Integer(450), new BigDecimal(250));
        return dataSource;
    }

    var boldFont = DynamicReports.stl.fontArialBold().setFontSize(12);

    var itemColumn = DynamicReports.col.column("Item", "item", DynamicReports.type.stringType());
    var quantityColumn = DynamicReports.col.column("Quantity", "quantity", DynamicReports.type.integerType());
    var unitPriceColumn = DynamicReports.col.column("Unit price", "unitprice", DynamicReports.type.bigDecimalType());

    return DynamicReports.report().setTemplate(Templates.reportTemplate)
        .columns(itemColumn, quantityColumn, unitPriceColumn)
        .title(Templates.createTitleComponent("Bar3DChart"))
        .summary(DynamicReports.cht.bar3DChart()
            .setTitle("Bar 3D chart")
            .setTitleFont(boldFont)
            .setCategory(itemColumn)
            .series(DynamicReports.cht.serie(quantityColumn), DynamicReports.cht.serie(unitPriceColumn))
            .setCategoryAxisFormat(DynamicReports.cht.axisFormat().setLabel("Item")))
        .pageFooter(Templates.footerComponent)
        .setDataSource(createDataSource());

})()
文档更新时间: 2022-11-02 13:43   作者:admin