JVS开源框架系列:函数公式说明「含软开企服的开源地址」
JVS项目简介
JVS是面向软件开发团队可以快速实现应用的基础开发框架,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容器化构建,集合持续化构建。
项目仓库:https://gitee.com/software-minister/jvs
函数公式使用场景介绍
在填写表单或修改表单数据时,可以使该字段的值根据公式自动计算出来,不需要再手动填写。
目前一共支持 96 种函数,函数的灵活应用,对于数据收集有很多作用:
(1)可以提高填写表单的效率,将一些数据自动计算出来,减少需要填写的内容
如,分数在 90 以上时等级为 A,否则为 B。那么在输入分数之后,等级是 A 或 B 就能根据公式自动判断出来。
(2)可以减少错误
如,当前库存总数量=入库数量-已出库数量。那么在入库数量、已出库数量输入之后,当前库存总数量就能根据公式自动计算出来,避免手工计算出错。
函数公式设置
目前基本上所有的组件都已经支持编辑公式。
路径:选择画布中的组件 >> 属性配置面板 >>事件 >> 公式设置 >>配置
参与来源与表单携带过来的数据、系统底层提供的全局数据等,配置方式类excel的函数配置。
公式使用的场景
公式的组成
公式通常由组件、函数、运算符和标点符号组成
所有的字段,实际上都有一个内置的唯一标识,而所能看见的组件名称,也仅仅是一个显示名称。当公式需要将字段值作为变量时,手动输入或复制粘贴都是无效的(当前页面的公式可以拷贝给当前页面使用)
因为组件名可以重复,如果需要在公式中插入组件,应在字段列表中点击该组件,而不是手动输入组件名称。
公式内所有出现的符号,都需要在英文状态下输入
公式规则
在当前/所有表单字段中选择字段
公式所要用到的字段,绝大多数情况下是从 当前表单字段 中选择
只有 业务关联规则的函数会用到 所有表单字段
提醒:从当前表单字段中选择的字段是蓝色的,从所有表单字段中选择的字段是绿色的
运算符号
公式中,支持基本的运算操作符 +、-、*、/
加 |
减 |
乘 |
除 |
+ |
- |
* |
/ |
注:JVS公式中,等于逻辑应该用 EQ() ,而不是 = 。
公式概览(部分公式计划中)
函数 |
函数分类 |
说明 |
说明 |
上手实例 |
EQ |
逻辑函数 |
两个值比较,相等返回 true,默认忽略大小写,若不忽略,则填写第三个参数true |
2个,必填 |
EQ(value1,value2) |
NE |
逻辑函数 |
两个值比较,不相等返回 true,默认忽略大小写,若不忽略,则填写第三个参数true |
2个,必填 |
NE(value1,value2) |
LT |
逻辑函数 |
value1小于value2返回 true |
2个,必填 |
LT(value1,value2) |
GT |
逻辑函数 |
value1大于value2返回 true |
2个,必填 |
GT(value1,value2) |
LE |
逻辑函数 |
value1小于等于value2返回 true |
2个,必填 |
LE(value1,value2) |
GE |
逻辑函数 |
value1大于等于value2返回 true |
2个,必填 |
GE(value1,value2) |
AND |
逻辑函数 |
当参数组中的所有参数逻辑值为 true 时(逗号隔开的逻辑式子都满足),才返回 true,当参数组中的任何一个参数逻辑值为 false 时,就会返回false。 |
至少1个,必填 |
AND(logical1, [logical2], ...) |
OR |
逻辑函数 |
在参数组中,任何一个参数逻辑值为 true(逗号隔开的逻辑式子其中一项满足),即返回 true;只有当所有逻辑参数值为 false,才返回 false。 |
至少1个,必填 |
OR(logical1,[logical2], ...) |
NOT |
逻辑函数 |
对参数逻辑值求反。NOT 比较简单,就是把括号里为 true 的值变成 false,括号里为 false 的值变为 true。 |
1个,必填 |
NOT(logical) |
IF |
逻辑函数 |
判断一个条件能否满足;如果满足返回一个值,如果不满足则返回另外一个值 |
3个,必填 |
IF(A,B,C) |
ISEMPTY |
逻辑函数 |
判断一个字段是否为空;如果为空,则返回 true;如果不为空则返回 false |
1个,必填 |
ISEMPTY(字段) |
CONCATENATE |
文本函数 |
将多个字符串拼接合成一个文本字符串 |
至少1个,必填 |
CONCATENATE(text1,[text2], ...) |
LEFT |
文本函数 |
从一个文本字符串的第一个字符开始返回指定个数的字符,如果文本长度小于自定字符个数,就将原始文本返回 |
2个,必填 |
LEFT(text,num_chars) |
RIGHT |
文本函数 |
从一个文本字符串的最后一个字符开始返回指定个数的字符,如果文本长度小于自定字符个数,就将原始文本返回 |
2个,必填 |
RIGHT(text,num_chars) |
LEN |
文本函数 |
返回文本字符串中的字符个数 |
1个,必填 |
LEN(text) |
LOWER |
文本函数 |
将一个文本字符串中的所有大写字母转换为小写字母 |
1个,必填 |
LOWER(text) |
UPPER |
文本函数 |
将一个文本字符串中的所有小写字母转换为大写字母 |
1个,必填 |
UPPER(text) |
REPLACE |
文本函数 |
根据指定的字符数,将部分文本字符串替换为不同的文本字符串 |
1个,必填 |
REPLACE(oldtext, startnum, numchars, newtext) |
REPT |
文本函数 |
将文本重复指定次数 |
2个,必填 |
REPT(text, number_times) |
SEARCH |
文本函数 |
在第二个文本字符串中查找第一个文本字符串,并返回第一个文本字符串的起始位置的编号,该编号从第二个文本字符串的第一个字符算起。返回 0 则表示未查找到 |
3个,前2个必填 |
SEARCH(findtext,withintext,[start_num]) |
MID |
文本函数 |
截取文本的有效部分内容 |
3个,必填 |
MID(text,start_index,end_index) |
ISEMPTY |
文本函数 |
判断值是否为空字符串、空对象或者空数组 |
1个,必填 |
ISEMPTY(text) |
ADD |
数学函数 |
计算多个字段值总和 |
至少1个,必填 |
ADD(number1, [number2], ...) |
AVERAGE |
数学函数 |
求多个数值的平均值 |
至少1个,必填 |
AVERAGE(number1, [number2], ...) |
MAX |
数学函数 |
返回一组数字中的最大值 |
至少1个,必填 |
MAX(Number1, [Number2], ...) |
MIN |
数学函数 |
返回一组数字中的最小值 |
至少1个,必填 |
MIN(Number1, [Number2], ...) |
ABS |
数学函数 |
当数值为负数的时候返回他的绝对值数值 |
1个,必填 |
ABS(Number) |
ROUND |
数学函数 |
数值出现小数点的时候,将小位数指定到对应的位数 |
2个,必填 |
ROUND(number, num_digits) |
CEILING |
数学函数 |
返回将参数 number 向上舍入(沿绝对值增大的方向)为最接近的指定基数的倍数 |
2个,必填 |
CEILING(number, significance) |
FLOOR |
数学函数 |
将参数 number 向下舍入(沿绝对值减小的方向)为最接近的 significance 的倍数 |
2个,必填 |
FLOOR(number, significance) |
INTNUM |
数学函数 |
将数字向下舍入到最接近的整数 |
1个,必填 |
INTNUM(number) |
LOG |
数学函数 |
根据指定底数返回数字的对数 |
2个,必填 |
LOG(number, base) |
MOD |
数学函数 |
返回 2 个数值组件相除的余数 |
2个,必填 |
MOD(number, divisor) |
POWER |
数学函数 |
计算出数值组件乘幂的值 |
2个,必填 |
POWER(number, power) |
FIXED |
数学函数 |
将数字舍入到指定的小数位数,以十进制数格式对该数进行格式设置,并以数字形式返回结果 |
2个,必填 |
FIXED(number, decimals) |
SQRT |
数学函数 |
取数值组件值正的平方根 |
1个,必填 |
SQRT(number) |
SUM |
数学函数 |
函数使所有以参数形式给出的数字相加并返回和 |
至少1个,必填 |
SUM(number1, [number2], ...) |
PRODUCT |
数学函数 |
数字相乘 |
2个,必填 |
PRODUCT(number1,number2) |
SUMPRODUCT |
数学函数 |
在给定的数组中,将数组间对应的元素相乘,并返回乘积之和 |
2个,必填 |
SUMPRODUCT(array1, array2) |
NUMBERCOMPARE |
数学函数 |
数值组件与数值组件2比较,大于返回1,等于返回0,小于返回-1 |
2个,必填 |
NUMBERCOMPARE(数值组件1,数值组件2) |
NOW |
时间函数 |
自此日期起的1970年1月1日,00:00:00 GMT以来的毫秒数。 |
不可填 |
NOW() |
INTERSECTIONSET |
集合函数 |
计算两个集合的交集 |
2个,必填 |
INTERSECTIONSET(array1,array2) |
UNIONSET |
集合函数 |
计算两个集合的并集 |
2个,必填 |
UNIONSET(array1,array2) |
DIFFERENCESET |
集合函数 |
计算两个集合的差集 |
2个,必填 |
DIFFERENCESET(array1,array2) |
SUBSET |
集合函数 |
计算第二个集合是否第一个集合的子集 |
2个,必填 |
SUBSET(array1,array2) |
ARRAYGET |
集合函数 |
返回数据集中第k个值 |
2个,必填 |
ARRAYGET(Array, k) |
LARGE |
集合函数 |
返回数据集中第k个最大值 |
2个,必填 |
LARGE(Array, k) |
SMALL |
集合函数 |
返回数据集中第k个最小值 |
2个,必填 |
SMALL(Array,k) |
USER |
人员类 |
无参数模式:User() 获取当前登录人; |
1个,选填 |
USER() |
有参数模式:User(level) 当前登录人的主管, level 是 获取当前登录人的主管 |
USER([level]) |
|||
USERFIELD |
人员类 |
人员搜索框需要联动带出一些基本信息 |
2个,必填 |
USERFIELD( 成员 ,"userId"),USERFIELD( 成员 ,"name") |
GETUSERNAME |
人员类 |
获取当前登录人昵称 |
不可填 |
GETUSERNAME() |
EMPLOYEE |
人员类 |
返回对应的人员信息对象数组(即人员组件底层的值) |
1个,必填 |
EMPLOYEE(array1) |
DIRECTOR |
人员类 |
获取当前登陆人的主管名称 |
1个,必填 |
DIRECTOR(level) |
LOGINUSER |
人员类 |
登录人 |
不可填 |
LOGINUSER() |
LOGINUSERWORKNO |
人员类 |
获取当前登录人员工唯一ID(员工UserID) |
不可填 |
LOGINUSERWORKNO() |
DEPTNAME |
部门类 |
获取指定人所在部门名称 |
1个,必填 |
DEPTNAME(userId) |
COUNT |
通用类 |
统计指定表单提交的数据总数 |
至少1个,必填 |
COUNT("表单ID") |
下一期预告:应用访问与使用