
com.easy.query.core.proxy.SQLMathExpression Maven / Gradle / Ivy
package com.easy.query.core.proxy;
import com.easy.query.core.func.def.enums.MathMethodEnum;
import com.easy.query.core.proxy.extension.functions.executor.ColumnFunctionComparableNumberChainExpression;
import com.easy.query.core.proxy.extension.functions.executor.impl.ColumnFunctionComparableNumberChainExpressionImpl;
import java.math.BigDecimal;
/**
* create time 2024/2/21 10:58
* 文件说明
*
* @author xuejiaming
*/
public interface SQLMathExpression {
static ColumnFunctionComparableNumberChainExpression abs(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Abs);
}, propTypeColumn.getPropertyType());
}
/**
* 是一种数学类方法,该方法返回一个整数,该整数指定数字的符号
*
* @param propTypeColumn
* @return 如果值等于零返回0,如果值大于零返回1,如果值小于零返回-1
* @param
*/
static ColumnFunctionComparableNumberChainExpression sign(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Abs);
}, Integer.class);
}
/**
* 向下取整
* @param propTypeColumn
* @return
* @param
*/
static ColumnFunctionComparableNumberChainExpression floor(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Floor);
}, propTypeColumn.getPropertyType());
}
/**
* 向上取整
* @return
*/
static ColumnFunctionComparableNumberChainExpression ceiling(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Ceiling);
}, propTypeColumn.getPropertyType());
}
/**
* 四舍五入
* @param propTypeColumn
* @return
* @param
*/
static ColumnFunctionComparableNumberChainExpression round(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Round);
}, BigDecimal.class);
}
/**
* 四舍五入
* @param propTypeColumn
* @param decimals
* @return
* @param
*/
static ColumnFunctionComparableNumberChainExpression round(PropTypeColumn propTypeColumn,int decimals) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
o.value(decimals);
}, MathMethodEnum.Round);
}, BigDecimal.class);
}
/**
* 指定幂的数字 d
* @param propTypeColumn d
* @return 数字 e 的 d 次幂。
* @param
*/
static ColumnFunctionComparableNumberChainExpression exp(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Exp);
}, BigDecimal.class);
}
/**
* 要查找其对数的数字。
* @param propTypeColumn d
* @return d 参数 正 d 的自然对数,即 ln d 或 log ed 零
* @param
*/
static ColumnFunctionComparableNumberChainExpression log(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Log);
}, BigDecimal.class);
}
static ColumnFunctionComparableNumberChainExpression log(PropTypeColumn propTypeColumn,BigDecimal newBase) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
o.value(newBase);
}, MathMethodEnum.Log);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression log10(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Log10);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression pow(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Pow);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression pow(PropTypeColumn propTypeColumn,BigDecimal exponent) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
o.value(exponent);
}, MathMethodEnum.Pow);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression sqrt(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Sqrt);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression cos(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Cos);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression sin(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Sin);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression tan(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Tan);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression acos(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Acos);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression asin(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Asin);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression atan(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Atan);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression atan2(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Atan2);
}, BigDecimal.class);
}
default ColumnFunctionComparableNumberChainExpression truncate(PropTypeColumn propTypeColumn) {
return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
return fx.math(o -> {
PropTypeColumn.columnFuncSelector(o,propTypeColumn);
}, MathMethodEnum.Truncate);
}, BigDecimal.class);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy