在数字有道零代码平台中,利用随机函数,实现随机抽签业务
在数字有道绘搭零代码平台中,使用随机函数,实现抽签类场景。
1、需求示例:
学校在做各类项目评审时候,需要给每个项目在专家库中随机抽取专家。我们尝试使用绘搭零代码平台实现这一需求。
2、设计思路:
先设置一个专家库,再设计一个抽取专家的表单(使用计算公式RAND函数实现),在项目评审时候,使用自定义按钮,打开抽取专家的表单进行抽取,抽取完成之后,通过智能助手更新专家抽取状态。
3、设计步骤说明:
注意:由于 RAND函数 是随机生成的编号,且 RAND函数 无法避免随机数的重复,这就导致可能出现抽到的专家重复出现的情况。
为了避免这种情况,我们就用 RAND 函数抽取第一个专家的编号,在第一个专家的编号上加上 1、2、3…X-1,那么我们就的得到了 X 个专家不重复的编号,再基于这个编号去联动专家信息就可以了。
设计步骤如下所示:
1)设置专家库。
2)利用 RAND函数生成随机辅助号。
3)随机辅助号与序号相加生出抽取人员编号。
4)根据人员编号进行数据联动抽专家。
3.1设置专家库
打开「专家库」基础信息表,表单中有不同类型的字段,专家库表单包含 5个字段:人员编号、姓名、所属部门、联系方式、状态

录入专家名单,可以通过单条添加、Excel数据导入的方式,也可以从数据库同步数据。
特别注意:人员编号是数字字段,需要从 1 开始编号;其他字段用户显示专家信息。
3.2随机抽取专家表单
新增专家抽取表单,字段包括项目名称、人员总数-辅助、随机辅助号、专家列表子表单、专家状态。

(1)配置抽取辅助信息
由于辅助信息是为了后面的公式调用,不必在表单中显示。故进入编辑表单页面,将所有的辅助信息设置为不可见,同时不可见字段设置为始终重新计算。
人员总数-辅助:「人员总数-辅助」选用数字字段,使用 MAPX函数计算出专家库中状态为正常的专家总数,公式编辑为:MAPX('count','专家状态',状态,人员编号)

随机辅助号:「随机辅助号」选用数字字段,利用 RAND函数 在 1 到专家总数之间随机抽取一个整数作为第一个专家的编号。公式编辑为:INT(RAND()*(人员总数-辅助+1-1)+1)

子表单.序号的设置:「子表单.序号」选用数字字段,并且将子表单整体默认值进行填写,抽取 3个专家则设置 3 行默认值,抽取 5个专家则设置为5行默认值,抽取 n个则设置为 n 行默认值从 1 填写到 n。
示例:抽取 3 个专家,则默认值从 1 填写到 3,且设置最多填写3个。

- 子表单.人员编号的设置
「子表单.人员编号」选用数字字段,利用 IF函数 进行条件判断,得到实际的编号。在随机辅助号的基础上加上子表单的序号,如果加上序号之后大于专家的总数,则减去专家的总数。
公式编辑为:IF(随机辅助号+专家列表.序号<=人员总数-辅助,随机辅助号+专家列表.序号,随机辅助号+专家列表.序号-人员总数-辅助)

3.3效果
每次打开随机抽取专家表单,子表单中,专家都会随机抽取3个。

4、使用自定义按钮抽取专家
4.1创建项目表单
根据业务需求,设计符合管理诉求的项目信息表单。

4.2创建自定义按钮
创建自定义按钮:
(1)按钮样式自定义
(2)可用条件设置,专家抽取状态为【未抽取】,不满足条件显示但不可点击。
(3)执行动作,打开专家抽取表单,并设置项目名称传参。

4.3创建智能助手
在随机抽取表单上创建智能助手,用户更新项目表单中的专家抽取状态。基于这个状态,控制按钮是否可以点击。

4.4效果
第一步:发起专家抽取

第二步:提交之后,,触发智能助手,更新项目表中的专家抽取状态,根据状态操作按钮会自动置灰。

第三步:查看明细,通过关联查询,可以查询出抽取的专家名单

5、总结
本次场景DEMO实现的是核心步骤,基于此种业务逻辑,可以扩展更多的需求场景,例如通知专家参加评审,专家在线反馈等。
更多推荐




所有评论(0)