From d68c61517a3a6d4ec4d47844c21bdc143f99cbab Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 17 四月 2024 22:58:05 +0800
Subject: [PATCH] 大屏接口

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java
index 369136a..4b9057e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java
@@ -1,17 +1,21 @@
 package com.ruoyi.common.utils;
 
-import org.apache.commons.jexl3.*;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.apache.commons.jexl3.JexlBuilder;
+import org.apache.commons.jexl3.JexlContext;
+import org.apache.commons.jexl3.JexlEngine;
+import org.apache.commons.jexl3.JexlExpression;
+import org.apache.commons.jexl3.MapContext;
 
 /**
  * @author mitao
  * @date 2024/3/27
  */
 public class CalculateUtil {
+
     public static Map<String, Integer> getFieldsAndValue(String rule) {
         // 正则表达式模式,匹配形如 "fieldName:value" 的字符串
         Pattern pattern = Pattern.compile("\\b(\\w+)_(\\d+)\\b");
@@ -27,6 +31,7 @@
     }
 
     public static double calculate(String expression, Map<String, Object> value) {
+        
         expression = formatExpression(expression);
         // 创建 JEXL 引擎
         JexlEngine jexl = new JexlBuilder().create();
@@ -46,6 +51,22 @@
         return Double.parseDouble(result.toString());
     }
 
+    public static double calculate(String expression) {
+        // 创建 JEXL 引擎
+        JexlEngine jexl = new JexlBuilder().create();
+
+        // 创建表达式对象
+        JexlExpression exp = jexl.createExpression(expression);
+        // 创建上下文
+        JexlContext context = new MapContext();
+        // 执行计算
+        Object result = exp.evaluate(context);
+
+        // 输出结果
+        System.out.println("Result: " + result);
+        return Double.parseDouble(result.toString());
+    }
+
     public static String formatExpression(String expression) {
         return expression
                 .replaceAll("×", "*")
@@ -55,4 +76,9 @@
                 .replaceAll("+", "+")
                 .replaceAll("-", "-");
     }
+
+    public static void main(String[] args) {
+        String string = "field_3 * field_2";
+        System.out.println(getFieldsAndValue(string));
+    }
 }

--
Gitblit v1.7.1