|
|
@@ -0,0 +1,268 @@
|
|
|
+using AutoMapper.Configuration.Annotations;
|
|
|
+using OASystem.Domain.Enums;
|
|
|
+using System.ComponentModel;
|
|
|
+
|
|
|
+namespace OASystem.Domain.Entities.Groups
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// 会务流程总览
|
|
|
+ /// </summary>
|
|
|
+ [SugarTable("Grp_ConfProcessOverview", "会务流程总览")]
|
|
|
+ public class Grp_ConfProcessOverview : EntityBase
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// 团组Id
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "GroupId", ColumnDescription = "团组Id", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int GroupId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 流程顺序
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ProcessOrder", ColumnDescription = "流程顺序", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int ProcessOrder { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 流程类型
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ProcessType", ColumnDescription = "流程类型", ColumnDataType = "int")]
|
|
|
+ public ConfProcessType ProcessType { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 整体状态
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "OverallStatus", ColumnDescription = "流程整体状态", ColumnDataType = "int")]
|
|
|
+ public ProcessStatus OverallStatus { get; set; } = ProcessStatus.UnStarted;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 开始时间
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "StartTime", ColumnDescription = "开始时间", IsNullable = true, ColumnDataType = "datetime")]
|
|
|
+ public DateTime? StartTime { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 结束时间
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "EndTime", ColumnDescription = "结束时间", IsNullable = true, ColumnDataType = "datetime")]
|
|
|
+ public DateTime? EndTime { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新人
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "UpdatedUserId", ColumnDescription = "更新人", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int UpdatedUserId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新时间
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "UpdatedTime", ColumnDescription = "更新时间", ColumnDataType = "datetime")]
|
|
|
+ public DateTime UpdatedTime { get; set; } = DateTime.Now;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点集合 - 流程包含的所有节点(导航属性)
|
|
|
+ /// </summary>
|
|
|
+ [Ignore]
|
|
|
+ [Navigate(NavigateType.OneToMany, nameof(Grp_ProcessNode.ProcessId))]
|
|
|
+ public List<Grp_ConfProcessNode> Nodes { get; set; } = new List<Grp_ConfProcessNode>();
|
|
|
+
|
|
|
+ public Grp_ConfProcessOverview() { }
|
|
|
+
|
|
|
+ public static Grp_ConfProcessOverview Create(int groupId, int processOrder, ProcessStatus overallStatus, int currUserId, List<Grp_ConfProcessNode> nodes)
|
|
|
+ {
|
|
|
+ return new Grp_ConfProcessOverview
|
|
|
+ {
|
|
|
+ GroupId = groupId,
|
|
|
+ ProcessOrder = processOrder,
|
|
|
+ ProcessType = ConfProcessType.Conference,
|
|
|
+ OverallStatus = overallStatus,
|
|
|
+ StartTime = DateTime.Now,
|
|
|
+ UpdatedUserId = currUserId,
|
|
|
+ CreateUserId = currUserId,
|
|
|
+ Nodes = nodes
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 会务流程节点
|
|
|
+ /// </summary>
|
|
|
+ [SugarTable("Grp_ConfProcessNode", "会务流程节点")]
|
|
|
+ public class Grp_ConfProcessNode : EntityBase
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// 流程ID
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ProcessId", ColumnDescription = "流程ID", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int ProcessId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点名称
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "NodeName", ColumnDescription = "节点名称", ColumnDataType = "varchar(100)")]
|
|
|
+ public string NodeName { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点描述提示
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "NodeDescTips", ColumnDescription = "节点描述提示", ColumnDataType = "varchar(300)")]
|
|
|
+ public string NodeDescTips { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点顺序
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "NodeOrder", ColumnDescription = "节点顺序", ColumnDataType = "int")]
|
|
|
+ public int NodeOrder { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点状态
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "OverallStatus", ColumnDescription = "节点状态", ColumnDataType = "int")]
|
|
|
+ public ProcessStatus OverallStatus { get; set; } = ProcessStatus.UnStarted;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 参与人
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "Participator", ColumnDescription = "参与人 [1,2,3]", IsNullable = true, ColumnDataType = "varchar(200)")]
|
|
|
+ public string Participator { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 操作人
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "Operator", ColumnDescription = "操作人", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int? Operator { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 操作时间
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "OperationTime", ColumnDescription = "操作时间", IsNullable = true, ColumnDataType = "datetime")]
|
|
|
+ public DateTime? OperationTime { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 实际完成时间
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ActualDone", ColumnDescription = "实际完成时间", IsNullable = true, ColumnDataType = "datetime")]
|
|
|
+ public DateTime? ActualDone { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 是否为当前节点
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "IsCurrent", ColumnDescription = "是否为当前节点", ColumnDataType = "bit")]
|
|
|
+ [DefaultValue(false)]
|
|
|
+ public bool IsCurrent { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 是否上传文件
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "IsFileUp", ColumnDescription = "是否上传文件", ColumnDataType = "bit")]
|
|
|
+ [DefaultValue(false)]
|
|
|
+ public bool IsFileUp { get; set; }
|
|
|
+
|
|
|
+ public Grp_ConfProcessNode() { }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 是否启用文件上传
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(IsIgnore = true)]
|
|
|
+ public bool IsEnaFileUpBtn { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 参与人
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(IsIgnore = true)]
|
|
|
+ public List<ParticipatorInfo> Participators { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Create
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="nodeOrder">排序</param>
|
|
|
+ /// <param name="nodeName">名称</param>
|
|
|
+ /// <param name="nodeDescTips">描述提示</param>
|
|
|
+ /// <param name="status">状态</param>
|
|
|
+ /// <param name="isCurrent">是否是当前节点</param>
|
|
|
+ /// <param name="isFileUp">是否上传文件</param>
|
|
|
+ /// <param name="currUserId">当前用户Id</param>
|
|
|
+ /// <param name="participators">参与人</param>
|
|
|
+ /// <param name="remark">备注</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static Grp_ConfProcessNode Create(int nodeOrder, string nodeName, string nodeDescTips, ProcessStatus status, bool isCurrent, bool isFileUp, int currUserId,
|
|
|
+ List<ParticipatorInfo> participators, string remark = null)
|
|
|
+ {
|
|
|
+ bool isEnaFileUpBtn = isFileUp;
|
|
|
+
|
|
|
+ return new Grp_ConfProcessNode
|
|
|
+ {
|
|
|
+ NodeOrder = nodeOrder,
|
|
|
+ NodeName = nodeName,
|
|
|
+ NodeDescTips = nodeDescTips,
|
|
|
+ OverallStatus = status,
|
|
|
+ IsCurrent = isCurrent,
|
|
|
+ Participators = participators,
|
|
|
+ IsEnaFileUpBtn = isEnaFileUpBtn,
|
|
|
+ IsFileUp = isFileUp,
|
|
|
+ CreateUserId = currUserId,
|
|
|
+ Remark = remark
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ public class ParticipatorInfo
|
|
|
+ {
|
|
|
+ public int UserId { get; set; }
|
|
|
+ public string UserName { get; set; }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组流程操作日志
|
|
|
+ /// </summary>
|
|
|
+ [SugarTable("Grp_ConfProcessLog", "团组会务流程总览操作日志")]
|
|
|
+ public class Grp_ConfProcessLog : EntityBase
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// 流程ID
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ProcessId", ColumnDescription = "流程ID", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int? ProcessId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 节点ID
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "NodeId", ColumnDescription = "节点ID", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int? NodeId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 团组ID
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "GroupId", ColumnDescription = "团组ID", IsNullable = true, ColumnDataType = "int")]
|
|
|
+ public int GroupId { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 操作类型
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "OpType", ColumnDescription = "操作类型", ColumnDataType = "varchar(50)")]
|
|
|
+ public string OpType { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 操作描述
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "OpDesc", ColumnDescription = "操作描述", ColumnDataType = "varchar(500)")]
|
|
|
+ public string OpDesc { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 变更前数据
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "BeforeData", ColumnDescription = "变更前数据", IsNullable = true, ColumnDataType = "nvarchar(max)")]
|
|
|
+ public string BeforeData { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 变更后数据
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "AfterData", ColumnDescription = "变更后数据", IsNullable = true, ColumnDataType = "nvarchar(max)")]
|
|
|
+ public string AfterData { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 变更字段
|
|
|
+ /// </summary>
|
|
|
+ [SugarColumn(ColumnName = "ChgFields", ColumnDescription = "变更字段", IsNullable = true, ColumnDataType = "varchar(500)")]
|
|
|
+ public string ChgFields { get; set; }
|
|
|
+ }
|
|
|
+}
|