填报表中如何生成 UUID 标识
多用户填报主键重复,常会造成数据丢失,为避开这个问题我们常依赖于数据库的主键自增,除此之外报表如何生成顺序递增标识UUID 呢?
下面举例看一下润乾报表中如何处理。
准备一个行式填报表,设计界面如下
其中,
数据处理部分选择【多源 SQL】然后【使用向导生成脚本】,“数据来源”设置如下:
“数据去向”指定编号字段作为主键,如下图所示:
保存对象的旧数据,提取前两步设置的对象名供报表取数回填使用。
报表设计方面
第 2 行标题名均与数据库字段名称一致;
A3 单元格,设置字段名称为 employee. 编号;
I3 单元格,表达式为 =H3*1.2, 实现自动计算;
A3-I4 单元格类型为数值格。
要求新增行时,编号自动增长生成 UUID,最终效果如下图所示
关键点
首先,在报表展现的 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 算法。如下图
如此就可以达到 最终新增行生成 UUID 的效果。