using ProjectBase.Data.BaseDAL; using SIMDP.DAL.IDALSQL; using SIMDP.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace SIMDP.BLL { public class BlRule : BaseBLL { private IDalRule dalRule; /// /// 构造函数 /// public BlRule() : base() { base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name); dalRule = baseDal as IDalRule; dalRule.OnOperationLog += new OperationLogEventHandler(BlLogOperation.OnOperationLog); } /// /// 数据表rules中的rule_value字段根据规则解析成dataTable /// /// /// public DataTable AnalyzeRuleValue(MoRule rule) { DataTable dt = new DataTable(); dt.Columns.Add("RuleId", typeof(string)); //dt.Columns.Add("ID", typeof(string)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Type", typeof(string)); dt.Columns.Add("OrderNum", typeof(int)); dt.Columns.Add("Query", typeof(string)); //设置序号为主键 DataColumn[] clos = new DataColumn[] { dt.Columns["OrderNum"] }; dt.PrimaryKey = clos; string ruleId = rule.RuleId.ToString(); string[] group = rule.RuleValue.Split(';'); foreach (string item in group) { string[] value = item.Split(','); dt.Rows.Add(ruleId, value[0], value[1], value[2], value[3]); } dt.DefaultView.Sort = "OrderNum ASC"; dt = dt.DefaultView.ToTable(); return dt; } /// /// 将dataTable中的数据按照规则组合成数据表rules中的rule_value字段值 /// /// /// public string FormRuleValue(DataTable dt) { string str = null; for (int i = 0; i < dt.Rows.Count; i++) { str +=dt.Rows[i]["Name"].ToString() + "," + dt.Rows[i]["Type"].ToString() + "," + dt.Rows[i]["OrderNum"].ToString() + "," + dt.Rows[i]["Query"].ToString() + ";"; } string ruleValue = str.Substring(0, str.Length - 1); return ruleValue; } /// /// 根据规则名称查找ID /// /// /// public long GetRuleIdByName(string name) { string sql = string.Format("SELECT TOP 1 * FROM rules WHERE rule_name = '{0}'", name); List list = dalRule.GetList(sql, null); if (list != null) return list[0].RuleId; else return -1; } } }