| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
- //
- // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
- //
- // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
- using System.Text.Json.Serialization;
- namespace Admin.NET.Plugin.ApprovalFlow.Service;
- public class ApprovalFlowItem
- {
- [JsonPropertyName("nodes")]
- public List<ApprovalFlowNodeItem> Nodes { get; set; }
- [JsonPropertyName("edges")]
- public List<ApprovalFlowEdgeItem> Edges { get; set; }
- }
- public class ApprovalFlowNodeItem
- {
- [JsonPropertyName("id")]
- public string Id { get; set; }
- [JsonPropertyName("type")]
- public string Type { get; set; }
- [JsonPropertyName("x")]
- public float X { get; set; }
- [JsonPropertyName("y")]
- public float Y { get; set; }
- [JsonPropertyName("properties")]
- public FlowProperties Properties { get; set; }
- [JsonPropertyName("text")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public FlowTextItem Text { get; set; }
- }
- public class ApprovalFlowEdgeItem
- {
- [JsonPropertyName("id")]
- public string Id { get; set; }
- [JsonPropertyName("type")]
- public string Type { get; set; }
- [JsonPropertyName("sourceNodeId")]
- public string SourceNodeId { get; set; }
- [JsonPropertyName("targetNodeId")]
- public string TargetNodeId { get; set; }
- [JsonPropertyName("startPoint")]
- public FlowEdgePointItem StartPoint { get; set; }
- [JsonPropertyName("endPoint")]
- public FlowEdgePointItem EndPoint { get; set; }
- [JsonPropertyName("properties")]
- public FlowProperties Properties { get; set; }
- [JsonPropertyName("text")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public FlowTextItem Text { get; set; }
- [JsonPropertyName("pointsList")]
- public List<FlowEdgePointItem> PointsList { get; set; }
- }
- /// <summary>
- /// 节点属性(存储在 FlowJson 中每个 node/edge 的 properties)
- /// 向后兼容:所有字段可空,旧数据反序列化不会报错
- /// </summary>
- public class FlowProperties
- {
- // ── 用户任务节点属性 ──
- [JsonPropertyName("nodeName")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? NodeName { get; set; }
- /// <summary>
- /// 审批人类型:SpecificUser / Role / Department / Initiator
- /// </summary>
- [JsonPropertyName("approverType")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? ApproverType { get; set; }
- /// <summary>
- /// 审批人/角色/部门 Id,逗号分隔
- /// </summary>
- [JsonPropertyName("approverIds")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? ApproverIds { get; set; }
- /// <summary>
- /// 审批人/角色/部门名称,逗号分隔(冗余,便于前端展示)
- /// </summary>
- [JsonPropertyName("approverNames")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? ApproverNames { get; set; }
- /// <summary>
- /// 多人审批模式:Any(或签) / All(会签)
- /// </summary>
- [JsonPropertyName("multiApproveMode")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? MultiApproveMode { get; set; }
- [JsonPropertyName("timeoutHours")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public int? TimeoutHours { get; set; }
- /// <summary>
- /// 超时动作:AutoApprove / AutoReject / Notify
- /// </summary>
- [JsonPropertyName("timeoutAction")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? TimeoutAction { get; set; }
- // ── 网关节点属性 ──
- [JsonPropertyName("conditions")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public List<GatewayCondition>? Conditions { get; set; }
- }
- /// <summary>
- /// 排他网关条件分支
- /// </summary>
- public class GatewayCondition
- {
- [JsonPropertyName("targetNodeId")]
- public string TargetNodeId { get; set; } = "";
- [JsonPropertyName("expression")]
- public string Expression { get; set; } = "";
- [JsonPropertyName("label")]
- [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
- public string? Label { get; set; }
- [JsonPropertyName("isDefault")]
- public bool IsDefault { get; set; }
- }
- public class FlowTextItem
- {
- [JsonPropertyName("x")]
- public float X { get; set; }
- [JsonPropertyName("y")]
- public float Y { get; set; }
- [JsonPropertyName("value")]
- public string Value { get; set; }
- }
- public class FlowEdgePointItem
- {
- [JsonPropertyName("x")]
- public float X { get; set; }
- [JsonPropertyName("y")]
- public float Y { get; set; }
- }
|