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; } } }