ConditionTree.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace wispro.sp.entity.workflowDefine
  8. {
  9. public class ConditionExpress
  10. {
  11. public ConditionTreeNode Root { get; set; }
  12. public void AddCondition(ConditionExpress express ,LogicSymbols logic)
  13. {
  14. if(express.Root != null)
  15. {
  16. if (Root != null)
  17. {
  18. ConditionTreeNode node = new LogicNode() { operate = logic };
  19. node.Left = Root;
  20. node.Right = express.Root;
  21. Root = node;
  22. }
  23. else
  24. {
  25. Root = express.Root;
  26. }
  27. }
  28. }
  29. }
  30. public class ConditionTreeNode
  31. {
  32. public ConditionTreeNode Right { get; set; }
  33. public ConditionTreeNode Left { get; set; }
  34. }
  35. #region 枚举类型
  36. public enum LogicSymbols
  37. {
  38. AND,
  39. OR,
  40. NOT
  41. }
  42. public enum ComparisonSymbol
  43. {
  44. [Description("包含")]
  45. Contains,
  46. [Description("等于")]
  47. Equal,
  48. [Description("大于")]
  49. Greater,
  50. [Description("大于等于")]
  51. GreaterEqual,
  52. [Description("小于")]
  53. Less,
  54. [Description("小于等于")]
  55. LessEqual,
  56. [Description("不等于")]
  57. NotEqual,
  58. //[Description("不等于")]
  59. //In,
  60. //[Description("不等于")]
  61. //Between,
  62. [Description("开头为")]
  63. StartsWith,
  64. [Description("结尾为")]
  65. EndWith,
  66. [Description("不包含")]
  67. NotContains
  68. }
  69. public enum FieldType
  70. {
  71. [Description("用户输入值")]
  72. ActionInputValue,
  73. [Description("完成操作")]
  74. DoAction,
  75. [Description("流程对象属性")]
  76. BindObjectProperty,
  77. [Description("流程操作用户")]
  78. DoActionUser
  79. }
  80. public enum UserConditionType
  81. {
  82. [Description("指定个人")]
  83. Staff,
  84. [Description("指定部门")]
  85. Department,
  86. [Description("指定部门职位")]
  87. DepartmentPosition,
  88. [Description("指定用户部门")]
  89. UserDepartment,
  90. [Description("指定用户部门职位")]
  91. UserDepartmentPosition,
  92. [Description("指定职位")]
  93. Position,
  94. }
  95. public enum UserType
  96. {
  97. [Description("指定用户")]
  98. Staff,
  99. [Description("登录用户")]
  100. LoginUser,
  101. [Description("流程对象人员属性")]
  102. BindObjectProperty,
  103. [Description("操作处理人")]
  104. DoActionUser
  105. }
  106. #endregion
  107. public class LogicNode : ConditionTreeNode
  108. {
  109. public LogicSymbols operate { get; set; }
  110. }
  111. public class FieldNode : ConditionTreeNode
  112. {
  113. /// <summary>
  114. /// 字段名称
  115. /// </summary>
  116. public string FieldName { get; set; }
  117. /// <summary>
  118. /// 值
  119. /// </summary>
  120. public string Value { get; set; }
  121. /// <summary>
  122. /// 值类型
  123. /// </summary>
  124. public string ValueType { get; set; }
  125. /// <summary>
  126. /// 比较符号
  127. /// </summary>
  128. public ComparisonSymbol Operator { get; set; }
  129. /// <summary>
  130. /// 类型
  131. /// </summary>
  132. public FieldType FieldType { get; set; }
  133. }
  134. public class ActionFinished : ConditionTreeNode
  135. {
  136. public int ActionId { get; set; }
  137. }
  138. public class UserFieldNode : ConditionTreeNode
  139. {
  140. public UserField Field { get; set; }
  141. /// <summary>
  142. /// 比较符号
  143. /// </summary>
  144. public ComparisonSymbol Operator { get; set; }
  145. /// <summary>
  146. /// 值
  147. /// </summary>
  148. public string Value { get; set; }
  149. }
  150. public class UserField
  151. {
  152. /// <summary>
  153. /// 用户条件类型
  154. /// </summary>
  155. public UserConditionType UserConditionType { get; set; }
  156. /// <summary>
  157. /// 指定用户类型
  158. /// </summary>
  159. public UserType UserType { get; set; }
  160. /// <summary>
  161. /// 指定用户值
  162. /// </summary>
  163. public string UserValue { get; set; }
  164. /// <summary>
  165. /// 指定部门值
  166. /// </summary>
  167. public string Department { get; set; }
  168. /// <summary>
  169. /// 指定职位值
  170. /// </summary>
  171. public string Positon { get; set; }
  172. }
  173. }