using System.ComponentModel;
using DS.Module.Core;
using DS.Module.Core.Data;
using DS.WMS.Core.Op.Entity;
using SqlSugar;
namespace DS.WMS.Core.Flow.Entity;
///
/// 工作流实例
///
[SugarTable("sys_flow_instance")]
public class FlowInstance : BaseTenantModel
{
///
/// 业务Id
///
[Description("业务Id")]
public long BusinessId { get; set; }
///
/// 业务类型
///
[Description("业务类型")]
public BusinessType? BusinessType { get; set; }
///
/// 模板Id
///
[Description("模板Id")]
public long TemplateId { get; set; }
///
/// 引用模板
///
[Navigate(NavigateType.OneToOne, nameof(TemplateId))]
public FlowTemplateTenant? Template { get; set; }
///
/// 客户自定义名称
///
[Description("客户自定义名称")]
public string CustomName { get; set; }
///
/// 模块Id
///
[Description("模块Id")]
public long PermissionId { get; set; }
///
/// 当前节点ID
///
[Description("当前节点ID")]
public string ActivityId { get; set; } = "";
///
/// 当前节点类型(0会签节点)
///
[Description("当前节点类型(0会签节点)")]
public int? ActivityType { get; set; }
///
/// 当前节点名称
///
[Description("当前节点名称")]
public string ActivityName { get; set; }
///
/// 前一个ID
///
[Description("前一个ID")]
public string PreviousId { get; set; }
///
/// 执行人
///
[SugarColumn(ColumnDescription = "执行人", ColumnDataType = "longtext", IsNullable = true)]
public string MakerList { get; set; }
///
/// 工作流状态
///
[Description("工作流状态")]
public FlowStatusEnum FlowStatus { get; set; } = FlowStatusEnum.Ready;
///
/// 中文视图名;设计方案时,提供中文字段的视图来源
///
[Description("中文视图名;设计方案时,提供中文字段的视图来源")]
public string? ColumnView { get; set; }
///
/// 流程内容
///
[SugarColumn(ColumnDescription = "流程内容", IsNullable = true, ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string Content { get; set; }
///
/// 工作流类型
///
[SugarColumn(ColumnDescription = "工作流类型", IsNullable = true)]
public TaskBaseTypeEnum? AuditType { get; set; }
///
/// 是否已执行回调
///
[SugarColumn(ColumnDescription = "是否已执行回调")]
public bool IsCallbackExecuted { get; set; }
///
/// 执行人变更回调地址
///
[SugarColumn(IsIgnore = true)]
public string? MarkerNotifyURL { get; set; }
///
/// 审批完成回调地址
///
[SugarColumn(IsIgnore = true)]
public string? CallbackURL { get; set; }
///
/// 工作流是否已完成
///
[SugarColumn(IsIgnore = true)]
public bool IsCompleted => string.IsNullOrEmpty(MakerList) || MakerList == "-1" || MakerList == "1";
///
/// 获取当前实例的所有审批人
///
///
public string[] GetMarkerList()
{
if (IsCompleted)
return [];
return MakerList.Split(',', StringSplitOptions.RemoveEmptyEntries);
}
}