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