报表中心

1. 功能入口

硕正报表功能 入口在系统菜单下

image-20250410152016716

2. 界面介绍

image-20250410152508758

2.1 目录树

来源:当前数字域的所有菜单画面,对应GOT的Menus节点

说明:报表的模版所在的目录

image-20250410152611760

2.2 报表列表

说明:菜单下报表模型记录

  • 报表名称:报表的名称,要求唯一

  • 菜单名称:报表所属的菜单

  • 启用:为false时,该模板将不可用

  • 打印预览:为true时,打印时,会先出现预览界面

  • 标准模板:true表示,该模板是一个标准模板。通过新建创建的模板是一个标准模板,通过标准模板复制生成的不是标准模版。标准模板可以编辑数据源,非标准模板,只能调整样式,数据源和其来源模板一致

  • 来源模板:用于标识非标准模板的来源模板。此模板的数据源和来源模板一致

  • 数据源类型:

    • 默认:数据源来自数据配置image-20250401162633217
    • Form:数据源来自于当前画面(当前选中数据)
  • 打印控制:为true时,可通过代码控制是否允许打印

    @CommandArgOption(groups = "all(cr, sr)")
    public CommandResult buttonOK_Button(CommandArg arg) {
        CommandResult result = new CommandResult();
        ReimbursementTable reimbursementTable = (ReimbursementTable) arg.getCurrentRecord();
        PrintReportArg printReportArg = new PrintReportArg(Form_ReimbursementTable.class);
        if(reimbursementTable.getBillStatus() != BillStatus.Checked) {
            printReportArg.setPrintButtonEnable(false);//当单据没有确认时,控制不可以打印(打印控制位true时生效)
        }
        result.printReport(printReportArg);
        return result;
    }
    
  • 显示控制:为true时,调用打印时,只显示与显示条件匹配的模板
  • 显示条件:当显示控制为true时,调用打印时,可传入匹配值,与显示条件匹配,匹配通过的模版才会出现在可选列表里

image-20250407085555224

@CommandArgOption(groups = "all(cr, sr)")
public CommandResult buttonOK_Button(CommandArg arg) {
    CommandResult result = new CommandResult();
    ReimbursementTable reimbursementTable = (ReimbursementTable) arg.getCurrentRecord();
    PrintReportArg printReportArg = new PrintReportArg(Form_ReimbursementTable.class);
    if(reimbursementTable.getBillStatus() != BillStatus.Checked) {
        printReportArg.setPrintButtonEnable(false);
    }
    printReportArg.setDisplayValue("销售一部");//这里传入显示条件
    result.printReport(printReportArg);
    return result;
}

image-20250407085657822

  • 备注

2.3 按钮区块

  • 样式设计:打开样式设计画面
  • 数据源:设置数据源
  • 复制:复制当前选中模板记录
  • 功能:
    • 导出模板 :导出成.report文件
    • 导入模板(内置):可以导入层、应用、插件、扩展里内置的模板,内置模板的位置在image-20250408095624058
    • 导入模板(外置):导入.report文件,如果有则覆盖,没有则新增模板。需要导入和导出的菜单一致

2.4 报表模板预览

3. 样式设计

3.1工具条

image-20250407090830412

从左至右

  • 打开模板
  • 保存
  • Sheet属性

  • 复制

  • 粘贴
  • 撤回
  • 查找/替换

image-20250407091851156

  • 打印
  • 打印属性
  • 打印预览

image-20250407092027583

  • 单元格合并
  • 求和
  • 计算器
  • 重新计算
  • 数据源设置
  • 全屏
  • 收缩工具栏

image-20250407092238901

  • 字体
  • 字体大小
  • 加粗
  • 斜体
  • 下划线
  • 左对齐
  • 居中
  • 右对齐

image-20250407092757618

  • 单元格属性
  • 单元格显示
  • 添加文本框
  • 添加图片
  • 添加线条
  • 添加统计图
  • 添加数列表
  • 格式刷
  • 边框

3.1.1 打印属性

image-20250407094637542

  • 打印机:当前设备所连的打印驱动image-20250407094904923

  • 认定用这台打印机打印:当改选项被勾上时,调用打印时,会寻找当前设备是有相同名称的打印驱动,有则使用这个,没有则使用第一个驱动

  • 打印纸张:数据来源于打印驱动,自定义纸张大小需要在当前的设备的打印驱动里添加,再通过下拉选择相应的纸张打印image-20250407095424668

  • 页边距

    image-20250407095715613

  • 分页

    image-20250407095829021

  • 页码

image-20250407095932327

  • 数据源

image-20250407100008762

3.1.2 数据源设置

image-20250407100559795

  • 自定义显示列:控制数据循环行的哪些列需要显示,以及列的显示顺序

image-20250407100830612

  • 自定义排序:数据的排序规则

image-20250407101045893

  • 数据分类汇总

3.1.3 单元格属性

主要:配置单元格的样式,缩进

image-20250407101819240

显示格式

配置单元的格式

image-20250407102044451

显示掩码

可以控制实际的显示效果而不改变实际的值,具体效果如下

image-20250407102453767

image-20250407102513646

图片和条形码

当数据类型为字符类型时,可选择以其它显示形式

图片:传入URL地址或者Base64大串

条形码:需要安装BarCode组件(使用客户端安装包时,默认安装),支持条码种类更多

二维码:显示字符的二维码

image-20250407103105480

image-20250407102825749

计算公式

类似Excel的计算函数,可以在单元格中输入,也可以直接输入。双击函数,可以查看方法的使用示例

image-20250407130604138

使用数据源:配置单元格数据

image-20250407130441279

数据源函数

数据源的结构树分为“表”和“单个数据”, 可以用鼠标直接将其下级内容直接拖拽至报表中。

  • 标题行 headrow( ) :

将 “表” 的 “标题行” 拖到报表的某个单元格,该单元格将会自动生成一个计算公式如 "=headrow('ds1')", 表示从该单元格开始,将数据源的标题从左向右填充。

  • *数据行 datarow( ) :*

将 “表” 的 “数据行” 拖到报表的某个单元格,该单元格将会自动生成一个计算公式如"=datarow('ds1')", 表示以该单元格作为左上角,将数据源填充至报表。

由于数据源的总行数是不确定的,所以报表将动态插入新的临时行。

从左向右的填充规则为:逐个单元格顺序填充,但遇到如下情况,将跨过这些单元格:

1.单元格是被组合的、不是主单元格;

2.单元格内有其它计算函数;

注:一个Sheet页中不能使用多个循环数据行

image-20250407162059656

image-20250407154442438

  • 单个数据 data( ):

将 “单个数据” 下的的某个字段拖入报表的某个单元格(或文本框), 该单元格(或文本框)将自动生成一个计算公式如 "=data('ds1', 1, 'price')",

表示仅从数据源取得单个数据,填充到本单元格(或文本框), 这个函数的参数用于指定数据源的行号和列名。

image-20250408084740215

image-20250408091306382

4. 数据源

引入数据源的方式有三种(SQL 语句、HQL语句、自定义)

(1) SQL和HQL:通过查询语句获取数据库中相应数据;语句的输入参数和输出字段在下表可见。

(2) 自定义:适用于处理比较复杂的数据。

image-20250407105259034

4.1 SQL和HQL类型

点击右侧编辑语句按钮,配置内容如下:

image-20250407110553501

注意事项:

(1)字段需要设置别名,在后面的样式设计中,需要通过别名引入数据

(2)查询参数目前不支持使用匿名参数,要指定参数名称。

(3)保存SQL前应执行SQL检查。

4.2 自定义数据源

创建java类继承ReportDataSource方法

复写initColumns和loadData方法

其中initColumns用于配置显示列

loadData返回数据列

其中数据的key要与列名对应

image-20250407105901127

4.3 输入参数

数据源支持传入参数

@CommandArgOption(groups = "all(cr, sr)")
public CommandResult buttonOK_Button(CommandArg arg) {
    CommandResult result = new CommandResult();
    ReimbursementTable reimbursementTable = (ReimbursementTable) arg.getCurrentRecord();
    PrintReportArg printReportArg = new PrintReportArg(Form_ReimbursementTable.class);
    if(reimbursementTable.getBillStatus() != BillStatus.Checked) {
        printReportArg.setPrintButtonEnable(false);
    }
    /**
    *报销单--模板的名称(如果不是标准模板,则传入来源模板的名称)
    *ReimbursementId--传入的参数key
    *reimbursementTable.getReimbursementId()--传入的参数值
    */
    printReportArg.addQueryParameter("报销单", "ReimbursementId", reimbursementTable.getReimbursementId());
    result.printReport(printReportArg);
    return result;
}

HQL和SQL类型的可以通过‘:ReimbursementId’占位符使用传入的参数

image-20250407111035320

自定义数据源可以通过

loadData方法参数中的Map arg0中获取

5.区块的使用

使用dataRow(),自动填充数据,一条数据只能放到一行。

但是存在场景,需要把一条数据的不同字段,放到不同的行。

如果是固定条数的数据,还可以使用 data('ds1',1,'字段') 、data('ds1',2,'字段')、data('ds1',n,'字段'),来固定某个单元格显示显示第1个数据源的第n条数据的某个字段。

当条数不固定时,更推荐使用区块

具体用法如下,以工资条为例:

1.在A列合并单元格 并拖入需要循环的数据源到合并单元格,设置改合并单元格的显示格式,数据源以区块方式填充 改为是

image-20250408093037846

2.拖动单个数据到 区块内的单元格

image-20250408093317278

使用效果

image-20250408094950191

results matching ""

    No results matching ""