diff --git a/resource/WEB-INF/config/MyBatis.xml b/resource/WEB-INF/config/MyBatis.xml new file mode 100644 index 000000000..31cc6f0dd --- /dev/null +++ b/resource/WEB-INF/config/MyBatis.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/WEB-INF/lib/QLExpress-3.2.0.jar b/resource/WEB-INF/lib/QLExpress-3.2.0.jar new file mode 100644 index 000000000..52f48b289 Binary files /dev/null and b/resource/WEB-INF/lib/QLExpress-3.2.0.jar differ diff --git a/resource/WEB-INF/lib/pagehelper-5.0.0.jar b/resource/WEB-INF/lib/pagehelper-5.0.0.jar new file mode 100644 index 000000000..187266c88 Binary files /dev/null and b/resource/WEB-INF/lib/pagehelper-5.0.0.jar differ diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties new file mode 100644 index 000000000..743f4df00 --- /dev/null +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -0,0 +1,5 @@ +log=false +defaultCloseNonStandard149=true +AESEncryptScrect=990EB004A1C862721C1513AE90038C9E +version=2.7.3.2304.01 +openFormulaForcedEditing=false \ No newline at end of file diff --git a/src/com/engine/salary/constant/des.json b/src/com/engine/salary/constant/des.json new file mode 100644 index 000000000..047235f93 --- /dev/null +++ b/src/com/engine/salary/constant/des.json @@ -0,0 +1,2127 @@ +{ + "data": [ + { + "children": [ + { + "name": "CONCAT", + "chineseName": "链接多个文本", + "description": "可用于连接多个任意类型的文本、日期、数字变量或常量。最后一个字符可使用'#分隔符#'标记为分隔符", + "example": "CONCAT({总价}/10000, '万元')", + "result": "100万元", + "paramDescs": [ + "*文本1*(必选)", + "*文本2*(可选)", + "......" + ], + "formatString": "CONCAT(文本1, 文本2, [文本3, …],[#分隔符#])", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": true + } + ] + }, + { + "name": "TEXT", + "chineseName": "将变量转为文本", + "description": "将变量转为文本。", + "example": "TEXT({当前数据.性别})", + "result": "'男'", + "paramDescs": [ + "*变量*(必选)" + ], + "formatString": "TEXT(变量)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "VALUE", + "chineseName": "将文本转为数字", + "description": "将文本转为数字。", + "example": "VALUE('23')", + "result": "23", + "paramDescs": [ + "*文本、数字、选项*(必选)" + ], + "formatString": "VALUE([文本、数字、选项])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "LEN", + "chineseName": "返回文本长度", + "description": "返回文本的长度,中文、英文都算1个字符。", + "example": "LEN('大家好dajiahao')", + "result": "12", + "paramDescs": [ + "*变量或常量*(必选)" + ], + "formatString": "LEN(文本)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SEARCH", + "chineseName": "在文本中查找关键字", + "description": "在指定文本中查找关键字,返回第一次出现关键字的字符位置,文本的第一个字记为1。未找到,返回0。搜索开始位置,表示从文本的第几个字符开始搜索,默认为1。", + "example": "SEARCH('大家', '大家好大家好', 3)", + "result": "4", + "paramDescs": [ + "*文本关键字*(必选)", + "*文本*(必选)", + "*搜索开始位置*(可选)" + ], + "formatString": "SEARCH(关键字, 文本, [搜索开始位置])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": false, + "infinite": false + } + ] + }, + { + "name": "REPLACE", + "chineseName": "替换文本中的字", + "description": "在原文本中,从替换位置开始,往后数指定的替换字符数,将这段文本替换为新文本。", + "example": "REPLACE('大家好大家好', 2, 3, 'dajia')", + "result": "'大dajia家好'", + "paramDescs": [ + "*文本*(必选)" + ], + "formatString": "REPLACE(原文本, 替换开始位置, 替换字符数, 新文本)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 4, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "REPT", + "chineseName": "将文本重复指定次数", + "description": "将文本重复指定次数。", + "example": "REPT('大家', 2)", + "result": "'大家大家'", + "paramDescs": [ + "*文本*(必选)", + "*重复次数*(必选)" + ], + "formatString": "REPT(文本, 重复次数)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "PAD", + "chineseName": "将文本填充至指定长度", + "description": "将原文本填充到指定长度,如果文本长度大于设置的长度,则不做任何操作。填充位置可用参数:'LEFT'、'RIGHT'。", + "example": "PAD('你好', 4, '你', 'LEFT')", + "result": "'你你你好'", + "paramDescs": [ + "*原文本*(必选)", + "*长度*(必选)", + "*填充用的文本*(必选)", + "*填充位置*(可选)" + ], + "formatString": "PAD(原文本, 长度, 填充用的文本, [填充位置])", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 4, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "constType": [ + "RIGHT", + "LEFT" + ], + "infinite": false + } + ] + }, + { + "name": "TRIM", + "chineseName": "清除前后空格", + "description": "删除文本首尾的空格。", + "example": "TRIM(' 大家好 ')", + "result": "'大家好'", + "paramDescs": [ + "*文本*(必选)" + ], + "formatString": "TRIM(文本)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "LEFT", + "chineseName": "返回文本左侧开始的文字", + "description": "从文本左侧开始,返回指定字符数的文字。", + "example": "LEFT('大家好', 2)", + "result": "'大家'", + "paramDescs": [ + "*文本*(必选)", + "*截取字符数*(必选)" + ], + "formatString": "LEFT(文本, 截取字符数)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "RIGHT", + "chineseName": "返回文本右侧开始的文字", + "description": "从文本右侧开始,返回指定字符数的文字。", + "example": "RIGHT('大家好', 2)", + "result": "'家好'", + "paramDescs": [ + "*文本*(必选)", + "*截取字符数*(必选)" + ], + "formatString": "RIGHT(文本, 截取字符数)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "MID", + "chineseName": "返回文本指定位置开始的文字", + "description": "从文本指定位置之后开始,返回指定字符数的文字。", + "example": "MID('大家好', 2, 1)", + "result": "'家'", + "paramDescs": [ + "*文本*(必选)", + "*指定位置*(必选)", + "*截取字符数*(必选)" + ], + "formatString": "MID(文本, 指定位置, 截取字符数)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SCORE", + "chineseName": "获取选项型控件分数", + "description": "获取选项型控件(单选框、复选框、下拉菜单)分数。", + "example": "SCORE({当前数据.单选框})", + "result": "选项分数(注:未设置选项分数时,结果为0)", + "paramDescs": [ + "*选项*(必选)" + ], + "formatString": "SCORE({选项})", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "option", + "must": true, + "infinite": false + } + ] + }, + { + "name": "IDCARD", + "chineseName": "身份证函数", + "description": "从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。", + "example": "IDCARD( ‘43070319980706334X’ , ‘BD’ )", + "result": "'1998-07-06'", + "paramDescs": [ + "*身份证号码*(必选)", + "*查找类型*(必选)" + ], + "formatString": "IDCARD({身份证号码}, {查找类型})", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "constType": [ + "BD", + "NA", + "AGE", + "GENDER" + ], + "infinite": false + } + ] + }, + { + "name": "ISSTRING", + "chineseName": "是否是字符串", + "description": "判断是否是字符。", + "example": "ISSTRING('泛微123456')", + "result": "true", + "paramDescs": [ + "*变量或常量*(必选)" + ], + "formatString": "ISSTRING({任意控件})", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ISJSON", + "chineseName": "JSON字符格式化", + "description": "判断是不是JSON字符串,参数可以是数组,也可以是字符串,参数为数组时数组中必须只包含一个字符串。", + "example": "假设文本控件={a:123},ISJSON({文本控件})", + "result": "true", + "paramDescs": [ + "*变量或常量*(必选)" + ], + "formatString": "ISJSON({变量})", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "GETJSONVALUE", + "chineseName": "JSON字符取值", + "description": "获取JSON值。第一个参数为json,可以是数组也可以是对象;第二个参数为json对象的键值,返回键值对应的值,json为数组时返回的多个值以逗号分隔", + "example": "假设文本控件={a:123},GetJSONValue('{文本控件}','a')", + "result": "123", + "paramDescs": [ + "*变量或常量*(必选)", + "*变量或常量*(必选)" + ], + "formatString": "GETJSONVALUE({变量1},变量2)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ISINT", + "chineseName": "字符内容是否是整数", + "description": "判断字符内容是否是整数", + "example": "ISINT( 2.123 )", + "result": "false", + "paramDescs": [ + "*字符*(必选)" + ], + "formatString": "ISINT({字符})", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ISNUMBER", + "chineseName": "字符内容是否是数字", + "description": "判断字符内容是否是数字。", + "example": "ISNUMBER('2.123')", + "result": "true", + "paramDescs": [ + "*字符*(必选)" + ], + "formatString": "ISNUMBER({字符})", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SPLIT", + "chineseName": "字符分割", + "description": "字符分割函数,将字符以指定字符为依据分割字符为一组字符", + "example": "假设文本控件=ABC#DEF,SPLIT('{文本控件}','#')", + "result": "[ABC,DEF]", + "paramDescs": [ + "*字符*(必选)", + "*分割符*(必选)" + ], + "formatString": "SPLIT({字符},{字符})", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "LOWER", + "chineseName": "字符转小写", + "description": "将字符中的字母转为小写。", + "example": "LOWER('ABC')", + "result": "abc", + "paramDescs": [ + "*字符*(必选)" + ], + "formatString": "LOWER({字符})", + "paramArray": [], + "paramData": [], + "returnType": "String", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "UPPER", + "chineseName": "字符转大写", + "description": "将字符中的字母转为大写。", + "example": "UPPER('abc')", + "result": "ABC", + "paramDescs": [ + "*字符*(必选)" + ], + "formatString": "UPPER({字符})", + "paramArray": [], + "paramData": [], + "returnType": "String", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "TEXTBEFORE", + "chineseName": "截取N个分割符之前的字符", + "description": "截取N个分割符之前的字符", + "example": "TEXTBEFORE('abc-12','-',1)", + "result": "abc", + "paramDescs": [ + "*字符*(必选)", + "*字符*(必选)", + "*变量或常量*(必选)" + ], + "formatString": "TEXTBEFORE({目标文本},{分隔符},{索引下标})", + "paramArray": [], + "paramData": [], + "returnType": "String", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "TEXTAFTER", + "chineseName": "截取N个分隔符之后的字符", + "description": "截取N个分隔符之后的字符", + "example": "TEXTAFTER('abc-12','-',1)", + "result": "12", + "paramDescs": [ + "*字符*(必选)", + "*字符*(必选)", + "*变量或常量*(必选)" + ], + "formatString": "TEXTAFTER({目标文本},{分隔符},{索引下标})", + "paramArray": [], + "paramData": [], + "returnType": "String", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + } + ], + "dataType": "char", + "name": "字符函数", + "action": "DataSource", + "type": "functions" + }, + { + "children": [ + { + "name": "TODAY", + "chineseName": "当前日期", + "description": "返回当天日期。", + "example": "TODAY()", + "result": "'2020-01-01'", + "formatString": "TODAY()", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "NOW", + "chineseName": "当前日期时间", + "description": "返回当天日期+时间。", + "example": "NOW()", + "result": "'2016-12-24 12:05:38'", + "formatString": "NOW()", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "DATEADD", + "chineseName": "对日期加减年、月、日", + "description": "对日期加减按照单位加减。单位默认为日,可选单位:年Y、月M、日D、时H、分I、秒S。", + "example": "DATEADD('2016-12-21', 3)
DATEADD('2016-12-24 20:00:00', 3, 'H')", + "result": "'2016-12-24'
'2016-12-24 23:00:00'", + "paramDescs": [ + "*日期*(必选)", + "*数值*(必选)", + "*单位*(可选)" + ], + "formatString": "DATEADD(日期,数值 , [单位])", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "constType": [ + "Y", + "M", + "D", + "H", + "I", + "S" + ], + "infinite": false + } + ] + }, + { + "name": "DATEDIFF", + "chineseName": "返回两个日期的差值", + "description": "根据指定的单位,返回日期2减去日期1的差值。当日期2小于日期1时,差值为负值。单位默认为日,可选单位:年Y、月M、日D、时H、分I、秒S。", + "example": "DATEDIF('2016-12-21', '2016-12-24')
DATEDIF('2016-12-24 20:00:00', '2016-12-25 20:00:00', 'H')", + "result": "3
24", + "paramDescs": [ + "*日期1*(必选)", + "*日期2*(必选)", + "*单位*(可选)" + ], + "formatString": "DATEDIFF(日期1, 日期2, [单位])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "constType": [ + "Y", + "M", + "D", + "H", + "I", + "S" + ], + "infinite": false + } + ] + }, + { + "name": "DATEFORMAT", + "chineseName": "返回指定格式的日期", + "description": "将日期转为指定格式返回。
yyyy 将年份显示为1900-9999
yy 将年份显示为00-99
mm 将月份显示为 01–12
dd 将日期显示为 01–31", + "example": "DATEFORMAT('2016-12-24', 'YY-MM-DD')", + "result": "2016-12-24", + "paramDescs": [ + "*日期*(必选)", + "*日期格式*(必选)" + ], + "formatString": "DATEFORMAT(日期, 可选格式)", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "YEAR", + "chineseName": "返回日期中的年", + "description": "返回指定日期中的年。", + "example": "YEAR('2016-12-24')", + "result": "2016", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "YEAR(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "MONTH", + "chineseName": "返回日期中的月", + "description": "返回指定日期中的月。", + "example": "MONTH('2016-12-24')", + "result": "12", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "MONTH(日期)", + "paramArray": [ + "String" + ], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "DAY", + "chineseName": "返回日期中的日", + "description": "返回指定日期中的日。", + "example": "DAY('2016-12-24')", + "result": "24", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "DAY(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "HOUR", + "chineseName": "返回日期中的小时", + "description": "返回指定日期中的小时。", + "example": "HOUR('2016-12-24 20:30:56')", + "result": "20", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "HOUR(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "MINUTE", + "chineseName": "返回日期中的分钟", + "description": "返回指定日期中的分钟。", + "example": "MINUTE('2016-12-24 20:30:56')", + "result": "30", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "MINUTE(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SECOND", + "chineseName": "返回日期中的秒", + "description": "返回指定日期中的秒钟。", + "example": "SECOND('2016-12-24 20:30:56')", + "result": "56", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "SECOND(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "WEEKNUM", + "chineseName": "返回日期为第几周", + "description": "返回指定日期为第几周,从每年第1天开始算第1周。", + "example": "WEEKNUM('2016-12-24')", + "result": "52", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "WEEKNUM(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "WEEKDAY", + "chineseName": "返回日期为星期几", + "description": "返回指定日期为星期几。返回值为0~6,代表周日~周六。", + "example": "WEEKDAY('2016-12-24')", + "result": "6", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "WEEKDAY(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "EOMONTH", + "chineseName": "返回某月最后一天日期", + "description": "将某月最后一天日期返回。日期可以为指定日期也可以是日期参数,之前的月数用负数表示,之后的月数用正数表示。所输入月数需为整数。", + "example": "EOMONTH('2021-11-07', -2)", + "result": "2021-09-30", + "paramDescs": [ + "*日期*(必选)", + "*数值*(必选)" + ], + "formatString": "EOMONTH(日期,指定日期之前或之后的月数)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "CURRYEAR", + "chineseName": "返回当前年份", + "description": "取当前日期的年份。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRYEAR()", + "result": "2022", + "formatString": "CURRYEAR()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRMONTH", + "chineseName": "返回当前月份", + "description": "取当前日期的月份。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRMONTH()", + "result": "2", + "formatString": "CURRMONTH()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRDAY", + "chineseName": "返回当前第几日(当月)", + "description": "取当前日期的天。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRDAY()", + "result": "17", + "formatString": "CURRDAY()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRWEEK", + "chineseName": "返回当前是周几", + "description": "取当前日期是周几。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRWEEK()", + "result": "4", + "formatString": "CURRWEEK()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRHOUR", + "chineseName": "返回当前小时", + "description": "取当前日期的小时。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRHOUR()", + "result": "11", + "formatString": "CURRHOUR()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRMINUTE", + "chineseName": "返回当前分", + "description": "取当前日期的分钟。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRMINUTE()", + "result": "20", + "formatString": "CURRMINUTE()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "CURRSECOND", + "chineseName": "返回当前秒", + "description": "取当前日期的秒钟。", + "example": "假设当前时间为:2022年2月17日 11:20:30 ,CURRSECOND()", + "result": "30", + "formatString": "CURRSECOND()", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "MAXDATE", + "chineseName": "返回一组日期中的最大值", + "description": "取一组日期中的最大值。", + "example": "MAXDATE('2016-12-24', '2022-12-24')", + "result": "2022-12-24", + "paramDescs": [ + "*日期1*(必选)", + "*日期2*(必选)" + ], + "formatString": "MAXDATE(日期1,日期2,……)", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": true + } + ] + }, + { + "name": "MINDATE", + "chineseName": "返回一组日期中的最小值", + "description": "取一组日期中的最小值。", + "example": "MINDATE('2016-12-24', '2022-12-24')", + "result": "2016-12-24", + "paramDescs": [ + "*日期1*(必选)", + "*日期2*(必选)" + ], + "formatString": "MINDATE(日期1,日期2,……)", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": true + } + ] + }, + { + "name": "COMPAREDATE", + "chineseName": "返回两个日期指定时间的差值", + "description": "日期比较,返回两个日期指定时间域的差值。可比较的时间域包括'Y'-比较年;'M'-比较月;'D'-比较日;'H'-比较小时;'I'-比较分钟;'S'-比较秒。", + "example": "假设 日期1=2022-04-03、日期2=2022-04-04,COMPAREDATE({日期1},{日期2},'D')", + "result": "1", + "paramDescs": [ + "*日期1*(必选)", + "*日期2*(必选)", + "*比较类型*(可选)" + ], + "formatString": "COMPAREDATE(日期1,日期2,[比较类型])", + "paramArray": [], + "paramData": [], + "returnType": "date", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "TIMESTAMPTODATE", + "chineseName": "返回时间戳转换后的日期", + "description": "将时间戳按指定格式转换成日期。", + "example": "TIMESTAMPTODATE('1671172579', 'yyyy-MM-dd HH:mm:ss')", + "result": "2022-12-16 14:36:19", + "paramDescs": [ + "*时间戳*(必选)", + "*日期格式*(可选,默认yyyy-MM-dd HH:mm:ss)" + ], + "formatString": "TIMESTAMPTODATE(时间戳,日期格式)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": false, + "infinite": false + } + ] + }, + { + "name": "DATETOTIMESTAMP", + "chineseName": "返回日期转换后的时间戳", + "description": "将日期转换成时间戳。", + "example": "DATETOTIMESTAMP('2022-12-16 14:36:19'", + "result": "'1671172579'", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "DATETOTIMESTAMP(日期)", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": false + } + ] + }, + { + "name": "DATE", + "chineseName": "拼接日期字符串", + "description": "拼接日期", + "example": "DATE('2022','12','16')", + "result": "'2022-12-16'", + "paramDescs": [ + "*日期字符*(必选)" + ], + "formatString": "DATE({年},{月},{日})", + "paramArray": [], + "paramData": [], + "returnType": "string", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + }, + { + "name": "DAYS", + "chineseName": "计算两个日期自建的间隔天数", + "description": "计算两个日期的间隔天数", + "example": "DAYS('2022-12-16','2022-12-18')", + "result": "2", + "paramDescs": [ + "*日期字符*(必选)" + ], + "formatString": "DAYS({日期},{日期})", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "string", + "must": true, + "infinite": false + } + ] + } + ], + "dataType": "date", + "name": "日期函数", + "action": "DataSource", + "type": "functions" + }, + { + "children": [ + { + "name": "IF", + "chineseName": "如果条件为真,则...否则...", + "description": "如果条件为真,则执行表达式1,为假则执行表达式2。条件中不可嵌套使用IF函数。", + "example": "IF({员工表.年龄} > 60, '退休', '在职')
IF({员工表.年龄} > 60, IF({员工表.性别} = {员工表.性别.女}, '退休', '在职'), '在职')", + "result": "'退休'
'在职'", + "paramDescs": [ + "*条件*(必选)", + "*表达式1*(必选)", + "*表达式2*(必选)" + ], + "formatString": "IF(条件, 表达式1, 表达式2)", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 3, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "AND", + "chineseName": "且", + "description": "所有条件均为真,则返回真,否则返回假。逻辑操作AND的函数模式。", + "example": "AND(2 = 2, 2 < 2)", + "result": "false", + "paramDescs": [ + "*条件1*(必选)", + "*条件2*(可选,可输入多个参数)" + ], + "formatString": "AND(条件1, 条件2, [条件3, …])", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": true + } + ] + }, + { + "name": "OR", + "chineseName": "或", + "description": "任意一个条件为真,则返回真,否则返回假。逻辑操作OR的函数模式。", + "example": "OR(2 = 2, 2 > 3)", + "result": "true", + "paramDescs": [ + "*条件1*(必选)", + "*条件2*(可选,可输入多个参数)" + ], + "formatString": "OR(条件1, 条件2, [条件3, …])", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": true + } + ] + }, + { + "name": "NOT", + "chineseName": "反转真假结果", + "description": "对逻辑结果取反。", + "example": "NOT(2 > 3)", + "result": "true", + "paramDescs": [ + "*逻辑结果*(必选)" + ], + "formatString": "NOT(逻辑结果)", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": false + } + ] + }, + { + "name": "IN", + "chineseName": "变量是否包含在一组结果中", + "description": "任意类型的变量或常量等于一组同类型变量或常量结果中的任意一个,则返回真。", + "example": "IN(2, [2, 3, 4])", + "result": "true", + "paramDescs": [ + "*变量*(必选)", + "*变量数组*(必选)" + ], + "formatString": "IN(变量, [变量1, 变量2, …])", + "paramArray": [], + "paramData": [ + "{}", + "[]" + ], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + }, + { + "dataType": "array", + "must": true, + "infinite": false + } + ] + }, + { + "name": "LIKE", + "chineseName": "文本是否包含任意一个关键字", + "description": "文本类型的变量或常量包含一组文本类型变量或常量结果中的任意一个,则返回真。逻辑操作LIKE的函数模式。", + "example": "LIKE('大家好', ['大家', '好'])", + "result": "true", + "paramDescs": [ + "*文本*(必选)", + "*文本数组*(必选)" + ], + "formatString": "LIKE(文本, [文本1, 文本2, …])", + "paramArray": [], + "paramData": [ + "{}", + "[]" + ], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "string", + "must": true, + "infinite": false + }, + { + "dataType": "array", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ISEMPTY", + "chineseName": "是否为空", + "description": "变量为空或未填写,则返回真。", + "example": "ISEMPTY({员工表.电话})", + "result": "true", + "paramDescs": [ + "*变量或常量*(可选)" + ], + "formatString": "ISEMPTY(变量)", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "TRUE", + "chineseName": "返回真", + "description": "返回真。", + "example": "TRUE()", + "result": "true", + "formatString": "TRUE()", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "FALSE", + "chineseName": "返回假", + "description": "返回假。", + "example": "FALSE()", + "result": "false", + "formatString": "FALSE()", + "paramArray": [], + "paramData": [], + "returnType": "boolean", + "type": "function", + "validForm": "current_data", + "paramCount": 0 + }, + { + "name": "IFS", + "chineseName": "多条件", + "description": "多个条件判断,位于单数位置的参数设置为条件,位于双数位置的参数设置为结果,最后一个参数为默认返回值,当所有条件都不满足的时候返回默认参数。", + "example": "IFS(1>1,1,1=1,2,0)", + "result": "2", + "paramDescs": [ + "*条件1*(必选)", + "*变量或常量*(必选)", + "*条件2*(必选)", + "*变量或常量*(必选)", + "*变量或常量*(必选)" + ], + "formatString": "IFS({条件1},{结果1},{条件2},{结果2}...{默认结果})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SWITCH", + "chineseName": "条件选择", + "description": "条件选择。", + "example": "SWITCH({字段1},1,'A',2,'B','C')", + "result": "假设字段1为2,结果:'B'", + "paramDescs": [ + "*变量或常量*(必选)", + "*变量或常量*(必选)", + "*变量或常量*(必选)", + "*变量或常量*(可选)", + "*变量或常量*(可选)", + "*变量或常量*(必选)" + ], + "formatString": "SWITCH({变量},{条件1},{结果1},{条件2},{结果2}...{默认结果})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SORT", + "chineseName": "条件排序", + "description": "根据排序条件进行字符和数字的排序,UP为升序,DOWN为降序。", + "example": "SORT(1,2,5,4,3,'UP')", + "result": "[1,2,3,4,5]", + "paramDescs": [ + "*字符或数字*(必选)", + "*字符或数字*(可选)", + "......", + "*排序方式*" + ], + "formatString": "SORT({变量1},{变量2},{变量3}...{排序方式})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "array", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "IFERROR", + "chineseName": "异常处理", + "description": "异常处理函数", + "example": "IFERROR(10/0,'0')", + "result": "0", + "paramDescs": [ + "*公式内容*" + ], + "formatString": "IFERROR({变量},{变量})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + } + ], + "dataType": "logic", + "name": "逻辑函数", + "action": "DataSource", + "type": "functions" + }, + { + "children": [ + { + "name": "ROUNDUP", + "chineseName": "向上舍入", + "description": "根据设置的小数位精确度,返回对数值向上舍入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,则向上舍入到指定的小数位。如果小数位精确度等于 0,则向上舍入到最接近的整数。如果小数位精确度为负整数,则在小数点左侧向上进行舍入。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。", + "example": "ROUNDUP(76.9,0)", + "result": "77", + "paramDescs": [ + "*数字*(必选)", + "*小数位精确度*(可选)" + ], + "formatString": "ROUNDUP(数字, [小数位精确度])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ROUND", + "chineseName": "四舍五入", + "description": "根据设置的小数位精确度,返回对数值四舍五入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,针对小数点后的数据进行四舍五入;如果小数位精确度等于 0,返回最接近数值的整数;如果小数位精确度为负整数,针对小数点前的数据进行四舍五入,被舍掉的数据用0占位。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。", + "example": "ROUND(123.456,2),ROUND(123.456,0),ROUND(123.456,-2)", + "result": "依次为123.46,123,100", + "paramDescs": [ + "*数字*(必选)", + "*小数位精确度*(可选)" + ], + "formatString": "ROUND(数字, [小数位精确度])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ROUNDDOWN", + "chineseName": "向下舍入", + "description": "根据设置的小数位精确度,返回对数值向下舍入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,则向下舍入到指定的小数位。如果小数位精确度等于 0,则向下舍入到最接近的整数。如果小数位精确度为负整数,则在小数点左侧向下进行舍入。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。", + "example": "ROUNDDOWN(76.9,0)", + "result": "76", + "paramDescs": [ + "*数字*(必选)", + "*小数位精确度*(可选)" + ], + "formatString": "ROUNDDOWN(数字, [小数位精确度])", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "AGGREGATION", + "chineseName": "聚合运算", + "description": "将一组数据进行统计计算,支持最大值(MAX)、最小值(MIN)、平均值(AVG)。", + "example": "AGGREGATION(1 , 2,3,'AVG')", + "result": "2", + "paramDescs": [ + "*数字*(必选)", + "*聚合运算类型*(必选)" + ], + "formatString": "AGGREGATION({数字}...,{聚合运算类型})", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": true + }, + { + "dataType": "string", + "must": true, + "constType": [ + "avg", + "max", + "min" + ], + "infinite": false + } + ] + }, + { + "name": "MOD", + "chineseName": "求余", + "description": "将两个参数进行除法运算然后得出余数返回。", + "example": "MOD( 7 , 3 )", + "result": "1", + "paramDescs": [ + "*数字*(必选)", + "*数字*(必选)" + ], + "formatString": "ROUNDDOWN({数字},{数字})", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "TRUNC", + "chineseName": "数字格式化", + "description": "将小数点格式化成指定位数。", + "example": "TRUNC( 2.123 , 2 )", + "result": "2.12", + "paramDescs": [ + "*数字*(必选)", + "*精度*(必选)" + ], + "formatString": "ROUNDDOWN({数字},{精度})", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "CALDTROW", + "chineseName": "明细逐行计算函数", + "description": "明细逐行计算", + "example": "假设:明细有金额1、金额2、金额3等三个控件,明细行数为2,第一行值分别为:5、6、10,第二行的值分别为:1、1、9。CALDTROW({金额3}==10,{金额1}+{金额2})", + "result": "当金额3等于10的时候运算加法,只有第一行的金额3等于10,明细第一行的金额3赋值为11", + "paramDescs": [ + "*字段*(必选)", + "*公式或字段*(必选)" + ], + "formatString": "CALDTROW({字段},{公式或字段})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "ABS", + "chineseName": "绝对值", + "description": "绝对值", + "example": "ABS(-9)", + "result": "9", + "paramDescs": [ + "*字段*(必选)" + ], + "formatString": "ABS({字段})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "RANDOM", + "chineseName": "随机数生成", + "description": "随机数生成", + "example": "RANDOM(5,'NUM')", + "result": "26489", + "paramDescs": [ + "*数字*(必选)", + "*文本*(必选)[NUM(数字)、CHAR(字符)、FIX(字符与数字混合)]" + ], + "formatString": "RANDOM({随机数长度},{随机类型})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "boolean", + "must": true, + "infinite": false + }, + { + "dataType": "all", + "must": true, + "infinite": false + } + ] + }, + { + "name": "POWER", + "chineseName": "N次方", + "description": "计算数值的N次方", + "example": "POWER(2, 2)
POWER(4, 1/2)", + "result": "4
2", + "paramDescs": [ + "*数字*(必选)", + "*数字*(必选,N次方的N)" + ], + "formatString": "POWER({数字}, {数字})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 2, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + }, + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + }, + { + "name": "SQRT", + "chineseName": "根号", + "description": "将数值开根号", + "example": "SQRT(4)", + "result": "2", + "paramDescs": [ + "*数字*(必选)" + ], + "formatString": "SQRT({数字})", + "paramArray": [], + "paramData": [], + "returnType": "all", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + } + ], + "dataType": "math", + "name": "数学函数", + "action": "DataSource", + "type": "functions" + }, + { + "children": [ + { + "name": "GETMONEY", + "chineseName": "获取所给定数字的金额大写", + "description": "将金额转换成中文金额大写。", + "example": "GETMONEY({1234})", + "result": "壹仟贰佰叁拾肆元整", + "paramDescs": [ + "*数字*(必选)" + ], + "formatString": "GETMONEY({数字})", + "paramData": [], + "returnType": "", + "type": "function", + "validForm": "current_data", + "paramCount": 1, + "paramStatuses": [ + { + "dataType": "number", + "must": true, + "infinite": false + } + ] + } + ], + "dataType": "finance", + "name": "财务函数", + "action": "DataSource", + "type": "functions" + } + ] +} \ No newline at end of file diff --git a/src/com/engine/salary/formlua/core/QlExpress.java b/src/com/engine/salary/formlua/core/QlExpress.java index 16b716b7c..30ef2af57 100644 --- a/src/com/engine/salary/formlua/core/QlExpress.java +++ b/src/com/engine/salary/formlua/core/QlExpress.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.core; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.entity.parameter.FuncNames; @@ -16,7 +15,6 @@ import com.engine.salary.formlua.func.math.MathFuncsService; import com.engine.salary.formlua.func.math.MathFuncsServiceImpl; import com.engine.salary.formlua.func.string.StringFormulaService; import com.engine.salary.formlua.func.string.StringFormulaServiceImpl; -import com.engine.salary.formlua.util.ExcelParamUtil; import com.engine.salary.formlua.util.ExpressRegularUtil; import com.ql.util.express.DynamicParamsUtil; import com.ql.util.express.ExpressRunner; @@ -29,7 +27,7 @@ import java.util.Map; import java.util.regex.PatternSyntaxException; /** - * 考勤执行业务类 + * 执行业务类 */ public class QlExpress { @@ -79,12 +77,11 @@ public class QlExpress { // threadLocalData.setExpressContext(context); // ParamContext.get().setValue("formulaParam",threadLocalData); // ParamContext.get().setValue("currentUser",simpleEmployee); - Object obj = null; try { ExpressRegularUtil.checkFuncExpress(expressSql); expressSql = expressSql.replaceAll("\\{", ""); expressSql = expressSql.replaceAll("\\}", ""); - obj = runner.execute(expressSql, expressContext, null, true, false); + Object obj = runner.execute(expressSql, expressContext, null, true, false); JSONObject resultObj = new JSONObject(); if (obj != null) { resultObj.put("excute", true); @@ -116,58 +113,12 @@ public class QlExpress { } } } - JSONObject errorJSON = new JSONObject(); - if (null == jsonError) { - errorJSON.put("error", "参数为空"); - obj = errorJSON; - - JSONObject resultObj = new JSONObject(); - resultObj.put("data", ""); - resultObj.put("excute", false); - return resultObj; - } - try { - errorJSON = JSON.parseObject(jsonError); - } catch (Exception ex) { - errorJSON.put("error", "参数为空"); - obj = errorJSON; - - JSONObject resultObj = new JSONObject(); - resultObj.put("data", ""); - resultObj.put("excute", false); - return resultObj; - } - if (!(e instanceof PatternSyntaxException)) { - String func = errorJSON.getString("func"); - int funcIdx = errorJSON.getInteger("errorFunc"); - String[] funcSplit = statement.split(func); - int startError = 1; - int loopLength = funcSplit.length - funcIdx; - for (int i = 0; i < loopLength; i++) { - if (loopLength > 1 && i == 0) { - startError += funcSplit[i].length() + func.length(); - } else { - startError += funcSplit[i].length(); - } - } - int startIdx = startError; - int endIdx = startError + func.length() - 1; - Map replaceMap = ExcelParamUtil.replaceErrorPlace(startIdx, endIdx, func, expressSql, context); - errorJSON.put("errorIdx", replaceMap.get("startIdx")); - errorJSON.put("errorEndIdx", replaceMap.get("endIdx")); - - } - if (errorJSON.containsKey("error") && null != errorJSON.getString("msg") && !ExpressRegularUtil.isContainChinese(errorJSON.getString("msg"))) { - errorJSON.put("error", "校验失败或参数错误"); - } - - errorJSON.remove("errorFunc"); - errorJSON.remove("formula"); - errorJSON.remove("func"); - errorJSON.remove("errorData"); - obj = errorJSON; + JSONObject resultObj = new JSONObject(); + resultObj.put("excute", false); + resultObj.put("data", ""); + resultObj.put("err", jsonError); + return resultObj; } - return obj; } private void initRunner(ExpressRunner runner) { diff --git a/src/com/engine/salary/formlua/core/QlExpressTest.java b/src/com/engine/salary/formlua/core/QlExpressTest.java new file mode 100644 index 000000000..d981054d6 --- /dev/null +++ b/src/com/engine/salary/formlua/core/QlExpressTest.java @@ -0,0 +1,27 @@ +package com.engine.salary.formlua.core; + +import com.alibaba.fastjson.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * 执行业务类 + */ +public class QlExpressTest { + + public static void main(String[] args) { + QlExpress express = new QlExpress(); + Map context = new HashMap<>(); + context.put("a", 1); + context.put("b", 2); + context.put("c", 3); + String formula = "AGGREGATION(a+b,0,'AVG')"; + + Object execute = express.execute(formula, context); + if(execute instanceof JSONObject){ + Object data = ((JSONObject) execute).get("data"); + System.out.println(data); + } + } +} diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java index ec8cf3bda..a0ea79549 100644 --- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java +++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java @@ -129,13 +129,12 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService boolean isCustomFunction = true; String extendParam = expressFormula.getExtendParam(); - String formulaType; try { JsonNode jsonNode = objectMapper.readTree(extendParam); //返回值配置 JsonNode isCustomFunctionNode = jsonNode.get("isCustomFunction"); if (isCustomFunctionNode != null) { - isCustomFunction = StringUtils.equals(isCustomFunctionNode.asText().trim(), "true"); + isCustomFunction = StringUtils.equals(isCustomFunctionNode.asText().trim(), "1"); } } catch (JsonProcessingException e) { log.error("express execute fail, sql extendParam parse fail", e); diff --git a/src/com/engine/salary/web/SalaryFormulaController.java b/src/com/engine/salary/web/SalaryFormulaController.java index 44932a485..f3d611dcc 100644 --- a/src/com/engine/salary/web/SalaryFormulaController.java +++ b/src/com/engine/salary/web/SalaryFormulaController.java @@ -9,6 +9,8 @@ import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.SalaryFormulaWrapper; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import weaver.hrm.HrmUserVarify; @@ -19,6 +21,7 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -28,7 +31,7 @@ public class SalaryFormulaController { private SalaryFormulaWrapper getSalaryFormulaWrapper(User user) { - return (SalaryFormulaWrapper) ServiceUtil.getService(SalaryFormulaWrapper.class, user); + return ServiceUtil.getService(SalaryFormulaWrapper.class, user); } //变量项 @@ -95,7 +98,14 @@ public class SalaryFormulaController { @GET @Path("/des") @Produces(MediaType.APPLICATION_JSON) - public String mock(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String des(@Context HttpServletRequest request, @Context HttpServletResponse response) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(this.getClass().getClassLoader().getResourceAsStream("com/engine/salary/constant/des.json")); + return jsonNode.toString(); + } catch (IOException e) { + e.printStackTrace(); + } return "{\"data\":[{\"children\":[{\"name\":\"CONCAT\",\"chineseName\":\"链接多个文本\",\"description\":\"可用于连接多个任意类型的文本、日期、数字变量或常量。最后一个字符可使用'#分隔符#'标记为分隔符\",\"example\":\"CONCAT({总价}/10000, '万元')\",\"result\":\"100万元\",\"paramDescs\":[\"*文本1*(必选)\",\"*文本2*(可选)\",\"......\"],\"formatString\":\"CONCAT(文本1, 文本2, [文本3, …],[#分隔符#])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":true}]},{\"name\":\"TEXT\",\"chineseName\":\"将变量转为文本\",\"description\":\"将变量转为文本。\",\"example\":\"TEXT({当前数据.性别})\",\"result\":\"'男'\",\"paramDescs\":[\"*变量*(必选)\"],\"formatString\":\"TEXT(变量)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"VALUE\",\"chineseName\":\"将文本转为数字\",\"description\":\"将文本转为数字。\",\"example\":\"VALUE('23')\",\"result\":\"23\",\"paramDescs\":[\"*文本、数字、选项*(必选)\"],\"formatString\":\"VALUE([文本、数字、选项])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"LEN\",\"chineseName\":\"返回文本长度\",\"description\":\"返回文本的长度,中文、英文都算1个字符。\",\"example\":\"LEN('大家好dajiahao')\",\"result\":\"12\",\"paramDescs\":[\"*变量或常量*(必选)\"],\"formatString\":\"LEN(文本)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"SEARCH\",\"chineseName\":\"在文本中查找关键字\",\"description\":\"在指定文本中查找关键字,返回第一次出现关键字的字符位置,文本的第一个字记为1。未找到,返回0。搜索开始位置,表示从文本的第几个字符开始搜索,默认为1。\",\"example\":\"SEARCH('大家', '大家好大家好', 3)\",\"result\":\"4\",\"paramDescs\":[\"*文本关键字*(必选)\",\"*文本*(必选)\",\"*搜索开始位置*(可选)\"],\"formatString\":\"SEARCH(关键字, 文本, [搜索开始位置])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":false,\"infinite\":false}]},{\"name\":\"REPLACE\",\"chineseName\":\"替换文本中的字\",\"description\":\"在原文本中,从替换位置开始,往后数指定的替换字符数,将这段文本替换为新文本。\",\"example\":\"REPLACE('大家好大家好', 2, 3, 'dajia')\",\"result\":\"'大dajia家好'\",\"paramDescs\":[\"*文本*(必选)\"],\"formatString\":\"REPLACE(原文本, 替换开始位置, 替换字符数, 新文本)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":4,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"REPT\",\"chineseName\":\"将文本重复指定次数\",\"description\":\"将文本重复指定次数。\",\"example\":\"REPT('大家', 2)\",\"result\":\"'大家大家'\",\"paramDescs\":[\"*文本*(必选)\",\"*重复次数*(必选)\"],\"formatString\":\"REPT(文本, 重复次数)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"PAD\",\"chineseName\":\"将文本填充至指定长度\",\"description\":\"将原文本填充到指定长度,如果文本长度大于设置的长度,则不做任何操作。填充位置可用参数:'LEFT'、'RIGHT'。\",\"example\":\"PAD('你好', 4, '你', 'LEFT')\",\"result\":\"'你你你好'\",\"paramDescs\":[\"*原文本*(必选)\",\"*长度*(必选)\",\"*填充用的文本*(必选)\",\"*填充位置*(可选)\"],\"formatString\":\"PAD(原文本, 长度, 填充用的文本, [填充位置])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":4,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"constType\":[\"RIGHT\",\"LEFT\"],\"infinite\":false}]},{\"name\":\"TRIM\",\"chineseName\":\"清除前后空格\",\"description\":\"删除文本首尾的空格。\",\"example\":\"TRIM(' 大家好 ')\",\"result\":\"'大家好'\",\"paramDescs\":[\"*文本*(必选)\"],\"formatString\":\"TRIM(文本)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"LEFT\",\"chineseName\":\"返回文本左侧开始的文字\",\"description\":\"从文本左侧开始,返回指定字符数的文字。\",\"example\":\"LEFT('大家好', 2)\",\"result\":\"'大家'\",\"paramDescs\":[\"*文本*(必选)\",\"*截取字符数*(必选)\"],\"formatString\":\"LEFT(文本, 截取字符数)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"RIGHT\",\"chineseName\":\"返回文本右侧开始的文字\",\"description\":\"从文本右侧开始,返回指定字符数的文字。\",\"example\":\"RIGHT('大家好', 2)\",\"result\":\"'家好'\",\"paramDescs\":[\"*文本*(必选)\",\"*截取字符数*(必选)\"],\"formatString\":\"RIGHT(文本, 截取字符数)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"MID\",\"chineseName\":\"返回文本指定位置开始的文字\",\"description\":\"从文本指定位置之后开始,返回指定字符数的文字。\",\"example\":\"MID('大家好', 2, 1)\",\"result\":\"'家'\",\"paramDescs\":[\"*文本*(必选)\",\"*指定位置*(必选)\",\"*截取字符数*(必选)\"],\"formatString\":\"MID(文本, 指定位置, 截取字符数)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"SCORE\",\"chineseName\":\"获取选项型控件分数\",\"description\":\"获取选项型控件(单选框、复选框、下拉菜单)分数。\",\"example\":\"SCORE({当前数据.单选框})\",\"result\":\"选项分数(注:未设置选项分数时,结果为0)\",\"paramDescs\":[\"*选项*(必选)\"],\"formatString\":\"SCORE({选项})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"option\",\"must\":true,\"infinite\":false}]},{\"name\":\"IDCARD\",\"chineseName\":\"身份证函数\",\"description\":\"从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。\",\"example\":\"IDCARD( ‘43070319980706334X’ , ‘BD’ )\",\"result\":\"'1998-07-06'\",\"paramDescs\":[\"*身份证号码*(必选)\",\"*查找类型*(必选)\"],\"formatString\":\"IDCARD({身份证号码}, {查找类型})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"constType\":[\"BD\",\"NA\",\"AGE\",\"GENDER\"],\"infinite\":false}]},{\"name\":\"ISSTRING\",\"chineseName\":\"是否是字符串\",\"description\":\"判断是否是字符。\",\"example\":\"ISSTRING('泛微123456')\",\"result\":\"true\",\"paramDescs\":[\"*变量或常量*(必选)\"],\"formatString\":\"ISSTRING({任意控件})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"ISJSON\",\"chineseName\":\"JSON字符格式化\",\"description\":\"判断是不是JSON字符串,参数可以是数组,也可以是字符串,参数为数组时数组中必须只包含一个字符串。\",\"example\":\"假设文本控件={a:123},ISJSON({文本控件})\",\"result\":\"true\",\"paramDescs\":[\"*变量或常量*(必选)\"],\"formatString\":\"ISJSON({变量})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETJSONVALUE\",\"chineseName\":\"JSON字符取值\",\"description\":\"获取JSON值。第一个参数为json,可以是数组也可以是对象;第二个参数为json对象的键值,返回键值对应的值,json为数组时返回的多个值以逗号分隔\",\"example\":\"假设文本控件={a:123},GetJSONValue('{文本控件}','a')\",\"result\":\"123\",\"paramDescs\":[\"*变量或常量*(必选)\",\"*变量或常量*(必选)\"],\"formatString\":\"GETJSONVALUE({变量1},变量2)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"ISINT\",\"chineseName\":\"字符内容是否是整数\",\"description\":\"判断字符内容是否是整数\",\"example\":\"ISINT( 2.123 )\",\"result\":\"false\",\"paramDescs\":[\"*字符*(必选)\"],\"formatString\":\"ISINT({字符})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"ISNUMBER\",\"chineseName\":\"字符内容是否是数字\",\"description\":\"判断字符内容是否是数字。\",\"example\":\"ISNUMBER('2.123')\",\"result\":\"true\",\"paramDescs\":[\"*字符*(必选)\"],\"formatString\":\"ISNUMBER({字符})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"SPLIT\",\"chineseName\":\"字符分割\",\"description\":\"字符分割函数,将字符以指定字符为依据分割字符为一组字符\",\"example\":\"假设文本控件=ABC#DEF,SPLIT('{文本控件}','#')\",\"result\":\"[ABC,DEF]\",\"paramDescs\":[\"*字符*(必选)\",\"*分割符*(必选)\"],\"formatString\":\"SPLIT({字符},{字符})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"LOWER\",\"chineseName\":\"字符转小写\",\"description\":\"将字符中的字母转为小写。\",\"example\":\"LOWER('ABC')\",\"result\":\"abc\",\"paramDescs\":[\"*字符*(必选)\"],\"formatString\":\"LOWER({字符})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"String\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"UPPER\",\"chineseName\":\"字符转大写\",\"description\":\"将字符中的字母转为大写。\",\"example\":\"UPPER('abc')\",\"result\":\"ABC\",\"paramDescs\":[\"*字符*(必选)\"],\"formatString\":\"UPPER({字符})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"String\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"TEXTBEFORE\",\"chineseName\":\"截取N个分割符之前的字符\",\"description\":\"截取N个分割符之前的字符\",\"example\":\"TEXTBEFORE('abc-12','-',1)\",\"result\":\"abc\",\"paramDescs\":[\"*字符*(必选)\",\"*字符*(必选)\",\"*变量或常量*(必选)\"],\"formatString\":\"TEXTBEFORE({目标文本},{分隔符},{索引下标})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"String\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"TEXTAFTER\",\"chineseName\":\"截取N个分隔符之后的字符\",\"description\":\"截取N个分隔符之后的字符\",\"example\":\"TEXTAFTER('abc-12','-',1)\",\"result\":\"12\",\"paramDescs\":[\"*字符*(必选)\",\"*字符*(必选)\",\"*变量或常量*(必选)\"],\"formatString\":\"TEXTAFTER({目标文本},{分隔符},{索引下标})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"String\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"char\",\"name\":\"字符函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"COUNT\",\"chineseName\":\"计数\",\"description\":\"返回指定表格中满足条件的数据条数。\",\"example\":\"COUNT({员工表})\",\"result\":\"1\",\"paramDescs\":[\"*表*(必选)\"],\"formatString\":\"COUNT(表)\",\"paramArray\":[\"Form\",\"Number\",\"Boolean\"],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"all\",\"paramCount\":3},{\"name\":\"SUM\",\"chineseName\":\"求和\",\"description\":\"返回指定表格中满足条件的数据,其指定数字字段值的总和。统计条件中不可嵌套使用统计函数。\",\"example\":\"SUM({员工表.工资})\",\"result\":\"10000\",\"paramDescs\":[\"*表或字段*(必选)\"],\"formatString\":\"SUM(数字)\",\"paramArray\":[\"Number\",\"Number\",\"Boolean\"],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"all\",\"paramCount\":3},{\"name\":\"AVG\",\"chineseName\":\"平均值\",\"description\":\"返回指定表格中满足条件的数据,其指定数字字段值的平均值。统计条件中不可嵌套使用统计函数。\",\"example\":\"AVG({员工表.工资})\",\"result\":\"10000\",\"paramDescs\":[\"*表或字段*(必选)\"],\"formatString\":\"AVG(数字)\",\"paramArray\":[\"Number\",\"Number\",\"Boolean\"],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"all\",\"paramCount\":3},{\"name\":\"MIN\",\"chineseName\":\"最小值\",\"description\":\"返回指定表格中满足条件的数据,其指定数字字段值的最小值。统计条件中不可嵌套使用统计函数。\",\"example\":\"MIN({员工表.工资})\",\"result\":\"10000\",\"paramDescs\":[\"*表或字段*(必选)\"],\"formatString\":\"MIN(数字)\",\"paramArray\":[\"Number\",\"Number\",\"Boolean\"],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"all\",\"paramCount\":3},{\"name\":\"MAX\",\"chineseName\":\"最大值\",\"description\":\"返回指定表格中满足条件的数据,其指定数字字段值的最大值。统计条件中不可嵌套使用统计函数。\",\"example\":\"MAX({员工表.工资})\",\"result\":\"10000\",\"paramDescs\":[\"*表或字段*(必选)\"],\"formatString\":\"MAX(数字)\",\"paramArray\":[\"Number\",\"Number\",\"Boolean\"],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"all\",\"paramCount\":3}],\"dataType\":\"agg\",\"name\":\"聚合函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"TODAY\",\"chineseName\":\"当前日期\",\"description\":\"返回当天日期。\",\"example\":\"TODAY()\",\"result\":\"'2020-01-01'\",\"formatString\":\"TODAY()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"NOW\",\"chineseName\":\"当前日期时间\",\"description\":\"返回当天日期+时间。\",\"example\":\"NOW()\",\"result\":\"'2016-12-24 12:05:38'\",\"formatString\":\"NOW()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"DATEADD\",\"chineseName\":\"对日期加减年、月、日\",\"description\":\"对日期加减按照单位加减。单位默认为日,可选单位:年Y、月M、日D、时H、分I、秒S。\",\"example\":\"DATEADD('2016-12-21', 3)
DATEADD('2016-12-24 20:00:00', 3, 'H')\",\"result\":\"'2016-12-24'
'2016-12-24 23:00:00'\",\"paramDescs\":[\"*日期*(必选)\",\"*数值*(必选)\",\"*单位*(可选)\"],\"formatString\":\"DATEADD(日期,数值 , [单位])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"constType\":[\"Y\",\"M\",\"D\",\"H\",\"I\",\"S\"],\"infinite\":false}]},{\"name\":\"DATEDIFF\",\"chineseName\":\"返回两个日期的差值\",\"description\":\"根据指定的单位,返回日期2减去日期1的差值。当日期2小于日期1时,差值为负值。单位默认为日,可选单位:年Y、月M、日D、时H、分I、秒S。\",\"example\":\"DATEDIF('2016-12-21', '2016-12-24')
DATEDIF('2016-12-24 20:00:00', '2016-12-25 20:00:00', 'H')\",\"result\":\"3
24\",\"paramDescs\":[\"*日期1*(必选)\",\"*日期2*(必选)\",\"*单位*(可选)\"],\"formatString\":\"DATEDIFF(日期1, 日期2, [单位])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"constType\":[\"Y\",\"M\",\"D\",\"H\",\"I\",\"S\"],\"infinite\":false}]},{\"name\":\"DATEFORMAT\",\"chineseName\":\"返回指定格式的日期\",\"description\":\"将日期转为指定格式返回。
yyyy 将年份显示为1900-9999
yy 将年份显示为00-99
mm 将月份显示为 01–12
dd 将日期显示为 01–31\",\"example\":\"DATEFORMAT('2016-12-24', 'YY-MM-DD')\",\"result\":\"2016-12-24\",\"paramDescs\":[\"*日期*(必选)\",\"*日期格式*(必选)\"],\"formatString\":\"DATEFORMAT(日期, 可选格式)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"YEAR\",\"chineseName\":\"返回日期中的年\",\"description\":\"返回指定日期中的年。\",\"example\":\"YEAR('2016-12-24')\",\"result\":\"2016\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"YEAR(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"MONTH\",\"chineseName\":\"返回日期中的月\",\"description\":\"返回指定日期中的月。\",\"example\":\"MONTH('2016-12-24')\",\"result\":\"12\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"MONTH(日期)\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"DAY\",\"chineseName\":\"返回日期中的日\",\"description\":\"返回指定日期中的日。\",\"example\":\"DAY('2016-12-24')\",\"result\":\"24\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"DAY(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"HOUR\",\"chineseName\":\"返回日期中的小时\",\"description\":\"返回指定日期中的小时。\",\"example\":\"HOUR('2016-12-24 20:30:56')\",\"result\":\"20\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"HOUR(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"MINUTE\",\"chineseName\":\"返回日期中的分钟\",\"description\":\"返回指定日期中的分钟。\",\"example\":\"MINUTE('2016-12-24 20:30:56')\",\"result\":\"30\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"MINUTE(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"SECOND\",\"chineseName\":\"返回日期中的秒\",\"description\":\"返回指定日期中的秒钟。\",\"example\":\"SECOND('2016-12-24 20:30:56')\",\"result\":\"56\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"SECOND(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"WEEKNUM\",\"chineseName\":\"返回日期为第几周\",\"description\":\"返回指定日期为第几周,从每年第1天开始算第1周。\",\"example\":\"WEEKNUM('2016-12-24')\",\"result\":\"52\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"WEEKNUM(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"WEEKDAY\",\"chineseName\":\"返回日期为星期几\",\"description\":\"返回指定日期为星期几。返回值为0~6,代表周日~周六。\",\"example\":\"WEEKDAY('2016-12-24')\",\"result\":\"6\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"WEEKDAY(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"NETWORKDAYSPI\",\"chineseName\":\"返回所选时间段内包含的工作日天数\",\"description\":\"查询类型为attend时,即按考勤制度查询,将截止当前日期之前(支持选到当前日期,最大支持跨度为365天)的所选时间段内包含的工作日天数返回。
注意:此函数只能选择过去的时间(可选到当前日期)才可使用,跨度不能超过365天。查询类型为statutory时,即按法定查询,没有限制。当日期2小于日期1时,差值为负值。单位默认为日。\",\"example\":\"想知道李四在2021-11-07和2021-11-12之间的工作日天数NETWORKDAYSPI('2021-11-07', '2021-11-12','李四')\",\"result\":\"5\",\"paramDescs\":[\"*日期1*(必选)\",\"*日期2*(必选)\",\"*人员*(必选)\",\"*类型*(可选,attend为考勤制度,statutory为法定,默认attend)\"],\"formatString\":\"NETWORKDAYSPI(日期1, 日期2, 成员, [类型])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":4,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"employee\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":false,\"infinite\":false}]},{\"name\":\"EOMONTH\",\"chineseName\":\"返回某月最后一天日期\",\"description\":\"将某月最后一天日期返回。日期可以为指定日期也可以是日期参数,之前的月数用负数表示,之后的月数用正数表示。所输入月数需为整数。\",\"example\":\"EOMONTH('2021-11-07', -2)\",\"result\":\"2021-09-30\",\"paramDescs\":[\"*日期*(必选)\",\"*数值*(必选)\"],\"formatString\":\"EOMONTH(日期,指定日期之前或之后的月数)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"CURRYEAR\",\"chineseName\":\"返回当前年份\",\"description\":\"取当前日期的年份。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRYEAR()\",\"result\":\"2022\",\"formatString\":\"CURRYEAR()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRMONTH\",\"chineseName\":\"返回当前月份\",\"description\":\"取当前日期的月份。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRMONTH()\",\"result\":\"2\",\"formatString\":\"CURRMONTH()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRDAY\",\"chineseName\":\"返回当前第几日(当月)\",\"description\":\"取当前日期的天。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRDAY()\",\"result\":\"17\",\"formatString\":\"CURRDAY()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRWEEK\",\"chineseName\":\"返回当前是周几\",\"description\":\"取当前日期是周几。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRWEEK()\",\"result\":\"4\",\"formatString\":\"CURRWEEK()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRHOUR\",\"chineseName\":\"返回当前小时\",\"description\":\"取当前日期的小时。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRHOUR()\",\"result\":\"11\",\"formatString\":\"CURRHOUR()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRMINUTE\",\"chineseName\":\"返回当前分\",\"description\":\"取当前日期的分钟。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRMINUTE()\",\"result\":\"20\",\"formatString\":\"CURRMINUTE()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"CURRSECOND\",\"chineseName\":\"返回当前秒\",\"description\":\"取当前日期的秒钟。\",\"example\":\"假设当前时间为:2022年2月17日 11:20:30 ,CURRSECOND()\",\"result\":\"30\",\"formatString\":\"CURRSECOND()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"MAXDATE\",\"chineseName\":\"返回一组日期中的最大值\",\"description\":\"取一组日期中的最大值。\",\"example\":\"MAXDATE('2016-12-24', '2022-12-24')\",\"result\":\"2022-12-24\",\"paramDescs\":[\"*日期1*(必选)\",\"*日期2*(必选)\"],\"formatString\":\"MAXDATE(日期1,日期2,……)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":true}]},{\"name\":\"MINDATE\",\"chineseName\":\"返回一组日期中的最小值\",\"description\":\"取一组日期中的最小值。\",\"example\":\"MINDATE('2016-12-24', '2022-12-24')\",\"result\":\"2016-12-24\",\"paramDescs\":[\"*日期1*(必选)\",\"*日期2*(必选)\"],\"formatString\":\"MINDATE(日期1,日期2,……)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":true}]},{\"name\":\"COMPAREDATE\",\"chineseName\":\"返回两个日期指定时间的差值\",\"description\":\"日期比较,返回两个日期指定时间域的差值。可比较的时间域包括'Y'-比较年;'M'-比较月;'D'-比较日;'H'-比较小时;'I'-比较分钟;'S'-比较秒。\",\"example\":\"假设 日期1=2022-04-03、日期2=2022-04-04,COMPAREDATE({日期1},{日期2},'D')\",\"result\":\"1\",\"paramDescs\":[\"*日期1*(必选)\",\"*日期2*(必选)\",\"*比较类型*(可选)\"],\"formatString\":\"COMPAREDATE(日期1,日期2,[比较类型])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"date\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"TIMESTAMPTODATE\",\"chineseName\":\"返回时间戳转换后的日期\",\"description\":\"将时间戳按指定格式转换成日期。\",\"example\":\"TIMESTAMPTODATE('1671172579', 'yyyy-MM-dd HH:mm:ss')\",\"result\":\"2022-12-16 14:36:19\",\"paramDescs\":[\"*时间戳*(必选)\",\"*日期格式*(可选,默认yyyy-MM-dd HH:mm:ss)\"],\"formatString\":\"TIMESTAMPTODATE(时间戳,日期格式)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":false,\"infinite\":false}]},{\"name\":\"DATETOTIMESTAMP\",\"chineseName\":\"返回日期转换后的时间戳\",\"description\":\"将日期转换成时间戳。\",\"example\":\"DATETOTIMESTAMP('2022-12-16 14:36:19'\",\"result\":\"'1671172579'\",\"paramDescs\":[\"*日期*(必选)\"],\"formatString\":\"DATETOTIMESTAMP(日期)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"date\",\"must\":true,\"infinite\":false}]},{\"name\":\"DATE\",\"chineseName\":\"拼接日期字符串\",\"description\":\"拼接日期\",\"example\":\"DATE('2022','12','16')\",\"result\":\"'2022-12-16'\",\"paramDescs\":[\"*日期字符*(必选)\"],\"formatString\":\"DATE({年},{月},{日})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"DAYS\",\"chineseName\":\"计算两个日期自建的间隔天数\",\"description\":\"计算两个日期的间隔天数\",\"example\":\"DAYS('2022-12-16','2022-12-18')\",\"result\":\"2\",\"paramDescs\":[\"*日期字符*(必选)\"],\"formatString\":\"DAYS({日期},{日期})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"date\",\"name\":\"日期函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"IF\",\"chineseName\":\"如果条件为真,则...否则...\",\"description\":\"如果条件为真,则执行表达式1,为假则执行表达式2。条件中不可嵌套使用IF函数。\",\"example\":\"IF({员工表.年龄} > 60, '退休', '在职')
IF({员工表.年龄} > 60, IF({员工表.性别} = {员工表.性别.女}, '退休', '在职'), '在职')\",\"result\":\"'退休'
'在职'\",\"paramDescs\":[\"*条件*(必选)\",\"*表达式1*(必选)\",\"*表达式2*(必选)\"],\"formatString\":\"IF(条件, 表达式1, 表达式2)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":3,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"AND\",\"chineseName\":\"且\",\"description\":\"所有条件均为真,则返回真,否则返回假。逻辑操作AND的函数模式。\",\"example\":\"AND(2 = 2, 2 < 2)\",\"result\":\"false\",\"paramDescs\":[\"*条件1*(必选)\",\"*条件2*(可选,可输入多个参数)\"],\"formatString\":\"AND(条件1, 条件2, [条件3, …])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":true}]},{\"name\":\"OR\",\"chineseName\":\"或\",\"description\":\"任意一个条件为真,则返回真,否则返回假。逻辑操作OR的函数模式。\",\"example\":\"OR(2 = 2, 2 > 3)\",\"result\":\"true\",\"paramDescs\":[\"*条件1*(必选)\",\"*条件2*(可选,可输入多个参数)\"],\"formatString\":\"OR(条件1, 条件2, [条件3, …])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":true}]},{\"name\":\"NOT\",\"chineseName\":\"反转真假结果\",\"description\":\"对逻辑结果取反。\",\"example\":\"NOT(2 > 3)\",\"result\":\"true\",\"paramDescs\":[\"*逻辑结果*(必选)\"],\"formatString\":\"NOT(逻辑结果)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false}]},{\"name\":\"IN\",\"chineseName\":\"变量是否包含在一组结果中\",\"description\":\"任意类型的变量或常量等于一组同类型变量或常量结果中的任意一个,则返回真。\",\"example\":\"IN(2, [2, 3, 4])\",\"result\":\"true\",\"paramDescs\":[\"*变量*(必选)\",\"*变量数组*(必选)\"],\"formatString\":\"IN(变量, [变量1, 变量2, …])\",\"paramArray\":[],\"paramData\":[\"{}\",\"[]\"],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false},{\"dataType\":\"array\",\"must\":true,\"infinite\":false}]},{\"name\":\"LIKE\",\"chineseName\":\"文本是否包含任意一个关键字\",\"description\":\"文本类型的变量或常量包含一组文本类型变量或常量结果中的任意一个,则返回真。逻辑操作LIKE的函数模式。\",\"example\":\"LIKE('大家好', ['大家', '好'])\",\"result\":\"true\",\"paramDescs\":[\"*文本*(必选)\",\"*文本数组*(必选)\"],\"formatString\":\"LIKE(文本, [文本1, 文本2, …])\",\"paramArray\":[],\"paramData\":[\"{}\",\"[]\"],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false},{\"dataType\":\"array\",\"must\":true,\"infinite\":false}]},{\"name\":\"ISEMPTY\",\"chineseName\":\"是否为空\",\"description\":\"变量为空或未填写,则返回真。\",\"example\":\"ISEMPTY({员工表.电话})\",\"result\":\"true\",\"paramDescs\":[\"*变量或常量*(可选)\"],\"formatString\":\"ISEMPTY(变量)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"TRUE\",\"chineseName\":\"返回真\",\"description\":\"返回真。\",\"example\":\"TRUE()\",\"result\":\"true\",\"formatString\":\"TRUE()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"FALSE\",\"chineseName\":\"返回假\",\"description\":\"返回假。\",\"example\":\"FALSE()\",\"result\":\"false\",\"formatString\":\"FALSE()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"IFS\",\"chineseName\":\"多条件\",\"description\":\"多个条件判断,位于单数位置的参数设置为条件,位于双数位置的参数设置为结果,最后一个参数为默认返回值,当所有条件都不满足的时候返回默认参数。\",\"example\":\"IFS(1>1,1,1=1,2,0)\",\"result\":\"2\",\"paramDescs\":[\"*条件1*(必选)\",\"*变量或常量*(必选)\",\"*条件2*(必选)\",\"*变量或常量*(必选)\",\"*变量或常量*(必选)\"],\"formatString\":\"IFS({条件1},{结果1},{条件2},{结果2}...{默认结果})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"SWITCH\",\"chineseName\":\"条件选择\",\"description\":\"条件选择。\",\"example\":\"SWITCH({字段1},1,'A',2,'B','C')\",\"result\":\"假设字段1为2,结果:'B'\",\"paramDescs\":[\"*变量或常量*(必选)\",\"*变量或常量*(必选)\",\"*变量或常量*(必选)\",\"*变量或常量*(可选)\",\"*变量或常量*(可选)\",\"*变量或常量*(必选)\"],\"formatString\":\"SWITCH({变量},{条件1},{结果1},{条件2},{结果2}...{默认结果})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"SORT\",\"chineseName\":\"条件排序\",\"description\":\"根据排序条件进行字符和数字的排序,UP为升序,DOWN为降序。\",\"example\":\"SORT(1,2,5,4,3,'UP')\",\"result\":\"[1,2,3,4,5]\",\"paramDescs\":[\"*字符或数字*(必选)\",\"*字符或数字*(可选)\",\"......\",\"*排序方式*\"],\"formatString\":\"SORT({变量1},{变量2},{变量3}...{排序方式})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"array\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"IFERROR\",\"chineseName\":\"异常处理\",\"description\":\"异常处理函数\",\"example\":\"IFERROR(10/0,'0')\",\"result\":\"0\",\"paramDescs\":[\"*公式内容*\"],\"formatString\":\"IFERROR({变量},{变量})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"logic\",\"name\":\"逻辑函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"ROUNDUP\",\"chineseName\":\"向上舍入\",\"description\":\"根据设置的小数位精确度,返回对数值向上舍入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,则向上舍入到指定的小数位。如果小数位精确度等于 0,则向上舍入到最接近的整数。如果小数位精确度为负整数,则在小数点左侧向上进行舍入。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。\",\"example\":\"ROUNDUP(76.9,0)\",\"result\":\"77\",\"paramDescs\":[\"*数字*(必选)\",\"*小数位精确度*(可选)\"],\"formatString\":\"ROUNDUP(数字, [小数位精确度])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"ROUND\",\"chineseName\":\"四舍五入\",\"description\":\"根据设置的小数位精确度,返回对数值四舍五入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,针对小数点后的数据进行四舍五入;如果小数位精确度等于 0,返回最接近数值的整数;如果小数位精确度为负整数,针对小数点前的数据进行四舍五入,被舍掉的数据用0占位。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。\",\"example\":\"ROUND(123.456,2),ROUND(123.456,0),ROUND(123.456,-2)\",\"result\":\"依次为123.46,123,100\",\"paramDescs\":[\"*数字*(必选)\",\"*小数位精确度*(可选)\"],\"formatString\":\"ROUND(数字, [小数位精确度])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"ROUNDDOWN\",\"chineseName\":\"向下舍入\",\"description\":\"根据设置的小数位精确度,返回对数值向下舍入后的值。小数位精确度取值可为正整数,0,负整数。如果小数位精确度为正整数,则向下舍入到指定的小数位。如果小数位精确度等于 0,则向下舍入到最接近的整数。如果小数位精确度为负整数,则在小数点左侧向下进行舍入。小数位精确度不支持变量。小数位精确度默认为0,即只保留整数。\",\"example\":\"ROUNDDOWN(76.9,0)\",\"result\":\"76\",\"paramDescs\":[\"*数字*(必选)\",\"*小数位精确度*(可选)\"],\"formatString\":\"ROUNDDOWN(数字, [小数位精确度])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"AGGREGATION\",\"chineseName\":\"聚合运算\",\"description\":\"将一组数据进行统计计算,支持最大值(MAX)、最小值(MIN)、平均值(AVG)。\",\"example\":\"AGGREGATION(1 , 2,3,'AVG')\",\"result\":\"2\",\"paramDescs\":[\"*数字*(必选)\",\"*聚合运算类型*(必选)\"],\"formatString\":\"AGGREGATION({数字}...,{聚合运算类型})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":true},{\"dataType\":\"string\",\"must\":true,\"constType\":[\"avg\",\"max\",\"min\"],\"infinite\":false}]},{\"name\":\"MOD\",\"chineseName\":\"求余\",\"description\":\"将两个参数进行除法运算然后得出余数返回。\",\"example\":\"MOD( 7 , 3 )\",\"result\":\"1\",\"paramDescs\":[\"*数字*(必选)\",\"*数字*(必选)\"],\"formatString\":\"ROUNDDOWN({数字},{数字})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"TRUNC\",\"chineseName\":\"数字格式化\",\"description\":\"将小数点格式化成指定位数。\",\"example\":\"TRUNC( 2.123 , 2 )\",\"result\":\"2.12\",\"paramDescs\":[\"*数字*(必选)\",\"*精度*(必选)\"],\"formatString\":\"ROUNDDOWN({数字},{精度})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"CALDTROW\",\"chineseName\":\"明细逐行计算函数\",\"description\":\"明细逐行计算\",\"example\":\"假设:明细有金额1、金额2、金额3等三个控件,明细行数为2,第一行值分别为:5、6、10,第二行的值分别为:1、1、9。CALDTROW({金额3}==10,{金额1}+{金额2})\",\"result\":\"当金额3等于10的时候运算加法,只有第一行的金额3等于10,明细第一行的金额3赋值为11\",\"paramDescs\":[\"*字段*(必选)\",\"*公式或字段*(必选)\"],\"formatString\":\"CALDTROW({字段},{公式或字段})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"ABS\",\"chineseName\":\"绝对值\",\"description\":\"绝对值\",\"example\":\"ABS(-9)\",\"result\":\"9\",\"paramDescs\":[\"*字段*(必选)\"],\"formatString\":\"ABS({字段})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"RANDOM\",\"chineseName\":\"随机数生成\",\"description\":\"随机数生成\",\"example\":\"RANDOM(5,'NUM')\",\"result\":\"26489\",\"paramDescs\":[\"*数字*(必选)\",\"*文本*(必选)[NUM(数字)、CHAR(字符)、FIX(字符与数字混合)]\"],\"formatString\":\"RANDOM({随机数长度},{随机类型})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false},{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]},{\"name\":\"POWER\",\"chineseName\":\"N次方\",\"description\":\"计算数值的N次方\",\"example\":\"POWER(2, 2)
POWER(4, 1/2)\",\"result\":\"4
2\",\"paramDescs\":[\"*数字*(必选)\",\"*数字*(必选,N次方的N)\"],\"formatString\":\"POWER({数字}, {数字})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]},{\"name\":\"SQRT\",\"chineseName\":\"根号\",\"description\":\"将数值开根号\",\"example\":\"SQRT(4)\",\"result\":\"2\",\"paramDescs\":[\"*数字*(必选)\"],\"formatString\":\"SQRT({数字})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"math\",\"name\":\"数学函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"GETMONEY\",\"chineseName\":\"获取所给定数字的金额大写\",\"description\":\"将金额转换成中文金额大写。\",\"example\":\"GETMONEY({1234})\",\"result\":\"壹仟贰佰叁拾肆元整\",\"paramDescs\":[\"*数字*(必选)\"],\"formatString\":\"GETMONEY({数字})\",\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"finance\",\"name\":\"财务函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"default\",\"chineseName\":\"default\",\"description\":\"暂无\",\"formatString\":\"default()\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"text\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"all\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"extend\",\"name\":\"自定义拓展函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"CHOOSE\",\"chineseName\":\"返回索引范围内指定的值\",\"description\":\"根据索引位置获取数据。\",\"example\":\"假设:数字输入框1为0,数字输入框2为2,数字输入框3为3,数字输入框4为4。数字输入框1为检索位置的变量,后面3个为检索目标。 示例:CHOOSE({表A.数字输入框1}, {表A.数字输入框2}, {表A.数字输入框3}, {表A.数字输入框4})\",\"result\":\"2,从数字输入框2开始进行检索,数字输入框2的检索位置为0,后续数据位置依次累加1可以得出。\",\"paramDescs\":[\"*索引位置*(必选)\",\"*索引目标1*(必选)\",\"......\"],\"formatString\":\"CHOOSE(索引位置,索引目标1...索引目标N)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"Array\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"VLOOKUPS\",\"chineseName\":\"按列查找,返回所需值\",\"description\":\"按列查找,返回所需值。常用于薪酬模块。根据条件获取查询参数所在列的返回参数的值。返回参数可填写多个,用英文逗号隔开。若查询不到返回null。\",\"example\":\"VLOOKUPS({税表},{税表.收入},AND({税表.收入}>{税表.应纳税所得额下限},{税表.收入}<{税表.应纳税所得额上限}),[{税表.税率},{税表.速算扣除数}]) \",\"result\":\"按列查找返回税表中收入所在的收入区间所对应的税率和速算扣除数的数值\",\"paramDescs\":[\"*表*(必选)\",\"*条件*(必选)\",\"*返回参数*(必选)\"],\"formatString\":\"VLOOKUPS(表,[条件],[返回参数])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"Array\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"MATCH\",\"chineseName\":\"返回指定数值在指定数组区域中的位置\",\"description\":\"将指定数值在指定数组区域中的位置返回。若数组中无指定值,返回null。\",\"example\":\"MATCH(15000, [1000, 15000, 2000])\",\"result\":\"1\",\"paramDescs\":[\"*值*(必选)\",\"*数组*(必选)\"],\"formatString\":\"MATCH(值,[数组])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"Number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"FIND\",\"chineseName\":\"查找\",\"description\":\"用指定参数去另一个参数列表中查找匹配项,指定参数时,填写1则去第一个参数列表中查找,2则是第二个参数列表里匹配查找第一个参数,成功则返回true,失败返回false。\",\"example\":\"FIND([1,2,3],[1,2,3,4],1)\",\"result\":\"true\",\"paramDescs\":[\"*查找值1*(必选)\",\"......\",\"*查找值N*(可选)\",\"*查找目标1*(必选)\",\"......\",\"*查找目标N*(可选)\"],\"formatString\":\"FIND([{查找值1},{查找值2}...{查找值N}],[{查找目标1},{查找目标2}...{查找目标N}])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"boolean\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"array\",\"must\":true,\"infinite\":false},{\"dataType\":\"array\",\"must\":true,\"infinite\":false}]},{\"name\":\"INDEX\",\"chineseName\":\"数据索引\",\"description\":\"数据索引函数,根据索引位置返回一组数据中对应位置的数据。注意:索引位置是从0开始的。\",\"example\":\"假设:数字控件1=2,金额控件1=3,金额控件3=5,INDEX(1,[{数字控件1},{金额控件1},{金额控件2}]\",\"result\":\"3(索引下标为1,返回数组中第二个参数)\",\"paramDescs\":[\"*索引位置*(必选)\",\"*数组*(必选)\"],\"formatString\":\"INDEX({查找值},[{查找目标1},{查找目标2}...{查找目标N}])\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"number\",\"must\":true,\"infinite\":false},{\"dataType\":\"array\",\"must\":true,\"infinite\":false}]},{\"name\":\"UNIQUE\",\"chineseName\":\"唯一值过滤\",\"description\":\"唯一值过滤函数,得到一组数据,然后去掉重复的值,返回所有去重后的一组数据。\",\"example\":\"假设:文本控件1='A',文本控件2='B',文本控件3='B',UNIQUE({文本控件1},{文本控件2},{文本控件3})\",\"result\":\"[{文本控件1},{文本控件2}]\",\"paramDescs\":[\"*数组*(必选)\"],\"formatString\":\"UNIQUE({过滤目标1},{过滤目标2}...{过滤目标N})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":-1,\"paramStatuses\":[{\"dataType\":\"array\",\"must\":true,\"infinite\":false}]},{\"name\":\"FILTER\",\"chineseName\":\"条件过滤\",\"description\":\"过滤函数,通过一个或多个条件过滤参数中的数据,返回所有符合条件的一组数据。\",\"example\":\"假设:文本控件1='A',文本控件2='B',文本控件3='B',FILTER([{文本控件1},{文本控件2},{文本控件3}],'B')\",\"result\":\"[{文本控件2},{文本控件3}]\",\"paramDescs\":[\"*数组*(必选)\",\"*过滤字段*(必选)\"],\"formatString\":\"FILTER([{过滤目标1},{过滤目标2}...{过滤目标N}],{过滤字段}={过滤依据})\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"all\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"array\",\"must\":true,\"infinite\":false},{\"dataType\":\"boolean\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"find\",\"name\":\"查找函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"GETHRMLOGINID\",\"chineseName\":\"返回指定人员系统账号\",\"description\":\"获取指定人员系统账号。\",\"example\":\"GETHRMLOGINID({表单.张三})\",\"result\":\"'zhangsan@qq.com'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMLOGINID({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMWORKCODE\",\"chineseName\":\"返回指定人员编号\",\"description\":\"获取指定人员编号。\",\"example\":\"GETHRMWORKCODE({表单.张三})\",\"result\":\"'A001'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMWORKCODE({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMMANAGER\",\"chineseName\":\"返回指定人员直接上级\",\"description\":\"获取指定人员直接上级。返回值为对应人员直接上级的ID。\",\"example\":\"GETHRMMANAGER({表单.张三})\",\"result\":\"'1559563038252396708'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMMANAGER({人员}})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMEMAIL\",\"chineseName\":\"获取指定人员邮箱\",\"description\":\"获取指定人员邮箱。\",\"example\":\"GETHRMEMAIL({表单.张三})\",\"result\":\"'2345@163.com'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMEMAIL({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMSECLEVEL\",\"chineseName\":\"获取指定人员安全级别\",\"description\":\"获取指定人员安全级别。\",\"example\":\"张三安全级别为1;GETHRMSECLEVEL({表单.张三})\",\"result\":\"'1'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMSECLEVEL({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMALLMANAGER\",\"chineseName\":\"返回指定人员所有上级\",\"description\":\"获取指定人员所有上级。存在多个上级时,返回所有上级形成的数组。\",\"example\":\"GETHRMALLMANAGER({表单.张三})\",\"result\":\"返回张三的所有上级形成的数组\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMALLMANAGER({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMDEPARTMENT\",\"chineseName\":\"返回指定人员部门\",\"description\":\"获取指定人员部门。返回值为部门ID。\",\"example\":\"GETHRMDEPARTMENT({表单.张三})\",\"result\":\"'1560052731319352218'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMDEPARTMENT({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMSUBCOMPANY\",\"chineseName\":\"返回指定人员分部\",\"description\":\"取指定人员分部,返回值为分部ID。\",\"example\":\"GETHRMSUBCOMPANY({表单.张三})\",\"result\":\"'1560052731319352218'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMSUBCOMPANY({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETDEPARTMENTNAME\",\"chineseName\":\"返回指定部门名称\",\"description\":\"获取指定部门名称。\",\"example\":\"GETDEPARTMENTNAME({表单.A部门})\",\"result\":\"'A部门'\",\"paramDescs\":[\"*部门*(必选)\"],\"formatString\":\"GETDEPARTMENTNAME({部门})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETDEPARTMENTCODE\",\"chineseName\":\"返回指定部门编号\",\"description\":\"获取指定部门编号。\",\"example\":\"GETDEPARTMENTCODE({表单.A部门})\",\"result\":\"'A001'\",\"paramDescs\":[\"*部门*(必选)\"],\"formatString\":\"GETDEPARTMENTCODE({部门})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETSUPERDEPARTMENT\",\"chineseName\":\"返回指定部门直接上级部门\",\"description\":\"获取指定部门直接上级部门。返回值为对应部门直接上级部门的ID。\",\"example\":\"GETSUPERDEPARTMENT({表单.A部门})\",\"result\":\"'1559563038252396709'\",\"paramDescs\":[\"*部门*(必选)\"],\"formatString\":\"GETSUPERDEPARTMENT({部门})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETALLSUPERDEPARTMENT\",\"chineseName\":\"返回指定部门所有上级部门\",\"description\":\"获取指定部门所有上级部门。存在多个上级部门时,返回所有上级部门形成的数组。\",\"example\":\"GETALLSUPERDEPARTMENT({表单.A部门})\",\"result\":\"返回A部门的所有上级部门形成的数组\",\"paramDescs\":[\"*部门*(必选)\"],\"formatString\":\"GETALLSUPERDEPARTMENT({部门})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETSUBCOMPANYNAME\",\"chineseName\":\"返回指定分部名称\",\"description\":\"获取指定分部名称。\",\"example\":\"GETSUBCOMPANYNAME({表单.A分部})\",\"result\":\"'A分部'\",\"paramDescs\":[\"*分部*(必选)\"],\"formatString\":\"GETSUBCOMPANYNAME({分部})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETSUBCOMPANYCODE\",\"chineseName\":\"返回指定分部编号\",\"description\":\"获取指定分部编号。\",\"example\":\"GETSUBCOMPANYCODE({表单.A分部})\",\"result\":\"'B001'\",\"paramDescs\":[\"*分部*(必选)\"],\"formatString\":\"GETSUBCOMPANYCODE({分部})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETSUPERSUBCOMPANY\",\"chineseName\":\"返回指定分部直接上级分部\",\"description\":\"获取指定分部直接上级分部。返回值为对应部门直接上级分部的ID。\",\"example\":\"GETSUPERSUBCOMPANY({表单.A分部})\",\"result\":\"'1559563038252396705'\",\"paramDescs\":[\"*分部*(必选)\"],\"formatString\":\"GETSUPERSUBCOMPANY({分部})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETALLSUPERSUBCOMPANY\",\"chineseName\":\"返回指定分部所有上级分部\",\"description\":\"获取指定分部所有上级分部。存在多个上级分部时,返回所有上级分部形成的数组。\",\"example\":\"GETALLSUPERSUBCOMPANY({表单.A分部})\",\"result\":\"A分部的所有上级分部形成的数组\",\"paramDescs\":[\"*分部*(必选)\"],\"formatString\":\"GETALLSUPERSUBCOMPANY({分部})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMNAME\",\"chineseName\":\"获取人员名称\",\"description\":\"获取指定人员的姓名。\",\"example\":\"GETHRMNAME({U:张三})\",\"result\":\"'张三'\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMNAME({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETHRMMOBILE\",\"chineseName\":\"获取人员手机号码\",\"description\":\"获取指定人员的手机号码。\",\"example\":\"GETHRMMOBILE({U:张三})\",\"result\":\"13123232323\",\"paramDescs\":[\"*人员*(必选)\"],\"formatString\":\"GETHRMMOBILE({人员})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETREQUESTMARK\",\"chineseName\":\"获取指定流程编号\",\"description\":\"获取指定流程编号\",\"example\":\"假设关联流程=流程数据A,编号为:2332323,GETREQUESTMARK({关联流程})\",\"result\":\"'2332323'\",\"paramDescs\":[\"*关联流程*(必选)\"],\"formatString\":\"GETREQUESTMARK({关联流程})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETDOCCODE\",\"chineseName\":\"获取指定文档编号\",\"description\":\"获取指定文档编号。\",\"example\":\"假设关联文档=文档A,文档A编号为:234567,GETDOCCODE({关联文档})\",\"result\":\"'234567'\",\"paramDescs\":[\"*关联文档*(必选)\"],\"formatString\":\"GETDOCCODE({关联文档})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETPRJCODE\",\"chineseName\":\"获取指定项目编号\",\"description\":\"获取指定项目编号。\",\"example\":\"假设关联项目=项目A,项目A编号为:2838383,GETPRJCODE({关联项目})\",\"result\":\"'2838383'\",\"paramDescs\":[\"*关联项目*(必选)\"],\"formatString\":\"GETPRJCODE({关联项目})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETCRMCODE\",\"chineseName\":\"获取指定客户编号\",\"description\":\"获取指定客户编号。\",\"example\":\"假设关联客户=客户A,客户A编号为:2838383,GETCRMCODE({关联客户})\",\"result\":\"'2838383'\",\"paramDescs\":[\"*关联客户*(必选)\"],\"formatString\":\"GETCRMCODE({关联客户})\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"LANGUAGE\",\"chineseName\":\"当前语言\",\"description\":\"获取当前语言。\",\"example\":\"LANGUAGE()\",\"result\":\"简体中文\",\"formatString\":\"LANGUAGE()\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETREQUESTSTATUS\",\"chineseName\":\"流程状态\",\"description\":\"获取流程状态。示例:假设关联流程所选中的数据正在审批中;GETREQUESTSTATUS({表单.关联流程})
结果:'审批中'\",\"example\":\"假设关联流程所选中的数据正在审批中;GETREQUESTSTATUS({表单.关联流程})\",\"result\":\"'审批中'\",\"paramDescs\":[\"*关联流程*(必选)\"],\"formatString\":\"GETREQUESTSTATUS()\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETEMPIDBYMOBILE\",\"chineseName\":\"人员手机获取人员ID\",\"description\":\"人员手机获取人员ID\",\"example\":\"人员手机号码获取人员ID;GETEMPIDBYMOBILE({手机号})\",\"result\":\"'342143214234213'\",\"paramDescs\":[\"*手机号*(必选)\"],\"formatString\":\"GETEMPIDBYMOBILE()\",\"paramArray\":[\"String\"],\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":1,\"paramStatuses\":[{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]}],\"dataType\":\"database\",\"name\":\"数据库函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"DISTANCE\",\"chineseName\":\"返回两个位置间的直线距离\",\"description\":\"返回两个位置间的直线距离,单位m(米)。\",\"example\":\"DISTANCE({表A.地理位置1}, {表A.地理位置2})\",\"result\":\"23000\",\"paramDescs\":[\"*地理位置1*(必选)\",\"*地理位置2*(必选)\"],\"formatString\":\"DISTANCE({地理位置1}, {地理位置2})\",\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"option\",\"must\":true,\"infinite\":false},{\"dataType\":\"option\",\"must\":true,\"infinite\":false}]},{\"name\":\"GETUSER\",\"chineseName\":\"返回用户的个人资料\",\"description\":\"返回用户的指定资料项:name、phone、mobile、email。\",\"example\":\"GETUSER({表A.人员选择}, 'mobile')\",\"result\":\"'18692108017'\",\"paramDescs\":[\"*人员选择*(必选)\",\"*文本*(必选,资料项)\"],\"formatString\":\"GETUSER({人员选择}, 文本)\",\"paramData\":[],\"returnType\":\"string\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":2,\"paramStatuses\":[{\"dataType\":\"option\",\"must\":true,\"infinite\":false},{\"dataType\":\"string\",\"must\":true,\"infinite\":false}]},{\"name\":\"FIELDS\",\"chineseName\":\"根据条件和排序获取指定表格中的全部数据(最多50条)或指定条数的数据的指定字段值的集合。\",\"description\":\"根据条件和排序获取指定表格中的全部数据(最多50条)或指定条数的数据的指定字段值的集合。\",\"example\":\"FIELDS({表A.负责人}, {表A.销售状态} = {C:已签约}, {表A.创建时间-倒序}, 'desc', 50})\",\"result\":\"返回销售状态为已签约的最新发布的50条数据中负责人的集合\",\"paramDescs\":[\"*字段*(必选)\",\"*条件*(可选)\",\"*排序字段*(可选)\",\"*排序类型*(可选,asc为升序,desc为降序。默认值asc)\",\"*返回条数*(可选)\"],\"formatString\":\"FIELDS({字段}, [条件], [排序字段], [排序类型], [返回条数])\",\"paramData\":[],\"returnType\":\"Array\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0}],\"dataType\":\"special\",\"name\":\"特殊函数\",\"action\":\"DataSource\",\"type\":\"functions\"},{\"children\":[{\"name\":\"monthNumber\",\"chineseName\":\"月份差 +1\",\"description\":\" 计算两个日期相差的月份数 +1\",\"formatString\":\"monthNumber(date1,date2)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0},{\"name\":\"getEndDate\",\"chineseName\":\"根据合同期限计算合同结束日期\",\"description\":\"需传入两个参数\\n参数1、合同开始日期\\n参数2、整年(如:1、2、3)\",\"formatString\":\"getEndDate(startDate,expirationDate)\",\"paramArray\":[],\"paramData\":[],\"returnType\":\"number\",\"type\":\"function\",\"validForm\":\"current_data\",\"paramCount\":0}],\"dataType\":\"custom\",\"name\":\"自定义JS脚本函数\",\"action\":\"DataSource\",\"type\":\"functions\"}]}"; }