using DataTransmission.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTransmission.Entity
{
public abstract class StepBasicEntity : CreationEntity
{
public string WorkflowId { get; set; }
///
/// 业务唯一标识
///
public string? ExternalId { get; set; }
#region 业务模块(冗余)
public string? ModuleId { get; set; }
public string? ModuleName { get; set; }
public string? ModuleCode { get; set; }
#endregion
///
/// 流程指派类型
///
public EFlowAssignType? FlowAssignType { get; set; }
///
/// 该节点指派办理对象(依据不同指派方式可能为:orgId或userId),该字段subStep才会存在,stepBox不存在
/// 采用list类型,兼容或签
///
//[SugarColumn(ColumnDataType = "json", IsJson = true)]
public List Handlers { get; set; } = new();
///
/// 上一节点办理时,nextStepCode下拉框中选中的值
/// config模式:当前节点的difinition.code, dynamic模式:x级部门办理的x:int
///
public string? PrevChosenStepCode { get; set; }
///
/// 是否实际办理过该工单
///
public bool IsActualHandled { get; set; }
///
/// 节点超期状态
///
public EExpiredStatus? ExpiredStatus { get; set; }
///
/// 配置下一步节点 & 谁被选中
///
//[SugarColumn(ColumnDataType = "json", IsJson = true)]
//public List? NextSteps { get; set; } = new();
///
/// 前一级节点Id,会签汇总节点无此字段(因可能有多个上级来源)
///
public string? PrevStepId { get; set; }
public string? PrevStepCode { get; set; }
public string? PrevStepName { get; set; }
///
/// 主办
///
//[SugarColumn(DefaultValue = "f")]
public bool IsMain { get; set; }
///
/// 原生节点(区别动态生成)
///
//[SugarColumn(DefaultValue = "f")]
public bool IsOrigin { get; set; }
///
/// 节点办理状态
///
public EWorkflowStepStatus Status { get; set; }
///
/// 备注
///
//[SugarColumn(ColumnDescription = "备注", ColumnDataType = "varchar(5000)")]
public string? Remark { get; set; }
#region 会签
///
/// 会签id(或外层会签的id)
///
public string? CountersignId { get; set; }
///
/// 节点处于会签流程中的位置(区别直接办理会签和会签内非会签节点)
/// outer属于特殊会签
/// 最顶层的发起会签节点为none
///
//[SugarColumn(DefaultValue = "0")]
public ECountersignPosition CountersignPosition { get; set; }
///
/// 会签直属办理节点(弃用)
///
//[SugarColumn(ColumnDataType = "json", IsJson = true)]
//public List? CountersignSteps { get; set; } = new();
#region 发起会签节点特有
///
/// 发起会签生成会签Id(不发起会签节点无此字段)
///
public string? StartCountersignId { get; set; }
///
/// 发起的会签是否汇总
///
//[SugarColumn(DefaultValue = "f")]
public bool IsStartedCountersignEnd { get; set; }
#endregion
#region 会签汇总节点特有
///
/// 是否为会签汇总节点
///
//[SugarColumn(DefaultValue = "f")]
public bool IsCountersignEndStep { get; set; }
///
/// 开启会签节点id(会签汇总节点对应会签发起节点id)
///
public string? CountersignStartStepId { get; set; }
#endregion
#endregion
#region 交办
///
/// 交办人
///
public string? AssignerId { get; set; }
public string? AssignerName { get; set; }
///
/// 交办人部门Id
///
public string? AssignerOrgId { get; set; }
public string? AssignerOrgName { get; set; }
public bool? AssignerOrgIsCenter { get; set; }
#endregion
#region 接办
///
/// 接办人
///
public string? AcceptorId { get; set; }
public string? AcceptorName { get; set; }
///
/// 接办人部门code
///
public string? AcceptorOrgId { get; set; }
public string? AcceptorOrgName { get; set; }
///
/// 接办人部门行政区划代码
///
public string? AcceptorOrgAreaCode { get; set; }
///
/// 接办人部门行政区划名称
///
public string? AcceptorOrgAreaName { get; set; }
///
/// 接办时间
///
public DateTime? AcceptTime { get; set; }
#endregion
#region 办理
///
/// 办理人
///
public string? HandlerId { get; set; }
public string? HandlerName { get; set; }
///
/// 办理人部门code
///
public string? HandlerOrgId { get; set; }
public bool? HandlerOrgIsCenter { get; set; }
///
/// 办理人部门名称
///
public string? HandlerOrgName { get; set; }
///
/// 办理人部门行政区划代码
///
public string? HandlerOrgAreaCode { get; set; }
///
/// 办理人部门行政区划名称
///
public string? HandlerOrgAreaName { get; set; }
///
/// 办理完成时间
///
public DateTime? HandleTime { get; set; }
///
/// 角色id(如果指派给角色)
///
public string? RoleId { get; set; }
public string? RoleName { get; set; }
///
/// 办理方式
///
public EHandleMode? HandleMode { get; set; }
///
/// 审核结果(非审批流程无意义)
///
//[SugarColumn(DefaultValue = "0")]
public EReviewResult ReviewResult { get; set; }
#endregion
#region Definition
public string Name { get; set; }
///
/// 模板内唯一
///
public string Code { get; set; }
public EStepType StepType { get; set; }
///
/// 节点业务类型
///
public EBusinessType BusinessType { get; set; }
///
/// 办理人类型
///
public EHandlerType HandlerType { get; set; }
///
/// 是否有否决按钮
///
public bool CanReject { get; set; }
///
/// 执行模式(自动与否)
/// 只有普通节点支持自动,会签、动态节点均不支持自动
///
public EExecuteMode ExecuteMode { get; set; }
#region 会签相关配置
///
/// 是否支持发起会签(即使支持发起,当下一节点为汇总或结束节点时亦不可发起)
///
public bool CanStartCountersign { get; set; }
///
/// 会签策略
///
public ECountersignPolicy? CountersignPolicy { get; set; }
#endregion
#region 依据配置生成节点的方式
///
/// 实例化模式
///
public EInstanceMode InstanceMode { get; set; }
///
/// 动态实例化策略(多次模式才有)
///
public EDynamicPolicy? InstancePolicy { get; set; }
///
/// 到此标记终止动态实例化(多次模式才有)
///
/// 按直属部门重复既保存orgLevel:int
///
///
public string? TerminalDynamicMark { get; set; }
#endregion
///
/// 标签
///
public string? Tag { get; set; }
#endregion
#region 办理参数
#region 办理时赋值
///
/// (下一节点办理人)根据审批者类型不同,此字段为不同内容
///
/// 部门等级/分类为:orgCodes, 角色为:userIds
///
///
//[SugarColumn(ColumnDataType = "json", IsJson = true)]
//public List NextHandlers { get; set; } = new();
///
/// 下一节点主办,(NextHandlers其中一个, 如果不是会签则只有一个)
///
public string? NextMainHandler { get; set; }
///
/// 下一节点code(stepBox无值)
///
public string? NextStepCode { get; set; }
///
/// 是否短信通知
///
public bool IsSms { get; set; }
///
/// 办理意见
///
//[SugarColumn(ColumnDataType = "text")]
public string? Opinion { get; set; }
///
/// 附件
///
//[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
//public List? FileJson { get; set; }
///
/// 发起会签
///
public bool IsStartCountersign { get; set; }
#endregion
#region 创建时赋值
///
/// 节点期满时间
///
public DateTime? StepExpiredTime { get; set; }
/// nextStep 信息
///
/// 是否回到会签发起节点汇总
///
public bool BackToCountersignEnd { get; set; }
public EFlowDirection? FlowDirection { get; set; }
#endregion
#endregion
//[Navigate(NavigateType.ManyToOne, nameof(WorkflowId))]
//public Workflow Workflow { get; set; }
///
/// 老系统Id
///
//[SugarColumn(ColumnDescription = "老系统Id")]
public string? OldStepId { get; set; }
}
}