• 开发指导


    1.1 报表数据隔离

    sql中可以使用一些预定义参数来获取当前用户的信息,可用于数据隔离
    例如:

    select user_id, name from user where user_id='${u-userId}'  
    

    在数据集管理功能中,以u-开头的自定义参数,不会是被初始化为参数
    以下为所有预定义参数:

    字段名 含义
    u-userId 当前用户Id
    u-language 当前会话语言
    u-roleId 当前角色Id
    u-roleIds 当前会话可访问的角色集合
    u-tenantId 当前租户
    u-tenantIds 当前会话可访问的租户集合
    u-organizationId 所属租户

    1.2 字体问题

    需要注意的是: 报表平台的字体默认只支持黑体,若报表打印时,出现乱码,很可能是字体缺失
    用户可以自定义需要的字体:
    1.将所有需要的字体文件上传至报表服务所在服务器
    2.ymal文件中指定字体名称和字体文件的绝对路径

    hzero:
        report:
            fontPaths:
          		- 宋体|C:\Windows\Fonts\simsun.ttc
    

    1.3 使用二维码

    hzero.report.qrCodeUrl用来配置二维码的生成地址,报表服务提供了通用的二维码生成接口
    示例配置:http://hzerodevb.saas.hand-china.com/hrpt/v1/qr-codes?text=
    qrCodeUrl配置之后,数据集会默认填充QR_CODE_URL,模板定义中可以使用此变量

    rtf中使用二维码

    插入图片,作为二维码占位符,右键 -> 图片 -> 可选文字

    拼接二维码地址变量

    1.4 菜单中挂报表

    在需要的位置新建菜单,菜单路径示例: /hrpt/report-detail?code=USER&auto=true

    1.5 标签模板相关

    预览标签

    调用接口/v1/{organizationId}/label-print/view/{labelTemplateCode},获取生成标签HTML内容,格式为{“label”:“html内容”}

    /**
      * @param labelTemplateCode    标签模板编码
      */
    @GetMapping("/view/{labelTemplateCode}")
    public JSONObject preview(@PathVariable String labelTemplateCode, HttpServletRequest request)
    
    

    目前不支持在页面上录入数据集中的参数,需要手动调该接口然后将参数拼接在路径上面,如/v1/{organizationId}/label-print/view/{labelTemplateCode}?name=xxx&age=xxx

    打印示例

    目前提供了两种方式用于对接打印机,一种是基于打印机IP地址打印,一种是基于打印机驱动打印,基于IP地址打印采用打印机默认打印设置,不可自定义属性; 基于驱动打印可自定义打印的属性,例如边距、宽高、方向、数量等。

    驱动打印

    以win10为例,系统安装好打印机驱动以后,可在设置-设备-打印机和扫描仪中看到系统连接的打印机。
    我们需要知道打印机的名称,如图所示:

    接着我们调用/v1/{organizationId}/label-prints/print-by-drive/{labelTemplateCode}接口,传入参数即可打印。

        /**
          * @param organizationId       租户ID
          * @param labelTemplateCode    标签模板编码
          * @param printerName          打印机名称
          * @param quantity             打印数量
          * @param request              http请求
          */
        @ApiOperation(value = "驱动打印标签")
        @Permission(level = ResourceLevel.ORGANIZATION)
        @GetMapping("/print-by-drive/{labelTemplateCode}")
        public void printByDrive(@PathVariable Long organizationId,
                                 @PathVariable String labelTemplateCode,
                                 @RequestParam String printerName,
                                 @RequestParam Integer quantity,
                                 @RequestParam HttpServletRequest request)
    

    IP地址打印

    调用/v1/{organizationId}/label-prints/print-by-address/{labelTemplateCode}接口。

        /**
          * @param organizationId       租户ID
          * @param labelTemplateCode    标签模板编码                    
          * @param ipAddress            打印机IP地址
          * @param port                 打印机端口
          * @param request              http请求
          */
        @ApiOperation(value = "IP地址打印标签")
        @Permission(level = ResourceLevel.ORGANIZATION)
        @GetMapping("/print-by-address/{labelTemplateCode}")
        public void printByAddress(@PathVariable Long organizationId,
                                   @PathVariable String labelTemplateCode,
                                   @RequestParam String ipAddress,
                                   @RequestParam Integer port,
                                   @RequestParam HttpServletRequest request)