BlRule.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using ProjectBase.Data.BaseDAL;
  2. using SIMDP.DAL.IDALSQL;
  3. using SIMDP.Model;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Data;
  10. namespace SIMDP.BLL
  11. {
  12. public class BlRule : BaseBLL<MoRule>
  13. {
  14. private IDalRule dalRule;
  15. /// <summary>
  16. /// 构造函数
  17. /// </summary>
  18. public BlRule() : base()
  19. {
  20. base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
  21. dalRule = baseDal as IDalRule;
  22. dalRule.OnOperationLog += new OperationLogEventHandler(BlLogOperation.OnOperationLog);
  23. }
  24. /// <summary>
  25. /// 数据表rules中的rule_value字段根据规则解析成dataTable
  26. /// </summary>
  27. /// <param name="rule"></param>
  28. /// <returns></returns>
  29. public DataTable AnalyzeRuleValue(MoRule rule)
  30. {
  31. DataTable dt = new DataTable();
  32. dt.Columns.Add("RuleId", typeof(string));
  33. //dt.Columns.Add("ID", typeof(string));
  34. dt.Columns.Add("Name", typeof(string));
  35. dt.Columns.Add("Type", typeof(string));
  36. dt.Columns.Add("OrderNum", typeof(int));
  37. dt.Columns.Add("Query", typeof(string));
  38. //设置序号为主键
  39. DataColumn[] clos = new DataColumn[] { dt.Columns["OrderNum"] };
  40. dt.PrimaryKey = clos;
  41. string ruleId = rule.RuleId.ToString();
  42. string[] group = rule.RuleValue.Split(';');
  43. foreach (string item in group)
  44. {
  45. string[] value = item.Split(',');
  46. dt.Rows.Add(ruleId, value[0], value[1], value[2], value[3]);
  47. }
  48. dt.DefaultView.Sort = "OrderNum ASC";
  49. dt = dt.DefaultView.ToTable();
  50. return dt;
  51. }
  52. /// <summary>
  53. /// 将dataTable中的数据按照规则组合成数据表rules中的rule_value字段值
  54. /// </summary>
  55. /// <param name="dt"></param>
  56. /// <returns></returns>
  57. public string FormRuleValue(DataTable dt)
  58. {
  59. string str = null;
  60. for (int i = 0; i < dt.Rows.Count; i++)
  61. {
  62. str +=dt.Rows[i]["Name"].ToString() + "," + dt.Rows[i]["Type"].ToString() + "," + dt.Rows[i]["OrderNum"].ToString() + "," + dt.Rows[i]["Query"].ToString() + ";";
  63. }
  64. string ruleValue = str.Substring(0, str.Length - 1);
  65. return ruleValue;
  66. }
  67. /// <summary>
  68. /// 根据规则名称查找ID
  69. /// </summary>
  70. /// <param name="name"></param>
  71. /// <returns></returns>
  72. public long GetRuleIdByName(string name)
  73. {
  74. string sql = string.Format("SELECT TOP 1 * FROM rules WHERE rule_name = '{0}'", name);
  75. List<MoRule> list = dalRule.GetList(sql, null);
  76. if (list != null)
  77. return list[0].RuleId;
  78. else
  79. return -1;
  80. }
  81. }
  82. }