From c267f7c90b46efa192bd3d790691118e521510c8 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 08 三月 2025 17:11:55 +0800
Subject: [PATCH] 雅达-新增收货单处理和行审核功能

---
 Tiger.Business/DbCache/Biz.CodeRule.cs |   36 ++++++++++++++++++++----------------
 1 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/Tiger.Business/DbCache/Biz.CodeRule.cs b/Tiger.Business/DbCache/Biz.CodeRule.cs
index a73f15b..6b1800f 100644
--- a/Tiger.Business/DbCache/Biz.CodeRule.cs
+++ b/Tiger.Business/DbCache/Biz.CodeRule.cs
@@ -10,22 +10,14 @@
 using System.Linq;
 using Newtonsoft.Json;
 using Tiger.Business.DbCache;
-using Tiger.Business.WMS.iSRM;
 using System.Text.RegularExpressions;
 using System.Diagnostics;
 using System.Threading;
 using System.Data;
+using Tiger.IBusiness;
 
 namespace Tiger.Business
 {
-    public partial class Biz
-    {
-        /// <summary>
-        /// 鑾峰彇鏉$爜瑙勫垯缂撳瓨
-        /// </summary>
-        public static CodeRuleCache CodeRule => DbCacheBus.CodeRuleCache;
-    }
-
     /// <summary>
     /// BAS_CODE_RULE 鎵╁睍绫�
     /// </summary>
@@ -39,7 +31,7 @@
         /// <returns></returns>
         public static Result Verify(this BAS_CODE_RULE rule, string sn)
         {
-            return Biz.CodeRule.Verify(sn, rule);
+            return Cache.CodeRule.Verify(sn, rule);
         }
 
         /// <summary>
@@ -50,7 +42,7 @@
         /// <returns></returns>
         public static Result Generate(this BAS_CODE_RULE rule, params object?[] args)
         {
-            return Biz.CodeRule.Generate(rule.RULE_CODE, args);
+            return Cache.CodeRule.Generate(rule.RULE_CODE, args);
         }
 
         /// <summary>
@@ -61,7 +53,7 @@
         /// <returns></returns>
         public static Result TryGenerate(this BAS_CODE_RULE rule, params object?[] args)
         {
-            return Biz.CodeRule.TryGenerate(rule.RULE_CODE, args);
+            return Cache.CodeRule.TryGenerate(rule.RULE_CODE, args);
         }
     }//endClass
 
@@ -96,9 +88,9 @@
         /// <summary>
         /// 鏁版嵁搴撳叧鑱旈獙璇�
         /// </summary>
-        public static bool CheckDB(string key, BAS_CODE_DTL rule)
+        public static bool CheckDB(string key, BAS_CODE_DTL ruleDtl)
         {
-            return rule.DATA_TYPE == BAS_CODE_DTL.DATA_TYPEs.DbCheck.GetValue() ? Biz.Db.Queryable(rule.CHECK_TABLE, "t").Where($"{rule.CHECK_FIELD} = '{key}'").Any() : true;
+            return ruleDtl.DATA_TYPE == BAS_CODE_DTL.DATA_TYPEs.DbCheck.GetValue() ? Biz.Db.Queryable(ruleDtl.CHECK_TABLE, "t").Where($"{ruleDtl.CHECK_FIELD} = '{key}'").Any() : true;
         }
 
         /// <summary>
@@ -124,7 +116,19 @@
                         //鍒ゆ柇娴佹按鍙锋槸鍚︾鍚堣鍒�
                         if (IsMatch && item.DATA_TYPE == BAS_CODE_DTL.DATA_TYPEs.SerialCode.GetValue())
                         {
+                            //鎸夊彇鍊艰寖鍥村垽鏂綋鍓嶆祦姘村彿鏄惁鍦ㄨ寖鍥村唴
                             IsMatch &= item.SERIAL_MIN <= item.CodeValue.ToInt32() && item.CodeValue.ToInt32() <= item.SERIAL_MAX;
+                            //褰撳墠娴佹按鍙锋槸鍚︽寜璁剧疆闂撮殧鍥哄畾鏁板��
+                            IsMatch &= (item.CodeValue.ToInt32() - item.SERIAL_MIN) % item.SERIAL_INTERVAL == 0;
+                            //鍒ゆ柇褰撳墠娴佹按鍙锋槸鍚﹁烦杩囦互璁剧疆鍙风爜缁撳熬鐨勬祦姘村彿
+                            if (!item.SERIAL_IGNORE.IsNullOrEmpty())
+                            {
+                                var ignoreList = item.SERIAL_IGNORE.Split(',');
+                                foreach (var num in ignoreList)
+                                {
+                                    IsMatch &= !item.CodeValue.EndsWith(num);
+                                }
+                            }
                         }
                     }
                     //鍒ゆ柇鍏宠仈瀛楁鏄惁绗﹀悎瑙勫垯
@@ -176,7 +180,7 @@
         public Expression<Func<BAS_CODE_RULE, bool>> Expression { get; set; }
         public Exception VerifyException { get; set; }
         private List<RuleVerifier> _Verifiers = new();
-        public List<RuleVerifier> Verifiers => _Verifiers.IsNullOrEmpty() ? Biz.CodeRule.Rules.WhereIF(!Predicate.IsNullOrEmpty(), Predicate).Select(q => new RuleVerifier(q)).ToList() : _Verifiers;
+        public List<RuleVerifier> Verifiers => _Verifiers.IsNullOrEmpty() ? Cache.CodeRule.Rules.WhereIF(!Predicate.IsNullOrEmpty(), Predicate).Select(q => new RuleVerifier(q)).ToList() : _Verifiers;
         /// <summary>
         /// 鏄惁瀹屾垚楠岃瘉
         /// </summary>
@@ -202,7 +206,7 @@
             var begin = DateTime.Now;
             ElapsedTime = 0;
             //Debug.WriteLine($"{Code} verify begin at {begin:T}");
-            _Verifiers = Biz.CodeRule.Rules.WhereIF(!Predicate.IsNullOrEmpty(), Predicate).Select(q => new RuleVerifier(q)).ToList();
+            _Verifiers = Cache.CodeRule.Rules.WhereIF(!Predicate.IsNullOrEmpty(), Predicate).Select(q => new RuleVerifier(q)).ToList();
             foreach (var item in Verifiers)
             {
                 Work.DoAsync(() => { item.Verify(Code); });

--
Gitblit v1.9.3