using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using FreeSql.DataAnnotations; using ZhonTai.Admin.Core.Entities; using NPP.SmartSchedue.Api.Contracts.Core.Consts; using NPP.SmartSchedue.Api.Contracts.Core.Enums; using NPP.SmartSchedue.Api.Contracts.Domain.Personnel; using NPP.SmartSchedue.Api.Contracts.Domain.Time; using NPP.SmartSchedue.Api.Contracts.Domain.Equipment; namespace NPP.SmartSchedue.Api.Contracts.Domain.Work; /// /// 工作任务实体 /// [Table(Name = DbConsts.TableNamePrefix + "work_order")] public partial class WorkOrderEntity : EntityTenant { #region 基础信息 /// /// 项目号 /// [Column(StringLength = 50)] [Required(ErrorMessage = "项目号不能为空")] public string ProjectNumber { get; set; } /// /// 项目类别 /// [Column(StringLength = 50)] [Required(ErrorMessage = "项目类别不能为空")] public string ProjectCategory { get; set; } /// /// 班次ID /// public long? ShiftId { get; set; } /// /// 班次代码 /// [Column(StringLength = 20)] public string ShiftCode { get; set; } /// /// 班次名称 /// [Column(StringLength = 100)] public string ShiftName { get; set; } /// /// 工序ID /// [Required(ErrorMessage = "工序不能为空")] public long ProcessId { get; set; } /// /// 工序代码 /// [Column(StringLength = 20)] public string ProcessCode { get; set; } /// /// 工序名称 /// [Column(StringLength = 100)] public string ProcessName { get; set; } /// /// 工序分类 /// public string ProcessCategory { get; set; } #endregion #region 任务信息 /// /// 任务代码(项目号_班次code_工序code) /// [Column(StringLength = 100)] public string WorkOrderCode { get; set; } /// /// 批号 /// [Column(StringLength = 50)] public string BatchNumber { get; set; } /// /// 任务日期 /// [Required(ErrorMessage = "任务日期不能为空")] public DateTime WorkOrderDate { get; set; } /// /// 任务状态 /// public int Status { get; set; } = (int)WorkOrderStatusEnum.PendingSubmit; /// /// 优先级(1-10,数字越大优先级越高) /// public int Priority { get; set; } = 5; /// /// 预计工时(小时) /// [Column(Precision = 10, Scale = 2)] public decimal? EstimatedHours { get; set; } /// /// 紧急程度(1-10,数字越大越紧急) /// public int Urgency { get; set; } = 5; /// /// 任务复杂度(别名,使用Priority表示) /// [Column(MapType = typeof(int), IsIgnore = true)] public int Complexity { get => Priority; set => Priority = value; } /// /// 权重系数(用于排序和优先级计算) /// [Column(Precision = 10, Scale = 4)] public double WeightFactor { get; set; } = 1.0; #endregion #region 人员和设备 /// /// 任务实施人员ID /// public long? AssignedPersonnelId { get; set; } /// /// 任务实施人员姓名 /// [Column(StringLength = 100)] public string AssignedPersonnelName { get; set; } /// /// 任务设备ID /// public long? AssignedEquipmentId { get; set; } /// /// 任务设备名称 /// [Column(StringLength = 200)] public string AssignedEquipmentName { get; set; } /// /// 需要岗位负责人 /// public bool NeedPostHead { get; set; } = false; #endregion #region 时间信息 /// /// 任务实际开始时间 /// public DateTime? ActualStartTime { get; set; } /// /// 任务实际结束时间 /// public DateTime? ActualEndTime { get; set; } /// /// 实际完成工时(小时) /// [Column(Precision = 10, Scale = 2)] public decimal? ActualWorkHours { get; set; } /// /// 实际完成工时(别名,与 ActualWorkHours 相同) /// [Column(MapType = typeof(decimal?), IsIgnore = true)] public decimal? ActualCompletedHours { get => ActualWorkHours; set => ActualWorkHours = value; } /// /// 任务分配时间 /// public DateTime? AssignedTime { get; set; } /// /// 最后修改时间 /// public DateTime? LastModifiedTime { get; set; } /// /// 备注信息 /// [Column(StringLength = 1000)] public string Remarks { get; set; } = ""; /// /// 计划开始时间 /// public DateTime PlannedStartTime { get; set; } /// /// 计划结束时间 /// public DateTime PlannedEndTime { get; set; } /// /// 任务代码/编号 /// [Column(StringLength = 100)] public string Code { get; set; } = ""; /// /// 紧急程度级别(使用Urgency的别名) /// [Column(MapType = typeof(int), IsIgnore = true)] public int UrgencyLevel { get => Urgency; set => Urgency = value; } /// /// 复杂度级别(使用Priority的别名) /// [Column(MapType = typeof(int), IsIgnore = true)] public int ComplexityLevel { get => Priority; set => Priority = value; } /// /// 整合记录ID /// public long? IntegrationRecordId { get; set; } #endregion #region 导航属性 /// /// 工序实体 /// [Navigate("ProcessId")] public ProcessEntity? ProcessEntity { get; set; } /// /// 班次实体 /// [Navigate("ShiftId")] public ShiftEntity? ShiftEntity { get; set; } /// /// FL人员关联列表 /// [Navigate("WorkOrderId")] public List WorkOrderFLPersonnels { get; set; } = new List(); #endregion }