16.仿简道云公式函数实战-钉钉宜搭逻辑函数-加餐

2023-12-18 18:32:12

1. 前言

钉钉宜搭中也有公式组件,发现在钉钉宜搭中逻辑函数有EQ、NE、LT、GT、LE、GE.虽然在QLExpress中也有对应的实现,但为了考虑系列文章的完整性,笔者在这篇文章加餐EQ、NE、LT、GT、LE、GE六个函数的实现

2. 函数说明

函数名 表达式 入参 返回值
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

 3. 代码实战

3.1 EQ判断相等

表达式: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);
    }
}

3.2 NE判断不等

表达式: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);
    }
}

3.3 LT小于

表达式: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;
    }
}

文章来源:https://blog.csdn.net/DSDS454651/article/details/135067494
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。