using SqlSugar;
using System;
using System.Collections.Generic;
namespace OASystem.Domain.Entities.WorkOrder
{
    /// 
    /// 主表:工单
    /// 
    [SugarTable("Task_WorkOrder", TableDescription = "工单主表")]
    public class Task_WorkOrder : EntityBase
    {
        /// 
        /// 工单名称
        /// 
        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "工单名称")]
        public string Name { get; set; }
        /// 
        /// 任务开始时间
        /// 
        [SugarColumn(ColumnDescription = "任务开始时间")]
        public DateTime StartTime { get; set; }
        /// 
        /// 所属团组ID
        /// 
        [SugarColumn(ColumnDescription = "所属团组ID")]
        public int GroupId { get; set; }
        /// 
        /// 指派用户ID
        /// 
        [SugarColumn(ColumnDescription = "指派用户ID")]
        public int AssignedUserId { get; set; }
        /// 
        /// 外办选项ID
        /// 
        [SugarColumn(ColumnDescription = "外办选项ID")]
        public int ForeignOptionId { get; set; }
        /// 
        /// 部门类型
        /// 
        public int TypeId { get; set; }
        /// 
        /// 进度ID
        /// 
        [SugarColumn(ColumnDescription = "进度ID")]
        public int ProgressId { get; set; }
        /// 
        /// 子任务集合(导航属性,不映射数据库)
        /// 
        [SugarColumn(IsIgnore = true)]
        public List Tasks { get; set; }
    }
    /// 
    /// 从表:任务
    /// 
    [SugarTable("Task_WorkTask", TableDescription = "工单任务表")]
    public class Task_WorkTask : EntityBase
    {
        /// 
        /// 任务名称
        /// 
        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "任务名称")]
        public string Name { get; set; }
        /// 
        /// 优先级ID
        /// 
        [SugarColumn(ColumnDescription = "优先级ID")]
        public int PriorityId { get; set; }
        /// 
        /// 是否加急
        /// 
        [SugarColumn(ColumnDescription = "是否加急")]
        public bool IsUrgent { get; set; }
        /// 
        /// 指派用户ID
        /// 
        [SugarColumn(ColumnDescription = "指派用户ID")]
        public int AssignedUserId { get; set; }
        /// 
        /// 任务开始时间
        /// 
        [SugarColumn(ColumnDescription = "任务开始时间")]
        public DateTime StartTime { get; set; }
        /// 
        /// 任务结束时间
        /// 
        [SugarColumn(ColumnDescription = "任务结束时间", IsNullable = true)]
        public DateTime? EndTime { get; set; }
        /// 
        /// 任务耗时(小时数)
        /// 
        [SugarColumn(ColumnDescription = "任务耗时(小时)", IsNullable = true)]
        public double? DurationHours { get; set; }
        /// 
        /// 是否为额外任务
        /// 
        [SugarColumn(ColumnDescription = "是否为额外任务")]
        public bool IsExtraTask { get; set; }
        /// 
        /// 工单主表ID
        /// 
        [SugarColumn(ColumnDescription = "工单主表ID")]
        public int WorkOrderId { get; set; }
        /// 
        /// 排序
        /// 
        public int Sort { get; set; }
        /// 
        /// 工单导航属性(不映射数据库)
        /// 
        [SugarColumn(IsIgnore = true)]
        [Navigate(NavigateType.ManyToOne, nameof(WorkOrderId))]
        public Task_WorkOrder WorkOrder { get; set; }
        /// 
        /// 任务回执集合(不映射数据库)
        /// 
        [SugarColumn(IsIgnore = true)]
        public List Receipts { get; set; }
    }
    /// 
    /// 从表:任务回执
    /// 
    [SugarTable("Task_WorkTaskReceipt", TableDescription = "工单任务回执表")]
    public class Task_WorkTaskReceipt : EntityBase
    {
        /// 
        /// 工单主表ID
        /// 
        [SugarColumn(ColumnDescription = "工单主表ID")]
        public int WorkOrderId { get; set; }
        /// 
        /// 任务ID
        /// 
        [SugarColumn(ColumnDescription = "任务ID")]
        public int WorkTaskId { get; set; }
        /// 
        /// 任务是否完成
        /// 
        [SugarColumn(ColumnDescription = "任务是否完成")]
        public int IsCompleted { get; set; }
        /// 
        /// 相关内容
        /// 
        [SugarColumn(Length = 2000, IsNullable = true, ColumnDescription = "相关内容")]
        public string Content { get; set; }
        /// 
        /// 文件路径
        /// 
        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "文件路径")]
        public string FilePath { get; set; }
        /// 
        /// 是否通过审核 0未审核 1通过 -1驳回
        /// 
        [SugarColumn(ColumnDescription = "是否通过审核")]
        public int IsApproved { get; set; }
        /// 
        /// 未通过审核原因
        /// 
        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "未通过审核原因")]
        public string RejectReason { get; set; }
        /// 
        /// 任务导航属性(不映射数据库)
        /// 
        [SugarColumn(IsIgnore = true)]
        [Navigate(NavigateType.OneToOne, nameof(WorkTaskId))]
        public Task_WorkTask WorkTask { get; set; }
        /// 
        /// 工单导航属性(不映射数据库)
        /// 
        [SugarColumn(IsIgnore = true)]
        public Task_WorkOrder WorkOrder { get; set; }
    }
    /// 
    /// 默认任务表
    /// 
    public class Task_WorkOrderDefault : EntityBase
    {
        /// 
        /// 任务名称
        /// 
        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "任务名称")]
        public string Name { get; set; }
        /// 
        /// 优先级ID
        /// 
        [SugarColumn(ColumnDescription = "优先级ID")]
        public int PriorityId { get; set; }
        /// 
        /// 是否加急
        /// 
        [SugarColumn(ColumnDescription = "是否加急")]
        public bool IsUrgent { get; set; }
        /// 
        /// 任务耗时(小时数)
        /// 
        [SugarColumn(ColumnDescription = "任务耗时(小时)", IsNullable = true)]
        public double DurationHours { get; set; } = 0;
        /// 
        /// 部门类型
        /// 
        public int TypeId { get; set; }
        /// 
        /// 排序
        /// 
        public int Sort { get; set; }
    }
}