From a7a8a50f48c1bff5ddc52b3bad1782328f8043d8 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 12 四月 2024 18:50:20 +0800
Subject: [PATCH] 基础数据配置接口修改

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 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..585ee1e 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");
@@ -46,6 +50,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 +75,9 @@
                 .replaceAll("+", "+")
                 .replaceAll("-", "-");
     }
+
+    public static void main(String[] args) {
+        String string = "field_3 * field_2";
+        System.out.println(getFieldsAndValue(string));
+    }
 }

--
Gitblit v1.7.1