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}, "");