From ccec800a75ed33048aafa360c9a4227da9ff3e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 8 May 2023 11:21:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=BC=8F=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/constant/des.json | 599 ------------------ .../engine/salary/formlua/core/QlExpress.java | 20 +- 2 files changed, 10 insertions(+), 609 deletions(-) diff --git a/src/com/engine/salary/constant/des.json b/src/com/engine/salary/constant/des.json index 047235f93..fe3b8ce5f 100644 --- a/src/com/engine/salary/constant/des.json +++ b/src/com/engine/salary/constant/des.json @@ -454,258 +454,6 @@ "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", @@ -1232,159 +980,6 @@ "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", @@ -1698,62 +1293,6 @@ "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", @@ -1947,144 +1486,6 @@ "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", diff --git a/src/com/engine/salary/formlua/core/QlExpress.java b/src/com/engine/salary/formlua/core/QlExpress.java index 30ef2af57..91b3145ef 100644 --- a/src/com/engine/salary/formlua/core/QlExpress.java +++ b/src/com/engine/salary/formlua/core/QlExpress.java @@ -145,22 +145,25 @@ public class QlExpress { runner.replaceOperator("*", new WOperatorMulti("*")); runner.replaceOperator("/", new WOperatorDiv("/")); //逻辑函数 - runner.replaceOperator("IN", new InOperator("in")); runner.replaceOperator("IF", new InOperator("IF")); runner.addFunctionOfServiceMethod(FuncNames.AND.toString(), logicService, FuncNames.AND.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.OR.toString(), logicService, FuncNames.OR.getName(), new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod(FuncNames.NOT.toString(), logicService, FuncNames.NOT.getName(), new Class[]{Object[].class}, ""); + runner.replaceOperator("IN", new InOperator("in")); runner.addFunctionOfServiceMethod(FuncNames.LIKE.toString(), logicService, FuncNames.LIKE.getName(), new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod(FuncNames.ISEMPTY.toString(), logicService, FuncNames.ISEMPTY.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.TRUE.toString(), logicService, FuncNames.TRUE.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.FALSE.toString(), logicService, FuncNames.FALSE.getName(), new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod(FuncNames.ISEMPTY.toString(), logicService, FuncNames.ISEMPTY.getName(), new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod(FuncNames.NOT.toString(), logicService, FuncNames.NOT.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.IFS.toString(), logicService, FuncNames.IFS.getName(), new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod(FuncNames.FIND.toString(), logicService, FuncNames.FIND.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.SWITCH.toString(), logicService, FuncNames.SWITCH.getName(), new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod(FuncNames.FIND.toString(), logicService, FuncNames.FIND.getName(), new Class[]{Object[].class}, ""); //日期函数 - runner.addFunctionOfServiceMethod("DATEDIFF", dateTimeService, "dateDiff", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("TODAY", dateTimeService, "today", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("NOW", dateTimeService, "now", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("DATEADD", dateTimeService, "dateAdd", new Class[]{Object[].class}, errorInfo); + runner.addFunctionOfServiceMethod("DATEDIFF", dateTimeService, "dateDiff", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("DATEFORMAT", dateTimeService, "dateFormat", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("YEAR", dateTimeService, "year", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MONTH", dateTimeService, "month", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("DAY", dateTimeService, "day", new Class[]{Object[].class}, ""); @@ -169,10 +172,6 @@ public class QlExpress { runner.addFunctionOfServiceMethod("SECOND", dateTimeService, "seconds", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("WEEKNUM", dateTimeService, "weekNum", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("WEEKDAY", dateTimeService, "weekDay", new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod("NOW", dateTimeService, "now", new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod("TODAY", dateTimeService, "today", new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod("DATEFORMAT", dateTimeService, "dateFormat", new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod("DAYOFMONTH", dateTimeService, "dayOfMonth", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("EOMONTH", dateTimeService, "eoMonth", new Class[]{Object[].class}, ""); // runner.addFunctionOfServiceMethod("NETWORKDAYSPI", dateTimeService, "workdayIntl", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("CURRYEAR", dateTimeService, "currYear", new Class[]{Object[].class}, ""); @@ -184,6 +183,7 @@ public class QlExpress { runner.addFunctionOfServiceMethod("CURRSECOND", dateTimeService, "currSecond", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MAXDATE", dateTimeService, "maxDate", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MINDATE", dateTimeService, "minDate", new Class[]{Object[].class}, ""); +// runner.addFunctionOfServiceMethod("DAYOFMONTH", dateTimeService, "dayOfMonth", new Class[]{Object[].class}, ""); //聚合函数 // runner.addFunctionOfServiceMethod("COUNT", aggregationFunc, "counts", new Class[]{Object[].class}, "COUNT参数错误"); @@ -211,8 +211,8 @@ public class QlExpress { //数学函数 runner.addFunctionOfServiceMethod("ROUNDUP", mathFuncsService, "roundUp", new Class[]{Object[].class}, ""); - runner.addFunctionOfServiceMethod("ROUNDDOWN", mathFuncsService, "roundDown", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("ROUND", mathFuncsService, "round", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("ROUNDDOWN", mathFuncsService, "roundDown", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.AGGREGATION.toString(), mathFuncsService, FuncNames.AGGREGATION.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.MOD.toString(), mathFuncsService, FuncNames.MOD.getName(), new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod(FuncNames.TRUNC.toString(), mathFuncsService, FuncNames.TRUNC.getName(), new Class[]{Object.class, Object.class}, "");