From 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:50:53 +0800
Subject: [PATCH] feat: 完善质检、生产、销售、财务与人事模块并接入审批流程
---
yudao-module-qcreport/src/main/java/cn/iocoder/yudao/module/qcreport/engine/rule/RuleEvaluator.java | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/yudao-module-qcreport/src/main/java/cn/iocoder/yudao/module/qcreport/engine/rule/RuleEvaluator.java b/yudao-module-qcreport/src/main/java/cn/iocoder/yudao/module/qcreport/engine/rule/RuleEvaluator.java
index ad9de51..dc8ad33 100644
--- a/yudao-module-qcreport/src/main/java/cn/iocoder/yudao/module/qcreport/engine/rule/RuleEvaluator.java
+++ b/yudao-module-qcreport/src/main/java/cn/iocoder/yudao/module/qcreport/engine/rule/RuleEvaluator.java
@@ -71,6 +71,15 @@
return asText(left).compareTo(asText(right));
}
+ private static int compareNumbers(Object left, Object right) {
+ double leftNumber = Paths.toNumber(left);
+ double rightNumber = Paths.toNumber(right);
+ if (!Double.isFinite(leftNumber) || !Double.isFinite(rightNumber)) {
+ throw new RuleRuntimeException("鏁板�兼瘮杈冪己灏戞湁鏁堝疄娴嬪�兼垨瑙勬牸闄愬��");
+ }
+ return Double.compare(leftNumber, rightNumber);
+ }
+
/** 鍒ゅ畾缁撴灉绫诲彇鍊肩粺涓�鎴� PASS / FAIL锛岃瘑鍒笉鍑鸿繑鍥炵┖涓� */
public static String normalizeResultToken(Object value) {
if (value instanceof Boolean bool) {
@@ -259,8 +268,8 @@
private static Object evaluateBetween(RuleNode.Between between, Object context) {
Object value = evaluateNode(between.value(), context);
- boolean hit = compare(value, evaluateNode(between.lower(), context)) >= 0
- && compare(value, evaluateNode(between.upper(), context)) <= 0;
+ boolean hit = compareNumbers(value, evaluateNode(between.lower(), context)) >= 0
+ && compareNumbers(value, evaluateNode(between.upper(), context)) <= 0;
return between.negated() != hit;
}
@@ -290,10 +299,10 @@
return switch (binary.operator()) {
case "=" -> compare(left, right) == 0;
case "!=" -> compare(left, right) != 0;
- case ">" -> compare(left, right) > 0;
- case ">=" -> compare(left, right) >= 0;
- case "<" -> compare(left, right) < 0;
- case "<=" -> compare(left, right) <= 0;
+ case ">" -> compareNumbers(left, right) > 0;
+ case ">=" -> compareNumbers(left, right) >= 0;
+ case "<" -> compareNumbers(left, right) < 0;
+ case "<=" -> compareNumbers(left, right) <= 0;
case "+" -> add(left, right);
case "-" -> Paths.toNumber(left) - Paths.toNumber(right);
case "*" -> Paths.toNumber(left) * Paths.toNumber(right);
@@ -412,4 +421,4 @@
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3