填报表中如何生成 UUID 标识

多用户填报主键重复,常会造成数据丢失,为避开这个问题我们常依赖于数据库的主键自增,除此之外报表如何生成顺序递增标识‌UUID 呢?

DU3HBDSFXBCHPIVRMGpng

下面举例看一下润乾报表中如何处理。

准备一个行式填报表,设计界面如下

W24HNJ4JQFTYX9BLWGpng

其中,
数据处理部分选择【多源 SQL】然后【使用向导生成脚本】,“数据来源”设置如下:

9YHUSKQR3JOPS1ZE_PE0png

“数据去向”指定编号字段作为主键,如下图所示:

OOZI3SMWQI8TQIC3B6png

保存对象的旧数据,提取前两步设置的对象名供报表取数回填使用。

6NA2B47Z6W25DLT70F7png

报表设计方面
第 2 行标题名均与数据库字段名称一致;
A3 单元格,设置字段名称为 employee. 编号;
I3 单元格,表达式为 =H3*1.2, 实现自动计算;
A3-I4 单元格类型为数值格。
要求新增行时,编号自动增长生成 UUID,最终效果如下图所示

W0MKTLSIOLAWHY1CSSXKpng

关键点
首先,在报表展现的 jsp(如:previewInput.jsp) 页面中定义 js 方法如下:


    function newUUID()
    {
            var uuid = "";
            for (var i = 1; i <= 16; i++){
             var n = Math.floor(Math.random()*16.0).toString(16);
             uuid +=   n;
          }
        var len = uuid.length;
        return uuid;   
    }

然后,在报表将【缺省值表达式】设置为 newUUID(),调用自定义的 UUID 算法。如下图

_ELW3K9IQ6792LMpng

如此就可以达到 最终新增行生成 UUID 的效果。