多天数预约重复性校验

1. 简介

1.1 案例简介

本文将介绍,在多天数预约的场景中,如何根据预约开始时间和预约天数,判断当前时段是否可预约,并调取出不可预约的具体日期。

1.2 应用场景

  • 设备管理场景中,预约使用某设备时,需一次性预约多天,则可通过本方法校验设备是否已被预约;
  • 会议室预约场景中,一次性预约多天会议室时,可通过本方法校验所选会议室是否已被预约;
  • 课程管理场景中,为教学老师排课时,需安排多日课程,可通过本方法校验该老师是否已有课程安排等。

1.3 设计思路

1)在表单中预约的基本信息,包括预约设备、预约开始时间和使用天数;

2)通过子表单自动编号的设置,根据使用天数生成对应的子表单行数;

3)在对应子表单行中,生成对应的预约信息唯一值,即预约设备和预约时间的组合值;

4)通过聚合表记录全部预约记录,根据当前预约的会议室预约唯一值数据联动聚合表;

5)如联动结果为空值,则说明之前没有预约记录,支持被预约。

1.4 预期效果

以设备预约的场景为例:

1)如成员已在「设备预约表」中预约使用设备 A,预约开始时间为,使用天数为 7 天:

2)当其他成员在该时间段内再次预约使用该设备 A 时,将在字段中提示不可预约,并告知不可预约日期,且无法提交表单,效果如下:

注:由于安装模板时限制单个表单数据最多为 100 条,故安装模板体验效果时,需要重新按照【2.2 「子表单基础表」录入数据】的步骤录入数据才能成功实现效果,否则将无法体验。

2. 设置步骤

在学习之前建议安装 多天数预约重复性校验 应用模板,本文将按照模板中的示例数据进行讲解。

以设备预约的场景为例:

2.1 表单搭建

1)新建「设备预约表」表单,字段设置如下:

字段名称

字段类型

预约人

成员单选

预约设备

下拉框

预约开始时间

日期时间

使用天数

数字

是否可预约

单行文本

不可预约日期

单行文本

日期明细

子表单

序号

子字段-单行文本

查询日期

子字段-日期时间

日期+设备

子字段-单行文本

数字辅助

子字段-数字

聚合表查询辅助

子字段-数字

已预约日期

子字段-单行文本

2)新建「子表单基础表」辅助表单,字段设置如下:

字段名称

字段类型

总行数

数字

子表单

子表单

序号

子字段-单行文本

数字

子字段-数字

2.2 「子表单基础表」录入数据

1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx

2)导入数据时需确认示例数据和表单字段的关联关系如下:

2.3 设置子表单数据联动

1)进入「设备预约表」表单,选中「日期明细」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:

2)进入数据联动设置页面,设置内容如下:

  • 联动表单:「子表单基础表」;
  • 条件设置为:「总行数」等于「使用天数」;
  • 触发联动:
    • 「日期明细」字段显示「子表单」字段的值;
    • 添加「序号」子字段,显示为「序号」子字段的值;

全部设置完成点击「确定」。

即使用天数设置为多少天,则在该子表单中添加多少行日期明细数据。

2.4 设置辅助字段公式

设置好子表单的整体数据联动,接下来设置如下辅助字段的公式:

  • 日期明细.查询日期
  • 日期明细.日期+设备

1)选中「日期明细.查询日期」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:

2)在公式编辑页面,设置「日期明细.查询日期」的公式为:DATEDELTA(预约开始时间,日期明细.序号-1)

表示自动根据预约开始时间和预约天数生成预约的日期,如第一行展示预约时间当天、第二行展示预约时间 +1 天,以此类推。

设置好记得点击确定」保存。

3)按照同样的方法,设置「日期明细.日期+设备」字段的公式为CONCATENATE(TEXT(DATE(日期明细.查询日期),'yyyyMMdd'),即通过 CONCATENATE 函数连接预约日期和设备名称,作为唯一值。

2.5 设置辅助字段默认值

选中「日期明细.数字辅助」字段,在「字段属性 >> 默认值」处,设置默认值为「自定义」,在下方输入框中设置默认值为 1,便于后续作为聚合表的指标。

2.6 设置聚合表

1)新建 聚合表,设置数据来源为单表数据,数据表选择「设备预约表」,设置好点击「确定」。

2)设置聚合表的行表头和指标如下:

  • 行表头:日期明细.日期+设备
  • 指标:日期明细.数字辅助

2.7 设置聚合表数据联动

1)选中「日期明细.聚合表查询辅助」字段,在「字段属性 >> 默认值」处,设置默认值为「数据联动」,点击下方「数据联动设置」:

2)进入数据联动设置页面,设置内容如下:

  • 联动表单:聚合表「设备预约」;
  • 条件设置为:「日期明细.日期+设备」等于「日期明细--日期+设备」;
  • 触发联动:「日期明细--聚合表查询辅助」联动显示「日期明细.数字辅助」字段的值;

全部设置完成点击「确定」。

2.8 设置校验字段公式

同【2.4 设置辅助字段公式】的方法,设置如下校验字段的公式:

  • 日期明细.已预约日期:IF(ISEMPTY(日期明细.聚合表查询辅助)==0,TEXT(DATE(日期明细.查询日期),'yyyy-MM-dd'),''),表示当「日期明细.聚合表查询辅助」字段不为空,即在聚合表中查询到对应预约记录时,显示对应的预约日期,反之为空;
  • 是否可预约:IF(OR(ISEMPTY(预约开始时间)==1,ISEMPTY(使用天数)==1),'',IF(LEN(CONCATENATE(日期明细.已预约日期))==0,'可预约','不可预约')),表示当「预约开始时间」或「使用天数」为空时,该字段为空;当「日期明细.已预约日期」中字符串个数为 0 时,显示为可预约,否则不可预约;
  • 不可以预约日期:IF(OR(ISEMPTY(预约开始时间)==1,ISEMPTY(使用天数)==1),'',IF(是否可预约=='不可预约',日期明细.已预约日期,'无')),表示当「预约开始时间」或「使用天数」为空时,该字段为空;当「是否可预约」为不可预约时,展示已有的预约时间,反之为空。

2.9 设置表单提交校验

在「设备预约表」中设置表单提交校验,当

1)在「表单属性 >> 表单提交校验」处,点击「添加校验条件」:

2)在「提交校验」页面中,设置提示文字为「该设备部分日期已被预定,请重新选择设备或时间进行预约!」,校验公式设置为:是否可预约=="可预约",设置完成后点击「确定」。

2.10 设置字段显隐规则

1)对于表单中的「日期明细」辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:

2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:

2.11 效果演示

效果演示参见本文【1.4 预期效果】。

文档内容是否对您有帮助?
有帮助
没帮助没帮助
如需获取即时帮助,请联系技术支持
咨询
扫码领取100+零代码资料简道云官方微信号400-111-0890
图标在线咨询
立即体验