StepBasicEntity.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. using DataTransmission.Enum;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8. namespace DataTransmission.Entity
  9. {
  10. public abstract class StepBasicEntity : CreationEntity
  11. {
  12. public string WorkflowId { get; set; }
  13. /// <summary>
  14. /// 业务唯一标识
  15. /// </summary>
  16. public string? ExternalId { get; set; }
  17. #region 业务模块(冗余)
  18. public string? ModuleId { get; set; }
  19. public string? ModuleName { get; set; }
  20. public string? ModuleCode { get; set; }
  21. #endregion
  22. /// <summary>
  23. /// 流程指派类型
  24. /// </summary>
  25. public EFlowAssignType? FlowAssignType { get; set; }
  26. /// <summary>
  27. /// 该节点指派办理对象(依据不同指派方式可能为:orgId或userId),该字段subStep才会存在,stepBox不存在
  28. /// 采用list类型,兼容或签
  29. /// </summary>
  30. //[SugarColumn(ColumnDataType = "json", IsJson = true)]
  31. public List<Kv> Handlers { get; set; } = new();
  32. /// <summary>
  33. /// 上一节点办理时,nextStepCode下拉框中选中的值
  34. /// config模式:当前节点的difinition.code, dynamic模式:x级部门办理的x:int
  35. /// </summary>
  36. public string? PrevChosenStepCode { get; set; }
  37. /// <summary>
  38. /// 是否实际办理过该工单
  39. /// </summary>
  40. public bool IsActualHandled { get; set; }
  41. /// <summary>
  42. /// 节点超期状态
  43. /// </summary>
  44. public EExpiredStatus? ExpiredStatus { get; set; }
  45. /// <summary>
  46. /// 配置下一步节点 & 谁被选中
  47. /// </summary>
  48. //[SugarColumn(ColumnDataType = "json", IsJson = true)]
  49. //public List<StepSimple>? NextSteps { get; set; } = new();
  50. /// <summary>
  51. /// 前一级节点Id,会签汇总节点无此字段(因可能有多个上级来源)
  52. /// </summary>
  53. public string? PrevStepId { get; set; }
  54. public string? PrevStepCode { get; set; }
  55. public string? PrevStepName { get; set; }
  56. /// <summary>
  57. /// 主办
  58. /// </summary>
  59. //[SugarColumn(DefaultValue = "f")]
  60. public bool IsMain { get; set; }
  61. /// <summary>
  62. /// 原生节点(区别动态生成)
  63. /// </summary>
  64. //[SugarColumn(DefaultValue = "f")]
  65. public bool IsOrigin { get; set; }
  66. /// <summary>
  67. /// 节点办理状态
  68. /// </summary>
  69. public EWorkflowStepStatus Status { get; set; }
  70. /// <summary>
  71. /// 备注
  72. /// </summary>
  73. //[SugarColumn(ColumnDescription = "备注", ColumnDataType = "varchar(5000)")]
  74. public string? Remark { get; set; }
  75. #region 会签
  76. /// <summary>
  77. /// 会签id(或外层会签的id)
  78. /// </summary>
  79. public string? CountersignId { get; set; }
  80. /// <summary>
  81. /// 节点处于会签流程中的位置(区别直接办理会签和会签内非会签节点)
  82. /// outer属于特殊会签
  83. /// 最顶层的发起会签节点为none
  84. /// </summary>
  85. //[SugarColumn(DefaultValue = "0")]
  86. public ECountersignPosition CountersignPosition { get; set; }
  87. /// <summary>
  88. /// 会签直属办理节点(弃用)
  89. /// </summary>
  90. //[SugarColumn(ColumnDataType = "json", IsJson = true)]
  91. //public List<CountersignStep>? CountersignSteps { get; set; } = new();
  92. #region 发起会签节点特有
  93. /// <summary>
  94. /// 发起会签生成会签Id(不发起会签节点无此字段)
  95. /// </summary>
  96. public string? StartCountersignId { get; set; }
  97. /// <summary>
  98. /// 发起的会签是否汇总
  99. /// </summary>
  100. //[SugarColumn(DefaultValue = "f")]
  101. public bool IsStartedCountersignEnd { get; set; }
  102. #endregion
  103. #region 会签汇总节点特有
  104. /// <summary>
  105. /// 是否为会签汇总节点
  106. /// </summary>
  107. //[SugarColumn(DefaultValue = "f")]
  108. public bool IsCountersignEndStep { get; set; }
  109. /// <summary>
  110. /// 开启会签节点id(会签汇总节点对应会签发起节点id)
  111. /// </summary>
  112. public string? CountersignStartStepId { get; set; }
  113. #endregion
  114. #endregion
  115. #region 交办
  116. /// <summary>
  117. /// 交办人
  118. /// </summary>
  119. public string? AssignerId { get; set; }
  120. public string? AssignerName { get; set; }
  121. /// <summary>
  122. /// 交办人部门Id
  123. /// </summary>
  124. public string? AssignerOrgId { get; set; }
  125. public string? AssignerOrgName { get; set; }
  126. public bool? AssignerOrgIsCenter { get; set; }
  127. #endregion
  128. #region 接办
  129. /// <summary>
  130. /// 接办人
  131. /// </summary>
  132. public string? AcceptorId { get; set; }
  133. public string? AcceptorName { get; set; }
  134. /// <summary>
  135. /// 接办人部门code
  136. /// </summary>
  137. public string? AcceptorOrgId { get; set; }
  138. public string? AcceptorOrgName { get; set; }
  139. /// <summary>
  140. /// 接办人部门行政区划代码
  141. /// </summary>
  142. public string? AcceptorOrgAreaCode { get; set; }
  143. /// <summary>
  144. /// 接办人部门行政区划名称
  145. /// </summary>
  146. public string? AcceptorOrgAreaName { get; set; }
  147. /// <summary>
  148. /// 接办时间
  149. /// </summary>
  150. public DateTime? AcceptTime { get; set; }
  151. #endregion
  152. #region 办理
  153. /// <summary>
  154. /// 办理人
  155. /// </summary>
  156. public string? HandlerId { get; set; }
  157. public string? HandlerName { get; set; }
  158. /// <summary>
  159. /// 办理人部门code
  160. /// </summary>
  161. public string? HandlerOrgId { get; set; }
  162. public bool? HandlerOrgIsCenter { get; set; }
  163. /// <summary>
  164. /// 办理人部门名称
  165. /// </summary>
  166. public string? HandlerOrgName { get; set; }
  167. /// <summary>
  168. /// 办理人部门行政区划代码
  169. /// </summary>
  170. public string? HandlerOrgAreaCode { get; set; }
  171. /// <summary>
  172. /// 办理人部门行政区划名称
  173. /// </summary>
  174. public string? HandlerOrgAreaName { get; set; }
  175. /// <summary>
  176. /// 办理完成时间
  177. /// </summary>
  178. public DateTime? HandleTime { get; set; }
  179. /// <summary>
  180. /// 角色id(如果指派给角色)
  181. /// </summary>
  182. public string? RoleId { get; set; }
  183. public string? RoleName { get; set; }
  184. /// <summary>
  185. /// 办理方式
  186. /// </summary>
  187. public EHandleMode? HandleMode { get; set; }
  188. /// <summary>
  189. /// 审核结果(非审批流程无意义)
  190. /// </summary>
  191. //[SugarColumn(DefaultValue = "0")]
  192. public EReviewResult ReviewResult { get; set; }
  193. #endregion
  194. #region Definition
  195. public string Name { get; set; }
  196. /// <summary>
  197. /// 模板内唯一
  198. /// </summary>
  199. public string Code { get; set; }
  200. public EStepType StepType { get; init; }
  201. /// <summary>
  202. /// 节点业务类型
  203. /// </summary>
  204. public EBusinessType BusinessType { get; set; }
  205. /// <summary>
  206. /// 办理人类型
  207. /// </summary>
  208. public EHandlerType HandlerType { get; set; }
  209. /// <summary>
  210. /// 是否有否决按钮
  211. /// </summary>
  212. public bool CanReject { get; set; }
  213. /// <summary>
  214. /// 执行模式(自动与否)
  215. /// 只有普通节点支持自动,会签、动态节点均不支持自动
  216. /// </summary>
  217. public EExecuteMode ExecuteMode { get; set; }
  218. #region 会签相关配置
  219. /// <summary>
  220. /// 是否支持发起会签(即使支持发起,当下一节点为汇总或结束节点时亦不可发起)
  221. /// </summary>
  222. public bool CanStartCountersign { get; set; }
  223. /// <summary>
  224. /// 会签策略
  225. /// </summary>
  226. public ECountersignPolicy? CountersignPolicy { get; set; }
  227. #endregion
  228. #region 依据配置生成节点的方式
  229. /// <summary>
  230. /// 实例化模式
  231. /// </summary>
  232. public EInstanceMode InstanceMode { get; set; }
  233. /// <summary>
  234. /// 动态实例化策略(多次模式才有)
  235. /// </summary>
  236. public EDynamicPolicy? InstancePolicy { get; set; }
  237. /// <summary>
  238. /// 到此标记终止动态实例化(多次模式才有)
  239. /// <remarks>
  240. /// 按直属部门重复既保存orgLevel:int
  241. /// </remarks>
  242. /// </summary>
  243. public string? TerminalDynamicMark { get; set; }
  244. #endregion
  245. /// <summary>
  246. /// 标签
  247. /// </summary>
  248. public string? Tag { get; set; }
  249. #endregion
  250. #region 办理参数
  251. #region 办理时赋值
  252. /// <summary>
  253. /// (下一节点办理人)根据审批者类型不同,此字段为不同内容
  254. /// <example>
  255. /// 部门等级/分类为:orgCodes, 角色为:userIds
  256. /// </example>
  257. /// </summary>
  258. //[SugarColumn(ColumnDataType = "json", IsJson = true)]
  259. //public List<FlowStepHandler> NextHandlers { get; set; } = new();
  260. /// <summary>
  261. /// 下一节点主办,(NextHandlers其中一个, 如果不是会签则只有一个)
  262. /// </summary>
  263. public string? NextMainHandler { get; set; }
  264. /// <summary>
  265. /// 下一节点code(stepBox无值)
  266. /// </summary>
  267. public string? NextStepCode { get; set; }
  268. /// <summary>
  269. /// 是否短信通知
  270. /// </summary>
  271. public bool IsSms { get; set; }
  272. /// <summary>
  273. /// 办理意见
  274. /// </summary>
  275. //[SugarColumn(ColumnDataType = "text")]
  276. public string? Opinion { get; set; }
  277. /// <summary>
  278. /// 附件
  279. /// </summary>
  280. //[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
  281. //public List<FileJson>? FileJson { get; set; }
  282. /// <summary>
  283. /// 发起会签
  284. /// </summary>
  285. public bool IsStartCountersign { get; set; }
  286. #endregion
  287. #region 创建时赋值
  288. /// <summary>
  289. /// 节点期满时间
  290. /// </summary>
  291. public DateTime? StepExpiredTime { get; set; }
  292. /// nextStep 信息
  293. /// <summary>
  294. /// 是否回到会签发起节点汇总
  295. /// </summary>
  296. public bool BackToCountersignEnd { get; set; }
  297. public EFlowDirection? FlowDirection { get; set; }
  298. #endregion
  299. #endregion
  300. //[Navigate(NavigateType.ManyToOne, nameof(WorkflowId))]
  301. //public Workflow Workflow { get; set; }
  302. /// <summary>
  303. /// 老系统Id
  304. /// </summary>
  305. //[SugarColumn(ColumnDescription = "老系统Id")]
  306. public string? OldStepId { get; set; }
  307. }
  308. }