using Hotline.FlowEngine.Definitions;
using Hotline.Share.Dtos.FlowEngine;
using Hotline.Share.Enums.FlowEngine;
using SqlSugar;
using XF.Domain.Repository;
namespace Hotline.FlowEngine.Workflows;
public class StepBasicEntity : CreationEntity
{
public string WorkflowId { get; set; }
public string Name { get; set; }
///
/// 模板内唯一
///
public string Code { get; set; }
public EStepType StepType { get; init; }
///
/// 办理人类型
///
public EHandlerType HandlerType { get; set; }
///
/// 审批者分类(或是直接保存处理者)
///
/// 根据类型可能为:roles, depLevels, depTypes, depCodes, userIds
///
///
[SugarColumn(ColumnDataType = "varchar(1000)", IsJson = true)]
public List HandlerClassifies { get; set; } = new();
///
/// 当前环节会签模式
///
public ECountersignMode CountersignMode { get; set; }
#region 办理参数
///
/// (下一节点办理人)根据审批者类型不同,此字段为不同内容
///
/// 部门等级/分类为:orgCodes, 角色为:userIds
///
///
[SugarColumn(ColumnDataType = "varchar(2000)", IsJson = true)]
public List NextHandlers { get; set; } = new();
///
/// 下一节点主办,(NextHandlers其中一个, 如果不是会签则只有一个)
///
[SugarColumn(IsNullable = true)]
public string? NextMainHandler { get; set; }
///
/// 下一节点code
///
public string NextStepCode { get; set; }
///
/// 是否短信通知
///
public bool AcceptSms { get; set; }
///
/// 办理意见
///
[SugarColumn(Length = 2000)]
public string Opinion { get; set; }
///
/// 附件
///
[SugarColumn(ColumnDataType = "varchar(1000)", IsJson = true)]
public List Additions { get; set; } = new();
#endregion
#region 办理
///
/// 办理人
///
[SugarColumn(IsNullable = true)]
public string? UserId { get; set; }
[SugarColumn(IsNullable = true)]
public string? UserName { get; set; }
///
/// 办理人部门code
///
[SugarColumn(IsNullable = true)]
public string? OrgCode { get; set; }
[SugarColumn(IsNullable = true)]
public string? OrgName { get; set; }
///
/// 办理完成时间
///
public DateTime? CompleteTime { get; set; }
#endregion
#region 接办
///
/// 接办人
///
[SugarColumn(IsNullable = true)]
public string? AcceptUserId { get; set; }
[SugarColumn(IsNullable = true)]
public string? AcceptUserName { get; set; }
///
/// 接办时间
///
public DateTime? AcceptTime { get; set; }
#endregion
}