钉钉宜搭中也有公式组件,发现在钉钉宜搭中逻辑函数有EQ、NE、LT、GT、LE、GE.虽然在QLExpress中也有对应的实现,但为了考虑系列文章的完整性,笔者在这篇文章加餐EQ、NE、LT、GT、LE、GE六个函数的实现
函数名 | 表达式 | 入参 | 返回值 |
EQ判断相等 | EQ(value1,value2) | 2个值作比较 |
boolean |
NE判断不等 | NE(value1,value2) | 2个值作比较 | boolean |
LT小于 | LT(value1,value2) | 2个值作比较 | boolean |
GT大于 | GT(value1,value2) | 2个值作比较 | boolean |
LE小于等于 | LE(value1,value2) | 2个值作比较 | boolean |
GE大于等于 | GE(value1,value2) | 2个值作比较 | boolean |
表达式:EQ(value1,value2)
入参:
2个值作比较
返回值:
类型:布尔值
返回值规则:两个值相等返回 true,支持数字,日期
package com.ql.util.express.self.combat.function.logic;
import com.ql.util.express.Operator;
/**
* 类描述:EQ函数
*
* @author admin
* @version 1.0.0
* @date 2023/11/27 14:04
*/
public class EqFunction extends Operator {
public EqFunction(String name) {
this.name = name;
}
@Override
public Object executeInner(Object[] list) throws Exception {
return executeInner(list[0], list[1]);
}
public Object executeInner(Object obj1, Object obj2) throws Exception {
return Operator.objectEquals(obj1, obj2);
}
}
表达式:NE(value1,value2)
入参:
2个值做比较
返回值:
类型:布尔值
返回值规则:两个值不相等返回 true,支持数字,日期
package com.ql.util.express.self.combat.function.logic;
import com.ql.util.express.Operator;
/**
* 类描述: NE函数 判断不等
*
* @author admin
* @version 1.0.0
* @date 2023/11/27 14:07
*/
public class NeFunction extends Operator {
public NeFunction(String name) {
this.name = name;
}
@Override
public Object executeInner(Object[] list) throws Exception {
return executeInner(list[0], list[1]);
}
public Object executeInner(Object obj1, Object obj2) throws Exception {
return !Operator.objectEquals(obj1, obj2);
}
}
表达式:LT(value1,value2)
入参:
2个值做比较
返回值:
类型:布尔值
返回值规则:value1 小于 value2 返回 true,支持数字,日期
package com.ql.util.express.self.combat.function.logic;
import com.ql.util.express.Operator;
import com.ql.util.express.self.combat.exception.FormulaException;
import static com.ql.util.express.config.QLExpressRunStrategy.isCompareNullLessMoreAsFalse;
/**
* 类描述: LT函数
*
* @author admin
* @version 1.0.0
* @date 2023/11/27 13:45
*/
public class LtFunction extends Operator {
public LtFunction(String name) {
this.name = name;
}
@Override
public Object executeInner(Object[] list) throws Exception {
return executeInner(list[0], list[1]);
}
public Object executeInner(Object obj1, Object obj2) throws Exception {
// 进行其他大小比较操作
if (obj1 == null || obj2 == null) {
if (isCompareNullLessMoreAsFalse()) {
return false;
}
throw new FormulaException("空操作数无法进行数字比较操作:left = " + obj1 + ",right = " + obj2);
}
int i = Operator.compareData(obj1, obj2);
boolean result = false;
if (i < 0) {
result = true;
}
return result;
}
}