服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-11-23 defffbf6b1410fe0672d8b25ad8e59cbe49f6c9e
Tiger.Business/DbCache/Biz.CodeRule.cs
@@ -10,7 +10,6 @@
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;
@@ -96,9 +95,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 +123,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);
                                }
                            }
                        }
                    }
                    //判断关联字段是否符合规则