Java表达式计算工具-Aviator的使用工具
pom.xml 中引用:
<dependency> <groupId>com.googlecode.aviator</groupId> <artifactId>aviator</artifactId> <version>5.3.0</version> </dependency>
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.googlecode.aviator.AviatorEvaluator;
import java.math.BigDecimal;
import java.util.Map;
/**
* Java表达式计算工具-Aviator的使用工具
*/
public class ReportCalAviator {
/**
* 根据公式计算数据
* @param formula 公式
* @param map 数据资源池
* @return 3位小数的数据
*/
public static Double cal(String formula, Map<String, Object> map){
try{
//Object obj = AviatorEvaluator.execute(formula, map);
String value = String.valueOf(AviatorEvaluator.execute(formula, map));
if(StringUtils.isNotBlank(value)){
Double d_value = Double.parseDouble(value);
BigDecimal bg = new BigDecimal(d_value);
return bg.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
}else{
return 0d;
}
}catch(Exception e){
return 0d;
}
}
}