From 173855b299e89930b5ea2ff9a9295fde9d0f55b5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:51:43 +0800
Subject: [PATCH] feat: 同步质检、生产、销售、财务与人事前端功能
---
src/components/quality/engine/rule-engine.ts | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/src/components/quality/engine/rule-engine.ts b/src/components/quality/engine/rule-engine.ts
index 9581512..0b871f2 100644
--- a/src/components/quality/engine/rule-engine.ts
+++ b/src/components/quality/engine/rule-engine.ts
@@ -399,6 +399,15 @@
return leftText === rightText ? 0 : leftText > rightText ? 1 : -1;
}
+function compareNumbers(left: unknown, right: unknown): number {
+ const leftNumber = toNumber(left);
+ const rightNumber = toNumber(right);
+ if (!Number.isFinite(leftNumber) || !Number.isFinite(rightNumber)) {
+ throw new RuleRuntimeError('鏁板�兼瘮杈冪己灏戞湁鏁堝疄娴嬪�兼垨瑙勬牸闄愬��');
+ }
+ return leftNumber === rightNumber ? 0 : leftNumber > rightNumber ? 1 : -1;
+}
+
/** 鍒ゅ畾缁撴灉绫诲彇鍊肩粺涓�鎴� PASS / FAIL锛氬吋瀹逛腑鏂囥�佸竷灏斾笌鏁板瓧 1/0 */
const PASS_TOKENS = new Set(['PASS', 'TRUE', '鍚堟牸', 'OK', '1', '鏄�']);
const FAIL_TOKENS = new Set(['FAIL', 'FALSE', '涓嶅悎鏍�', 'NG', '0', '鍚�']);
@@ -566,8 +575,8 @@
case 'between': {
const value = evaluateNode(node.value, context);
const hit =
- compare(value, evaluateNode(node.lower, context)) >= 0 &&
- compare(value, evaluateNode(node.upper, context)) <= 0;
+ compareNumbers(value, evaluateNode(node.lower, context)) >= 0 &&
+ compareNumbers(value, evaluateNode(node.upper, context)) <= 0;
return node.negated ? !hit : hit;
}
case 'in': {
@@ -608,16 +617,16 @@
return compare(left, right) !== 0;
}
case '>': {
- return compare(left, right) > 0;
+ return compareNumbers(left, right) > 0;
}
case '>=': {
- return compare(left, right) >= 0;
+ return compareNumbers(left, right) >= 0;
}
case '<': {
- return compare(left, right) < 0;
+ return compareNumbers(left, right) < 0;
}
case '<=': {
- return compare(left, right) <= 0;
+ return compareNumbers(left, right) <= 0;
}
case '+': {
const leftNumber = toNumber(left);
@@ -708,4 +717,4 @@
visit(node);
// 缁熻鍑芥暟浣滅敤鍦ㄦ暟缁勮矾寰勪笂锛岃繖閲屽幓鎺夋湯绔瓧娈靛彧淇濈暀鏁扮粍鏈韩
return [...new Set(paths.map((path) => parsePath(path).join('.')))];
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3