如何实现随机抽奖
场景
从人员名单中随机抽取中奖人员
🔗安装方案
使用步骤
1、在「人员名单」中添加需要参加抽奖的人员;2、在「抽奖设置」中发起抽奖活动;3、自动生成抽奖结果,在门户中查看
搭建步骤
表单设置
「人员名单」
设置数据编号格式

【成员】:成员/单行文字
(如果是对于外部人员进行抽奖,字段类型使用单行文字即可)

「抽奖设置」
设置数据编号格式

【抽奖设置】:段落
【奖项名称】:单行文字

【中奖人数】:数字
可以设置提示信息,以及勾选为必填内容

【定时开奖】:单项选择
可以设置选项颜色

设置逻辑表单,当选择“是”时,显示字段【开奖时间】进行填写

【开奖时间】:日期
【参与人员名单】:表格

【参与人员名单·参与成员】:引用
设置数据来源:应用「人员名单」,显示字段:【成员】,勾选为必填内容,以及“作为表格数据来源”

【参与人员名单·已选成员】:成员-关联已有数据
关联应用「人员名单」中的字段【成员】,筛选条件:数据ID==【参与人员名单·引用】(引用的是应用中的某条数据,引用字段的实质是对应数据的ID)

【隐藏字段】:段落
【虚拟邮箱】:邮箱
设置一个默认的虚假邮箱

「自动抽奖」

【抽奖信息】:段落
【奖项名称】【抽奖编号】:单行文字
【参与人数】:数据关联-聚合方式“计数”
关联应用「抽奖设置」中的字段【参与人员名单·已选成员】,筛选条件:应用「抽奖设置」中的编号与当前的【抽奖编号】相同,聚合方式:计数(编号相同的这条数据中有多少个已选成员,即计数多少个参与人数)

【中奖人数】:数字
【自动抽奖】:段落
【参与成员】:成员
【随机数除数】:数字-设置公式
INT():将数字向下取整
NUM():返回文本中的数字(数据关联字段的值参与计算需要先通过NUM()将其转换为数字)

【随机数】:数字-设置公式
RDID():返回一个随机码
NUM():返回文本中的数字(NUM(RDID()),返回随机码中的数字,返回的是开头的数字)
MOD():返回两数相除的余数

【累计提交数】:数据关联-聚合方式“计数”
关联应用「自动抽奖」中的字段【是否中奖】(这里关联应用中的哪个字段都可以,最终要实现的是计数已经有多少条符合筛选条件的数据),筛选条件:同一个抽奖编号,聚合方式:计数

【累计选中数】:数据关联-聚合方式“计数”
关联应用「自动抽奖」中的字段【是否中奖】(同样这里关联应用中的哪个字段都可以),筛选条件:同一个抽奖编号,且【是否中奖】的值为“是”,聚合方式:计数

【是否中奖】:单行文字-设置公式

流程设置
「抽奖设置」
设置申请人节点的字段权限,将不需要填写的字段设置隐藏

隐藏字段【参与人员名单·已选成员】,高级设置中开启“提交/通过时重新触发数据管理或公式”,选择该字段重新触发
设置意义:【参与人员名单·已选成员】字段中设置了关联已有数据,隐藏字段后需要开启重新触发该字段关联对应值

添加流程分支,判断是否需要定时开奖

如果需要定时开奖,分支中添加一个审批节点,在高级设置中开启“流程超时”

设置超时触发时间,即具体的开奖时间
超时后通知谁:动态-邮箱字段-【虚假邮箱】
超时处理:自动提交

添加节点Q-Robot添加数据,往应用「自动抽奖」中添加数据(添加规则如图)

「自动抽奖」
应用中的数据都是由「抽奖设置」中添加来的,涉及到关联/公式的字段需要设置“提交/通过时重新触发数据关联或公式”(设置了才会触发这些字段进行关联或计算)
注意字段设置的先后顺序,需要先触发的字段顺序在前(如先计算“随机数除数”,才能再计算“随机数”,“随机数除数”的顺序需要在前)

实现效果

门户/报表设置
在应用「自动抽奖」中创建报表
参与名单
报表类型-汇总表,行维度:奖项名称、参与成员

中奖名单
报表类型-汇总表,行维度:奖项名称、参与成员,筛选条件:是否中奖==“是”

门户
添加报表

设置宫格,可以直接从门户中发起数据

设置筛选条件,展示符合条件的报表内容

