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個,必填 |