一、使用UUID自动生成主键
填报报表填报时没有特定的字段作为主键,希望能自动生成一串随机字符来作为主键,且不能重复。
FineReport 设计器内置了 UUID 函数,设置填报属性时,主键的值可以使用该函数,产生唯一标识码,实现编号的唯一性。
设置单元格的ID——当值为0时,=UUID()
1.if(len(A2)=0,UUID(32),A2)
2.条件属性设置
页面与入库id不一致
这是由于公式编辑界面默认勾选了「填报/分析时,保留公式用于计算」,则填报提交时公式会二次计算,从而导致入库时又重新生成了 id 。
多个内置 SQL 中使用 UUID
如果该填报表是多源填报类型,比如员工基础信息存在表 1 中,员工部门信息存在表 2 中,表 1 与表 2 有相同的字段「员工 ID」,填报时这两张表都要保存「员工 ID」。
此时必须在单元格中使用 UUID() 生成员工编号,报表填报属性设置两个「内置 SQL 提交」,分别绑定表 1 和表 2 ,表 1 和表 2 的「员工 ID」字段绑定同一个单元格。
若使用在报表填报属性中每张报表都使用 UUID() 函数,产生的序列号是不一样的,此时会导致员工 ID 不一致的情况。
二、获取登陆用户ID
用户认证 后会将报表三个固定的默认参数$fine_username、$fine_role、$fine_position保存在 Session 中。
$fine_username、$fine_role、$fine_position 是 FineReport 默认的参数,所以调用时大小写必须保持一致。
获取登陆用户ID:
1.数据集P_FINE_USER :SELECT USERNAME,REALNAME FROM FINE_USER
2.条件属性设置:VALUE("P_FINE_USER",2,1,$fine_username,0)
三、在多人同时填报一个模板的时候,可能会出现后填报的内容覆盖掉先填报的内容的问题
会出现覆盖问题的原因,是因为主键没有根据用户区分,所以不同人提交的时候,可能出现主键一致的现象。根据提交逻辑,主键一致会执行更新操作,这就造成了上述问题。
解决方案就是增加一个可以区分用户的主键,比如用户名,用户ID等。
标签:UUID,填报,ID,fine,主键,报表 From: https://www.cnblogs.com/bellin124/p/16912972.html